@qtalo/qt-ui-library 0.1.7 → 0.1.8
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/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +34 -3
- package/dist/index.js +283 -213
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/styles/styles.css +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["days: CalendarDay[]","freeze","x","seal","apply","construct","getGlobal","_createTrustedTypesPolicy","html","_","_createHooksMap","window","document","isRegexOrFunction","_parseConfig","_checkValidNamespace","_forceRemove","_removeAttribute","_initDocument","_createNodeIterator","_isClobbered","_isNode","hooks","_sanitizeElements","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","_isValidAttribute","DATA_ATTR","ARIA_ATTR","ATTR_WHITESPACE","IS_SCRIPT_OR_DATA","_isBasicCustomElement","CUSTOM_ELEMENT","_sanitizeAttributes","_sanitizeShadowDOM","html: string","TIME_FORMAT_OPTIONS: Intl.DateTimeFormatOptions","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","toasts: ToastItem[]","POSITION_CLASSES: Record<ToastPosition, string>","ANIMATION_TRANSFORMS: Record<ToastPosition, string>","newToasts: AnimatedToast[]","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>","DEFAULT_POSITION: ToastPosition"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../node_modules/dompurify/dist/purify.es.mjs","../node_modules/emojilib/dist/emoji-en-US.json","../node_modules/marked/lib/marked.esm.js","../src/utils/rich-content.ts","../src/utils/timestamp.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/airtable.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/rich-content/rich-content.tsx","../src/components/skeleton/skeleton.tsx","../src/components/toast/toast-store.ts","../src/components/toast/toaster.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/patterns/bulk-actions/bulk-actions-skeleton.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button-skeleton.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/types/sizes.ts","../src/patterns/event-card/event-card-skeleton.tsx","../src/patterns/event-card/event-card.tsx","../src/patterns/event-detail/event-detail-priority.tsx","../src/patterns/event-detail/event-detail-summary.tsx","../src/patterns/event-detail/event-detail-content-header.tsx","../src/patterns/event-detail/event-detail-content-calendar.tsx","../src/patterns/event-detail/event-detail-content-email.tsx","../src/patterns/event-detail/event-detail-content-message.tsx","../src/patterns/event-detail/event-detail-content-ticket.tsx","../src/patterns/event-detail/event-detail-header.tsx","../src/patterns/event-detail/event-detail-skeleton.tsx","../src/patterns/event-detail/event-detail.tsx","../src/patterns/filter-bar/filter-bar-skeleton.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar-skeleton.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/patterns/search-input/search-input.tsx","../src/components/toast/toast.tsx","../src/patterns/toast-api/confimation-toast.tsx","../src/patterns/toast-api/undo-toast.tsx","../src/patterns/toast-api/toast-api.ts","../src/images/qtalo.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","{\n \"😀\": [\n \"grinning_face\",\n \"face\",\n \"smile\",\n \"happy\",\n \"joy\",\n \":D\",\n \"grin\",\n \"smiley\"\n ],\n \"😃\": [\n \"grinning_face_with_big_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"haha\",\n \":D\",\n \":)\",\n \"smile\",\n \"funny\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😄\": [\n \"grinning_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"funny\",\n \"haha\",\n \"laugh\",\n \"like\",\n \":D\",\n \":)\",\n \"smile\",\n \"eye\",\n \"grin\",\n \"mouth\",\n \"open\",\n \"pleased\",\n \"smiley\"\n ],\n \"😁\": [\n \"beaming_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"smile\",\n \"joy\",\n \"kawaii\",\n \"eye\",\n \"grin\",\n \"grinning\"\n ],\n \"😆\": [\n \"grinning_squinting_face\",\n \"happy\",\n \"joy\",\n \"lol\",\n \"satisfied\",\n \"haha\",\n \"face\",\n \"glad\",\n \"XD\",\n \"laugh\",\n \"big\",\n \"closed\",\n \"eyes\",\n \"grin\",\n \"laughing\",\n \"mouth\",\n \"open\",\n \"smile\",\n \"smiling\",\n \"tightly\"\n ],\n \"😅\": [\n \"grinning_face_with_sweat\",\n \"face\",\n \"hot\",\n \"happy\",\n \"laugh\",\n \"sweat\",\n \"smile\",\n \"relief\",\n \"cold\",\n \"exercise\",\n \"mouth\",\n \"open\",\n \"smiling\"\n ],\n \"🤣\": [\n \"rolling_on_the_floor_laughing\",\n \"face\",\n \"rolling\",\n \"floor\",\n \"laughing\",\n \"lol\",\n \"haha\",\n \"rofl\",\n \"laugh\",\n \"rotfl\"\n ],\n \"😂\": [\n \"face_with_tears_of_joy\",\n \"face\",\n \"cry\",\n \"tears\",\n \"weep\",\n \"happy\",\n \"happytears\",\n \"haha\",\n \"crying\",\n \"laugh\",\n \"laughing\",\n \"lol\",\n \"tear\"\n ],\n \"🙂\": [\n \"slightly_smiling_face\",\n \"face\",\n \"smile\",\n \"fine\",\n \"happy\",\n \"this\"\n ],\n \"🙃\": [\n \"upside_down_face\",\n \"face\",\n \"flipped\",\n \"silly\",\n \"smile\",\n \"sarcasm\"\n ],\n \"😉\": [\n \"winking_face\",\n \"face\",\n \"happy\",\n \"mischievous\",\n \"secret\",\n \";)\",\n \"smile\",\n \"eye\",\n \"flirt\",\n \"wink\",\n \"winky\"\n ],\n \"😊\": [\n \"smiling_face_with_smiling_eyes\",\n \"face\",\n \"smile\",\n \"happy\",\n \"flushed\",\n \"crush\",\n \"embarrassed\",\n \"shy\",\n \"joy\",\n \"^^\",\n \"blush\",\n \"eye\",\n \"proud\",\n \"smiley\"\n ],\n \"😇\": [\n \"smiling_face_with_halo\",\n \"face\",\n \"angel\",\n \"heaven\",\n \"halo\",\n \"innocent\",\n \"fairy\",\n \"fantasy\",\n \"smile\",\n \"tale\"\n ],\n \"🥰\": [\n \"smiling_face_with_hearts\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"hearts\",\n \"adore\",\n \"eyes\",\n \"three\"\n ],\n \"😍\": [\n \"smiling_face_with_heart_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"heart\",\n \"eye\",\n \"shaped\",\n \"smile\"\n ],\n \"🤩\": [\n \"star_struck\",\n \"face\",\n \"smile\",\n \"starry\",\n \"eyes\",\n \"grinning\",\n \"excited\",\n \"eyed\",\n \"wow\"\n ],\n \"😘\": [\n \"face_blowing_a_kiss\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"blow\",\n \"flirt\",\n \"heart\",\n \"kissing\",\n \"throwing\"\n ],\n \"😗\": [\n \"kissing_face\",\n \"love\",\n \"like\",\n \"face\",\n \"3\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"duck\",\n \"kissy\",\n \"whistling\"\n ],\n \"☺️\": [\n \"smiling_face\",\n \"face\",\n \"blush\",\n \"massage\",\n \"happiness\",\n \"happy\",\n \"outlined\",\n \"pleased\",\n \"relaxed\",\n \"smile\",\n \"smiley\",\n \"white\"\n ],\n \"😚\": [\n \"kissing_face_with_closed_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\"\n ],\n \"😙\": [\n \"kissing_face_with_smiling_eyes\",\n \"face\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\",\n \"smile\",\n \"whistle\",\n \"whistling\"\n ],\n \"😋\": [\n \"face_savoring_food\",\n \"happy\",\n \"joy\",\n \"tongue\",\n \"smile\",\n \"face\",\n \"silly\",\n \"yummy\",\n \"nom\",\n \"delicious\",\n \"savouring\",\n \"goofy\",\n \"hungry\",\n \"lick\",\n \"licking\",\n \"lips\",\n \"smiling\",\n \"um\",\n \"yum\"\n ],\n \"😛\": [\n \"face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"cheeky\",\n \"out\",\n \"stuck\"\n ],\n \"😜\": [\n \"winking_face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"wink\",\n \"tongue\",\n \"crazy\",\n \"eye\",\n \"joke\",\n \"out\",\n \"silly\",\n \"stuck\"\n ],\n \"🤪\": [\n \"zany_face\",\n \"face\",\n \"goofy\",\n \"crazy\",\n \"excited\",\n \"eye\",\n \"eyes\",\n \"grinning\",\n \"large\",\n \"one\",\n \"small\",\n \"wacky\",\n \"wild\"\n ],\n \"😝\": [\n \"squinting_face_with_tongue\",\n \"face\",\n \"prank\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"horrible\",\n \"out\",\n \"stuck\",\n \"taste\",\n \"tightly\"\n ],\n \"🤑\": [\n \"money_mouth_face\",\n \"face\",\n \"rich\",\n \"dollar\",\n \"money\",\n \"eyes\",\n \"sign\"\n ],\n \"🤗\": [\n \"hugging_face\",\n \"face\",\n \"smile\",\n \"hug\",\n \"hands\",\n \"hugs\",\n \"open\",\n \"smiling\"\n ],\n \"🤭\": [\n \"face_with_hand_over_mouth\",\n \"face\",\n \"whoops\",\n \"shock\",\n \"surprise\",\n \"blushing\",\n \"covering\",\n \"eyes\",\n \"quiet\",\n \"smiling\"\n ],\n \"🤫\": [\n \"shushing_face\",\n \"face\",\n \"quiet\",\n \"shhh\",\n \"closed\",\n \"covering\",\n \"finger\",\n \"hush\",\n \"lips\",\n \"shh\",\n \"shush\",\n \"silence\"\n ],\n \"🤔\": [\n \"thinking_face\",\n \"face\",\n \"hmmm\",\n \"think\",\n \"consider\",\n \"chin\",\n \"shade\",\n \"thinker\",\n \"throwing\",\n \"thumb\"\n ],\n \"🤐\": [\n \"zipper_mouth_face\",\n \"face\",\n \"sealed\",\n \"zipper\",\n \"secret\",\n \"hush\",\n \"lips\",\n \"silence\",\n \"zip\"\n ],\n \"🤨\": [\n \"face_with_raised_eyebrow\",\n \"face\",\n \"distrust\",\n \"scepticism\",\n \"disapproval\",\n \"disbelief\",\n \"surprise\",\n \"suspicious\",\n \"colbert\",\n \"mild\",\n \"one\",\n \"rock\",\n \"skeptic\"\n ],\n \"😐\": [\n \"neutral_face\",\n \"indifference\",\n \"meh\",\n \":|\",\n \"neutral\",\n \"deadpan\",\n \"faced\",\n \"mouth\",\n \"straight\"\n ],\n \"😑\": [\n \"expressionless_face\",\n \"face\",\n \"indifferent\",\n \"-_-\",\n \"meh\",\n \"deadpan\",\n \"inexpressive\",\n \"mouth\",\n \"straight\",\n \"unexpressive\"\n ],\n \"😶\": [\n \"face_without_mouth\",\n \"face\",\n \"blank\",\n \"mouthless\",\n \"mute\",\n \"no\",\n \"quiet\",\n \"silence\",\n \"silent\"\n ],\n \"😏\": [\n \"smirking_face\",\n \"face\",\n \"smile\",\n \"mean\",\n \"prank\",\n \"smug\",\n \"sarcasm\",\n \"flirting\",\n \"sexual\",\n \"smirk\",\n \"suggestive\"\n ],\n \"😒\": [\n \"unamused_face\",\n \"indifference\",\n \"bored\",\n \"straight face\",\n \"serious\",\n \"sarcasm\",\n \"unimpressed\",\n \"skeptical\",\n \"dubious\",\n \"ugh\",\n \"side_eye\",\n \"dissatisfied\",\n \"meh\",\n \"unhappy\"\n ],\n \"🙄\": [\n \"face_with_rolling_eyes\",\n \"face\",\n \"eyeroll\",\n \"frustrated\",\n \"eye\",\n \"roll\"\n ],\n \"😬\": [\n \"grimacing_face\",\n \"face\",\n \"grimace\",\n \"teeth\",\n \"awkward\",\n \"eek\",\n \"nervous\"\n ],\n \"🤥\": [\n \"lying_face\",\n \"face\",\n \"lie\",\n \"pinocchio\",\n \"liar\",\n \"long\",\n \"nose\"\n ],\n \"😌\": [\n \"relieved_face\",\n \"face\",\n \"relaxed\",\n \"phew\",\n \"massage\",\n \"happiness\",\n \"content\",\n \"pleased\",\n \"whew\"\n ],\n \"😔\": [\n \"pensive_face\",\n \"face\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \"dejected\",\n \"sadface\",\n \"sorrowful\"\n ],\n \"😪\": [\n \"sleepy_face\",\n \"face\",\n \"tired\",\n \"rest\",\n \"nap\",\n \"bubble\",\n \"side\",\n \"sleep\",\n \"snot\",\n \"tear\"\n ],\n \"🤤\": [\n \"drooling_face\",\n \"face\",\n \"drool\"\n ],\n \"😴\": [\n \"sleeping_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"night\",\n \"zzz\",\n \"sleep\",\n \"snoring\"\n ],\n \"😷\": [\n \"face_with_medical_mask\",\n \"face\",\n \"sick\",\n \"ill\",\n \"disease\",\n \"covid\",\n \"cold\",\n \"coronavirus\",\n \"doctor\",\n \"medicine\",\n \"surgical\"\n ],\n \"🤒\": [\n \"face_with_thermometer\",\n \"sick\",\n \"temperature\",\n \"thermometer\",\n \"cold\",\n \"fever\",\n \"covid\",\n \"ill\"\n ],\n \"🤕\": [\n \"face_with_head_bandage\",\n \"injured\",\n \"clumsy\",\n \"bandage\",\n \"hurt\",\n \"bandaged\",\n \"injury\"\n ],\n \"🤢\": [\n \"nauseated_face\",\n \"face\",\n \"vomit\",\n \"gross\",\n \"green\",\n \"sick\",\n \"throw up\",\n \"ill\",\n \"barf\",\n \"disgust\",\n \"disgusted\",\n \"green face\"\n ],\n \"🤮\": [\n \"face_vomiting\",\n \"face\",\n \"sick\",\n \"barf\",\n \"ill\",\n \"mouth\",\n \"open\",\n \"puke\",\n \"spew\",\n \"throwing\",\n \"up\",\n \"vomit\"\n ],\n \"🤧\": [\n \"sneezing_face\",\n \"face\",\n \"gesundheit\",\n \"sneeze\",\n \"sick\",\n \"allergy\",\n \"achoo\"\n ],\n \"🥵\": [\n \"hot_face\",\n \"face\",\n \"feverish\",\n \"heat\",\n \"red\",\n \"sweating\",\n \"overheated\",\n \"stroke\"\n ],\n \"🥶\": [\n \"cold_face\",\n \"face\",\n \"blue\",\n \"freezing\",\n \"frozen\",\n \"frostbite\",\n \"icicles\",\n \"ice\"\n ],\n \"🥴\": [\n \"woozy_face\",\n \"face\",\n \"dizzy\",\n \"intoxicated\",\n \"tipsy\",\n \"wavy\",\n \"drunk\",\n \"eyes\",\n \"groggy\",\n \"mouth\",\n \"uneven\"\n ],\n \"😵\": [\n \"dizzy_face\",\n \"spent\",\n \"unconscious\",\n \"xox\",\n \"dizzy\",\n \"cross\",\n \"crossed\",\n \"dead\",\n \"eyes\",\n \"knocked\",\n \"out\",\n \"spiral eyes\"\n ],\n \"🤯\": [\n \"exploding_head\",\n \"face\",\n \"shocked\",\n \"mind\",\n \"blown\",\n \"blowing\",\n \"explosion\",\n \"mad\"\n ],\n \"🤠\": [\n \"cowboy_hat_face\",\n \"face\",\n \"cowgirl\",\n \"hat\"\n ],\n \"🥳\": [\n \"partying_face\",\n \"face\",\n \"celebration\",\n \"woohoo\",\n \"birthday\",\n \"hat\",\n \"horn\",\n \"party\"\n ],\n \"😎\": [\n \"smiling_face_with_sunglasses\",\n \"face\",\n \"cool\",\n \"smile\",\n \"summer\",\n \"beach\",\n \"sunglass\",\n \"best\",\n \"bright\",\n \"eye\",\n \"eyewear\",\n \"friends\",\n \"glasses\",\n \"mutual\",\n \"snapchat\",\n \"sun\",\n \"weather\"\n ],\n \"🤓\": [\n \"nerd_face\",\n \"face\",\n \"nerdy\",\n \"geek\",\n \"dork\",\n \"glasses\",\n \"smiling\"\n ],\n \"🧐\": [\n \"face_with_monocle\",\n \"face\",\n \"stuffy\",\n \"wealthy\",\n \"rich\",\n \"exploration\",\n \"inspection\"\n ],\n \"😕\": [\n \"confused_face\",\n \"face\",\n \"indifference\",\n \"huh\",\n \"weird\",\n \"hmmm\",\n \":/\",\n \"meh\",\n \"nonplussed\",\n \"puzzled\",\n \"s\"\n ],\n \"😟\": [\n \"worried_face\",\n \"face\",\n \"concern\",\n \"nervous\",\n \":(\",\n \"sad\",\n \"sadface\"\n ],\n \"🙁\": [\n \"slightly_frowning_face\",\n \"face\",\n \"frowning\",\n \"disappointed\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"unhappy\"\n ],\n \"☹️\": [\n \"frowning_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"megafrown\",\n \"unhappy\",\n \"white\"\n ],\n \"😮\": [\n \"face_with_open_mouth\",\n \"face\",\n \"surprise\",\n \"impressed\",\n \"wow\",\n \"whoa\",\n \":O\",\n \"surprised\",\n \"sympathy\"\n ],\n \"😯\": [\n \"hushed_face\",\n \"face\",\n \"woo\",\n \"shh\",\n \"silence\",\n \"speechless\",\n \"stunned\",\n \"surprise\",\n \"surprised\"\n ],\n \"😲\": [\n \"astonished_face\",\n \"face\",\n \"xox\",\n \"surprised\",\n \"poisoned\",\n \"amazed\",\n \"drunk face\",\n \"gasp\",\n \"gasping\",\n \"shocked\",\n \"totally\"\n ],\n \"😳\": [\n \"flushed_face\",\n \"face\",\n \"blush\",\n \"shy\",\n \"flattered\",\n \"blushing\",\n \"dazed\",\n \"embarrassed\",\n \"eyes\",\n \"open\",\n \"shame\",\n \"wide\"\n ],\n \"🥺\": [\n \"pleading_face\",\n \"face\",\n \"begging\",\n \"mercy\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"grievance\",\n \"eyes\",\n \"glossy\",\n \"puppy\",\n \"simp\"\n ],\n \"😦\": [\n \"frowning_face_with_open_mouth\",\n \"face\",\n \"aw\",\n \"what\",\n \"frown\",\n \"yawning\"\n ],\n \"😧\": [\n \"anguished_face\",\n \"face\",\n \"stunned\",\n \"nervous\",\n \"pained\"\n ],\n \"😨\": [\n \"fearful_face\",\n \"face\",\n \"scared\",\n \"terrified\",\n \"nervous\",\n \"fear\",\n \"oops\",\n \"shocked\",\n \"surprised\"\n ],\n \"😰\": [\n \"anxious_face_with_sweat\",\n \"face\",\n \"nervous\",\n \"sweat\",\n \"blue\",\n \"cold\",\n \"concerned face\",\n \"mouth\",\n \"open\",\n \"rushed\"\n ],\n \"😥\": [\n \"sad_but_relieved_face\",\n \"face\",\n \"phew\",\n \"sweat\",\n \"nervous\",\n \"disappointed\",\n \"eyebrow\",\n \"whew\"\n ],\n \"😢\": [\n \"crying_face\",\n \"face\",\n \"tears\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \":'(\",\n \"cry\",\n \"tear\"\n ],\n \"😭\": [\n \"loudly_crying_face\",\n \"sobbing\",\n \"face\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \"bawling\",\n \"sob\",\n \"tear\"\n ],\n \"😱\": [\n \"face_screaming_in_fear\",\n \"face\",\n \"munch\",\n \"scared\",\n \"omg\",\n \"alone\",\n \"fearful\",\n \"home\",\n \"horror\",\n \"scream\",\n \"shocked\"\n ],\n \"😖\": [\n \"confounded_face\",\n \"face\",\n \"confused\",\n \"sick\",\n \"unwell\",\n \"oops\",\n \":S\",\n \"mouth\",\n \"quivering\",\n \"scrunched\"\n ],\n \"😣\": [\n \"persevering_face\",\n \"face\",\n \"sick\",\n \"no\",\n \"upset\",\n \"oops\",\n \"eyes\",\n \"helpless\",\n \"persevere\",\n \"scrunched\",\n \"struggling\"\n ],\n \"😞\": [\n \"disappointed_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \":(\",\n \"sadface\"\n ],\n \"😓\": [\n \"downcast_face_with_sweat\",\n \"face\",\n \"hot\",\n \"sad\",\n \"tired\",\n \"exercise\",\n \"cold\",\n \"hard\",\n \"work\"\n ],\n \"😩\": [\n \"weary_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"sad\",\n \"frustrated\",\n \"upset\",\n \"distraught\",\n \"wailing\"\n ],\n \"😫\": [\n \"tired_face\",\n \"sick\",\n \"whine\",\n \"upset\",\n \"frustrated\",\n \"distraught\",\n \"exhausted\",\n \"fed\",\n \"up\"\n ],\n \"🥱\": [\n \"yawning_face\",\n \"tired\",\n \"sleepy\",\n \"bored\",\n \"yawn\"\n ],\n \"😤\": [\n \"face_with_steam_from_nose\",\n \"face\",\n \"gas\",\n \"phew\",\n \"proud\",\n \"pride\",\n \"triumph\",\n \"airing\",\n \"frustrated\",\n \"grievances\",\n \"look\",\n \"mad\",\n \"smug\",\n \"steaming\",\n \"won\"\n ],\n \"😡\": [\n \"pouting_face\",\n \"angry\",\n \"mad\",\n \"hate\",\n \"despise\",\n \"enraged\",\n \"grumpy\",\n \"pout\",\n \"rage\",\n \"red\"\n ],\n \"😠\": [\n \"angry_face\",\n \"mad\",\n \"face\",\n \"annoyed\",\n \"frustrated\",\n \"anger\",\n \"grumpy\"\n ],\n \"🤬\": [\n \"face_with_symbols_on_mouth\",\n \"face\",\n \"swearing\",\n \"cursing\",\n \"cussing\",\n \"profanity\",\n \"expletive\",\n \"covering\",\n \"foul\",\n \"grawlix\",\n \"over\",\n \"serious\"\n ],\n \"😈\": [\n \"smiling_face_with_horns\",\n \"devil\",\n \"horns\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"happy\",\n \"imp\",\n \"purple\",\n \"red devil\",\n \"smile\",\n \"tale\"\n ],\n \"👿\": [\n \"angry_face_with_horns\",\n \"devil\",\n \"angry\",\n \"horns\",\n \"demon\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"goblin\",\n \"imp\",\n \"purple\",\n \"sad\",\n \"tale\"\n ],\n \"💀\": [\n \"skull\",\n \"dead\",\n \"skeleton\",\n \"creepy\",\n \"death\",\n \"dead\",\n \"body\",\n \"danger\",\n \"face\",\n \"fairy\",\n \"grey\",\n \"halloween\",\n \"monster\",\n \"poison\",\n \"tale\"\n ],\n \"☠️\": [\n \"skull_and_crossbones\",\n \"poison\",\n \"danger\",\n \"deadly\",\n \"scary\",\n \"death\",\n \"pirate\",\n \"evil\",\n \"body\",\n \"face\",\n \"halloween\",\n \"monster\"\n ],\n \"💩\": [\n \"pile_of_poo\",\n \"hankey\",\n \"shitface\",\n \"fail\",\n \"turd\",\n \"shit\",\n \"comic\",\n \"crap\",\n \"dirt\",\n \"dog\",\n \"dung\",\n \"face\",\n \"monster\",\n \"poop\",\n \"smiling\",\n \"bad\",\n \"needs_improvement\"\n ],\n \"🤡\": [\n \"clown_face\",\n \"face\",\n \"mock\"\n ],\n \"👹\": [\n \"ogre\",\n \"monster\",\n \"red\",\n \"mask\",\n \"halloween\",\n \"scary\",\n \"creepy\",\n \"devil\",\n \"demon\",\n \"japanese_ogre\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"oni\",\n \"tale\",\n \"shrek\"\n ],\n \"👺\": [\n \"goblin\",\n \"red\",\n \"evil\",\n \"mask\",\n \"monster\",\n \"scary\",\n \"creepy\",\n \"japanese_goblin\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"long\",\n \"nose\",\n \"tale\",\n \"tengu\"\n ],\n \"👻\": [\n \"ghost\",\n \"halloween\",\n \"spooky\",\n \"scary\",\n \"creature\",\n \"disappear\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"ghoul\",\n \"monster\",\n \"tale\"\n ],\n \"👽\": [\n \"alien\",\n \"UFO\",\n \"paul\",\n \"weird\",\n \"outer_space\",\n \"creature\",\n \"et\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"monster\",\n \"tale\",\n \"external\"\n ],\n \"👾\": [\n \"alien_monster\",\n \"game\",\n \"arcade\",\n \"play\",\n \"creature\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"invader\",\n \"retro\",\n \"space\",\n \"tale\",\n \"ufo\",\n \"video\"\n ],\n \"🤖\": [\n \"robot\",\n \"computer\",\n \"machine\",\n \"bot\",\n \"face\",\n \"monster\"\n ],\n \"😺\": [\n \"grinning_cat\",\n \"animal\",\n \"cats\",\n \"happy\",\n \"smile\",\n \"face\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😸\": [\n \"grinning_cat_with_smiling_eyes\",\n \"animal\",\n \"cats\",\n \"smile\",\n \"eye\",\n \"face\",\n \"grin\",\n \"happy\"\n ],\n \"😹\": [\n \"cat_with_tears_of_joy\",\n \"animal\",\n \"cats\",\n \"haha\",\n \"happy\",\n \"tears\",\n \"face\",\n \"laughing\",\n \"tear\"\n ],\n \"😻\": [\n \"smiling_cat_with_heart_eyes\",\n \"animal\",\n \"love\",\n \"like\",\n \"affection\",\n \"cats\",\n \"valentines\",\n \"heart\",\n \"eye\",\n \"face\",\n \"loving cat\",\n \"shaped\",\n \"smile\"\n ],\n \"😼\": [\n \"cat_with_wry_smile\",\n \"animal\",\n \"cats\",\n \"smirk\",\n \"face\",\n \"ironic\",\n \"smirking\"\n ],\n \"😽\": [\n \"kissing_cat\",\n \"animal\",\n \"cats\",\n \"kiss\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"face\"\n ],\n \"🙀\": [\n \"weary_cat\",\n \"animal\",\n \"cats\",\n \"munch\",\n \"scared\",\n \"scream\",\n \"face\",\n \"fear\",\n \"horror\",\n \"oh\",\n \"screaming\",\n \"surprised\"\n ],\n \"😿\": [\n \"crying_cat\",\n \"animal\",\n \"tears\",\n \"weep\",\n \"sad\",\n \"cats\",\n \"upset\",\n \"cry\",\n \"face\",\n \"sad cat\",\n \"tear\"\n ],\n \"😾\": [\n \"pouting_cat\",\n \"animal\",\n \"cats\",\n \"face\",\n \"grumpy\"\n ],\n \"🙈\": [\n \"see_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"haha\",\n \"blind\",\n \"covering\",\n \"eyes\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"ignore\",\n \"mizaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙉\": [\n \"hear_no_evil_monkey\",\n \"animal\",\n \"monkey\",\n \"nature\",\n \"covering\",\n \"deaf\",\n \"ears\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"kikazaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙊\": [\n \"speak_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"omg\",\n \"covering\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"hush\",\n \"iwazaru\",\n \"mouth\",\n \"mute\",\n \"not\",\n \"no speaking\",\n \"prohibited\",\n \"ignore\"\n ],\n \"💋\": [\n \"kiss_mark\",\n \"face\",\n \"lips\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"kissing\",\n \"lipstick\",\n \"romance\"\n ],\n \"💌\": [\n \"love_letter\",\n \"email\",\n \"like\",\n \"affection\",\n \"envelope\",\n \"valentines\",\n \"heart\",\n \"mail\",\n \"note\",\n \"romance\"\n ],\n \"💘\": [\n \"heart_with_arrow\",\n \"love\",\n \"like\",\n \"heart\",\n \"affection\",\n \"valentines\",\n \"cupid\",\n \"lovestruck\",\n \"romance\"\n ],\n \"💝\": [\n \"heart_with_ribbon\",\n \"love\",\n \"valentines\",\n \"box\",\n \"chocolate\",\n \"chocolates\",\n \"gift\",\n \"valentine\"\n ],\n \"💖\": [\n \"sparkling_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"excited\",\n \"sparkle\",\n \"sparkly\",\n \"stars heart\"\n ],\n \"💗\": [\n \"growing_heart\",\n \"like\",\n \"love\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"excited\",\n \"heartpulse\",\n \"multiple\",\n \"nervous\",\n \"pulse\",\n \"triple\"\n ],\n \"💓\": [\n \"beating_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"heart\",\n \"alarm\",\n \"heartbeat\",\n \"pulsating\",\n \"wifi\"\n ],\n \"💞\": [\n \"revolving_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"two\"\n ],\n \"💕\": [\n \"two_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"pink\",\n \"small\"\n ],\n \"💟\": [\n \"heart_decoration\",\n \"purple-square\",\n \"love\",\n \"like\"\n ],\n \"❣️\": [\n \"heart_exclamation\",\n \"decoration\",\n \"love\",\n \"above\",\n \"an\",\n \"as\",\n \"dot\",\n \"heavy\",\n \"mark\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"💔\": [\n \"broken_heart\",\n \"sad\",\n \"sorry\",\n \"break\",\n \"heart\",\n \"heartbreak\",\n \"breaking\",\n \"brokenhearted\"\n ],\n \"❤️\": [\n \"red_heart\",\n \"love\",\n \"like\",\n \"valentines\",\n \"black\",\n \"heavy\"\n ],\n \"🧡\": [\n \"orange_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\"\n ],\n \"💛\": [\n \"yellow_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bf\",\n \"gold\",\n \"snapchat\"\n ],\n \"💚\": [\n \"green_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"nct\"\n ],\n \"💙\": [\n \"blue_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"brand\",\n \"neutral\"\n ],\n \"💜\": [\n \"purple_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bts\",\n \"emoji\"\n ],\n \"🤎\": [\n \"brown_heart\",\n \"coffee\"\n ],\n \"🖤\": [\n \"black_heart\",\n \"evil\",\n \"dark\",\n \"wicked\"\n ],\n \"🤍\": [\n \"white_heart\",\n \"pure\"\n ],\n \"💯\": [\n \"hundred_points\",\n \"score\",\n \"perfect\",\n \"numbers\",\n \"century\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"pass\",\n \"hundred\",\n \"100\",\n \"full\",\n \"keep\",\n \"symbol\"\n ],\n \"💢\": [\n \"anger_symbol\",\n \"angry\",\n \"mad\",\n \"comic\",\n \"pop\",\n \"sign\",\n \"vein\"\n ],\n \"💥\": [\n \"collision\",\n \"bomb\",\n \"explode\",\n \"explosion\",\n \"blown\",\n \"bang\",\n \"boom\",\n \"comic\",\n \"impact\",\n \"red\",\n \"spark\",\n \"symbol\",\n \"break\"\n ],\n \"💫\": [\n \"dizzy\",\n \"star\",\n \"sparkle\",\n \"shoot\",\n \"magic\",\n \"circle\",\n \"comic\",\n \"symbol\",\n \"animations\",\n \"transitions\"\n ],\n \"💦\": [\n \"sweat_droplets\",\n \"water\",\n \"drip\",\n \"oops\",\n \"comic\",\n \"drops\",\n \"plewds\",\n \"splashing\",\n \"symbol\",\n \"workout\"\n ],\n \"💨\": [\n \"dashing_away\",\n \"wind\",\n \"air\",\n \"fast\",\n \"shoo\",\n \"fart\",\n \"smoke\",\n \"puff\",\n \"blow\",\n \"comic\",\n \"dash\",\n \"gust\",\n \"running\",\n \"steam\",\n \"symbol\",\n \"vaping\"\n ],\n \"🕳️\": [\n \"hole\",\n \"embarrassing\"\n ],\n \"💣\": [\n \"bomb\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"terrorism\",\n \"comic\"\n ],\n \"💬\": [\n \"speech_balloon\",\n \"bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"chat\",\n \"comic\",\n \"comment\",\n \"dialog\",\n \"text\",\n \"literals\"\n ],\n \"👁️🗨️\": [\n \"eye_in_speech_bubble\",\n \"info\",\n \"am\",\n \"i\",\n \"witness\"\n ],\n \"🗨️\": [\n \"left_speech_bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"dialog\"\n ],\n \"🗯️\": [\n \"right_anger_bubble\",\n \"caption\",\n \"speech\",\n \"thinking\",\n \"mad\",\n \"angry\",\n \"balloon\",\n \"zag\",\n \"zig\"\n ],\n \"💭\": [\n \"thought_balloon\",\n \"bubble\",\n \"cloud\",\n \"speech\",\n \"thinking\",\n \"dream\",\n \"comic\"\n ],\n \"💤\": [\n \"zzz\",\n \"sleepy\",\n \"tired\",\n \"dream\",\n \"bedtime\",\n \"boring\",\n \"comic\",\n \"sign\",\n \"sleep\",\n \"sleeping\",\n \"symbol\"\n ],\n \"👋\": [\n \"waving_hand\",\n \"wave\",\n \"hands\",\n \"gesture\",\n \"goodbye\",\n \"solong\",\n \"farewell\",\n \"hello\",\n \"hi\",\n \"palm\",\n \"body\",\n \"sign\"\n ],\n \"🤚\": [\n \"raised_back_of_hand\",\n \"fingers\",\n \"raised\",\n \"backhand\",\n \"body\"\n ],\n \"🖐️\": [\n \"hand_with_fingers_splayed\",\n \"hand\",\n \"fingers\",\n \"palm\",\n \"body\",\n \"finger\",\n \"five\",\n \"raised\"\n ],\n \"✋\": [\n \"raised_hand\",\n \"fingers\",\n \"stop\",\n \"highfive\",\n \"palm\",\n \"ban\",\n \"body\",\n \"five\",\n \"high\"\n ],\n \"🖖\": [\n \"vulcan_salute\",\n \"hand\",\n \"fingers\",\n \"spock\",\n \"star trek\",\n \"between\",\n \"body\",\n \"finger\",\n \"middle\",\n \"part\",\n \"prosper\",\n \"raised\",\n \"ring\",\n \"split\"\n ],\n \"👌\": [\n \"ok_hand\",\n \"fingers\",\n \"limbs\",\n \"perfect\",\n \"ok\",\n \"okay\",\n \"body\",\n \"sign\"\n ],\n \"🤏\": [\n \"pinching_hand\",\n \"tiny\",\n \"small\",\n \"size\",\n \"amount\",\n \"body\",\n \"little\"\n ],\n \"✌️\": [\n \"victory_hand\",\n \"fingers\",\n \"ohyeah\",\n \"hand\",\n \"peace\",\n \"victory\",\n \"two\",\n \"air\",\n \"body\",\n \"quotes\",\n \"sign\",\n \"v\"\n ],\n \"🤞\": [\n \"crossed_fingers\",\n \"good\",\n \"lucky\",\n \"body\",\n \"cross\",\n \"finger\",\n \"hand\",\n \"hopeful\",\n \"index\",\n \"luck\",\n \"middle\"\n ],\n \"🤟\": [\n \"love_you_gesture\",\n \"hand\",\n \"fingers\",\n \"gesture\",\n \"body\",\n \"i\",\n \"ily\",\n \"sign\"\n ],\n \"🤘\": [\n \"sign_of_the_horns\",\n \"hand\",\n \"fingers\",\n \"evil_eye\",\n \"sign_of_horns\",\n \"rock_on\",\n \"body\",\n \"devil\",\n \"finger\",\n \"heavy\",\n \"metal\"\n ],\n \"🤙\": [\n \"call_me_hand\",\n \"hands\",\n \"gesture\",\n \"shaka\",\n \"body\",\n \"phone\",\n \"sign\"\n ],\n \"👈\": [\n \"backhand_index_pointing_left\",\n \"direction\",\n \"fingers\",\n \"hand\",\n \"left\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👉\": [\n \"backhand_index_pointing_right\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"right\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👆\": [\n \"backhand_index_pointing_up\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"middle\",\n \"point\",\n \"white\"\n ],\n \"🖕\": [\n \"middle_finger\",\n \"hand\",\n \"fingers\",\n \"rude\",\n \"middle\",\n \"flipping\",\n \"bird\",\n \"body\",\n \"dito\",\n \"extended\",\n \"fu\",\n \"medio\",\n \"middle finger\",\n \"reversed\"\n ],\n \"👇\": [\n \"backhand_index_pointing_down\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"down\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"☝️\": [\n \"index_pointing_up\",\n \"hand\",\n \"fingers\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"point\",\n \"secret\",\n \"white\"\n ],\n \"👍\": [\n \"thumbs_up\",\n \"thumbsup\",\n \"yes\",\n \"awesome\",\n \"good\",\n \"agree\",\n \"accept\",\n \"cool\",\n \"hand\",\n \"like\",\n \"+1\",\n \"approve\",\n \"body\",\n \"ok\",\n \"sign\",\n \"thumb\"\n ],\n \"👎\": [\n \"thumbs_down\",\n \"thumbsdown\",\n \"no\",\n \"dislike\",\n \"hand\",\n \"-1\",\n \"bad\",\n \"body\",\n \"bury\",\n \"disapprove\",\n \"sign\",\n \"thumb\"\n ],\n \"✊\": [\n \"raised_fist\",\n \"fingers\",\n \"hand\",\n \"grasp\",\n \"body\",\n \"clenched\",\n \"power\",\n \"pump\",\n \"punch\"\n ],\n \"👊\": [\n \"oncoming_fist\",\n \"angry\",\n \"violence\",\n \"fist\",\n \"hit\",\n \"attack\",\n \"hand\",\n \"body\",\n \"bro\",\n \"brofist\",\n \"bump\",\n \"clenched\",\n \"closed\",\n \"facepunch\",\n \"fisted\",\n \"punch\",\n \"sign\"\n ],\n \"🤛\": [\n \"left_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"leftwards\"\n ],\n \"🤜\": [\n \"right_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"rightwards\",\n \"right fist\"\n ],\n \"👏\": [\n \"clapping_hands\",\n \"hands\",\n \"praise\",\n \"applause\",\n \"congrats\",\n \"yay\",\n \"body\",\n \"clap\",\n \"golf\",\n \"hand\",\n \"round\",\n \"sign\"\n ],\n \"🙌\": [\n \"raising_hands\",\n \"gesture\",\n \"hooray\",\n \"yea\",\n \"celebration\",\n \"hands\",\n \"air\",\n \"arms\",\n \"banzai\",\n \"body\",\n \"both\",\n \"festivus\",\n \"hallelujah\",\n \"hand\",\n \"miracle\",\n \"person\",\n \"praise\",\n \"raised\",\n \"two\"\n ],\n \"👐\": [\n \"open_hands\",\n \"fingers\",\n \"butterfly\",\n \"hands\",\n \"open\",\n \"body\",\n \"hand\",\n \"hug\",\n \"jazz\",\n \"sign\"\n ],\n \"🤲\": [\n \"palms_up_together\",\n \"hands\",\n \"gesture\",\n \"cupped\",\n \"prayer\",\n \"body\",\n \"dua\",\n \"facing\"\n ],\n \"🤝\": [\n \"handshake\",\n \"agreement\",\n \"shake\",\n \"deal\",\n \"hand\",\n \"hands\",\n \"meeting\",\n \"shaking\"\n ],\n \"🙏\": [\n \"folded_hands\",\n \"please\",\n \"hope\",\n \"wish\",\n \"namaste\",\n \"highfive\",\n \"pray\",\n \"thank you\",\n \"thanks\",\n \"appreciate\",\n \"ask\",\n \"body\",\n \"bow\",\n \"five\",\n \"gesture\",\n \"hand\",\n \"high\",\n \"person\",\n \"prayer\",\n \"pressed\",\n \"together\"\n ],\n \"✍️\": [\n \"writing_hand\",\n \"lower_left_ballpoint_pen\",\n \"stationery\",\n \"write\",\n \"compose\",\n \"body\"\n ],\n \"💅\": [\n \"nail_polish\",\n \"nail_care\",\n \"beauty\",\n \"manicure\",\n \"finger\",\n \"fashion\",\n \"nail\",\n \"slay\",\n \"body\",\n \"cosmetics\",\n \"fingers\",\n \"nonchalant\"\n ],\n \"🤳\": [\n \"selfie\",\n \"camera\",\n \"phone\",\n \"arm\",\n \"hand\"\n ],\n \"💪\": [\n \"flexed_biceps\",\n \"arm\",\n \"flex\",\n \"hand\",\n \"summer\",\n \"strong\",\n \"biceps\",\n \"bicep\",\n \"body\",\n \"comic\",\n \"feats\",\n \"flexing\",\n \"muscle\",\n \"muscles\",\n \"strength\",\n \"workout\"\n ],\n \"🦾\": [\n \"mechanical_arm\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦿\": [\n \"mechanical_leg\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦵\": [\n \"leg\",\n \"kick\",\n \"limb\",\n \"body\"\n ],\n \"🦶\": [\n \"foot\",\n \"kick\",\n \"stomp\",\n \"body\"\n ],\n \"👂\": [\n \"ear\",\n \"face\",\n \"hear\",\n \"sound\",\n \"listen\",\n \"body\",\n \"ears\",\n \"hearing\",\n \"listening\",\n \"nose\"\n ],\n \"🦻\": [\n \"ear_with_hearing_aid\",\n \"accessibility\",\n \"body\",\n \"hard\"\n ],\n \"👃\": [\n \"nose\",\n \"smell\",\n \"sniff\",\n \"body\",\n \"smelling\",\n \"sniffing\",\n \"stinky\"\n ],\n \"🧠\": [\n \"brain\",\n \"smart\",\n \"intelligent\",\n \"body\",\n \"organ\"\n ],\n \"🦷\": [\n \"tooth\",\n \"teeth\",\n \"dentist\",\n \"body\"\n ],\n \"🦴\": [\n \"bone\",\n \"skeleton\",\n \"body\"\n ],\n \"👀\": [\n \"eyes\",\n \"look\",\n \"watch\",\n \"stalk\",\n \"peek\",\n \"see\",\n \"body\",\n \"eye\",\n \"eyeballs\",\n \"face\",\n \"shifty\",\n \"wide\"\n ],\n \"👁️\": [\n \"eye\",\n \"face\",\n \"look\",\n \"see\",\n \"watch\",\n \"stare\",\n \"body\",\n \"single\"\n ],\n \"👅\": [\n \"tongue\",\n \"mouth\",\n \"playful\",\n \"body\",\n \"out\",\n \"taste\"\n ],\n \"👄\": [\n \"mouth\",\n \"kiss\",\n \"body\",\n \"kissing\",\n \"lips\"\n ],\n \"👶\": [\n \"baby\",\n \"child\",\n \"boy\",\n \"girl\",\n \"toddler\",\n \"newborn\",\n \"young\"\n ],\n \"🧒\": [\n \"child\",\n \"gender-neutral\",\n \"young\",\n \"boy\",\n \"gender\",\n \"girl\",\n \"inclusive\",\n \"neutral\",\n \"person\",\n \"unspecified\"\n ],\n \"👦\": [\n \"boy\",\n \"man\",\n \"male\",\n \"guy\",\n \"teenager\",\n \"child\",\n \"young\"\n ],\n \"👧\": [\n \"girl\",\n \"female\",\n \"woman\",\n \"teenager\",\n \"child\",\n \"maiden\",\n \"virgin\",\n \"virgo\",\n \"young\",\n \"zodiac\"\n ],\n \"🧑\": [\n \"person\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"inclusive\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👱\": [\n \"person_blond_hair\",\n \"hairstyle\",\n \"blonde\",\n \"haired\",\n \"man\"\n ],\n \"👨\": [\n \"man\",\n \"mustache\",\n \"father\",\n \"dad\",\n \"guy\",\n \"classy\",\n \"sir\",\n \"moustache\",\n \"adult\",\n \"male\",\n \"men\"\n ],\n \"🧔\": [\n \"man_beard\",\n \"person\",\n \"bewhiskered\",\n \"bearded\"\n ],\n \"👨🦰\": [\n \"man_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"ginger\",\n \"haired\",\n \"male\",\n \"men\",\n \"redhead\"\n ],\n \"👨🦱\": [\n \"man_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨🦳\": [\n \"man_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨🦲\": [\n \"man_bald\",\n \"hairless\",\n \"adult\",\n \"hair\",\n \"male\",\n \"men\",\n \"no\"\n ],\n \"👩\": [\n \"woman\",\n \"female\",\n \"girls\",\n \"lady\",\n \"adult\",\n \"women\",\n \"yellow\"\n ],\n \"👩🦰\": [\n \"woman_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"ginger\",\n \"haired\",\n \"redhead\",\n \"women\"\n ],\n \"🧑🦰\": [\n \"person_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦱\": [\n \"woman_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑🦱\": [\n \"person_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦳\": [\n \"woman_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑🦳\": [\n \"person_white_hair\",\n \"elder\",\n \"old\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦲\": [\n \"woman_bald\",\n \"hairless\",\n \"adult\",\n \"female\",\n \"hair\",\n \"no\",\n \"women\"\n ],\n \"🧑🦲\": [\n \"person_bald\",\n \"hairless\",\n \"adult\",\n \"gender\",\n \"hair\",\n \"no\",\n \"unspecified\"\n ],\n \"👱♀️\": [\n \"woman_blond_hair\",\n \"woman\",\n \"female\",\n \"girl\",\n \"blonde\",\n \"person\",\n \"haired\",\n \"women\"\n ],\n \"👱♂️\": [\n \"man_blond_hair\",\n \"man\",\n \"male\",\n \"boy\",\n \"blonde\",\n \"guy\",\n \"person\",\n \"haired\",\n \"men\"\n ],\n \"🧓\": [\n \"older_person\",\n \"human\",\n \"elder\",\n \"senior\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"old\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👴\": [\n \"old_man\",\n \"human\",\n \"male\",\n \"men\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandpa\",\n \"older\"\n ],\n \"👵\": [\n \"old_woman\",\n \"human\",\n \"female\",\n \"women\",\n \"lady\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandma\",\n \"nanna\",\n \"older\"\n ],\n \"🙍\": [\n \"person_frowning\",\n \"worried\",\n \"frown\",\n \"gesture\",\n \"sad\",\n \"woman\"\n ],\n \"🙍♂️\": [\n \"man_frowning\",\n \"male\",\n \"boy\",\n \"man\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"men\"\n ],\n \"🙍♀️\": [\n \"woman_frowning\",\n \"female\",\n \"girl\",\n \"woman\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"women\"\n ],\n \"🙎\": [\n \"person_pouting\",\n \"upset\",\n \"blank\",\n \"face\",\n \"fed\",\n \"gesture\",\n \"look\",\n \"up\"\n ],\n \"🙎♂️\": [\n \"man_pouting\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"men\"\n ],\n \"🙎♀️\": [\n \"woman_pouting\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"women\"\n ],\n \"🙅\": [\n \"person_gesturing_no\",\n \"decline\",\n \"arms\",\n \"deal\",\n \"denied\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"x\"\n ],\n \"🙅♂️\": [\n \"man_gesturing_no\",\n \"male\",\n \"boy\",\n \"man\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"men\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\"\n ],\n \"🙅♀️\": [\n \"woman_gesturing_no\",\n \"female\",\n \"girl\",\n \"woman\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"women\"\n ],\n \"🙆\": [\n \"person_gesturing_ok\",\n \"agree\",\n \"ballerina\",\n \"face\",\n \"gesture\",\n \"hand\",\n \"hands\",\n \"head\"\n ],\n \"🙆♂️\": [\n \"man_gesturing_ok\",\n \"men\",\n \"boy\",\n \"male\",\n \"blue\",\n \"human\",\n \"man\",\n \"gesture\",\n \"hand\"\n ],\n \"🙆♀️\": [\n \"woman_gesturing_ok\",\n \"women\",\n \"girl\",\n \"female\",\n \"pink\",\n \"human\",\n \"woman\",\n \"gesture\",\n \"hand\"\n ],\n \"💁\": [\n \"person_tipping_hand\",\n \"information\",\n \"attendant\",\n \"bellhop\",\n \"concierge\",\n \"desk\",\n \"female\",\n \"flick\",\n \"girl\",\n \"hair\",\n \"help\",\n \"sassy\",\n \"woman\",\n \"women\"\n ],\n \"💁♂️\": [\n \"man_tipping_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"men\",\n \"sassy\"\n ],\n \"💁♀️\": [\n \"woman_tipping_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"sassy\",\n \"women\"\n ],\n \"🙋\": [\n \"person_raising_hand\",\n \"question\",\n \"answering\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"up\"\n ],\n \"🙋♂️\": [\n \"man_raising_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"happy\",\n \"men\",\n \"one\",\n \"raised\"\n ],\n \"🙋♀️\": [\n \"woman_raising_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"women\"\n ],\n \"🧏\": [\n \"deaf_person\",\n \"accessibility\",\n \"ear\",\n \"hear\"\n ],\n \"🧏♂️\": [\n \"deaf_man\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"🧏♀️\": [\n \"deaf_woman\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🙇\": [\n \"person_bowing\",\n \"respectiful\",\n \"apology\",\n \"bow\",\n \"boy\",\n \"cute\",\n \"deeply\",\n \"dogeza\",\n \"gesture\",\n \"man\",\n \"massage\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇♂️\": [\n \"man_bowing\",\n \"man\",\n \"male\",\n \"boy\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"men\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇♀️\": [\n \"woman_bowing\",\n \"woman\",\n \"female\",\n \"girl\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"respect\",\n \"sorry\",\n \"thanks\",\n \"women\"\n ],\n \"🤦\": [\n \"person_facepalming\",\n \"disappointed\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"head\",\n \"hitting\",\n \"palm\",\n \"picard\",\n \"smh\"\n ],\n \"🤦♂️\": [\n \"man_facepalming\",\n \"man\",\n \"male\",\n \"boy\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"men\",\n \"palm\"\n ],\n \"🤦♀️\": [\n \"woman_facepalming\",\n \"woman\",\n \"female\",\n \"girl\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"palm\",\n \"women\"\n ],\n \"🤷\": [\n \"person_shrugging\",\n \"regardless\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"shruggie\",\n \"¯\\\\\"\n ],\n \"🤷♂️\": [\n \"man_shrugging\",\n \"man\",\n \"male\",\n \"boy\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"men\",\n \"shrug\"\n ],\n \"🤷♀️\": [\n \"woman_shrugging\",\n \"woman\",\n \"female\",\n \"girl\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"women\"\n ],\n \"🧑⚕️\": [\n \"health_worker\",\n \"hospital\",\n \"dentist\",\n \"doctor\",\n \"healthcare\",\n \"md\",\n \"nurse\",\n \"physician\",\n \"professional\",\n \"therapist\"\n ],\n \"👨⚕️\": [\n \"man_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"man\",\n \"human\",\n \"dentist\",\n \"male\",\n \"md\",\n \"men\",\n \"physician\",\n \"professional\"\n ],\n \"👩⚕️\": [\n \"woman_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"woman\",\n \"human\",\n \"dentist\",\n \"female\",\n \"md\",\n \"physician\",\n \"professional\",\n \"women\"\n ],\n \"🧑🎓\": [\n \"student\",\n \"learn\",\n \"education\",\n \"graduate\",\n \"pupil\",\n \"school\"\n ],\n \"👨🎓\": [\n \"man_student\",\n \"graduate\",\n \"man\",\n \"human\",\n \"education\",\n \"graduation\",\n \"male\",\n \"men\",\n \"pupil\",\n \"school\"\n ],\n \"👩🎓\": [\n \"woman_student\",\n \"graduate\",\n \"woman\",\n \"human\",\n \"education\",\n \"female\",\n \"graduation\",\n \"pupil\",\n \"school\",\n \"women\"\n ],\n \"🧑🏫\": [\n \"teacher\",\n \"professor\",\n \"education\",\n \"educator\",\n \"instructor\"\n ],\n \"👨🏫\": [\n \"man_teacher\",\n \"instructor\",\n \"professor\",\n \"man\",\n \"human\",\n \"education\",\n \"educator\",\n \"male\",\n \"men\",\n \"school\"\n ],\n \"👩🏫\": [\n \"woman_teacher\",\n \"instructor\",\n \"professor\",\n \"woman\",\n \"human\",\n \"education\",\n \"educator\",\n \"female\",\n \"school\",\n \"women\"\n ],\n \"🧑⚖️\": [\n \"judge\",\n \"law\",\n \"court\",\n \"justice\",\n \"scales\"\n ],\n \"👨⚖️\": [\n \"man_judge\",\n \"justice\",\n \"court\",\n \"man\",\n \"human\",\n \"law\",\n \"male\",\n \"men\",\n \"scales\"\n ],\n \"👩⚖️\": [\n \"woman_judge\",\n \"justice\",\n \"court\",\n \"woman\",\n \"human\",\n \"female\",\n \"law\",\n \"scales\",\n \"women\"\n ],\n \"🧑🌾\": [\n \"farmer\",\n \"crops\",\n \"farm\",\n \"farming\",\n \"gardener\",\n \"rancher\",\n \"worker\"\n ],\n \"👨🌾\": [\n \"man_farmer\",\n \"rancher\",\n \"gardener\",\n \"man\",\n \"human\",\n \"farm\",\n \"farming\",\n \"male\",\n \"men\",\n \"worker\"\n ],\n \"👩🌾\": [\n \"woman_farmer\",\n \"rancher\",\n \"gardener\",\n \"woman\",\n \"human\",\n \"farm\",\n \"farming\",\n \"female\",\n \"women\",\n \"worker\"\n ],\n \"🧑🍳\": [\n \"cook\",\n \"food\",\n \"kitchen\",\n \"culinary\",\n \"chef\",\n \"cooking\",\n \"service\"\n ],\n \"👨🍳\": [\n \"man_cook\",\n \"chef\",\n \"man\",\n \"human\",\n \"cooking\",\n \"food\",\n \"male\",\n \"men\",\n \"service\"\n ],\n \"👩🍳\": [\n \"woman_cook\",\n \"chef\",\n \"woman\",\n \"human\",\n \"cooking\",\n \"female\",\n \"food\",\n \"service\",\n \"women\"\n ],\n \"🧑🔧\": [\n \"mechanic\",\n \"worker\",\n \"technician\",\n \"electrician\",\n \"person\",\n \"plumber\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👨🔧\": [\n \"man_mechanic\",\n \"plumber\",\n \"man\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"male\",\n \"men\",\n \"person\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👩🔧\": [\n \"woman_mechanic\",\n \"plumber\",\n \"woman\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"female\",\n \"person\",\n \"repair\",\n \"tradesperson\",\n \"women\"\n ],\n \"🧑🏭\": [\n \"factory_worker\",\n \"labor\",\n \"assembly\",\n \"industrial\",\n \"welder\"\n ],\n \"👨🏭\": [\n \"man_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"man\",\n \"human\",\n \"male\",\n \"men\",\n \"welder\"\n ],\n \"👩🏭\": [\n \"woman_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"woman\",\n \"human\",\n \"female\",\n \"welder\",\n \"women\"\n ],\n \"🧑💼\": [\n \"office_worker\",\n \"business\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"clerk\",\n \"manager\"\n ],\n \"👨💼\": [\n \"man_office_worker\",\n \"business\",\n \"manager\",\n \"man\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businessman\",\n \"ceo\",\n \"clerk\",\n \"male\",\n \"men\"\n ],\n \"👩💼\": [\n \"woman_office_worker\",\n \"business\",\n \"manager\",\n \"woman\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businesswoman\",\n \"ceo\",\n \"clerk\",\n \"female\",\n \"women\"\n ],\n \"🧑🔬\": [\n \"scientist\",\n \"chemistry\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"lab\",\n \"mathematician\",\n \"physicist\",\n \"technician\"\n ],\n \"👨🔬\": [\n \"man_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"man\",\n \"human\",\n \"lab\",\n \"male\",\n \"mathematician\",\n \"men\",\n \"research\",\n \"technician\"\n ],\n \"👩🔬\": [\n \"woman_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"woman\",\n \"human\",\n \"female\",\n \"lab\",\n \"mathematician\",\n \"research\",\n \"technician\",\n \"women\"\n ],\n \"🧑💻\": [\n \"technologist\",\n \"computer\",\n \"coder\",\n \"engineer\",\n \"laptop\",\n \"software\",\n \"technology\",\n \"developer\"\n ],\n \"👨💻\": [\n \"man_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"man\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"male\",\n \"men\",\n \"technology\"\n ],\n \"👩💻\": [\n \"woman_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"woman\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"female\",\n \"technology\",\n \"women\"\n ],\n \"🧑🎤\": [\n \"singer\",\n \"song\",\n \"artist\",\n \"performer\",\n \"actor\",\n \"entertainer\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"rockstar\",\n \"star\"\n ],\n \"👨🎤\": [\n \"man_singer\",\n \"rockstar\",\n \"entertainer\",\n \"man\",\n \"human\",\n \"actor\",\n \"aladdin\",\n \"bowie\",\n \"male\",\n \"men\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"sane\",\n \"star\"\n ],\n \"👩🎤\": [\n \"woman_singer\",\n \"rockstar\",\n \"entertainer\",\n \"woman\",\n \"human\",\n \"actor\",\n \"female\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"star\",\n \"women\"\n ],\n \"🧑🎨\": [\n \"artist\",\n \"painting\",\n \"draw\",\n \"creativity\",\n \"art\",\n \"paint\",\n \"painter\",\n \"palette\"\n ],\n \"👨🎨\": [\n \"man_artist\",\n \"painter\",\n \"man\",\n \"human\",\n \"art\",\n \"male\",\n \"men\",\n \"paint\",\n \"palette\"\n ],\n \"👩🎨\": [\n \"woman_artist\",\n \"painter\",\n \"woman\",\n \"human\",\n \"art\",\n \"female\",\n \"paint\",\n \"palette\",\n \"women\"\n ],\n \"🧑✈️\": [\n \"pilot\",\n \"fly\",\n \"plane\",\n \"airplane\",\n \"aviation\",\n \"aviator\"\n ],\n \"👨✈️\": [\n \"man_pilot\",\n \"aviator\",\n \"plane\",\n \"man\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"male\",\n \"men\"\n ],\n \"👩✈️\": [\n \"woman_pilot\",\n \"aviator\",\n \"plane\",\n \"woman\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"female\",\n \"women\"\n ],\n \"🧑🚀\": [\n \"astronaut\",\n \"outerspace\",\n \"moon\",\n \"planets\",\n \"rocket\",\n \"space\",\n \"stars\"\n ],\n \"👨🚀\": [\n \"man_astronaut\",\n \"space\",\n \"rocket\",\n \"man\",\n \"human\",\n \"cosmonaut\",\n \"male\",\n \"men\",\n \"moon\",\n \"planets\",\n \"stars\"\n ],\n \"👩🚀\": [\n \"woman_astronaut\",\n \"space\",\n \"rocket\",\n \"woman\",\n \"human\",\n \"cosmonaut\",\n \"female\",\n \"moon\",\n \"planets\",\n \"stars\",\n \"women\"\n ],\n \"🧑🚒\": [\n \"firefighter\",\n \"fire\",\n \"firetruck\"\n ],\n \"👨🚒\": [\n \"man_firefighter\",\n \"fireman\",\n \"man\",\n \"human\",\n \"fire\",\n \"firetruck\",\n \"male\",\n \"men\"\n ],\n \"👩🚒\": [\n \"woman_firefighter\",\n \"fireman\",\n \"woman\",\n \"human\",\n \"female\",\n \"fire\",\n \"firetruck\",\n \"women\"\n ],\n \"👮\": [\n \"police_officer\",\n \"cop\",\n \"law\",\n \"policeman\",\n \"policewoman\"\n ],\n \"👮♂️\": [\n \"man_police_officer\",\n \"man\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"cop\",\n \"male\",\n \"men\",\n \"policeman\"\n ],\n \"👮♀️\": [\n \"woman_police_officer\",\n \"woman\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"female\",\n \"cop\",\n \"policewoman\",\n \"women\"\n ],\n \"🕵️\": [\n \"detective\",\n \"human\",\n \"spy\",\n \"eye\",\n \"or\",\n \"private\",\n \"sleuth\"\n ],\n \"🕵️♂️\": [\n \"man_detective\",\n \"crime\",\n \"male\",\n \"men\",\n \"sleuth\",\n \"spy\"\n ],\n \"🕵️♀️\": [\n \"woman_detective\",\n \"human\",\n \"spy\",\n \"detective\",\n \"female\",\n \"woman\",\n \"sleuth\",\n \"women\"\n ],\n \"💂\": [\n \"guard\",\n \"protect\",\n \"british\",\n \"guardsman\"\n ],\n \"💂♂️\": [\n \"man_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"male\",\n \"guy\",\n \"royal\",\n \"guardsman\",\n \"men\"\n ],\n \"💂♀️\": [\n \"woman_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"female\",\n \"royal\",\n \"woman\",\n \"guardsman\",\n \"guardswoman\",\n \"women\"\n ],\n \"👷\": [\n \"construction_worker\",\n \"labor\",\n \"build\",\n \"builder\",\n \"face\",\n \"hard\",\n \"hat\",\n \"helmet\",\n \"safety\",\n \"add_ci\",\n \"update_ci\"\n ],\n \"👷♂️\": [\n \"man_construction_worker\",\n \"male\",\n \"human\",\n \"wip\",\n \"guy\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"helmet\",\n \"men\"\n ],\n \"👷♀️\": [\n \"woman_construction_worker\",\n \"female\",\n \"human\",\n \"wip\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"woman\",\n \"helmet\",\n \"women\"\n ],\n \"🤴\": [\n \"prince\",\n \"boy\",\n \"man\",\n \"male\",\n \"crown\",\n \"royal\",\n \"king\",\n \"fairy\",\n \"fantasy\",\n \"men\",\n \"tale\"\n ],\n \"👸\": [\n \"princess\",\n \"girl\",\n \"woman\",\n \"female\",\n \"blond\",\n \"crown\",\n \"royal\",\n \"queen\",\n \"blonde\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"tiara\",\n \"women\"\n ],\n \"👳\": [\n \"person_wearing_turban\",\n \"headdress\",\n \"arab\",\n \"man\",\n \"muslim\",\n \"sikh\"\n ],\n \"👳♂️\": [\n \"man_wearing_turban\",\n \"male\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"men\"\n ],\n \"👳♀️\": [\n \"woman_wearing_turban\",\n \"female\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"woman\",\n \"women\"\n ],\n \"👲\": [\n \"man_with_skullcap\",\n \"male\",\n \"boy\",\n \"chinese\",\n \"asian\",\n \"cap\",\n \"gua\",\n \"hat\",\n \"mao\",\n \"person\",\n \"pi\"\n ],\n \"🧕\": [\n \"woman_with_headscarf\",\n \"female\",\n \"hijab\",\n \"mantilla\",\n \"tichel\"\n ],\n \"🤵\": [\n \"man_in_tuxedo\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\"\n ],\n \"👰\": [\n \"bride_with_veil\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"woman\",\n \"bride\",\n \"person\"\n ],\n \"🤰\": [\n \"pregnant_woman\",\n \"baby\",\n \"female\",\n \"pregnancy\",\n \"pregnant lady\",\n \"women\"\n ],\n \"🤱\": [\n \"breast_feeding\",\n \"nursing\",\n \"baby\",\n \"breastfeeding\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"mother\",\n \"woman\",\n \"women\"\n ],\n \"👼\": [\n \"baby_angel\",\n \"heaven\",\n \"wings\",\n \"halo\",\n \"cherub\",\n \"cupid\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"putto\",\n \"tale\"\n ],\n \"🎅\": [\n \"santa_claus\",\n \"festival\",\n \"man\",\n \"male\",\n \"xmas\",\n \"father christmas\",\n \"activity\",\n \"celebration\",\n \"men\",\n \"nicholas\",\n \"saint\",\n \"sinterklaas\"\n ],\n \"🤶\": [\n \"mrs_claus\",\n \"woman\",\n \"female\",\n \"xmas\",\n \"mother christmas\",\n \"activity\",\n \"celebration\",\n \"mrs.\",\n \"santa\",\n \"women\"\n ],\n \"🦸\": [\n \"superhero\",\n \"marvel\",\n \"fantasy\",\n \"good\",\n \"hero\",\n \"heroine\",\n \"superpower\",\n \"superpowers\"\n ],\n \"🦸♂️\": [\n \"man_superhero\",\n \"man\",\n \"male\",\n \"good\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\"\n ],\n \"🦸♀️\": [\n \"woman_superhero\",\n \"woman\",\n \"female\",\n \"good\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"hero\",\n \"superpower\",\n \"women\"\n ],\n \"🦹\": [\n \"supervillain\",\n \"marvel\",\n \"bad\",\n \"criminal\",\n \"evil\",\n \"fantasy\",\n \"superpower\",\n \"superpowers\",\n \"villain\"\n ],\n \"🦹♂️\": [\n \"man_supervillain\",\n \"man\",\n \"male\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\",\n \"villain\"\n ],\n \"🦹♀️\": [\n \"woman_supervillain\",\n \"woman\",\n \"female\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"superpower\",\n \"villain\",\n \"women\"\n ],\n \"🧙\": [\n \"mage\",\n \"magic\",\n \"fantasy\",\n \"sorcerer\",\n \"sorceress\",\n \"witch\",\n \"wizard\"\n ],\n \"🧙♂️\": [\n \"man_mage\",\n \"man\",\n \"male\",\n \"mage\",\n \"sorcerer\",\n \"fantasy\",\n \"men\",\n \"wizard\"\n ],\n \"🧙♀️\": [\n \"woman_mage\",\n \"woman\",\n \"female\",\n \"mage\",\n \"witch\",\n \"fantasy\",\n \"sorceress\",\n \"wizard\",\n \"women\"\n ],\n \"🧚\": [\n \"fairy\",\n \"wings\",\n \"magical\",\n \"fantasy\",\n \"oberon\",\n \"puck\",\n \"titania\"\n ],\n \"🧚♂️\": [\n \"man_fairy\",\n \"man\",\n \"male\",\n \"fantasy\",\n \"men\",\n \"oberon\",\n \"puck\"\n ],\n \"🧚♀️\": [\n \"woman_fairy\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"titania\",\n \"wings\",\n \"women\"\n ],\n \"🧛\": [\n \"vampire\",\n \"blood\",\n \"twilight\",\n \"dracula\",\n \"fantasy\",\n \"undead\"\n ],\n \"🧛♂️\": [\n \"man_vampire\",\n \"man\",\n \"male\",\n \"dracula\",\n \"fantasy\",\n \"men\",\n \"undead\"\n ],\n \"🧛♀️\": [\n \"woman_vampire\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"undead\",\n \"unded\",\n \"women\"\n ],\n \"🧜\": [\n \"merperson\",\n \"sea\",\n \"fantasy\",\n \"merboy\",\n \"mergirl\",\n \"mermaid\",\n \"merman\",\n \"merwoman\"\n ],\n \"🧜♂️\": [\n \"merman\",\n \"man\",\n \"male\",\n \"triton\",\n \"fantasy\",\n \"men\",\n \"mermaid\"\n ],\n \"🧜♀️\": [\n \"mermaid\",\n \"woman\",\n \"female\",\n \"merwoman\",\n \"ariel\",\n \"fantasy\",\n \"women\"\n ],\n \"🧝\": [\n \"elf\",\n \"magical\",\n \"ears\",\n \"fantasy\",\n \"legolas\",\n \"pointed\"\n ],\n \"🧝♂️\": [\n \"man_elf\",\n \"man\",\n \"male\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"men\",\n \"pointed\"\n ],\n \"🧝♀️\": [\n \"woman_elf\",\n \"woman\",\n \"female\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"pointed\",\n \"women\"\n ],\n \"🧞\": [\n \"genie\",\n \"magical\",\n \"wishes\",\n \"djinn\",\n \"djinni\",\n \"fantasy\",\n \"jinni\"\n ],\n \"🧞♂️\": [\n \"man_genie\",\n \"man\",\n \"male\",\n \"djinn\",\n \"fantasy\",\n \"men\"\n ],\n \"🧞♀️\": [\n \"woman_genie\",\n \"woman\",\n \"female\",\n \"djinn\",\n \"fantasy\",\n \"women\"\n ],\n \"🧟\": [\n \"zombie\",\n \"dead\",\n \"fantasy\",\n \"undead\",\n \"walking\"\n ],\n \"🧟♂️\": [\n \"man_zombie\",\n \"man\",\n \"male\",\n \"dracula\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"men\"\n ],\n \"🧟♀️\": [\n \"woman_zombie\",\n \"woman\",\n \"female\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"women\"\n ],\n \"💆\": [\n \"person_getting_massage\",\n \"relax\",\n \"face\",\n \"head\",\n \"massaging\",\n \"salon\",\n \"spa\"\n ],\n \"💆♂️\": [\n \"man_getting_massage\",\n \"male\",\n \"boy\",\n \"man\",\n \"head\",\n \"face\",\n \"men\",\n \"salon\",\n \"spa\"\n ],\n \"💆♀️\": [\n \"woman_getting_massage\",\n \"female\",\n \"girl\",\n \"woman\",\n \"head\",\n \"face\",\n \"salon\",\n \"spa\",\n \"women\"\n ],\n \"💇\": [\n \"person_getting_haircut\",\n \"hairstyle\",\n \"barber\",\n \"beauty\",\n \"cutting\",\n \"hair\",\n \"hairdresser\",\n \"parlor\"\n ],\n \"💇♂️\": [\n \"man_getting_haircut\",\n \"male\",\n \"boy\",\n \"man\",\n \"barber\",\n \"beauty\",\n \"men\",\n \"parlor\"\n ],\n \"💇♀️\": [\n \"woman_getting_haircut\",\n \"female\",\n \"girl\",\n \"woman\",\n \"barber\",\n \"beauty\",\n \"parlor\",\n \"women\"\n ],\n \"🚶\": [\n \"person_walking\",\n \"move\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"walker\"\n ],\n \"🚶♂️\": [\n \"man_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"hike\",\n \"male\",\n \"men\",\n \"pedestrian\",\n \"walk\"\n ],\n \"🚶♀️\": [\n \"woman_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"woman\",\n \"female\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"women\"\n ],\n \"🧍\": [\n \"person_standing\",\n \"still\",\n \"stand\"\n ],\n \"🧍♂️\": [\n \"man_standing\",\n \"still\",\n \"male\",\n \"men\",\n \"stand\"\n ],\n \"🧍♀️\": [\n \"woman_standing\",\n \"still\",\n \"female\",\n \"stand\",\n \"women\"\n ],\n \"🧎\": [\n \"person_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\"\n ],\n \"🧎♂️\": [\n \"man_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\",\n \"male\",\n \"men\"\n ],\n \"🧎♀️\": [\n \"woman_kneeling\",\n \"respectful\",\n \"pray\",\n \"female\",\n \"kneel\",\n \"women\"\n ],\n \"🧑🦯\": [\n \"person_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"white\"\n ],\n \"👨🦯\": [\n \"man_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"male\",\n \"men\",\n \"white\"\n ],\n \"👩🦯\": [\n \"woman_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"female\",\n \"white\",\n \"women\"\n ],\n \"🧑🦼\": [\n \"person_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨🦼\": [\n \"man_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩🦼\": [\n \"woman_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🧑🦽\": [\n \"person_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨🦽\": [\n \"man_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩🦽\": [\n \"woman_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🏃\": [\n \"person_running\",\n \"move\",\n \"exercise\",\n \"jogging\",\n \"marathon\",\n \"run\",\n \"runner\",\n \"workout\"\n ],\n \"🏃♂️\": [\n \"man_running\",\n \"man\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"male\",\n \"marathon\",\n \"men\",\n \"racing\",\n \"runner\",\n \"workout\"\n ],\n \"🏃♀️\": [\n \"woman_running\",\n \"woman\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"female\",\n \"boy\",\n \"marathon\",\n \"racing\",\n \"runner\",\n \"women\",\n \"workout\"\n ],\n \"💃\": [\n \"woman_dancing\",\n \"female\",\n \"girl\",\n \"woman\",\n \"fun\",\n \"dance\",\n \"dancer\",\n \"dress\",\n \"red\",\n \"salsa\",\n \"women\"\n ],\n \"🕺\": [\n \"man_dancing\",\n \"male\",\n \"boy\",\n \"fun\",\n \"dancer\",\n \"dance\",\n \"disco\",\n \"men\"\n ],\n \"🕴️\": [\n \"man_in_suit_levitating\",\n \"suit\",\n \"business\",\n \"levitate\",\n \"hover\",\n \"jump\",\n \"boy\",\n \"hovering\",\n \"jabsco\",\n \"male\",\n \"men\",\n \"person\",\n \"rude\",\n \"walt\"\n ],\n \"👯\": [\n \"people_with_bunny_ears\",\n \"perform\",\n \"costume\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"wearing\",\n \"women\"\n ],\n \"👯♂️\": [\n \"men_with_bunny_ears\",\n \"male\",\n \"bunny\",\n \"men\",\n \"boys\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"man\",\n \"partying\",\n \"wearing\"\n ],\n \"👯♀️\": [\n \"women_with_bunny_ears\",\n \"female\",\n \"bunny\",\n \"women\",\n \"girls\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"people\",\n \"wearing\"\n ],\n \"🧖\": [\n \"person_in_steamy_room\",\n \"relax\",\n \"spa\",\n \"hamam\",\n \"sauna\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖♂️\": [\n \"man_in_steamy_room\",\n \"male\",\n \"man\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"men\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖♀️\": [\n \"woman_in_steamy_room\",\n \"female\",\n \"woman\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"steam\",\n \"steambath\",\n \"women\"\n ],\n \"🧗\": [\n \"person_climbing\",\n \"sport\",\n \"bouldering\",\n \"climber\",\n \"rock\"\n ],\n \"🧗♂️\": [\n \"man_climbing\",\n \"sports\",\n \"hobby\",\n \"man\",\n \"male\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"men\"\n ],\n \"🧗♀️\": [\n \"woman_climbing\",\n \"sports\",\n \"hobby\",\n \"woman\",\n \"female\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"women\"\n ],\n \"🤺\": [\n \"person_fencing\",\n \"sports\",\n \"fencing\",\n \"sword\",\n \"fencer\"\n ],\n \"🏇\": [\n \"horse_racing\",\n \"animal\",\n \"betting\",\n \"competition\",\n \"gambling\",\n \"luck\",\n \"jockey\",\n \"race\",\n \"racehorse\"\n ],\n \"⛷️\": [\n \"skier\",\n \"sports\",\n \"winter\",\n \"snow\",\n \"ski\"\n ],\n \"🏂\": [\n \"snowboarder\",\n \"sports\",\n \"winter\",\n \"ski\",\n \"snow\",\n \"snowboard\",\n \"snowboarding\"\n ],\n \"🏌️\": [\n \"person_golfing\",\n \"sports\",\n \"business\",\n \"ball\",\n \"club\",\n \"golf\",\n \"golfer\"\n ],\n \"🏌️♂️\": [\n \"man_golfing\",\n \"sport\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"male\",\n \"men\"\n ],\n \"🏌️♀️\": [\n \"woman_golfing\",\n \"sports\",\n \"business\",\n \"woman\",\n \"female\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"women\"\n ],\n \"🏄\": [\n \"person_surfing\",\n \"sport\",\n \"sea\",\n \"surf\",\n \"surfer\"\n ],\n \"🏄♂️\": [\n \"man_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"male\",\n \"men\",\n \"surfer\"\n ],\n \"🏄♀️\": [\n \"woman_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"woman\",\n \"female\",\n \"surfer\",\n \"women\"\n ],\n \"🚣\": [\n \"person_rowing_boat\",\n \"sport\",\n \"move\",\n \"paddles\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣♂️\": [\n \"man_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"male\",\n \"men\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣♀️\": [\n \"woman_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"woman\",\n \"female\",\n \"rowboat\",\n \"vehicle\",\n \"women\"\n ],\n \"🏊\": [\n \"person_swimming\",\n \"sport\",\n \"pool\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊♂️\": [\n \"man_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"male\",\n \"men\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊♀️\": [\n \"woman_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"woman\",\n \"female\",\n \"swim\",\n \"swimmer\",\n \"women\"\n ],\n \"⛹️\": [\n \"person_bouncing_ball\",\n \"sports\",\n \"human\",\n \"basketball\",\n \"player\"\n ],\n \"⛹️♂️\": [\n \"man_bouncing_ball\",\n \"sport\",\n \"basketball\",\n \"male\",\n \"men\",\n \"player\"\n ],\n \"⛹️♀️\": [\n \"woman_bouncing_ball\",\n \"sports\",\n \"human\",\n \"woman\",\n \"female\",\n \"basketball\",\n \"player\",\n \"women\"\n ],\n \"🏋️\": [\n \"person_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"bodybuilder\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️♂️\": [\n \"man_lifting_weights\",\n \"sport\",\n \"gym\",\n \"lifter\",\n \"male\",\n \"men\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️♀️\": [\n \"woman_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"woman\",\n \"female\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"women\",\n \"workout\"\n ],\n \"🚴\": [\n \"person_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\"\n ],\n \"🚴♂️\": [\n \"man_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"bicyclist\",\n \"male\",\n \"men\"\n ],\n \"🚴♀️\": [\n \"woman_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"women\"\n ],\n \"🚵\": [\n \"person_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\",\n \"biker\"\n ],\n \"🚵♂️\": [\n \"man_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"bicyclist\",\n \"biker\",\n \"male\",\n \"men\"\n ],\n \"🚵♀️\": [\n \"woman_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"biker\",\n \"women\"\n ],\n \"🤸\": [\n \"person_cartwheeling\",\n \"sport\",\n \"gymnastic\",\n \"cartwheel\",\n \"doing\",\n \"gymnast\",\n \"gymnastics\"\n ],\n \"🤸♂️\": [\n \"man_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"male\",\n \"men\"\n ],\n \"🤸♀️\": [\n \"woman_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"female\",\n \"women\"\n ],\n \"🤼\": [\n \"people_wrestling\",\n \"sport\",\n \"wrestle\",\n \"wrestler\",\n \"wrestlers\"\n ],\n \"🤼♂️\": [\n \"men_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"male\",\n \"man\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤼♀️\": [\n \"women_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"female\",\n \"woman\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤽\": [\n \"person_playing_water_polo\",\n \"sport\"\n ],\n \"🤽♂️\": [\n \"man_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"male\",\n \"men\"\n ],\n \"🤽♀️\": [\n \"woman_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"female\",\n \"women\"\n ],\n \"🤾\": [\n \"person_playing_handball\",\n \"sport\",\n \"ball\"\n ],\n \"🤾♂️\": [\n \"man_playing_handball\",\n \"sports\",\n \"ball\",\n \"male\",\n \"men\"\n ],\n \"🤾♀️\": [\n \"woman_playing_handball\",\n \"sports\",\n \"ball\",\n \"female\",\n \"women\"\n ],\n \"🤹\": [\n \"person_juggling\",\n \"performance\",\n \"balance\",\n \"juggle\",\n \"juggler\",\n \"multitask\",\n \"skill\"\n ],\n \"🤹♂️\": [\n \"man_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"juggler\",\n \"male\",\n \"men\"\n ],\n \"🤹♀️\": [\n \"woman_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"female\",\n \"juggler\",\n \"women\"\n ],\n \"🧘\": [\n \"person_in_lotus_position\",\n \"meditate\",\n \"meditation\",\n \"serenity\",\n \"yoga\"\n ],\n \"🧘♂️\": [\n \"man_in_lotus_position\",\n \"man\",\n \"male\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"men\"\n ],\n \"🧘♀️\": [\n \"woman_in_lotus_position\",\n \"woman\",\n \"female\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"women\"\n ],\n \"🛀\": [\n \"person_taking_bath\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bathing\",\n \"bathtub\",\n \"hot\"\n ],\n \"🛌\": [\n \"person_in_bed\",\n \"bed\",\n \"rest\",\n \"accommodation\",\n \"hotel\",\n \"sleep\",\n \"sleeping\"\n ],\n \"🧑🤝🧑\": [\n \"people_holding_hands\",\n \"friendship\",\n \"couple\",\n \"date\",\n \"gender\",\n \"hand\",\n \"hold\",\n \"inclusive\",\n \"neutral\",\n \"nonconforming\"\n ],\n \"👭\": [\n \"women_holding_hands\",\n \"pair\",\n \"friendship\",\n \"couple\",\n \"love\",\n \"like\",\n \"female\",\n \"people\",\n \"human\",\n \"date\",\n \"hand\",\n \"hold\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"two\",\n \"woman\"\n ],\n \"👫\": [\n \"woman_and_man_holding_hands\",\n \"pair\",\n \"people\",\n \"human\",\n \"love\",\n \"date\",\n \"dating\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"marriage\",\n \"couple\",\n \"female\",\n \"hand\",\n \"heterosexual\",\n \"hold\",\n \"male\",\n \"men\",\n \"straight\",\n \"women\"\n ],\n \"👬\": [\n \"men_holding_hands\",\n \"pair\",\n \"couple\",\n \"love\",\n \"like\",\n \"bromance\",\n \"friendship\",\n \"people\",\n \"human\",\n \"date\",\n \"gay\",\n \"hand\",\n \"hold\",\n \"lgbt\",\n \"male\",\n \"man\",\n \"pride\",\n \"two\"\n ],\n \"💏\": [\n \"kiss\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"gender\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩❤️💋👨\": [\n \"kiss_woman_man\",\n \"love\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨❤️💋👨\": [\n \"kiss_man_man\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"gay\",\n \"heart\",\n \"kissing\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩❤️💋👩\": [\n \"kiss_woman_woman\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"💑\": [\n \"couple_with_heart\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"gender\",\n \"loving\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩❤️👨\": [\n \"couple_with_heart_woman_man\",\n \"love\",\n \"female\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨❤️👨\": [\n \"couple_with_heart_man_man\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩❤️👩\": [\n \"couple_with_heart_woman_woman\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"👪\": [\n \"family\",\n \"home\",\n \"parents\",\n \"child\",\n \"mom\",\n \"dad\",\n \"father\",\n \"mother\",\n \"people\",\n \"human\",\n \"boy\",\n \"female\",\n \"male\",\n \"man\",\n \"men\",\n \"woman\",\n \"women\"\n ],\n \"👨👩👦\": [\n \"family_man_woman_boy\",\n \"love\",\n \"father\",\n \"mother\",\n \"son\"\n ],\n \"👨👩👧\": [\n \"family_man_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"women\"\n ],\n \"👨👩👧👦\": [\n \"family_man_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👨👩👦👦\": [\n \"family_man_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👨👩👧👧\": [\n \"family_man_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"👨👨👦\": [\n \"family_man_man_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨👨👧\": [\n \"family_man_man_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👨👨👧👦\": [\n \"family_man_man_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨👨👦👦\": [\n \"family_man_man_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"sons\",\n \"two\"\n ],\n \"👨👨👧👧\": [\n \"family_man_man_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👩👩👦\": [\n \"family_woman_woman_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧\": [\n \"family_woman_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧👦\": [\n \"family_woman_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩👩👦👦\": [\n \"family_woman_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧👧\": [\n \"family_woman_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👨👦\": [\n \"family_man_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨👦👦\": [\n \"family_man_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"sons\",\n \"two\"\n ],\n \"👨👧\": [\n \"family_man_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\"\n ],\n \"👨👧👦\": [\n \"family_man_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨👧👧\": [\n \"family_man_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"two\"\n ],\n \"👩👦\": [\n \"family_woman_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"female\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👩👦👦\": [\n \"family_woman_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩👧\": [\n \"family_woman_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"female\",\n \"mother\",\n \"women\"\n ],\n \"👩👧👦\": [\n \"family_woman_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"male\",\n \"mother\",\n \"son\"\n ],\n \"👩👧👧\": [\n \"family_woman_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"🗣️\": [\n \"speaking_head\",\n \"user\",\n \"person\",\n \"human\",\n \"sing\",\n \"say\",\n \"talk\",\n \"face\",\n \"mansplaining\",\n \"shout\",\n \"shouting\",\n \"silhouette\",\n \"speak\"\n ],\n \"👤\": [\n \"bust_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"shadow\"\n ],\n \"👥\": [\n \"busts_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"group\",\n \"team\",\n \"bust\",\n \"people\",\n \"shadows\",\n \"silhouettes\",\n \"two\",\n \"users\",\n \"contributors\"\n ],\n \"👣\": [\n \"footprints\",\n \"feet\",\n \"tracking\",\n \"walking\",\n \"beach\",\n \"body\",\n \"clothing\",\n \"footprint\",\n \"footsteps\",\n \"print\",\n \"tracks\"\n ],\n \"🐵\": [\n \"monkey_face\",\n \"animal\",\n \"nature\",\n \"circus\",\n \"head\"\n ],\n \"🐒\": [\n \"monkey\",\n \"animal\",\n \"nature\",\n \"banana\",\n \"circus\",\n \"cheeky\"\n ],\n \"🦍\": [\n \"gorilla\",\n \"animal\",\n \"nature\",\n \"circus\"\n ],\n \"🦧\": [\n \"orangutan\",\n \"animal\",\n \"ape\"\n ],\n \"🐶\": [\n \"dog_face\",\n \"animal\",\n \"friend\",\n \"nature\",\n \"woof\",\n \"puppy\",\n \"pet\",\n \"faithful\"\n ],\n \"🐕\": [\n \"dog\",\n \"animal\",\n \"nature\",\n \"friend\",\n \"doge\",\n \"pet\",\n \"faithful\",\n \"dog2\",\n \"doggo\"\n ],\n \"🦮\": [\n \"guide_dog\",\n \"animal\",\n \"blind\",\n \"accessibility\",\n \"eye\",\n \"seeing\"\n ],\n \"🐕🦺\": [\n \"service_dog\",\n \"blind\",\n \"animal\",\n \"accessibility\",\n \"assistance\"\n ],\n \"🐩\": [\n \"poodle\",\n \"dog\",\n \"animal\",\n \"101\",\n \"nature\",\n \"pet\",\n \"miniature\",\n \"standard\",\n \"toy\"\n ],\n \"🐺\": [\n \"wolf\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\"\n ],\n \"🦊\": [\n \"fox\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦝\": [\n \"raccoon\",\n \"animal\",\n \"nature\",\n \"curious\",\n \"face\",\n \"sly\"\n ],\n \"🐱\": [\n \"cat_face\",\n \"animal\",\n \"meow\",\n \"nature\",\n \"pet\",\n \"kitten\",\n \"kitty\"\n ],\n \"🐈\": [\n \"cat\",\n \"animal\",\n \"meow\",\n \"pet\",\n \"cats\",\n \"cat2\",\n \"domestic\",\n \"feline\",\n \"housecat\"\n ],\n \"🦁\": [\n \"lion\",\n \"animal\",\n \"nature\",\n \"face\",\n \"leo\",\n \"zodiac\"\n ],\n \"🐯\": [\n \"tiger_face\",\n \"animal\",\n \"cat\",\n \"danger\",\n \"wild\",\n \"nature\",\n \"roar\",\n \"cute\"\n ],\n \"🐅\": [\n \"tiger\",\n \"animal\",\n \"nature\",\n \"roar\",\n \"bengal\",\n \"tiger2\"\n ],\n \"🐆\": [\n \"leopard\",\n \"animal\",\n \"nature\",\n \"african\",\n \"jaguar\"\n ],\n \"🐴\": [\n \"horse_face\",\n \"animal\",\n \"brown\",\n \"nature\",\n \"head\"\n ],\n \"🐎\": [\n \"horse\",\n \"animal\",\n \"gamble\",\n \"luck\",\n \"equestrian\",\n \"galloping\",\n \"racehorse\",\n \"racing\",\n \"speed\"\n ],\n \"🦄\": [\n \"unicorn\",\n \"animal\",\n \"nature\",\n \"mystical\",\n \"face\"\n ],\n \"🦓\": [\n \"zebra\",\n \"animal\",\n \"nature\",\n \"stripes\",\n \"safari\",\n \"face\",\n \"stripe\"\n ],\n \"🦌\": [\n \"deer\",\n \"animal\",\n \"nature\",\n \"horns\",\n \"venison\",\n \"buck\",\n \"reindeer\",\n \"stag\"\n ],\n \"🐮\": [\n \"cow_face\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"happy\"\n ],\n \"🐂\": [\n \"ox\",\n \"animal\",\n \"cow\",\n \"beef\",\n \"bull\",\n \"bullock\",\n \"oxen\",\n \"steer\",\n \"taurus\",\n \"zodiac\"\n ],\n \"🐃\": [\n \"water_buffalo\",\n \"animal\",\n \"nature\",\n \"ox\",\n \"cow\",\n \"domestic\"\n ],\n \"🐄\": [\n \"cow\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"cow2\",\n \"dairy\"\n ],\n \"🐷\": [\n \"pig_face\",\n \"animal\",\n \"oink\",\n \"nature\",\n \"head\"\n ],\n \"🐖\": [\n \"pig\",\n \"animal\",\n \"nature\",\n \"hog\",\n \"pig2\",\n \"sow\"\n ],\n \"🐗\": [\n \"boar\",\n \"animal\",\n \"nature\",\n \"pig\",\n \"warthog\",\n \"wild\"\n ],\n \"🐽\": [\n \"pig_nose\",\n \"animal\",\n \"oink\",\n \"face\",\n \"snout\"\n ],\n \"🐏\": [\n \"ram\",\n \"animal\",\n \"sheep\",\n \"nature\",\n \"aries\",\n \"male\",\n \"zodiac\"\n ],\n \"🐑\": [\n \"ewe\",\n \"animal\",\n \"nature\",\n \"wool\",\n \"shipit\",\n \"female\",\n \"lamb\",\n \"sheep\"\n ],\n \"🐐\": [\n \"goat\",\n \"animal\",\n \"nature\",\n \"capricorn\",\n \"zodiac\"\n ],\n \"🐪\": [\n \"camel\",\n \"animal\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"arabian\",\n \"bump\",\n \"dromedary\",\n \"one\"\n ],\n \"🐫\": [\n \"two_hump_camel\",\n \"animal\",\n \"nature\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"asian\",\n \"bactrian\",\n \"bump\"\n ],\n \"🦙\": [\n \"llama\",\n \"animal\",\n \"nature\",\n \"alpaca\",\n \"guanaco\",\n \"vicuña\",\n \"wool\"\n ],\n \"🦒\": [\n \"giraffe\",\n \"animal\",\n \"nature\",\n \"spots\",\n \"safari\",\n \"face\"\n ],\n \"🐘\": [\n \"elephant\",\n \"animal\",\n \"nature\",\n \"nose\",\n \"th\",\n \"circus\"\n ],\n \"🦏\": [\n \"rhinoceros\",\n \"animal\",\n \"nature\",\n \"horn\",\n \"rhino\"\n ],\n \"🦛\": [\n \"hippopotamus\",\n \"animal\",\n \"nature\",\n \"hippo\"\n ],\n \"🐭\": [\n \"mouse_face\",\n \"animal\",\n \"nature\",\n \"cheese_wedge\",\n \"rodent\"\n ],\n \"🐁\": [\n \"mouse\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"dormouse\",\n \"mice\",\n \"mouse2\"\n ],\n \"🐀\": [\n \"rat\",\n \"animal\",\n \"mouse\",\n \"rodent\"\n ],\n \"🐹\": [\n \"hamster\",\n \"animal\",\n \"nature\",\n \"face\",\n \"pet\"\n ],\n \"🐰\": [\n \"rabbit_face\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"spring\",\n \"magic\",\n \"bunny\",\n \"easter\"\n ],\n \"🐇\": [\n \"rabbit\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"magic\",\n \"spring\",\n \"bunny\",\n \"rabbit2\"\n ],\n \"🐿️\": [\n \"chipmunk\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"squirrel\"\n ],\n \"🦔\": [\n \"hedgehog\",\n \"animal\",\n \"nature\",\n \"spiny\",\n \"face\"\n ],\n \"🦇\": [\n \"bat\",\n \"animal\",\n \"nature\",\n \"blind\",\n \"vampire\",\n \"batman\"\n ],\n \"🐻\": [\n \"bear\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\",\n \"teddy\"\n ],\n \"🐨\": [\n \"koala\",\n \"animal\",\n \"nature\",\n \"bear\",\n \"face\",\n \"marsupial\"\n ],\n \"🐼\": [\n \"panda\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦥\": [\n \"sloth\",\n \"animal\",\n \"lazy\",\n \"slow\"\n ],\n \"🦦\": [\n \"otter\",\n \"animal\",\n \"fishing\",\n \"playful\"\n ],\n \"🦨\": [\n \"skunk\",\n \"animal\",\n \"smelly\",\n \"stink\"\n ],\n \"🦘\": [\n \"kangaroo\",\n \"animal\",\n \"nature\",\n \"australia\",\n \"joey\",\n \"hop\",\n \"marsupial\",\n \"jump\",\n \"roo\"\n ],\n \"🦡\": [\n \"badger\",\n \"animal\",\n \"nature\",\n \"honey\",\n \"pester\"\n ],\n \"🐾\": [\n \"paw_prints\",\n \"animal\",\n \"tracking\",\n \"footprints\",\n \"dog\",\n \"cat\",\n \"pet\",\n \"feet\",\n \"kitten\",\n \"print\",\n \"puppy\"\n ],\n \"🦃\": [\n \"turkey\",\n \"animal\",\n \"bird\",\n \"thanksgiving\",\n \"wild\"\n ],\n \"🐔\": [\n \"chicken\",\n \"animal\",\n \"cluck\",\n \"nature\",\n \"bird\",\n \"hen\"\n ],\n \"🐓\": [\n \"rooster\",\n \"animal\",\n \"nature\",\n \"chicken\",\n \"bird\",\n \"cock\",\n \"cockerel\"\n ],\n \"🐣\": [\n \"hatching_chick\",\n \"animal\",\n \"chicken\",\n \"egg\",\n \"born\",\n \"baby\",\n \"bird\"\n ],\n \"🐤\": [\n \"baby_chick\",\n \"animal\",\n \"chicken\",\n \"bird\",\n \"yellow\"\n ],\n \"🐥\": [\n \"front_facing_baby_chick\",\n \"animal\",\n \"chicken\",\n \"baby\",\n \"bird\",\n \"hatched\",\n \"standing\"\n ],\n \"🐦\": [\n \"bird\",\n \"animal\",\n \"nature\",\n \"fly\",\n \"tweet\",\n \"spring\"\n ],\n \"🐧\": [\n \"penguin\",\n \"animal\",\n \"nature\",\n \"bird\"\n ],\n \"🕊️\": [\n \"dove\",\n \"animal\",\n \"bird\",\n \"fly\",\n \"peace\"\n ],\n \"🦅\": [\n \"eagle\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"bald\"\n ],\n \"🦆\": [\n \"duck\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"mallard\"\n ],\n \"🦢\": [\n \"swan\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"cygnet\",\n \"duckling\",\n \"ugly\"\n ],\n \"🦉\": [\n \"owl\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"hoot\",\n \"wise\"\n ],\n \"🦩\": [\n \"flamingo\",\n \"animal\",\n \"flamboyant\",\n \"tropical\"\n ],\n \"🦚\": [\n \"peacock\",\n \"animal\",\n \"nature\",\n \"peahen\",\n \"bird\",\n \"ostentatious\",\n \"proud\"\n ],\n \"🦜\": [\n \"parrot\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"pirate\",\n \"talk\"\n ],\n \"🐸\": [\n \"frog\",\n \"animal\",\n \"nature\",\n \"croak\",\n \"toad\",\n \"face\"\n ],\n \"🐊\": [\n \"crocodile\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"lizard\",\n \"alligator\",\n \"croc\"\n ],\n \"🐢\": [\n \"turtle\",\n \"animal\",\n \"slow\",\n \"nature\",\n \"tortoise\",\n \"terrapin\"\n ],\n \"🦎\": [\n \"lizard\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"gecko\"\n ],\n \"🐍\": [\n \"snake\",\n \"animal\",\n \"evil\",\n \"nature\",\n \"hiss\",\n \"python\",\n \"bearer\",\n \"ophiuchus\",\n \"serpent\",\n \"zodiac\"\n ],\n \"🐲\": [\n \"dragon_face\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"head\",\n \"tale\"\n ],\n \"🐉\": [\n \"dragon\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"tale\"\n ],\n \"🦕\": [\n \"sauropod\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"brachiosaurus\",\n \"brontosaurus\",\n \"diplodocus\",\n \"extinct\"\n ],\n \"🦖\": [\n \"t_rex\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"tyrannosaurus\",\n \"extinct\",\n \"trex\"\n ],\n \"🐳\": [\n \"spouting_whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"cute\",\n \"face\"\n ],\n \"🐋\": [\n \"whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"whale2\"\n ],\n \"🐬\": [\n \"dolphin\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"flipper\",\n \"fins\",\n \"beach\"\n ],\n \"🐟\": [\n \"fish\",\n \"animal\",\n \"food\",\n \"nature\",\n \"freshwater\",\n \"pisces\",\n \"zodiac\"\n ],\n \"🐠\": [\n \"tropical_fish\",\n \"animal\",\n \"swim\",\n \"ocean\",\n \"beach\",\n \"nemo\",\n \"blue\",\n \"yellow\"\n ],\n \"🐡\": [\n \"blowfish\",\n \"animal\",\n \"nature\",\n \"food\",\n \"sea\",\n \"ocean\",\n \"fish\",\n \"fugu\",\n \"pufferfish\"\n ],\n \"🦈\": [\n \"shark\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"jaws\",\n \"fins\",\n \"beach\",\n \"great\",\n \"white\"\n ],\n \"🐙\": [\n \"octopus\",\n \"animal\",\n \"creature\",\n \"ocean\",\n \"sea\",\n \"nature\",\n \"beach\"\n ],\n \"🐚\": [\n \"spiral_shell\",\n \"nature\",\n \"sea\",\n \"beach\",\n \"seashell\"\n ],\n \"🐌\": [\n \"snail\",\n \"slow\",\n \"animal\",\n \"shell\",\n \"garden\",\n \"slug\"\n ],\n \"🦋\": [\n \"butterfly\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"caterpillar\",\n \"pretty\"\n ],\n \"🐛\": [\n \"bug\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"worm\",\n \"caterpillar\"\n ],\n \"🐜\": [\n \"ant\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\"\n ],\n \"🐝\": [\n \"honeybee\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\",\n \"spring\",\n \"honey\",\n \"bee\",\n \"bumblebee\"\n ],\n \"🐞\": [\n \"lady_beetle\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"ladybug\",\n \"bug\",\n \"ladybird\"\n ],\n \"🦗\": [\n \"cricket\",\n \"animal\",\n \"chirp\",\n \"grasshopper\",\n \"insect\",\n \"orthoptera\"\n ],\n \"🕷️\": [\n \"spider\",\n \"animal\",\n \"arachnid\",\n \"insect\"\n ],\n \"🕸️\": [\n \"spider_web\",\n \"animal\",\n \"insect\",\n \"arachnid\",\n \"silk\",\n \"cobweb\",\n \"spiderweb\"\n ],\n \"🦂\": [\n \"scorpion\",\n \"animal\",\n \"arachnid\",\n \"scorpio\",\n \"scorpius\",\n \"zodiac\"\n ],\n \"🦟\": [\n \"mosquito\",\n \"animal\",\n \"nature\",\n \"insect\",\n \"malaria\",\n \"disease\",\n \"fever\",\n \"pest\",\n \"virus\"\n ],\n \"🦠\": [\n \"microbe\",\n \"amoeba\",\n \"bacteria\",\n \"germs\",\n \"virus\",\n \"covid\",\n \"cell\",\n \"coronavirus\",\n \"germ\",\n \"microorganism\"\n ],\n \"💐\": [\n \"bouquet\",\n \"flowers\",\n \"nature\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"romance\"\n ],\n \"🌸\": [\n \"cherry_blossom\",\n \"nature\",\n \"plant\",\n \"spring\",\n \"flower\",\n \"pink\",\n \"sakura\"\n ],\n \"💮\": [\n \"white_flower\",\n \"japanese\",\n \"spring\",\n \"blossom\",\n \"cherry\",\n \"doily\",\n \"done\",\n \"paper\",\n \"stamp\",\n \"well\"\n ],\n \"🏵️\": [\n \"rosette\",\n \"flower\",\n \"decoration\",\n \"military\",\n \"plant\"\n ],\n \"🌹\": [\n \"rose\",\n \"flowers\",\n \"valentines\",\n \"love\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"red\"\n ],\n \"🥀\": [\n \"wilted_flower\",\n \"plant\",\n \"nature\",\n \"flower\",\n \"rose\",\n \"dead\",\n \"drooping\"\n ],\n \"🌺\": [\n \"hibiscus\",\n \"plant\",\n \"vegetable\",\n \"flowers\",\n \"beach\",\n \"flower\"\n ],\n \"🌻\": [\n \"sunflower\",\n \"nature\",\n \"plant\",\n \"fall\",\n \"flower\",\n \"sun\",\n \"yellow\"\n ],\n \"🌼\": [\n \"blossom\",\n \"nature\",\n \"flowers\",\n \"yellow\",\n \"blossoming flower\",\n \"daisy\",\n \"flower\",\n \"plant\"\n ],\n \"🌷\": [\n \"tulip\",\n \"flowers\",\n \"plant\",\n \"nature\",\n \"summer\",\n \"spring\",\n \"flower\"\n ],\n \"🌱\": [\n \"seedling\",\n \"plant\",\n \"nature\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"sprout\",\n \"sprouting\",\n \"young\",\n \"seed\"\n ],\n \"🌲\": [\n \"evergreen_tree\",\n \"plant\",\n \"nature\",\n \"fir\",\n \"pine\",\n \"wood\"\n ],\n \"🌳\": [\n \"deciduous_tree\",\n \"plant\",\n \"nature\",\n \"rounded\",\n \"shedding\",\n \"wood\"\n ],\n \"🌴\": [\n \"palm_tree\",\n \"plant\",\n \"vegetable\",\n \"nature\",\n \"summer\",\n \"beach\",\n \"mojito\",\n \"tropical\",\n \"coconut\"\n ],\n \"🌵\": [\n \"cactus\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"desert\"\n ],\n \"🌾\": [\n \"sheaf_of_rice\",\n \"nature\",\n \"plant\",\n \"crop\",\n \"ear\",\n \"farming\",\n \"grain\",\n \"wheat\"\n ],\n \"🌿\": [\n \"herb\",\n \"vegetable\",\n \"plant\",\n \"medicine\",\n \"weed\",\n \"grass\",\n \"lawn\",\n \"crop\",\n \"leaf\"\n ],\n \"☘️\": [\n \"shamrock\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"irish\",\n \"clover\",\n \"trefoil\"\n ],\n \"🍀\": [\n \"four_leaf_clover\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"lucky\",\n \"irish\",\n \"ireland\",\n \"luck\"\n ],\n \"🍁\": [\n \"maple_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"ca\",\n \"fall\",\n \"canada\",\n \"canadian\",\n \"falling\"\n ],\n \"🍂\": [\n \"fallen_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"leaves\",\n \"autumn\",\n \"brown\",\n \"fall\",\n \"falling\"\n ],\n \"🍃\": [\n \"leaf_fluttering_in_wind\",\n \"nature\",\n \"plant\",\n \"tree\",\n \"vegetable\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"blow\",\n \"flutter\",\n \"green\",\n \"leaves\"\n ],\n \"🍇\": [\n \"grapes\",\n \"fruit\",\n \"food\",\n \"wine\",\n \"grape\",\n \"plant\"\n ],\n \"🍈\": [\n \"melon\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"cantaloupe\",\n \"honeydew\",\n \"muskmelon\",\n \"plant\"\n ],\n \"🍉\": [\n \"watermelon\",\n \"fruit\",\n \"food\",\n \"picnic\",\n \"summer\",\n \"plant\"\n ],\n \"🍊\": [\n \"tangerine\",\n \"food\",\n \"fruit\",\n \"nature\",\n \"orange\",\n \"mandarin\",\n \"plant\"\n ],\n \"🍋\": [\n \"lemon\",\n \"fruit\",\n \"nature\",\n \"citrus\",\n \"lemonade\",\n \"plant\"\n ],\n \"🍌\": [\n \"banana\",\n \"fruit\",\n \"food\",\n \"monkey\",\n \"plant\",\n \"plantain\"\n ],\n \"🍍\": [\n \"pineapple\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥭\": [\n \"mango\",\n \"fruit\",\n \"food\",\n \"tropical\"\n ],\n \"🍎\": [\n \"red_apple\",\n \"fruit\",\n \"mac\",\n \"school\",\n \"delicious\",\n \"plant\"\n ],\n \"🍏\": [\n \"green_apple\",\n \"fruit\",\n \"nature\",\n \"delicious\",\n \"golden\",\n \"granny\",\n \"plant\",\n \"smith\"\n ],\n \"🍐\": [\n \"pear\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🍑\": [\n \"peach\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"bottom\",\n \"butt\",\n \"plant\"\n ],\n \"🍒\": [\n \"cherries\",\n \"food\",\n \"fruit\",\n \"berries\",\n \"cherry\",\n \"plant\",\n \"red\",\n \"wild\"\n ],\n \"🍓\": [\n \"strawberry\",\n \"fruit\",\n \"food\",\n \"nature\",\n \"berry\",\n \"plant\"\n ],\n \"🥝\": [\n \"kiwi_fruit\",\n \"fruit\",\n \"food\",\n \"chinese\",\n \"gooseberry\",\n \"kiwifruit\"\n ],\n \"🍅\": [\n \"tomato\",\n \"fruit\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥥\": [\n \"coconut\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"palm\",\n \"cocoanut\",\n \"colada\",\n \"piña\"\n ],\n \"🥑\": [\n \"avocado\",\n \"fruit\",\n \"food\"\n ],\n \"🍆\": [\n \"eggplant\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"aubergine\",\n \"phallic\",\n \"plant\",\n \"purple\"\n ],\n \"🥔\": [\n \"potato\",\n \"food\",\n \"tuber\",\n \"vegatable\",\n \"starch\",\n \"baked\",\n \"idaho\",\n \"vegetable\"\n ],\n \"🥕\": [\n \"carrot\",\n \"vegetable\",\n \"food\",\n \"orange\"\n ],\n \"🌽\": [\n \"ear_of_corn\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"cob\",\n \"maize\",\n \"maze\"\n ],\n \"🌶️\": [\n \"hot_pepper\",\n \"food\",\n \"spicy\",\n \"chilli\",\n \"chili\",\n \"plant\"\n ],\n \"🥒\": [\n \"cucumber\",\n \"fruit\",\n \"food\",\n \"pickle\",\n \"gherkin\",\n \"vegetable\"\n ],\n \"🥬\": [\n \"leafy_green\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"bok choy\",\n \"cabbage\",\n \"kale\",\n \"lettuce\",\n \"chinese\",\n \"cos\",\n \"greens\",\n \"romaine\"\n ],\n \"🥦\": [\n \"broccoli\",\n \"fruit\",\n \"food\",\n \"vegetable\",\n \"cabbage\",\n \"wild\"\n ],\n \"🧄\": [\n \"garlic\",\n \"food\",\n \"spice\",\n \"cook\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🧅\": [\n \"onion\",\n \"cook\",\n \"food\",\n \"spice\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🍄\": [\n \"mushroom\",\n \"plant\",\n \"vegetable\",\n \"fungus\",\n \"shroom\",\n \"toadstool\"\n ],\n \"🥜\": [\n \"peanuts\",\n \"food\",\n \"nut\",\n \"nuts\",\n \"peanut\",\n \"vegetable\"\n ],\n \"🌰\": [\n \"chestnut\",\n \"food\",\n \"squirrel\",\n \"acorn\",\n \"nut\",\n \"plant\"\n ],\n \"🍞\": [\n \"bread\",\n \"food\",\n \"wheat\",\n \"breakfast\",\n \"toast\",\n \"loaf\"\n ],\n \"🥐\": [\n \"croissant\",\n \"food\",\n \"bread\",\n \"french\",\n \"breakfast\",\n \"crescent\",\n \"roll\"\n ],\n \"🥖\": [\n \"baguette_bread\",\n \"food\",\n \"bread\",\n \"french\",\n \"france\",\n \"bakery\"\n ],\n \"🥨\": [\n \"pretzel\",\n \"food\",\n \"bread\",\n \"twisted\",\n \"germany\",\n \"bakery\",\n \"soft\",\n \"twist\"\n ],\n \"🥯\": [\n \"bagel\",\n \"food\",\n \"bread\",\n \"bakery\",\n \"schmear\",\n \"jewish_bakery\",\n \"breakfast\",\n \"cheese\",\n \"cream\"\n ],\n \"🥞\": [\n \"pancakes\",\n \"food\",\n \"breakfast\",\n \"flapjacks\",\n \"hotcakes\",\n \"brunch\",\n \"crêpe\",\n \"crêpes\",\n \"hotcake\",\n \"pancake\"\n ],\n \"🧇\": [\n \"waffle\",\n \"food\",\n \"breakfast\",\n \"brunch\",\n \"indecisive\",\n \"iron\"\n ],\n \"🧀\": [\n \"cheese_wedge\",\n \"food\",\n \"chadder\",\n \"swiss\"\n ],\n \"🍖\": [\n \"meat_on_bone\",\n \"good\",\n \"food\",\n \"drumstick\",\n \"barbecue\",\n \"bbq\",\n \"manga\"\n ],\n \"🍗\": [\n \"poultry_leg\",\n \"food\",\n \"meat\",\n \"drumstick\",\n \"bird\",\n \"chicken\",\n \"turkey\",\n \"bone\"\n ],\n \"🥩\": [\n \"cut_of_meat\",\n \"food\",\n \"cow\",\n \"meat\",\n \"cut\",\n \"chop\",\n \"lambchop\",\n \"porkchop\",\n \"steak\"\n ],\n \"🥓\": [\n \"bacon\",\n \"food\",\n \"breakfast\",\n \"pork\",\n \"pig\",\n \"meat\",\n \"brunch\",\n \"rashers\"\n ],\n \"🍔\": [\n \"hamburger\",\n \"meat\",\n \"fast food\",\n \"beef\",\n \"cheeseburger\",\n \"mcdonalds\",\n \"burger king\"\n ],\n \"🍟\": [\n \"french_fries\",\n \"chips\",\n \"snack\",\n \"fast food\",\n \"potato\",\n \"mcdonald's\"\n ],\n \"🍕\": [\n \"pizza\",\n \"food\",\n \"party\",\n \"italy\",\n \"cheese\",\n \"pepperoni\",\n \"slice\"\n ],\n \"🌭\": [\n \"hot_dog\",\n \"food\",\n \"frankfurter\",\n \"america\",\n \"hotdog\",\n \"redhot\",\n \"sausage\",\n \"wiener\"\n ],\n \"🥪\": [\n \"sandwich\",\n \"food\",\n \"lunch\",\n \"bread\",\n \"toast\",\n \"bakery\",\n \"cheese\",\n \"deli\",\n \"meat\",\n \"vegetables\"\n ],\n \"🌮\": [\n \"taco\",\n \"food\",\n \"mexican\"\n ],\n \"🌯\": [\n \"burrito\",\n \"food\",\n \"mexican\",\n \"wrap\"\n ],\n \"🥙\": [\n \"stuffed_flatbread\",\n \"food\",\n \"flatbread\",\n \"stuffed\",\n \"gyro\",\n \"mediterranean\",\n \"doner\",\n \"falafel\",\n \"kebab\",\n \"pita\",\n \"sandwich\",\n \"shawarma\"\n ],\n \"🧆\": [\n \"falafel\",\n \"food\",\n \"mediterranean\",\n \"chickpea\",\n \"falfel\",\n \"meatball\"\n ],\n \"🥚\": [\n \"egg\",\n \"food\",\n \"chicken\",\n \"breakfast\",\n \"easter_egg\"\n ],\n \"🍳\": [\n \"cooking\",\n \"food\",\n \"breakfast\",\n \"kitchen\",\n \"egg\",\n \"skillet\",\n \"fried\",\n \"frying\",\n \"pan\"\n ],\n \"🥘\": [\n \"shallow_pan_of_food\",\n \"food\",\n \"cooking\",\n \"casserole\",\n \"paella\",\n \"skillet\",\n \"curry\"\n ],\n \"🍲\": [\n \"pot_of_food\",\n \"food\",\n \"meat\",\n \"soup\",\n \"hot pot\",\n \"bowl\",\n \"stew\"\n ],\n \"🥣\": [\n \"bowl_with_spoon\",\n \"food\",\n \"breakfast\",\n \"cereal\",\n \"oatmeal\",\n \"porridge\",\n \"congee\",\n \"tableware\"\n ],\n \"🥗\": [\n \"green_salad\",\n \"food\",\n \"healthy\",\n \"lettuce\",\n \"vegetable\"\n ],\n \"🍿\": [\n \"popcorn\",\n \"food\",\n \"movie theater\",\n \"films\",\n \"snack\",\n \"drama\",\n \"corn\",\n \"popping\"\n ],\n \"🧈\": [\n \"butter\",\n \"food\",\n \"cook\",\n \"dairy\"\n ],\n \"🧂\": [\n \"salt\",\n \"condiment\",\n \"shaker\"\n ],\n \"🥫\": [\n \"canned_food\",\n \"food\",\n \"soup\",\n \"tomatoes\",\n \"can\",\n \"preserve\",\n \"tin\",\n \"tinned\"\n ],\n \"🍱\": [\n \"bento_box\",\n \"food\",\n \"japanese\",\n \"box\",\n \"lunch\",\n \"assets\"\n ],\n \"🍘\": [\n \"rice_cracker\",\n \"food\",\n \"japanese\",\n \"snack\",\n \"senbei\"\n ],\n \"🍙\": [\n \"rice_ball\",\n \"food\",\n \"japanese\",\n \"onigiri\",\n \"omusubi\"\n ],\n \"🍚\": [\n \"cooked_rice\",\n \"food\",\n \"asian\",\n \"boiled\",\n \"bowl\",\n \"steamed\"\n ],\n \"🍛\": [\n \"curry_rice\",\n \"food\",\n \"spicy\",\n \"hot\",\n \"indian\"\n ],\n \"🍜\": [\n \"steaming_bowl\",\n \"food\",\n \"japanese\",\n \"noodle\",\n \"chopsticks\",\n \"ramen\",\n \"noodles\",\n \"soup\"\n ],\n \"🍝\": [\n \"spaghetti\",\n \"food\",\n \"italian\",\n \"pasta\",\n \"noodle\"\n ],\n \"🍠\": [\n \"roasted_sweet_potato\",\n \"food\",\n \"nature\",\n \"plant\",\n \"goguma\",\n \"yam\"\n ],\n \"🍢\": [\n \"oden\",\n \"skewer\",\n \"food\",\n \"japanese\",\n \"kebab\",\n \"seafood\",\n \"stick\"\n ],\n \"🍣\": [\n \"sushi\",\n \"food\",\n \"fish\",\n \"japanese\",\n \"rice\",\n \"sashimi\",\n \"seafood\"\n ],\n \"🍤\": [\n \"fried_shrimp\",\n \"food\",\n \"animal\",\n \"appetizer\",\n \"summer\",\n \"prawn\",\n \"tempura\"\n ],\n \"🍥\": [\n \"fish_cake_with_swirl\",\n \"food\",\n \"japan\",\n \"sea\",\n \"beach\",\n \"narutomaki\",\n \"pink\",\n \"swirl\",\n \"kamaboko\",\n \"surimi\",\n \"ramen\",\n \"design\",\n \"fishcake\",\n \"pastry\"\n ],\n \"🥮\": [\n \"moon_cake\",\n \"food\",\n \"autumn\",\n \"dessert\",\n \"festival\",\n \"mooncake\",\n \"yuèbǐng\"\n ],\n \"🍡\": [\n \"dango\",\n \"food\",\n \"dessert\",\n \"sweet\",\n \"japanese\",\n \"barbecue\",\n \"meat\",\n \"balls\",\n \"green\",\n \"pink\",\n \"skewer\",\n \"stick\",\n \"white\"\n ],\n \"🥟\": [\n \"dumpling\",\n \"food\",\n \"empanada\",\n \"pierogi\",\n \"potsticker\",\n \"gyoza\",\n \"gyōza\",\n \"jiaozi\"\n ],\n \"🥠\": [\n \"fortune_cookie\",\n \"food\",\n \"prophecy\",\n \"dessert\"\n ],\n \"🥡\": [\n \"takeout_box\",\n \"food\",\n \"leftovers\",\n \"chinese\",\n \"container\",\n \"out\",\n \"oyster\",\n \"pail\",\n \"take\"\n ],\n \"🦀\": [\n \"crab\",\n \"animal\",\n \"crustacean\",\n \"cancer\",\n \"zodiac\"\n ],\n \"🦞\": [\n \"lobster\",\n \"animal\",\n \"nature\",\n \"bisque\",\n \"claws\",\n \"seafood\"\n ],\n \"🦐\": [\n \"shrimp\",\n \"animal\",\n \"ocean\",\n \"nature\",\n \"seafood\",\n \"food\",\n \"prawn\",\n \"shellfish\",\n \"small\"\n ],\n \"🦑\": [\n \"squid\",\n \"animal\",\n \"nature\",\n \"ocean\",\n \"sea\",\n \"food\",\n \"molusc\"\n ],\n \"🦪\": [\n \"oyster\",\n \"food\",\n \"diving\",\n \"pearl\"\n ],\n \"🍦\": [\n \"soft_ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"icecream\",\n \"mr.\",\n \"serve\",\n \"sweet\",\n \"whippy\"\n ],\n \"🍧\": [\n \"shaved_ice\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"cone\",\n \"snow\",\n \"sweet\"\n ],\n \"🍨\": [\n \"ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"bowl\",\n \"sweet\"\n ],\n \"🍩\": [\n \"doughnut\",\n \"food\",\n \"dessert\",\n \"snack\",\n \"sweet\",\n \"donut\",\n \"breakfast\"\n ],\n \"🍪\": [\n \"cookie\",\n \"food\",\n \"snack\",\n \"oreo\",\n \"chocolate\",\n \"sweet\",\n \"dessert\",\n \"biscuit\",\n \"chip\"\n ],\n \"🎂\": [\n \"birthday_cake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"candles\",\n \"celebration\",\n \"party\",\n \"pastry\",\n \"sweet\"\n ],\n \"🍰\": [\n \"shortcake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"pastry\",\n \"piece\",\n \"slice\",\n \"strawberry\",\n \"sweet\"\n ],\n \"🧁\": [\n \"cupcake\",\n \"food\",\n \"dessert\",\n \"bakery\",\n \"sweet\",\n \"cake\",\n \"fairy\",\n \"pastry\"\n ],\n \"🥧\": [\n \"pie\",\n \"food\",\n \"dessert\",\n \"pastry\",\n \"filling\",\n \"sweet\"\n ],\n \"🍫\": [\n \"chocolate_bar\",\n \"food\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"candy\"\n ],\n \"🍬\": [\n \"candy\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"lolly\"\n ],\n \"🍭\": [\n \"lollipop\",\n \"food\",\n \"snack\",\n \"candy\",\n \"sweet\",\n \"dessert\",\n \"lollypop\",\n \"sucker\"\n ],\n \"🍮\": [\n \"custard\",\n \"dessert\",\n \"food\",\n \"pudding\",\n \"flan\",\n \"caramel\",\n \"creme\",\n \"sweet\"\n ],\n \"🍯\": [\n \"honey_pot\",\n \"bees\",\n \"sweet\",\n \"kitchen\",\n \"honeypot\"\n ],\n \"🍼\": [\n \"baby_bottle\",\n \"food\",\n \"container\",\n \"milk\",\n \"drink\",\n \"feeding\"\n ],\n \"🥛\": [\n \"glass_of_milk\",\n \"beverage\",\n \"drink\",\n \"cow\"\n ],\n \"☕\": [\n \"hot_beverage\",\n \"beverage\",\n \"caffeine\",\n \"latte\",\n \"espresso\",\n \"coffee\",\n \"mug\",\n \"cafe\",\n \"chocolate\",\n \"drink\",\n \"steaming\",\n \"tea\"\n ],\n \"🍵\": [\n \"teacup_without_handle\",\n \"drink\",\n \"bowl\",\n \"breakfast\",\n \"green\",\n \"british\",\n \"beverage\",\n \"cup\",\n \"matcha\",\n \"tea\"\n ],\n \"🍶\": [\n \"sake\",\n \"wine\",\n \"drink\",\n \"drunk\",\n \"beverage\",\n \"japanese\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"bottle\",\n \"cup\",\n \"rice\"\n ],\n \"🍾\": [\n \"bottle_with_popping_cork\",\n \"drink\",\n \"wine\",\n \"bottle\",\n \"celebration\",\n \"bar\",\n \"bubbly\",\n \"champagne\",\n \"party\",\n \"sparkling\"\n ],\n \"🍷\": [\n \"wine_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"red\"\n ],\n \"🍸\": [\n \"cocktail_glass\",\n \"drink\",\n \"drunk\",\n \"alcohol\",\n \"beverage\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"martini\"\n ],\n \"🍹\": [\n \"tropical_drink\",\n \"beverage\",\n \"cocktail\",\n \"summer\",\n \"beach\",\n \"alcohol\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"fruit\",\n \"punch\",\n \"tiki\",\n \"vacation\"\n ],\n \"🍺\": [\n \"beer_mug\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"stein\"\n ],\n \"🍻\": [\n \"clinking_beer_mugs\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"beers\",\n \"cheers\",\n \"clink\",\n \"drinks\",\n \"mug\"\n ],\n \"🥂\": [\n \"clinking_glasses\",\n \"beverage\",\n \"drink\",\n \"party\",\n \"alcohol\",\n \"celebrate\",\n \"cheers\",\n \"wine\",\n \"champagne\",\n \"toast\",\n \"celebration\",\n \"clink\",\n \"glass\"\n ],\n \"🥃\": [\n \"tumbler_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"liquor\",\n \"booze\",\n \"bourbon\",\n \"scotch\",\n \"whisky\",\n \"glass\",\n \"shot\",\n \"rum\",\n \"whiskey\"\n ],\n \"🥤\": [\n \"cup_with_straw\",\n \"drink\",\n \"soda\",\n \"go\",\n \"juice\",\n \"malt\",\n \"milkshake\",\n \"pop\",\n \"smoothie\",\n \"soft\",\n \"tableware\",\n \"water\"\n ],\n \"🧃\": [\n \"beverage_box\",\n \"drink\",\n \"juice\",\n \"straw\",\n \"sweet\"\n ],\n \"🧉\": [\n \"mate\",\n \"drink\",\n \"tea\",\n \"beverage\",\n \"bombilla\",\n \"chimarrão\",\n \"cimarrón\",\n \"maté\",\n \"yerba\"\n ],\n \"🧊\": [\n \"ice\",\n \"water\",\n \"cold\",\n \"cube\",\n \"iceberg\"\n ],\n \"🥢\": [\n \"chopsticks\",\n \"food\",\n \"hashi\",\n \"jeotgarak\",\n \"kuaizi\"\n ],\n \"🍽️\": [\n \"fork_and_knife_with_plate\",\n \"food\",\n \"eat\",\n \"meal\",\n \"lunch\",\n \"dinner\",\n \"restaurant\",\n \"cooking\",\n \"cutlery\",\n \"dining\",\n \"tableware\"\n ],\n \"🍴\": [\n \"fork_and_knife\",\n \"cutlery\",\n \"kitchen\",\n \"cooking\",\n \"silverware\",\n \"tableware\"\n ],\n \"🥄\": [\n \"spoon\",\n \"cutlery\",\n \"kitchen\",\n \"tableware\"\n ],\n \"🔪\": [\n \"kitchen_knife\",\n \"knife\",\n \"blade\",\n \"cutlery\",\n \"kitchen\",\n \"weapon\",\n \"butchers\",\n \"chop\",\n \"cooking\",\n \"cut\",\n \"hocho\",\n \"tool\"\n ],\n \"🏺\": [\n \"amphora\",\n \"vase\",\n \"jar\",\n \"aquarius\",\n \"cooking\",\n \"drink\",\n \"jug\",\n \"tool\",\n \"zodiac\"\n ],\n \"🌍\": [\n \"globe_showing_europe_africa\",\n \"globe\",\n \"world\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌎\": [\n \"globe_showing_americas\",\n \"globe\",\n \"world\",\n \"USA\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌏\": [\n \"globe_showing_asia_australia\",\n \"globe\",\n \"world\",\n \"east\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌐\": [\n \"globe_with_meridians\",\n \"earth\",\n \"international\",\n \"world\",\n \"internet\",\n \"interweb\",\n \"i18n\",\n \"global\",\n \"web\",\n \"wide\",\n \"www\",\n \"internationalization\",\n \"localization\"\n ],\n \"🗺️\": [\n \"world_map\",\n \"location\",\n \"direction\",\n \"travel\"\n ],\n \"🗾\": [\n \"map_of_japan\",\n \"nation\",\n \"country\",\n \"japanese\",\n \"asia\",\n \"silhouette\"\n ],\n \"🧭\": [\n \"compass\",\n \"magnetic\",\n \"navigation\",\n \"orienteering\"\n ],\n \"🏔️\": [\n \"snow_capped_mountain\",\n \"photo\",\n \"nature\",\n \"environment\",\n \"winter\",\n \"cold\"\n ],\n \"⛰️\": [\n \"mountain\",\n \"photo\",\n \"nature\",\n \"environment\"\n ],\n \"🌋\": [\n \"volcano\",\n \"photo\",\n \"nature\",\n \"disaster\",\n \"eruption\",\n \"mountain\",\n \"weather\"\n ],\n \"🗻\": [\n \"mount_fuji\",\n \"photo\",\n \"mountain\",\n \"nature\",\n \"japanese\",\n \"capped\",\n \"san\",\n \"snow\"\n ],\n \"🏕️\": [\n \"camping\",\n \"photo\",\n \"outdoors\",\n \"tent\",\n \"campsite\"\n ],\n \"🏖️\": [\n \"beach_with_umbrella\",\n \"weather\",\n \"summer\",\n \"sunny\",\n \"sand\",\n \"mojito\"\n ],\n \"🏜️\": [\n \"desert\",\n \"photo\",\n \"warm\",\n \"saharah\"\n ],\n \"🏝️\": [\n \"desert_island\",\n \"photo\",\n \"tropical\",\n \"mojito\"\n ],\n \"🏞️\": [\n \"national_park\",\n \"photo\",\n \"environment\",\n \"nature\"\n ],\n \"🏟️\": [\n \"stadium\",\n \"photo\",\n \"place\",\n \"sports\",\n \"concert\",\n \"venue\",\n \"grandstand\",\n \"sport\"\n ],\n \"🏛️\": [\n \"classical_building\",\n \"art\",\n \"culture\",\n \"history\"\n ],\n \"🏗️\": [\n \"building_construction\",\n \"wip\",\n \"working\",\n \"progress\",\n \"crane\",\n \"architectural\"\n ],\n \"🧱\": [\n \"brick\",\n \"bricks\",\n \"clay\",\n \"construction\",\n \"mortar\",\n \"wall\",\n \"infrastructure\"\n ],\n \"🏘️\": [\n \"houses\",\n \"buildings\",\n \"photo\",\n \"building\",\n \"group\",\n \"house\"\n ],\n \"🏚️\": [\n \"derelict_house\",\n \"abandon\",\n \"evict\",\n \"broken\",\n \"building\",\n \"abandoned\",\n \"haunted\",\n \"old\"\n ],\n \"🏠\": [\n \"house\",\n \"building\",\n \"home\"\n ],\n \"🏡\": [\n \"house_with_garden\",\n \"home\",\n \"plant\",\n \"nature\",\n \"building\",\n \"tree\"\n ],\n \"🏢\": [\n \"office_building\",\n \"building\",\n \"bureau\",\n \"work\",\n \"city\",\n \"high\",\n \"rise\"\n ],\n \"🏣\": [\n \"japanese_post_office\",\n \"building\",\n \"envelope\",\n \"communication\",\n \"japan\",\n \"mark\",\n \"postal\"\n ],\n \"🏤\": [\n \"post_office\",\n \"building\",\n \"email\",\n \"european\"\n ],\n \"🏥\": [\n \"hospital\",\n \"building\",\n \"health\",\n \"surgery\",\n \"doctor\",\n \"cross\",\n \"emergency\",\n \"medical\",\n \"medicine\",\n \"red\",\n \"room\"\n ],\n \"🏦\": [\n \"bank\",\n \"building\",\n \"money\",\n \"sales\",\n \"cash\",\n \"business\",\n \"enterprise\",\n \"bakkureru\",\n \"bk\",\n \"branch\"\n ],\n \"🏨\": [\n \"hotel\",\n \"building\",\n \"accomodation\",\n \"checkin\",\n \"accommodation\",\n \"h\"\n ],\n \"🏩\": [\n \"love_hotel\",\n \"like\",\n \"affection\",\n \"dating\",\n \"building\",\n \"heart\",\n \"hospital\"\n ],\n \"🏪\": [\n \"convenience_store\",\n \"building\",\n \"shopping\",\n \"groceries\",\n \"corner\",\n \"e\",\n \"eleven®\",\n \"hour\",\n \"kwik\",\n \"mart\",\n \"shop\"\n ],\n \"🏫\": [\n \"school\",\n \"building\",\n \"student\",\n \"education\",\n \"learn\",\n \"teach\",\n \"clock\",\n \"elementary\",\n \"high\",\n \"middle\",\n \"tower\"\n ],\n \"🏬\": [\n \"department_store\",\n \"building\",\n \"shopping\",\n \"mall\",\n \"center\",\n \"shops\"\n ],\n \"🏭\": [\n \"factory\",\n \"building\",\n \"industry\",\n \"pollution\",\n \"smoke\",\n \"industrial\",\n \"smog\"\n ],\n \"🏯\": [\n \"japanese_castle\",\n \"photo\",\n \"building\",\n \"fortress\"\n ],\n \"🏰\": [\n \"castle\",\n \"building\",\n \"royalty\",\n \"history\",\n \"european\",\n \"turrets\"\n ],\n \"💒\": [\n \"wedding\",\n \"love\",\n \"like\",\n \"affection\",\n \"couple\",\n \"marriage\",\n \"bride\",\n \"groom\",\n \"activity\",\n \"chapel\",\n \"church\",\n \"heart\",\n \"romance\"\n ],\n \"🗼\": [\n \"tokyo_tower\",\n \"photo\",\n \"japanese\",\n \"eiffel\",\n \"red\"\n ],\n \"🗽\": [\n \"statue_of_liberty\",\n \"american\",\n \"newyork\",\n \"new\",\n \"york\"\n ],\n \"⛪\": [\n \"church\",\n \"building\",\n \"religion\",\n \"christ\",\n \"christian\",\n \"cross\"\n ],\n \"🕌\": [\n \"mosque\",\n \"islam\",\n \"worship\",\n \"minaret\",\n \"domed\",\n \"muslim\",\n \"religion\",\n \"roof\"\n ],\n \"🛕\": [\n \"hindu_temple\",\n \"religion\"\n ],\n \"🕍\": [\n \"synagogue\",\n \"judaism\",\n \"worship\",\n \"temple\",\n \"jewish\",\n \"jew\",\n \"religion\",\n \"synagog\"\n ],\n \"⛩️\": [\n \"shinto_shrine\",\n \"temple\",\n \"japan\",\n \"kyoto\",\n \"kami\",\n \"michi\",\n \"no\",\n \"religion\"\n ],\n \"🕋\": [\n \"kaaba\",\n \"mecca\",\n \"mosque\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"⛲\": [\n \"fountain\",\n \"photo\",\n \"summer\",\n \"water\",\n \"fresh\",\n \"feature\",\n \"park\"\n ],\n \"⛺\": [\n \"tent\",\n \"photo\",\n \"camping\",\n \"outdoors\"\n ],\n \"🌁\": [\n \"foggy\",\n \"photo\",\n \"mountain\",\n \"bridge\",\n \"city\",\n \"fog\",\n \"fog bridge\",\n \"karl\",\n \"under\",\n \"weather\"\n ],\n \"🌃\": [\n \"night_with_stars\",\n \"evening\",\n \"city\",\n \"downtown\",\n \"star\",\n \"starry\",\n \"weather\"\n ],\n \"🏙️\": [\n \"cityscape\",\n \"photo\",\n \"night life\",\n \"urban\",\n \"building\",\n \"city\",\n \"skyline\"\n ],\n \"🌄\": [\n \"sunrise_over_mountains\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"morning\",\n \"mountain\",\n \"sun\",\n \"weather\"\n ],\n \"🌅\": [\n \"sunrise\",\n \"morning\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌆\": [\n \"cityscape_at_dusk\",\n \"photo\",\n \"evening\",\n \"sky\",\n \"buildings\",\n \"building\",\n \"city\",\n \"landscape\",\n \"orange\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌇\": [\n \"sunset\",\n \"photo\",\n \"good morning\",\n \"dawn\",\n \"building\",\n \"buildings\",\n \"city\",\n \"dusk\",\n \"over\",\n \"sun\",\n \"sunrise\",\n \"weather\"\n ],\n \"🌉\": [\n \"bridge_at_night\",\n \"photo\",\n \"sanfrancisco\",\n \"gate\",\n \"golden\",\n \"weather\"\n ],\n \"♨️\": [\n \"hot_springs\",\n \"bath\",\n \"warm\",\n \"relax\",\n \"hotsprings\",\n \"onsen\",\n \"steam\",\n \"steaming\"\n ],\n \"🎠\": [\n \"carousel_horse\",\n \"photo\",\n \"carnival\",\n \"activity\",\n \"entertainment\",\n \"fairground\",\n \"go\",\n \"merry\",\n \"round\"\n ],\n \"🎡\": [\n \"ferris_wheel\",\n \"photo\",\n \"carnival\",\n \"londoneye\",\n \"activity\",\n \"amusement\",\n \"big\",\n \"entertainment\",\n \"fairground\",\n \"observation\",\n \"park\"\n ],\n \"🎢\": [\n \"roller_coaster\",\n \"carnival\",\n \"playground\",\n \"photo\",\n \"fun\",\n \"activity\",\n \"amusement\",\n \"entertainment\",\n \"park\",\n \"rollercoaster\",\n \"theme\"\n ],\n \"💈\": [\n \"barber_pole\",\n \"hair\",\n \"salon\",\n \"style\",\n \"barber's\",\n \"haircut\",\n \"hairdresser\",\n \"shop\",\n \"stripes\"\n ],\n \"🎪\": [\n \"circus_tent\",\n \"festival\",\n \"carnival\",\n \"party\",\n \"activity\",\n \"big\",\n \"entertainment\",\n \"top\"\n ],\n \"🚂\": [\n \"locomotive\",\n \"transportation\",\n \"vehicle\",\n \"train\",\n \"engine\",\n \"railway\",\n \"steam\"\n ],\n \"🚃\": [\n \"railway_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"electric\",\n \"railcar\",\n \"railroad\",\n \"train\",\n \"tram\",\n \"trolleybus\",\n \"wagon\"\n ],\n \"🚄\": [\n \"high_speed_train\",\n \"transportation\",\n \"vehicle\",\n \"bullettrain\",\n \"railway\",\n \"shinkansen\",\n \"side\"\n ],\n \"🚅\": [\n \"bullet_train\",\n \"transportation\",\n \"vehicle\",\n \"speed\",\n \"fast\",\n \"public\",\n \"travel\",\n \"bullettrain\",\n \"front\",\n \"high\",\n \"nose\",\n \"railway\",\n \"shinkansen\"\n ],\n \"🚆\": [\n \"train\",\n \"transportation\",\n \"vehicle\",\n \"diesel\",\n \"electric\",\n \"passenger\",\n \"railway\",\n \"regular\",\n \"train2\"\n ],\n \"🚇\": [\n \"metro\",\n \"transportation\",\n \"blue-square\",\n \"mrt\",\n \"underground\",\n \"tube\",\n \"subway\",\n \"train\",\n \"vehicle\"\n ],\n \"🚈\": [\n \"light_rail\",\n \"transportation\",\n \"vehicle\",\n \"railway\"\n ],\n \"🚉\": [\n \"station\",\n \"transportation\",\n \"vehicle\",\n \"public\",\n \"platform\",\n \"railway\",\n \"train\"\n ],\n \"🚊\": [\n \"tram\",\n \"transportation\",\n \"vehicle\",\n \"trolleybus\"\n ],\n \"🚝\": [\n \"monorail\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🚞\": [\n \"mountain_railway\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"funicular\",\n \"train\"\n ],\n \"🚋\": [\n \"tram_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"public\",\n \"travel\",\n \"train\",\n \"trolleybus\"\n ],\n \"🚌\": [\n \"bus\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"school\"\n ],\n \"🚍\": [\n \"oncoming_bus\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚎\": [\n \"trolleybus\",\n \"bart\",\n \"transportation\",\n \"vehicle\",\n \"bus\",\n \"electric bus\",\n \"tram\",\n \"trolley\"\n ],\n \"🚐\": [\n \"minibus\",\n \"vehicle\",\n \"car\",\n \"transportation\",\n \"bus\",\n \"minivan\",\n \"mover\",\n \"people\"\n ],\n \"🚑\": [\n \"ambulance\",\n \"health\",\n \"911\",\n \"hospital\",\n \"vehicle\"\n ],\n \"🚒\": [\n \"fire_engine\",\n \"transportation\",\n \"cars\",\n \"vehicle\",\n \"department\",\n \"truck\"\n ],\n \"🚓\": [\n \"police_car\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"cop\",\n \"patrol\",\n \"side\"\n ],\n \"🚔\": [\n \"oncoming_police_car\",\n \"vehicle\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"911\",\n \"front of\",\n \"🚓 cop\"\n ],\n \"🚕\": [\n \"taxi\",\n \"uber\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"new\",\n \"side\",\n \"taxicab\",\n \"york\"\n ],\n \"🚖\": [\n \"oncoming_taxi\",\n \"vehicle\",\n \"cars\",\n \"uber\",\n \"front\",\n \"taxicab\"\n ],\n \"🚗\": [\n \"automobile\",\n \"red\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"side\"\n ],\n \"🚘\": [\n \"oncoming_automobile\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚙\": [\n \"sport_utility_vehicle\",\n \"transportation\",\n \"vehicle\",\n \"blue\",\n \"campervan\",\n \"car\",\n \"motorhome\",\n \"recreational\",\n \"rv\"\n ],\n \"🚚\": [\n \"delivery_truck\",\n \"cars\",\n \"transportation\",\n \"vehicle\",\n \"resources\"\n ],\n \"🚛\": [\n \"articulated_lorry\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"express\",\n \"green\",\n \"semi\",\n \"truck\"\n ],\n \"🚜\": [\n \"tractor\",\n \"vehicle\",\n \"car\",\n \"farming\",\n \"agriculture\",\n \"farm\"\n ],\n \"🏎️\": [\n \"racing_car\",\n \"sports\",\n \"race\",\n \"fast\",\n \"formula\",\n \"f1\",\n \"one\"\n ],\n \"🏍️\": [\n \"motorcycle\",\n \"race\",\n \"sports\",\n \"fast\",\n \"motorbike\",\n \"racing\"\n ],\n \"🛵\": [\n \"motor_scooter\",\n \"vehicle\",\n \"vespa\",\n \"sasha\",\n \"bike\",\n \"cycle\"\n ],\n \"🦽\": [\n \"manual_wheelchair\",\n \"accessibility\"\n ],\n \"🦼\": [\n \"motorized_wheelchair\",\n \"accessibility\"\n ],\n \"🛺\": [\n \"auto_rickshaw\",\n \"move\",\n \"transportation\",\n \"tuk\"\n ],\n \"🚲\": [\n \"bicycle\",\n \"bike\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"push\",\n \"vehicle\"\n ],\n \"🛴\": [\n \"kick_scooter\",\n \"vehicle\",\n \"kick\",\n \"razor\"\n ],\n \"🛹\": [\n \"skateboard\",\n \"board\",\n \"skate\"\n ],\n \"🚏\": [\n \"bus_stop\",\n \"transportation\",\n \"wait\",\n \"busstop\"\n ],\n \"🛣️\": [\n \"motorway\",\n \"road\",\n \"cupertino\",\n \"interstate\",\n \"highway\"\n ],\n \"🛤️\": [\n \"railway_track\",\n \"train\",\n \"transportation\"\n ],\n \"🛢️\": [\n \"oil_drum\",\n \"barrell\"\n ],\n \"⛽\": [\n \"fuel_pump\",\n \"gas station\",\n \"petroleum\",\n \"diesel\",\n \"fuelpump\",\n \"petrol\"\n ],\n \"🚨\": [\n \"police_car_light\",\n \"police\",\n \"ambulance\",\n \"911\",\n \"emergency\",\n \"alert\",\n \"error\",\n \"pinged\",\n \"law\",\n \"legal\",\n \"beacon\",\n \"cars\",\n \"car’s\",\n \"emergency light\",\n \"flashing\",\n \"revolving\",\n \"rotating\",\n \"siren\",\n \"vehicle\",\n \"warning\"\n ],\n \"🚥\": [\n \"horizontal_traffic_light\",\n \"transportation\",\n \"signal\"\n ],\n \"🚦\": [\n \"vertical_traffic_light\",\n \"transportation\",\n \"driving\",\n \"semaphore\",\n \"signal\"\n ],\n \"🛑\": [\n \"stop_sign\",\n \"stop\",\n \"octagonal\"\n ],\n \"🚧\": [\n \"construction\",\n \"wip\",\n \"progress\",\n \"caution\",\n \"warning\",\n \"barrier\",\n \"black\",\n \"roadwork\",\n \"sign\",\n \"striped\",\n \"yellow\",\n \"work_in_progress\"\n ],\n \"⚓\": [\n \"anchor\",\n \"ship\",\n \"ferry\",\n \"sea\",\n \"boat\",\n \"admiralty\",\n \"fisherman\",\n \"pattern\",\n \"tool\"\n ],\n \"⛵\": [\n \"sailboat\",\n \"ship\",\n \"summer\",\n \"transportation\",\n \"water\",\n \"sailing\",\n \"boat\",\n \"dinghy\",\n \"resort\",\n \"sea\",\n \"vehicle\",\n \"yacht\"\n ],\n \"🛶\": [\n \"canoe\",\n \"boat\",\n \"paddle\",\n \"water\",\n \"ship\"\n ],\n \"🚤\": [\n \"speedboat\",\n \"ship\",\n \"transportation\",\n \"vehicle\",\n \"summer\",\n \"boat\",\n \"motorboat\",\n \"powerboat\"\n ],\n \"🛳️\": [\n \"passenger_ship\",\n \"yacht\",\n \"cruise\",\n \"ferry\",\n \"vehicle\"\n ],\n \"⛴️\": [\n \"ferry\",\n \"boat\",\n \"ship\",\n \"yacht\",\n \"passenger\"\n ],\n \"🛥️\": [\n \"motor_boat\",\n \"ship\",\n \"motorboat\",\n \"vehicle\"\n ],\n \"🚢\": [\n \"ship\",\n \"transportation\",\n \"titanic\",\n \"deploy\",\n \"boat\",\n \"cruise\",\n \"passenger\",\n \"vehicle\"\n ],\n \"✈️\": [\n \"airplane\",\n \"vehicle\",\n \"transportation\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛩️\": [\n \"small_airplane\",\n \"flight\",\n \"transportation\",\n \"fly\",\n \"vehicle\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛫\": [\n \"airplane_departure\",\n \"airport\",\n \"flight\",\n \"landing\",\n \"aeroplane\",\n \"departures\",\n \"off\",\n \"plane\",\n \"taking\",\n \"vehicle\"\n ],\n \"🛬\": [\n \"airplane_arrival\",\n \"airport\",\n \"flight\",\n \"boarding\",\n \"aeroplane\",\n \"arrivals\",\n \"arriving\",\n \"landing\",\n \"plane\",\n \"vehicle\"\n ],\n \"🪂\": [\n \"parachute\",\n \"fly\",\n \"glide\",\n \"hang\",\n \"parasail\",\n \"skydive\"\n ],\n \"💺\": [\n \"seat\",\n \"sit\",\n \"airplane\",\n \"transport\",\n \"bus\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"chair\",\n \"train\"\n ],\n \"🚁\": [\n \"helicopter\",\n \"transportation\",\n \"vehicle\",\n \"fly\"\n ],\n \"🚟\": [\n \"suspension_railway\",\n \"vehicle\",\n \"transportation\"\n ],\n \"🚠\": [\n \"mountain_cableway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"gondola\"\n ],\n \"🚡\": [\n \"aerial_tramway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"car\",\n \"gondola\",\n \"ropeway\"\n ],\n \"🛰️\": [\n \"satellite\",\n \"communication\",\n \"gps\",\n \"orbit\",\n \"spaceflight\",\n \"NASA\",\n \"ISS\",\n \"artificial\",\n \"space\",\n \"vehicle\"\n ],\n \"🚀\": [\n \"rocket\",\n \"launch\",\n \"ship\",\n \"staffmode\",\n \"NASA\",\n \"outer space\",\n \"outer_space\",\n \"fly\",\n \"shuttle\",\n \"vehicle\",\n \"deploy\"\n ],\n \"🛸\": [\n \"flying_saucer\",\n \"transportation\",\n \"vehicle\",\n \"ufo\",\n \"alien\",\n \"extraterrestrial\",\n \"fantasy\",\n \"space\"\n ],\n \"🛎️\": [\n \"bellhop_bell\",\n \"service\",\n \"hotel\"\n ],\n \"🧳\": [\n \"luggage\",\n \"packing\",\n \"travel\",\n \"suitcase\"\n ],\n \"⌛\": [\n \"hourglass_done\",\n \"time\",\n \"clock\",\n \"oldschool\",\n \"limit\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"sand\",\n \"timer\"\n ],\n \"⏳\": [\n \"hourglass_not_done\",\n \"oldschool\",\n \"time\",\n \"countdown\",\n \"flowing\",\n \"sand\",\n \"timer\"\n ],\n \"⌚\": [\n \"watch\",\n \"time\",\n \"accessories\",\n \"apple\",\n \"clock\",\n \"timepiece\",\n \"wrist\",\n \"wristwatch\"\n ],\n \"⏰\": [\n \"alarm_clock\",\n \"time\",\n \"wake\",\n \"morning\"\n ],\n \"⏱️\": [\n \"stopwatch\",\n \"time\",\n \"deadline\",\n \"clock\"\n ],\n \"⏲️\": [\n \"timer_clock\",\n \"alarm\"\n ],\n \"🕰️\": [\n \"mantelpiece_clock\",\n \"time\"\n ],\n \"🕛\": [\n \"twelve_o_clock\",\n \"12\",\n \"00:00\",\n \"0000\",\n \"12:00\",\n \"1200\",\n \"time\",\n \"noon\",\n \"midnight\",\n \"midday\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock12\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕧\": [\n \"twelve_thirty\",\n \"00:30\",\n \"0030\",\n \"12:30\",\n \"1230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1230\",\n \"face\"\n ],\n \"🕐\": [\n \"one_o_clock\",\n \"1\",\n \"1:00\",\n \"100\",\n \"13:00\",\n \"1300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock1\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕜\": [\n \"one_thirty\",\n \"1:30\",\n \"130\",\n \"13:30\",\n \"1330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock130\",\n \"face\"\n ],\n \"🕑\": [\n \"two_o_clock\",\n \"2\",\n \"2:00\",\n \"200\",\n \"14:00\",\n \"1400\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock2\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕝\": [\n \"two_thirty\",\n \"2:30\",\n \"230\",\n \"14:30\",\n \"1430\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock230\",\n \"face\"\n ],\n \"🕒\": [\n \"three_o_clock\",\n \"3\",\n \"3:00\",\n \"300\",\n \"15:00\",\n \"1500\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock3\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕞\": [\n \"three_thirty\",\n \"3:30\",\n \"330\",\n \"15:30\",\n \"1530\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock330\",\n \"face\"\n ],\n \"🕓\": [\n \"four_o_clock\",\n \"4\",\n \"4:00\",\n \"400\",\n \"16:00\",\n \"1600\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock4\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕟\": [\n \"four_thirty\",\n \"4:30\",\n \"430\",\n \"16:30\",\n \"1630\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock430\",\n \"face\"\n ],\n \"🕔\": [\n \"five_o_clock\",\n \"5\",\n \"5:00\",\n \"500\",\n \"17:00\",\n \"1700\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock5\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕠\": [\n \"five_thirty\",\n \"5:30\",\n \"530\",\n \"17:30\",\n \"1730\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock530\",\n \"face\"\n ],\n \"🕕\": [\n \"six_o_clock\",\n \"6\",\n \"6:00\",\n \"600\",\n \"18:00\",\n \"1800\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"dawn\",\n \"dusk\",\n \"clock6\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕡\": [\n \"six_thirty\",\n \"6:30\",\n \"630\",\n \"18:30\",\n \"1830\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock630\",\n \"face\"\n ],\n \"🕖\": [\n \"seven_o_clock\",\n \"7\",\n \"7:00\",\n \"700\",\n \"19:00\",\n \"1900\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock7\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕢\": [\n \"seven_thirty\",\n \"7:30\",\n \"730\",\n \"19:30\",\n \"1930\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock730\",\n \"face\"\n ],\n \"🕗\": [\n \"eight_o_clock\",\n \"8\",\n \"8:00\",\n \"800\",\n \"20:00\",\n \"2000\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock8\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕣\": [\n \"eight_thirty\",\n \"8:30\",\n \"830\",\n \"20:30\",\n \"2030\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock830\",\n \"face\"\n ],\n \"🕘\": [\n \"nine_o_clock\",\n \"9\",\n \"9:00\",\n \"900\",\n \"21:00\",\n \"2100\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock9\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕤\": [\n \"nine_thirty\",\n \"9:30\",\n \"930\",\n \"21:30\",\n \"2130\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock930\",\n \"face\"\n ],\n \"🕙\": [\n \"ten_o_clock\",\n \"10\",\n \"10:00\",\n \"1000\",\n \"22:00\",\n \"2200\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock10\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕥\": [\n \"ten_thirty\",\n \"10:30\",\n \"1030\",\n \"22:30\",\n \"2230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1030\",\n \"face\"\n ],\n \"🕚\": [\n \"eleven_o_clock\",\n \"11\",\n \"11:00\",\n \"1100\",\n \"23:00\",\n \"2300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock11\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕦\": [\n \"eleven_thirty\",\n \"11:30\",\n \"1130\",\n \"23:30\",\n \"2330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1130\",\n \"face\"\n ],\n \"🌑\": [\n \"new_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"dark\",\n \"eclipse\",\n \"shadow moon\",\n \"solar\",\n \"symbol\",\n \"weather\"\n ],\n \"🌒\": [\n \"waxing_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌓\": [\n \"first_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌔\": [\n \"waxing_gibbous_moon\",\n \"nature\",\n \"night\",\n \"sky\",\n \"gray\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌕\": [\n \"full_moon\",\n \"nature\",\n \"yellow\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌖\": [\n \"waning_gibbous_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"waxing_gibbous_moon\",\n \"symbol\",\n \"weather\"\n ],\n \"🌗\": [\n \"last_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌘\": [\n \"waning_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌙\": [\n \"crescent_moon\",\n \"night\",\n \"sleep\",\n \"sky\",\n \"evening\",\n \"magic\",\n \"space\",\n \"weather\"\n ],\n \"🌚\": [\n \"new_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"creepy\",\n \"dark\",\n \"molester\",\n \"weather\"\n ],\n \"🌛\": [\n \"first_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌜\": [\n \"last_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌡️\": [\n \"thermometer\",\n \"weather\",\n \"temperature\",\n \"hot\",\n \"cold\"\n ],\n \"☀️\": [\n \"sun\",\n \"weather\",\n \"nature\",\n \"brightness\",\n \"summer\",\n \"beach\",\n \"spring\",\n \"black\",\n \"bright\",\n \"rays\",\n \"space\",\n \"sunny\",\n \"sunshine\"\n ],\n \"🌝\": [\n \"full_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"bright\",\n \"moonface\",\n \"smiley\",\n \"smiling\",\n \"weather\"\n ],\n \"🌞\": [\n \"sun_with_face\",\n \"nature\",\n \"morning\",\n \"sky\",\n \"bright\",\n \"smiley\",\n \"smiling\",\n \"space\",\n \"summer\",\n \"sunface\",\n \"weather\"\n ],\n \"🪐\": [\n \"ringed_planet\",\n \"outerspace\",\n \"planets\",\n \"saturn\",\n \"saturnine\",\n \"space\"\n ],\n \"⭐\": [\n \"star\",\n \"night\",\n \"yellow\",\n \"gold\",\n \"medium\",\n \"white\"\n ],\n \"🌟\": [\n \"glowing_star\",\n \"night\",\n \"sparkle\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"glittery\",\n \"glow\",\n \"shining\",\n \"star2\"\n ],\n \"🌠\": [\n \"shooting_star\",\n \"night\",\n \"photo\",\n \"activity\",\n \"falling\",\n \"meteoroid\",\n \"space\",\n \"stars\",\n \"upon\",\n \"when\",\n \"wish\",\n \"you\"\n ],\n \"🌌\": [\n \"milky_way\",\n \"photo\",\n \"space\",\n \"stars\",\n \"galaxy\",\n \"night\",\n \"sky\",\n \"universe\",\n \"weather\"\n ],\n \"☁️\": [\n \"cloud\",\n \"weather\",\n \"sky\",\n \"cloudy\",\n \"overcast\"\n ],\n \"⛅\": [\n \"sun_behind_cloud\",\n \"weather\",\n \"nature\",\n \"cloudy\",\n \"morning\",\n \"fall\",\n \"spring\",\n \"partly\",\n \"sunny\"\n ],\n \"⛈️\": [\n \"cloud_with_lightning_and_rain\",\n \"weather\",\n \"lightning\",\n \"thunder\"\n ],\n \"🌤️\": [\n \"sun_behind_small_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌥️\": [\n \"sun_behind_large_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌦️\": [\n \"sun_behind_rain_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌧️\": [\n \"cloud_with_rain\",\n \"weather\"\n ],\n \"🌨️\": [\n \"cloud_with_snow\",\n \"weather\",\n \"cold\"\n ],\n \"🌩️\": [\n \"cloud_with_lightning\",\n \"weather\",\n \"thunder\"\n ],\n \"🌪️\": [\n \"tornado\",\n \"weather\",\n \"cyclone\",\n \"twister\",\n \"cloud\",\n \"whirlwind\"\n ],\n \"🌫️\": [\n \"fog\",\n \"weather\",\n \"cloud\"\n ],\n \"🌬️\": [\n \"wind_face\",\n \"gust\",\n \"air\",\n \"blow\",\n \"blowing\",\n \"cloud\",\n \"mother\",\n \"nature\",\n \"weather\"\n ],\n \"🌀\": [\n \"cyclone\",\n \"weather\",\n \"swirl\",\n \"blue\",\n \"cloud\",\n \"vortex\",\n \"spiral\",\n \"whirlpool\",\n \"spin\",\n \"tornado\",\n \"hurricane\",\n \"typhoon\",\n \"dizzy\",\n \"twister\"\n ],\n \"🌈\": [\n \"rainbow\",\n \"nature\",\n \"happy\",\n \"unicorn_face\",\n \"photo\",\n \"sky\",\n \"spring\",\n \"gay\",\n \"lgbt\",\n \"pride\",\n \"primary\",\n \"rain\",\n \"weather\"\n ],\n \"🌂\": [\n \"closed_umbrella\",\n \"weather\",\n \"rain\",\n \"drizzle\",\n \"clothing\",\n \"collapsed umbrella\",\n \"pink\"\n ],\n \"☂️\": [\n \"umbrella\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"open\",\n \"rain\"\n ],\n \"☔\": [\n \"umbrella_with_rain_drops\",\n \"rainy\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"drop\",\n \"raining\"\n ],\n \"⛱️\": [\n \"umbrella_on_ground\",\n \"weather\",\n \"summer\",\n \"beach\",\n \"parasol\",\n \"rain\",\n \"sun\"\n ],\n \"⚡\": [\n \"high_voltage\",\n \"thunder\",\n \"weather\",\n \"lightning bolt\",\n \"fast\",\n \"zap\",\n \"danger\",\n \"electric\",\n \"electricity\",\n \"sign\",\n \"thunderbolt\",\n \"speed\"\n ],\n \"❄️\": [\n \"snowflake\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"snow\",\n \"snowing\"\n ],\n \"☃️\": [\n \"snowman\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"snow\",\n \"snowflakes\",\n \"snowing\"\n ],\n \"⛄\": [\n \"snowman_without_snow\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"without_snow\",\n \"frosty\",\n \"olaf\"\n ],\n \"☄️\": [\n \"comet\",\n \"space\"\n ],\n \"🔥\": [\n \"fire\",\n \"hot\",\n \"cook\",\n \"flame\",\n \"burn\",\n \"lit\",\n \"snapstreak\",\n \"tool\",\n \"remove\"\n ],\n \"💧\": [\n \"droplet\",\n \"water\",\n \"drip\",\n \"faucet\",\n \"spring\",\n \"cold\",\n \"comic\",\n \"drop\",\n \"sweat\",\n \"weather\"\n ],\n \"🌊\": [\n \"water_wave\",\n \"sea\",\n \"water\",\n \"wave\",\n \"nature\",\n \"tsunami\",\n \"disaster\",\n \"beach\",\n \"ocean\",\n \"waves\",\n \"weather\"\n ],\n \"🎃\": [\n \"jack_o_lantern\",\n \"halloween\",\n \"light\",\n \"pumpkin\",\n \"creepy\",\n \"fall\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"gourd\"\n ],\n \"🎄\": [\n \"christmas_tree\",\n \"festival\",\n \"vacation\",\n \"december\",\n \"xmas\",\n \"celebration\",\n \"activity\",\n \"entertainment\",\n \"xmas tree\"\n ],\n \"🎆\": [\n \"fireworks\",\n \"photo\",\n \"festival\",\n \"carnival\",\n \"congratulations\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"explosion\"\n ],\n \"🎇\": [\n \"sparkler\",\n \"stars\",\n \"night\",\n \"shine\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"firework\",\n \"fireworks\",\n \"hanabi\",\n \"senko\",\n \"sparkle\"\n ],\n \"🧨\": [\n \"firecracker\",\n \"dynamite\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"explosive\",\n \"fireworks\"\n ],\n \"✨\": [\n \"sparkles\",\n \"stars\",\n \"shine\",\n \"shiny\",\n \"cool\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"entertainment\",\n \"glitter\",\n \"sparkle\",\n \"star\"\n ],\n \"🎈\": [\n \"balloon\",\n \"party\",\n \"celebration\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"entertainment\",\n \"red\"\n ],\n \"🎉\": [\n \"party_popper\",\n \"party\",\n \"congratulations\",\n \"birthday\",\n \"magic\",\n \"circus\",\n \"celebration\",\n \"tada\",\n \"activity\",\n \"entertainment\",\n \"hat\",\n \"hooray\"\n ],\n \"🎊\": [\n \"confetti_ball\",\n \"festival\",\n \"party\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎋\": [\n \"tanabata_tree\",\n \"plant\",\n \"nature\",\n \"branch\",\n \"summer\",\n \"bamboo\",\n \"wish\",\n \"star_festival\",\n \"tanzaku\",\n \"activity\",\n \"banner\",\n \"celebration\",\n \"entertainment\",\n \"japanese\"\n ],\n \"🎍\": [\n \"pine_decoration\",\n \"japanese\",\n \"plant\",\n \"nature\",\n \"vegetable\",\n \"panda\",\n \"new_years\",\n \"bamboo\",\n \"activity\",\n \"celebration\",\n \"kadomatsu\",\n \"year\"\n ],\n \"🎎\": [\n \"japanese_dolls\",\n \"japanese\",\n \"toy\",\n \"kimono\",\n \"activity\",\n \"celebration\",\n \"doll\",\n \"entertainment\",\n \"festival\",\n \"hinamatsuri\",\n \"imperial\"\n ],\n \"🎏\": [\n \"carp_streamer\",\n \"fish\",\n \"japanese\",\n \"koinobori\",\n \"carp\",\n \"banner\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"flag\",\n \"flags\",\n \"socks\",\n \"wind\"\n ],\n \"🎐\": [\n \"wind_chime\",\n \"nature\",\n \"ding\",\n \"spring\",\n \"bell\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"furin\",\n \"jellyfish\"\n ],\n \"🎑\": [\n \"moon_viewing_ceremony\",\n \"photo\",\n \"japan\",\n \"asia\",\n \"tsukimi\",\n \"activity\",\n \"autumn\",\n \"celebration\",\n \"dumplings\",\n \"entertainment\",\n \"festival\",\n \"grass\",\n \"harvest\",\n \"mid\",\n \"rice\",\n \"scene\"\n ],\n \"🧧\": [\n \"red_envelope\",\n \"gift\",\n \"ang\",\n \"good\",\n \"hóngbāo\",\n \"lai\",\n \"luck\",\n \"money\",\n \"packet\",\n \"pao\",\n \"see\"\n ],\n \"🎀\": [\n \"ribbon\",\n \"decoration\",\n \"pink\",\n \"girl\",\n \"bowtie\",\n \"bow\",\n \"celebration\"\n ],\n \"🎁\": [\n \"wrapped_gift\",\n \"present\",\n \"birthday\",\n \"christmas\",\n \"xmas\",\n \"box\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎗️\": [\n \"reminder_ribbon\",\n \"sports\",\n \"cause\",\n \"support\",\n \"awareness\",\n \"celebration\"\n ],\n \"🎟️\": [\n \"admission_tickets\",\n \"sports\",\n \"concert\",\n \"entrance\",\n \"entertainment\",\n \"ticket\"\n ],\n \"🎫\": [\n \"ticket\",\n \"event\",\n \"concert\",\n \"pass\",\n \"activity\",\n \"admission\",\n \"entertainment\",\n \"stub\",\n \"tour\",\n \"world\"\n ],\n \"🎖️\": [\n \"military_medal\",\n \"award\",\n \"winning\",\n \"army\",\n \"celebration\",\n \"decoration\",\n \"medallion\"\n ],\n \"🏆\": [\n \"trophy\",\n \"win\",\n \"award\",\n \"contest\",\n \"place\",\n \"ftw\",\n \"ceremony\",\n \"championship\",\n \"prize\",\n \"winner\",\n \"winners\"\n ],\n \"🏅\": [\n \"sports_medal\",\n \"award\",\n \"winning\",\n \"gold\",\n \"winner\"\n ],\n \"🥇\": [\n \"1st_place_medal\",\n \"award\",\n \"winning\",\n \"first\",\n \"gold\"\n ],\n \"🥈\": [\n \"2nd_place_medal\",\n \"award\",\n \"second\",\n \"silver\"\n ],\n \"🥉\": [\n \"3rd_place_medal\",\n \"award\",\n \"third\",\n \"bronze\"\n ],\n \"⚽\": [\n \"soccer_ball\",\n \"sports\",\n \"football\"\n ],\n \"⚾\": [\n \"baseball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"softball\"\n ],\n \"🥎\": [\n \"softball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\",\n \"glove\",\n \"sport\",\n \"underarm\"\n ],\n \"🏀\": [\n \"basketball\",\n \"sports\",\n \"balls\",\n \"NBA\",\n \"ball\",\n \"hoop\",\n \"orange\"\n ],\n \"🏐\": [\n \"volleyball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\"\n ],\n \"🏈\": [\n \"american_football\",\n \"sports\",\n \"balls\",\n \"NFL\",\n \"ball\",\n \"gridiron\",\n \"superbowl\"\n ],\n \"🏉\": [\n \"rugby_football\",\n \"sports\",\n \"team\",\n \"ball\",\n \"league\",\n \"union\"\n ],\n \"🎾\": [\n \"tennis\",\n \"sports\",\n \"balls\",\n \"green\",\n \"ball\",\n \"racket\",\n \"racquet\"\n ],\n \"🥏\": [\n \"flying_disc\",\n \"sports\",\n \"frisbee\",\n \"ultimate\",\n \"game\",\n \"golf\",\n \"sport\"\n ],\n \"🎳\": [\n \"bowling\",\n \"sports\",\n \"fun\",\n \"play\",\n \"ball\",\n \"game\",\n \"pin\",\n \"pins\",\n \"skittles\",\n \"ten\"\n ],\n \"🏏\": [\n \"cricket_game\",\n \"sports\",\n \"ball\",\n \"bat\",\n \"field\"\n ],\n \"🏑\": [\n \"field_hockey\",\n \"sports\",\n \"ball\",\n \"game\",\n \"stick\"\n ],\n \"🏒\": [\n \"ice_hockey\",\n \"sports\",\n \"game\",\n \"puck\",\n \"stick\"\n ],\n \"🥍\": [\n \"lacrosse\",\n \"sports\",\n \"ball\",\n \"stick\",\n \"game\",\n \"goal\",\n \"sport\"\n ],\n \"🏓\": [\n \"ping_pong\",\n \"sports\",\n \"pingpong\",\n \"ball\",\n \"bat\",\n \"game\",\n \"paddle\",\n \"table\",\n \"tennis\"\n ],\n \"🏸\": [\n \"badminton\",\n \"sports\",\n \"birdie\",\n \"game\",\n \"racquet\",\n \"shuttlecock\"\n ],\n \"🥊\": [\n \"boxing_glove\",\n \"sports\",\n \"fighting\"\n ],\n \"🥋\": [\n \"martial_arts_uniform\",\n \"judo\",\n \"karate\",\n \"taekwondo\"\n ],\n \"🥅\": [\n \"goal_net\",\n \"sports\",\n \"catch\"\n ],\n \"⛳\": [\n \"flag_in_hole\",\n \"sports\",\n \"business\",\n \"flag\",\n \"hole\",\n \"summer\",\n \"golf\"\n ],\n \"⛸️\": [\n \"ice_skate\",\n \"sports\",\n \"skating\"\n ],\n \"🎣\": [\n \"fishing_pole\",\n \"food\",\n \"hobby\",\n \"summer\",\n \"entertainment\",\n \"fish\",\n \"rod\"\n ],\n \"🤿\": [\n \"diving_mask\",\n \"sport\",\n \"ocean\",\n \"scuba\",\n \"snorkeling\"\n ],\n \"🎽\": [\n \"running_shirt\",\n \"play\",\n \"pageant\",\n \"athletics\",\n \"marathon\",\n \"sash\",\n \"singlet\"\n ],\n \"🎿\": [\n \"skis\",\n \"sports\",\n \"winter\",\n \"cold\",\n \"snow\",\n \"boot\",\n \"ski\",\n \"skiing\"\n ],\n \"🛷\": [\n \"sled\",\n \"sleigh\",\n \"luge\",\n \"toboggan\",\n \"sledge\"\n ],\n \"🥌\": [\n \"curling_stone\",\n \"sports\",\n \"game\",\n \"rock\"\n ],\n \"🎯\": [\n \"direct_hit\",\n \"game\",\n \"play\",\n \"bar\",\n \"target\",\n \"bullseye\",\n \"activity\",\n \"archery\",\n \"bull\",\n \"dart\",\n \"darts\",\n \"entertainment\",\n \"eye\"\n ],\n \"🪀\": [\n \"yo_yo\",\n \"toy\",\n \"fluctuate\",\n \"yoyo\"\n ],\n \"🪁\": [\n \"kite\",\n \"wind\",\n \"fly\",\n \"soar\",\n \"toy\"\n ],\n \"🎱\": [\n \"pool_8_ball\",\n \"pool\",\n \"hobby\",\n \"game\",\n \"luck\",\n \"magic\",\n \"8ball\",\n \"billiard\",\n \"billiards\",\n \"cue\",\n \"eight\",\n \"snooker\"\n ],\n \"🔮\": [\n \"crystal_ball\",\n \"disco\",\n \"party\",\n \"magic\",\n \"circus\",\n \"fortune_teller\",\n \"clairvoyant\",\n \"fairy\",\n \"fantasy\",\n \"psychic\",\n \"purple\",\n \"tale\",\n \"tool\"\n ],\n \"🧿\": [\n \"nazar_amulet\",\n \"bead\",\n \"charm\",\n \"boncuğu\",\n \"evil\",\n \"eye\",\n \"talisman\"\n ],\n \"🎮\": [\n \"video_game\",\n \"play\",\n \"console\",\n \"PS4\",\n \"controller\",\n \"entertainment\",\n \"gamepad\",\n \"playstation\",\n \"u\",\n \"wii\",\n \"xbox\"\n ],\n \"🕹️\": [\n \"joystick\",\n \"game\",\n \"play\",\n \"entertainment\",\n \"video\"\n ],\n \"🎰\": [\n \"slot_machine\",\n \"bet\",\n \"gamble\",\n \"vegas\",\n \"fruit machine\",\n \"luck\",\n \"casino\",\n \"activity\",\n \"gambling\",\n \"game\",\n \"poker\"\n ],\n \"🎲\": [\n \"game_die\",\n \"dice\",\n \"random\",\n \"tabletop\",\n \"play\",\n \"luck\",\n \"entertainment\",\n \"gambling\"\n ],\n \"🧩\": [\n \"puzzle_piece\",\n \"interlocking\",\n \"puzzle\",\n \"piece\",\n \"clue\",\n \"jigsaw\"\n ],\n \"🧸\": [\n \"teddy_bear\",\n \"plush\",\n \"stuffed\",\n \"plaything\",\n \"toy\"\n ],\n \"♠️\": [\n \"spade_suit\",\n \"poker\",\n \"cards\",\n \"suits\",\n \"magic\",\n \"black\",\n \"card\",\n \"game\",\n \"spades\"\n ],\n \"♥️\": [\n \"heart_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"game\",\n \"hearts\"\n ],\n \"♦️\": [\n \"diamond_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"diamonds\",\n \"game\"\n ],\n \"♣️\": [\n \"club_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"clubs\",\n \"game\"\n ],\n \"♟️\": [\n \"chess_pawn\",\n \"expendable\",\n \"black\",\n \"dupe\",\n \"game\",\n \"piece\"\n ],\n \"🃏\": [\n \"joker\",\n \"poker\",\n \"cards\",\n \"game\",\n \"play\",\n \"magic\",\n \"black\",\n \"card\",\n \"entertainment\",\n \"playing\",\n \"wildcard\"\n ],\n \"🀄\": [\n \"mahjong_red_dragon\",\n \"game\",\n \"play\",\n \"chinese\",\n \"kanji\",\n \"tile\"\n ],\n \"🎴\": [\n \"flower_playing_cards\",\n \"game\",\n \"sunset\",\n \"red\",\n \"activity\",\n \"card\",\n \"deck\",\n \"entertainment\",\n \"hanafuda\",\n \"hwatu\",\n \"japanese\",\n \"of cards\"\n ],\n \"🎭\": [\n \"performing_arts\",\n \"acting\",\n \"theater\",\n \"drama\",\n \"activity\",\n \"art\",\n \"comedy\",\n \"entertainment\",\n \"greek\",\n \"logo\",\n \"mask\",\n \"masks\",\n \"theatre\",\n \"theatre masks\",\n \"tragedy\"\n ],\n \"🖼️\": [\n \"framed_picture\",\n \"photography\",\n \"art\",\n \"frame\",\n \"museum\",\n \"painting\"\n ],\n \"🎨\": [\n \"artist_palette\",\n \"design\",\n \"paint\",\n \"draw\",\n \"colors\",\n \"activity\",\n \"art\",\n \"entertainment\",\n \"museum\",\n \"painting\",\n \"improve\"\n ],\n \"🧵\": [\n \"thread\",\n \"needle\",\n \"sewing\",\n \"spool\",\n \"string\",\n \"crafts\"\n ],\n \"🧶\": [\n \"yarn\",\n \"ball\",\n \"crochet\",\n \"knit\",\n \"crafts\"\n ],\n \"👓\": [\n \"glasses\",\n \"fashion\",\n \"accessories\",\n \"eyesight\",\n \"nerdy\",\n \"dork\",\n \"geek\",\n \"clothing\",\n \"eye\",\n \"eyeglasses\",\n \"eyewear\"\n ],\n \"🕶️\": [\n \"sunglasses\",\n \"face\",\n \"cool\",\n \"accessories\",\n \"dark\",\n \"eye\",\n \"eyewear\",\n \"glasses\"\n ],\n \"🥽\": [\n \"goggles\",\n \"eyes\",\n \"protection\",\n \"safety\",\n \"clothing\",\n \"eye\",\n \"swimming\",\n \"welding\"\n ],\n \"🥼\": [\n \"lab_coat\",\n \"doctor\",\n \"experiment\",\n \"scientist\",\n \"chemist\",\n \"clothing\"\n ],\n \"🦺\": [\n \"safety_vest\",\n \"protection\",\n \"emergency\"\n ],\n \"👔\": [\n \"necktie\",\n \"shirt\",\n \"suitup\",\n \"formal\",\n \"fashion\",\n \"cloth\",\n \"business\",\n \"clothing\",\n \"tie\"\n ],\n \"👕\": [\n \"t_shirt\",\n \"fashion\",\n \"cloth\",\n \"casual\",\n \"shirt\",\n \"tee\",\n \"clothing\",\n \"polo\",\n \"tshirt\"\n ],\n \"👖\": [\n \"jeans\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"denim\",\n \"pants\",\n \"trousers\"\n ],\n \"🧣\": [\n \"scarf\",\n \"neck\",\n \"winter\",\n \"clothes\",\n \"clothing\"\n ],\n \"🧤\": [\n \"gloves\",\n \"hands\",\n \"winter\",\n \"clothes\",\n \"clothing\",\n \"hand\"\n ],\n \"🧥\": [\n \"coat\",\n \"jacket\",\n \"clothing\"\n ],\n \"🧦\": [\n \"socks\",\n \"stockings\",\n \"clothes\",\n \"clothing\",\n \"pair\",\n \"stocking\"\n ],\n \"👗\": [\n \"dress\",\n \"clothes\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"gown\",\n \"skirt\"\n ],\n \"👘\": [\n \"kimono\",\n \"dress\",\n \"fashion\",\n \"women\",\n \"female\",\n \"japanese\",\n \"clothing\",\n \"dressing\",\n \"gown\"\n ],\n \"🥻\": [\n \"sari\",\n \"dress\",\n \"clothing\",\n \"saree\",\n \"shari\"\n ],\n \"🩱\": [\n \"one_piece_swimsuit\",\n \"fashion\",\n \"bathing\",\n \"clothing\",\n \"suit\",\n \"swim\"\n ],\n \"🩲\": [\n \"briefs\",\n \"clothing\",\n \"bathing\",\n \"brief\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"🩳\": [\n \"shorts\",\n \"clothing\",\n \"bathing\",\n \"pants\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"👙\": [\n \"bikini\",\n \"swimming\",\n \"female\",\n \"woman\",\n \"girl\",\n \"fashion\",\n \"beach\",\n \"summer\",\n \"bathers\",\n \"clothing\",\n \"swim\",\n \"swimsuit\"\n ],\n \"👚\": [\n \"woman_s_clothes\",\n \"fashion\",\n \"shopping_bags\",\n \"female\",\n \"blouse\",\n \"clothing\",\n \"pink\",\n \"shirt\",\n \"womans\",\n \"woman’s\"\n ],\n \"👛\": [\n \"purse\",\n \"fashion\",\n \"accessories\",\n \"money\",\n \"sales\",\n \"shopping\",\n \"clothing\",\n \"coin\",\n \"wallet\"\n ],\n \"👜\": [\n \"handbag\",\n \"fashion\",\n \"accessory\",\n \"accessories\",\n \"shopping\",\n \"bag\",\n \"clothing\",\n \"purse\",\n \"women’s\"\n ],\n \"👝\": [\n \"clutch_bag\",\n \"bag\",\n \"accessories\",\n \"shopping\",\n \"clothing\",\n \"pouch\",\n \"small\"\n ],\n \"🛍️\": [\n \"shopping_bags\",\n \"mall\",\n \"buy\",\n \"purchase\",\n \"bag\",\n \"hotel\"\n ],\n \"🎒\": [\n \"backpack\",\n \"student\",\n \"education\",\n \"bag\",\n \"activity\",\n \"rucksack\",\n \"satchel\",\n \"school\"\n ],\n \"👞\": [\n \"man_s_shoe\",\n \"fashion\",\n \"male\",\n \"brown\",\n \"clothing\",\n \"dress\",\n \"mans\",\n \"man’s\"\n ],\n \"👟\": [\n \"running_shoe\",\n \"shoes\",\n \"sports\",\n \"sneakers\",\n \"athletic\",\n \"clothing\",\n \"runner\",\n \"sneaker\",\n \"sport\",\n \"tennis\",\n \"trainer\"\n ],\n \"🥾\": [\n \"hiking_boot\",\n \"backpacking\",\n \"camping\",\n \"hiking\",\n \"clothing\"\n ],\n \"🥿\": [\n \"flat_shoe\",\n \"ballet\",\n \"slip-on\",\n \"slipper\",\n \"clothing\",\n \"woman’s\"\n ],\n \"👠\": [\n \"high_heeled_shoe\",\n \"fashion\",\n \"shoes\",\n \"female\",\n \"pumps\",\n \"stiletto\",\n \"clothing\",\n \"heel\",\n \"heels\",\n \"woman\"\n ],\n \"👡\": [\n \"woman_s_sandal\",\n \"shoes\",\n \"fashion\",\n \"flip flops\",\n \"clothing\",\n \"heeled\",\n \"sandals\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"🩰\": [\n \"ballet_shoes\",\n \"dance\",\n \"clothing\",\n \"pointe\",\n \"shoe\"\n ],\n \"👢\": [\n \"woman_s_boot\",\n \"shoes\",\n \"fashion\",\n \"boots\",\n \"clothing\",\n \"cowgirl\",\n \"heeled\",\n \"high\",\n \"knee\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"👑\": [\n \"crown\",\n \"king\",\n \"kod\",\n \"leader\",\n \"royalty\",\n \"lord\",\n \"clothing\",\n \"queen\",\n \"royal\"\n ],\n \"👒\": [\n \"woman_s_hat\",\n \"fashion\",\n \"accessories\",\n \"female\",\n \"lady\",\n \"spring\",\n \"bow\",\n \"clothing\",\n \"ladies\",\n \"womans\",\n \"woman’s\"\n ],\n \"🎩\": [\n \"top_hat\",\n \"magic\",\n \"gentleman\",\n \"classy\",\n \"circus\",\n \"activity\",\n \"clothing\",\n \"entertainment\",\n \"formal\",\n \"groom\",\n \"tophat\",\n \"wear\"\n ],\n \"🎓\": [\n \"graduation_cap\",\n \"school\",\n \"college\",\n \"degree\",\n \"university\",\n \"graduation\",\n \"cap\",\n \"hat\",\n \"legal\",\n \"learn\",\n \"education\",\n \"academic\",\n \"activity\",\n \"board\",\n \"celebration\",\n \"clothing\",\n \"graduate\",\n \"mortar\",\n \"square\"\n ],\n \"🧢\": [\n \"billed_cap\",\n \"cap\",\n \"baseball\",\n \"clothing\",\n \"hat\"\n ],\n \"⛑️\": [\n \"rescue_worker_s_helmet\",\n \"construction\",\n \"build\",\n \"aid\",\n \"cross\",\n \"face\",\n \"hat\",\n \"white\",\n \"worker’s\"\n ],\n \"📿\": [\n \"prayer_beads\",\n \"dhikr\",\n \"religious\",\n \"clothing\",\n \"necklace\",\n \"religion\",\n \"rosary\"\n ],\n \"💄\": [\n \"lipstick\",\n \"female\",\n \"girl\",\n \"fashion\",\n \"woman\",\n \"cosmetics\",\n \"gloss\",\n \"lip\",\n \"makeup\",\n \"style\"\n ],\n \"💍\": [\n \"ring\",\n \"wedding\",\n \"propose\",\n \"marriage\",\n \"valentines\",\n \"diamond\",\n \"fashion\",\n \"jewelry\",\n \"gem\",\n \"engagement\",\n \"engaged\",\n \"romance\"\n ],\n \"💎\": [\n \"gem_stone\",\n \"blue\",\n \"ruby\",\n \"diamond\",\n \"jewelry\",\n \"gemstone\",\n \"jewel\",\n \"romance\"\n ],\n \"🔇\": [\n \"muted_speaker\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"quiet\",\n \"cancellation\",\n \"mute\",\n \"off\",\n \"silent\",\n \"stroke\"\n ],\n \"🔈\": [\n \"speaker_low_volume\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"broadcast\",\n \"soft\"\n ],\n \"🔉\": [\n \"speaker_medium_volume\",\n \"volume\",\n \"speaker\",\n \"broadcast\",\n \"low\",\n \"one\",\n \"reduce\",\n \"sound\",\n \"wave\"\n ],\n \"🔊\": [\n \"speaker_high_volume\",\n \"volume\",\n \"noise\",\n \"noisy\",\n \"speaker\",\n \"broadcast\",\n \"entertainment\",\n \"increase\",\n \"loud\",\n \"sound\",\n \"three\",\n \"waves\"\n ],\n \"📢\": [\n \"loudspeaker\",\n \"volume\",\n \"sound\",\n \"address\",\n \"announcement\",\n \"bullhorn\",\n \"communication\",\n \"loud\",\n \"megaphone\",\n \"pa\",\n \"public\",\n \"system\"\n ],\n \"📣\": [\n \"megaphone\",\n \"sound\",\n \"speaker\",\n \"volume\",\n \"bullhorn\",\n \"cheering\",\n \"communication\",\n \"mega\"\n ],\n \"📯\": [\n \"postal_horn\",\n \"instrument\",\n \"music\",\n \"bugle\",\n \"communication\",\n \"entertainment\",\n \"french\",\n \"post\"\n ],\n \"🔔\": [\n \"bell\",\n \"sound\",\n \"notification\",\n \"christmas\",\n \"xmas\",\n \"chime\",\n \"liberty\",\n \"ringer\",\n \"wedding\"\n ],\n \"🔕\": [\n \"bell_with_slash\",\n \"sound\",\n \"volume\",\n \"mute\",\n \"quiet\",\n \"silent\",\n \"cancellation\",\n \"disabled\",\n \"forbidden\",\n \"muted\",\n \"no\",\n \"not\",\n \"notifications\",\n \"off\",\n \"prohibited\",\n \"ringer\",\n \"stroke\"\n ],\n \"🎼\": [\n \"musical_score\",\n \"treble\",\n \"clef\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\",\n \"sheet\"\n ],\n \"🎵\": [\n \"musical_note\",\n \"score\",\n \"tone\",\n \"sound\",\n \"activity\",\n \"beamed\",\n \"eighth\",\n \"entertainment\",\n \"music\",\n \"notes\",\n \"pair\",\n \"quavers\"\n ],\n \"🎶\": [\n \"musical_notes\",\n \"music\",\n \"score\",\n \"activity\",\n \"entertainment\",\n \"multiple\",\n \"note\",\n \"singing\"\n ],\n \"🎙️\": [\n \"studio_microphone\",\n \"sing\",\n \"recording\",\n \"artist\",\n \"talkshow\",\n \"mic\",\n \"music\",\n \"podcast\"\n ],\n \"🎚️\": [\n \"level_slider\",\n \"scale\",\n \"music\"\n ],\n \"🎛️\": [\n \"control_knobs\",\n \"dial\",\n \"music\"\n ],\n \"🎤\": [\n \"microphone\",\n \"sound\",\n \"music\",\n \"PA\",\n \"sing\",\n \"talkshow\",\n \"activity\",\n \"entertainment\",\n \"karaoke\",\n \"mic\",\n \"singing\"\n ],\n \"🎧\": [\n \"headphone\",\n \"music\",\n \"score\",\n \"gadgets\",\n \"activity\",\n \"earbud\",\n \"earphone\",\n \"earphones\",\n \"entertainment\",\n \"headphones\",\n \"ipod\"\n ],\n \"📻\": [\n \"radio\",\n \"communication\",\n \"music\",\n \"podcast\",\n \"program\",\n \"digital\",\n \"entertainment\",\n \"video\",\n \"wireless\"\n ],\n \"🎷\": [\n \"saxophone\",\n \"music\",\n \"instrument\",\n \"jazz\",\n \"blues\",\n \"activity\",\n \"entertainment\",\n \"sax\"\n ],\n \"🎸\": [\n \"guitar\",\n \"music\",\n \"instrument\",\n \"acoustic guitar\",\n \"activity\",\n \"bass\",\n \"electric\",\n \"entertainment\",\n \"rock\"\n ],\n \"🎹\": [\n \"musical_keyboard\",\n \"piano\",\n \"instrument\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\"\n ],\n \"🎺\": [\n \"trumpet\",\n \"music\",\n \"brass\",\n \"activity\",\n \"entertainment\",\n \"horn\",\n \"instrument\",\n \"jazz\"\n ],\n \"🎻\": [\n \"violin\",\n \"music\",\n \"instrument\",\n \"orchestra\",\n \"symphony\",\n \"activity\",\n \"entertainment\",\n \"quartet\",\n \"smallest\",\n \"string\",\n \"world’s\"\n ],\n \"🪕\": [\n \"banjo\",\n \"music\",\n \"instructment\",\n \"activity\",\n \"entertainment\",\n \"instrument\",\n \"stringed\"\n ],\n \"🥁\": [\n \"drum\",\n \"music\",\n \"instrument\",\n \"drumsticks\",\n \"snare\"\n ],\n \"📱\": [\n \"mobile_phone\",\n \"technology\",\n \"apple\",\n \"gadgets\",\n \"dial\",\n \"cell\",\n \"communication\",\n \"iphone\",\n \"smartphone\",\n \"telephone\",\n \"responsive_design\"\n ],\n \"📲\": [\n \"mobile_phone_with_arrow\",\n \"iphone\",\n \"incoming\",\n \"call\",\n \"calling\",\n \"cell\",\n \"communication\",\n \"left\",\n \"pointing\",\n \"receive\",\n \"rightwards\",\n \"telephone\"\n ],\n \"☎️\": [\n \"telephone\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"black\",\n \"phone\",\n \"rotary\"\n ],\n \"📞\": [\n \"telephone_receiver\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"call\",\n \"handset\",\n \"phone\"\n ],\n \"📟\": [\n \"pager\",\n \"bbcall\",\n \"oldschool\",\n \"90s\",\n \"beeper\",\n \"bleeper\",\n \"communication\"\n ],\n \"📠\": [\n \"fax_machine\",\n \"communication\",\n \"technology\",\n \"facsimile\"\n ],\n \"🔋\": [\n \"battery\",\n \"power\",\n \"energy\",\n \"sustain\",\n \"aa\",\n \"phone\"\n ],\n \"🔌\": [\n \"electric_plug\",\n \"charger\",\n \"power\",\n \"ac\",\n \"adaptor\",\n \"cable\",\n \"electricity\"\n ],\n \"💻\": [\n \"laptop\",\n \"technology\",\n \"screen\",\n \"display\",\n \"monitor\",\n \"computer\",\n \"desktop\",\n \"notebook\",\n \"pc\",\n \"personal\"\n ],\n \"🖥️\": [\n \"desktop_computer\",\n \"technology\",\n \"computing\",\n \"screen\",\n \"imac\"\n ],\n \"🖨️\": [\n \"printer\",\n \"paper\",\n \"ink\",\n \"computer\"\n ],\n \"⌨️\": [\n \"keyboard\",\n \"technology\",\n \"computer\",\n \"type\",\n \"input\",\n \"text\"\n ],\n \"🖱️\": [\n \"computer_mouse\",\n \"click\",\n \"button\",\n \"three\"\n ],\n \"🖲️\": [\n \"trackball\",\n \"technology\",\n \"trackpad\",\n \"computer\"\n ],\n \"💽\": [\n \"computer_disk\",\n \"technology\",\n \"record\",\n \"data\",\n \"disk\",\n \"90s\",\n \"entertainment\",\n \"minidisc\",\n \"minidisk\",\n \"optical\"\n ],\n \"💾\": [\n \"floppy_disk\",\n \"oldschool\",\n \"technology\",\n \"save\",\n \"90s\",\n \"80s\",\n \"computer\"\n ],\n \"💿\": [\n \"optical_disk\",\n \"technology\",\n \"dvd\",\n \"disk\",\n \"disc\",\n \"90s\",\n \"cd\",\n \"compact\",\n \"computer\",\n \"rom\"\n ],\n \"📀\": [\n \"dvd\",\n \"cd\",\n \"disk\",\n \"disc\",\n \"computer\",\n \"entertainment\",\n \"optical\",\n \"rom\",\n \"video\"\n ],\n \"🧮\": [\n \"abacus\",\n \"calculation\",\n \"count\",\n \"counting\",\n \"frame\",\n \"math\"\n ],\n \"🎥\": [\n \"movie_camera\",\n \"film\",\n \"record\",\n \"activity\",\n \"cinema\",\n \"entertainment\",\n \"hollywood\",\n \"video\"\n ],\n \"🎞️\": [\n \"film_frames\",\n \"movie\",\n \"cinema\",\n \"entertainment\",\n \"strip\"\n ],\n \"📽️\": [\n \"film_projector\",\n \"video\",\n \"tape\",\n \"record\",\n \"movie\",\n \"cinema\",\n \"entertainment\"\n ],\n \"🎬\": [\n \"clapper_board\",\n \"movie\",\n \"film\",\n \"record\",\n \"activity\",\n \"clapboard\",\n \"director\",\n \"entertainment\",\n \"slate\"\n ],\n \"📺\": [\n \"television\",\n \"technology\",\n \"program\",\n \"oldschool\",\n \"show\",\n \"entertainment\",\n \"tv\",\n \"video\"\n ],\n \"📷\": [\n \"camera\",\n \"gadgets\",\n \"photography\",\n \"digital\",\n \"entertainment\",\n \"photo\",\n \"video\"\n ],\n \"📸\": [\n \"camera_with_flash\",\n \"photography\",\n \"gadgets\",\n \"photo\",\n \"video\",\n \"snapshots\"\n ],\n \"📹\": [\n \"video_camera\",\n \"film\",\n \"record\",\n \"camcorder\",\n \"entertainment\"\n ],\n \"📼\": [\n \"videocassette\",\n \"record\",\n \"video\",\n \"oldschool\",\n \"90s\",\n \"80s\",\n \"entertainment\",\n \"tape\",\n \"vcr\",\n \"vhs\"\n ],\n \"🔍\": [\n \"magnifying_glass_tilted_left\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\"\n ],\n \"🔎\": [\n \"magnifying_glass_tilted_right\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\",\n \"seo\"\n ],\n \"🕯️\": [\n \"candle\",\n \"fire\",\n \"wax\",\n \"light\"\n ],\n \"💡\": [\n \"light_bulb\",\n \"light\",\n \"electricity\",\n \"idea\",\n \"comic\",\n \"electric\"\n ],\n \"🔦\": [\n \"flashlight\",\n \"dark\",\n \"camping\",\n \"sight\",\n \"night\",\n \"electric\",\n \"light\",\n \"tool\",\n \"torch\"\n ],\n \"🏮\": [\n \"red_paper_lantern\",\n \"light\",\n \"paper\",\n \"halloween\",\n \"spooky\",\n \"asian\",\n \"bar\",\n \"izakaya\",\n \"japanese\"\n ],\n \"🪔\": [\n \"diya_lamp\",\n \"lighting\",\n \"oil\"\n ],\n \"📔\": [\n \"notebook_with_decorative_cover\",\n \"classroom\",\n \"notes\",\n \"record\",\n \"paper\",\n \"study\",\n \"book\",\n \"decorated\"\n ],\n \"📕\": [\n \"closed_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"learn\",\n \"red\"\n ],\n \"📖\": [\n \"open_book\",\n \"book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"literature\",\n \"learn\",\n \"study\",\n \"novel\"\n ],\n \"📗\": [\n \"green_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"study\",\n \"textbook\"\n ],\n \"📘\": [\n \"blue_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"learn\",\n \"study\",\n \"textbook\"\n ],\n \"📙\": [\n \"orange_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"study\"\n ],\n \"📚\": [\n \"books\",\n \"literature\",\n \"library\",\n \"study\",\n \"book\",\n \"pile\",\n \"stack\"\n ],\n \"📓\": [\n \"notebook\",\n \"stationery\",\n \"record\",\n \"notes\",\n \"paper\",\n \"study\",\n \"black\",\n \"book\",\n \"composition\",\n \"white\"\n ],\n \"📒\": [\n \"ledger\",\n \"notes\",\n \"paper\",\n \"binder\",\n \"book\",\n \"bound\",\n \"notebook\",\n \"spiral\",\n \"yellow\"\n ],\n \"📃\": [\n \"page_with_curl\",\n \"documents\",\n \"office\",\n \"paper\",\n \"curled\",\n \"curly page\",\n \"document\",\n \"license\"\n ],\n \"📜\": [\n \"scroll\",\n \"documents\",\n \"ancient\",\n \"history\",\n \"paper\",\n \"degree\",\n \"document\",\n \"parchment\"\n ],\n \"📄\": [\n \"page_facing_up\",\n \"documents\",\n \"office\",\n \"paper\",\n \"information\",\n \"document\",\n \"printed\"\n ],\n \"📰\": [\n \"newspaper\",\n \"press\",\n \"headline\",\n \"communication\",\n \"news\",\n \"paper\"\n ],\n \"🗞️\": [\n \"rolled_up_newspaper\",\n \"press\",\n \"headline\",\n \"delivery\",\n \"news\",\n \"paper\",\n \"roll\"\n ],\n \"📑\": [\n \"bookmark_tabs\",\n \"favorite\",\n \"save\",\n \"order\",\n \"tidy\",\n \"mark\",\n \"marker\"\n ],\n \"🔖\": [\n \"bookmark\",\n \"favorite\",\n \"label\",\n \"save\",\n \"mark\",\n \"price\",\n \"tag\"\n ],\n \"🏷️\": [\n \"label\",\n \"sale\",\n \"tag\"\n ],\n \"💰\": [\n \"money_bag\",\n \"dollar\",\n \"payment\",\n \"coins\",\n \"sale\",\n \"cream\",\n \"moneybag\",\n \"moneybags\",\n \"rich\"\n ],\n \"💴\": [\n \"yen_banknote\",\n \"money\",\n \"sales\",\n \"japanese\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💵\": [\n \"dollar_banknote\",\n \"money\",\n \"sales\",\n \"bill\",\n \"currency\",\n \"american\",\n \"bank\",\n \"banknotes\",\n \"note\",\n \"sign\"\n ],\n \"💶\": [\n \"euro_banknote\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💷\": [\n \"pound_banknote\",\n \"british\",\n \"sterling\",\n \"money\",\n \"sales\",\n \"bills\",\n \"uk\",\n \"england\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"quid\",\n \"sign\",\n \"twenty\"\n ],\n \"💸\": [\n \"money_with_wings\",\n \"dollar\",\n \"bills\",\n \"payment\",\n \"sale\",\n \"bank\",\n \"banknote\",\n \"bill\",\n \"fly\",\n \"flying\",\n \"losing\",\n \"note\"\n ],\n \"💳\": [\n \"credit_card\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"bill\",\n \"payment\",\n \"shopping\",\n \"amex\",\n \"bank\",\n \"club\",\n \"diners\",\n \"mastercard\",\n \"subscription\",\n \"visa\"\n ],\n \"🧾\": [\n \"receipt\",\n \"accounting\",\n \"expenses\",\n \"bookkeeping\",\n \"evidence\",\n \"proof\"\n ],\n \"💹\": [\n \"chart_increasing_with_yen\",\n \"green-square\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"bank\",\n \"currency\",\n \"exchange\",\n \"growth\",\n \"market\",\n \"money\",\n \"rate\",\n \"rise\",\n \"sign\",\n \"trend\",\n \"upward\",\n \"upwards\"\n ],\n \"💱\": [\n \"currency_exchange\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"travel\",\n \"bank\"\n ],\n \"💲\": [\n \"heavy_dollar_sign\",\n \"money\",\n \"sales\",\n \"payment\",\n \"currency\",\n \"buck\"\n ],\n \"✉️\": [\n \"envelope\",\n \"letter\",\n \"postal\",\n \"inbox\",\n \"communication\",\n \"email\",\n \"✉ letter\"\n ],\n \"📧\": [\n \"e_mail\",\n \"communication\",\n \"inbox\",\n \"email\",\n \"letter\",\n \"symbol\"\n ],\n \"📨\": [\n \"incoming_envelope\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"fast\",\n \"letter\",\n \"lines\",\n \"mail\",\n \"receive\"\n ],\n \"📩\": [\n \"envelope_with_arrow\",\n \"email\",\n \"communication\",\n \"above\",\n \"down\",\n \"downwards\",\n \"insert\",\n \"letter\",\n \"mail\",\n \"outgoing\",\n \"sent\"\n ],\n \"📤\": [\n \"outbox_tray\",\n \"inbox\",\n \"email\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"sent\"\n ],\n \"📥\": [\n \"inbox_tray\",\n \"email\",\n \"documents\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"receive\"\n ],\n \"📦\": [\n \"package\",\n \"mail\",\n \"gift\",\n \"cardboard\",\n \"box\",\n \"moving\",\n \"communication\",\n \"parcel\",\n \"shipping\",\n \"container\"\n ],\n \"📫\": [\n \"closed_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📪\": [\n \"closed_mailbox_with_lowered_flag\",\n \"email\",\n \"communication\",\n \"inbox\",\n \"mail\",\n \"postbox\"\n ],\n \"📬\": [\n \"open_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📭\": [\n \"open_mailbox_with_lowered_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"no\",\n \"postbox\"\n ],\n \"📮\": [\n \"postbox\",\n \"email\",\n \"letter\",\n \"envelope\",\n \"communication\",\n \"mail\",\n \"mailbox\"\n ],\n \"🗳️\": [\n \"ballot_box_with_ballot\",\n \"election\",\n \"vote\",\n \"voting\"\n ],\n \"✏️\": [\n \"pencil\",\n \"stationery\",\n \"write\",\n \"paper\",\n \"writing\",\n \"school\",\n \"study\",\n \"lead\",\n \"pencil2\",\n \"typos\"\n ],\n \"✒️\": [\n \"black_nib\",\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"fountain\",\n \"✒ fountain\"\n ],\n \"🖋️\": [\n \"fountain_pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖊️\": [\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"ballpoint\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖌️\": [\n \"paintbrush\",\n \"drawing\",\n \"creativity\",\n \"art\",\n \"brush\",\n \"communication\",\n \"left\",\n \"lower\",\n \"painting\"\n ],\n \"🖍️\": [\n \"crayon\",\n \"drawing\",\n \"creativity\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"📝\": [\n \"memo\",\n \"write\",\n \"documents\",\n \"stationery\",\n \"pencil\",\n \"paper\",\n \"writing\",\n \"legal\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"study\",\n \"compose\",\n \"communication\",\n \"document\",\n \"memorandum\",\n \"note\",\n \"documentation\"\n ],\n \"💼\": [\n \"briefcase\",\n \"business\",\n \"documents\",\n \"work\",\n \"law\",\n \"legal\",\n \"job\",\n \"career\",\n \"suitcase\"\n ],\n \"📁\": [\n \"file_folder\",\n \"documents\",\n \"business\",\n \"office\",\n \"closed\",\n \"directory\",\n \"manilla\"\n ],\n \"📂\": [\n \"open_file_folder\",\n \"documents\",\n \"load\"\n ],\n \"🗂️\": [\n \"card_index_dividers\",\n \"organizing\",\n \"business\",\n \"stationery\"\n ],\n \"📅\": [\n \"calendar\",\n \"schedule\",\n \"date\",\n \"day\",\n \"emoji\",\n \"july\",\n \"world\"\n ],\n \"📆\": [\n \"tear_off_calendar\",\n \"schedule\",\n \"date\",\n \"planning\",\n \"day\",\n \"desk\"\n ],\n \"🗒️\": [\n \"spiral_notepad\",\n \"memo\",\n \"stationery\",\n \"note\",\n \"pad\"\n ],\n \"🗓️\": [\n \"spiral_calendar\",\n \"date\",\n \"schedule\",\n \"planning\",\n \"pad\"\n ],\n \"📇\": [\n \"card_index\",\n \"business\",\n \"stationery\",\n \"rolodex\",\n \"system\"\n ],\n \"📈\": [\n \"chart_increasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recovery\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"good\",\n \"success\",\n \"growth\",\n \"metrics\",\n \"pointing\",\n \"positive chart\",\n \"trend\",\n \"up\",\n \"upward\",\n \"upwards\",\n \"analytics\"\n ],\n \"📉\": [\n \"chart_decreasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recession\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"bad\",\n \"failure\",\n \"down\",\n \"downwards\",\n \"down pointing\",\n \"metrics\",\n \"negative chart\",\n \"trend\"\n ],\n \"📊\": [\n \"bar_chart\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"metrics\"\n ],\n \"📋\": [\n \"clipboard\",\n \"stationery\",\n \"documents\"\n ],\n \"📌\": [\n \"pushpin\",\n \"stationery\",\n \"mark\",\n \"here\",\n \"location\",\n \"pin\",\n \"tack\",\n \"thumb\"\n ],\n \"📍\": [\n \"round_pushpin\",\n \"stationery\",\n \"location\",\n \"map\",\n \"here\",\n \"dropped\",\n \"pin\",\n \"red\"\n ],\n \"📎\": [\n \"paperclip\",\n \"documents\",\n \"stationery\",\n \"clippy\"\n ],\n \"🖇️\": [\n \"linked_paperclips\",\n \"documents\",\n \"stationery\",\n \"communication\",\n \"link\",\n \"paperclip\"\n ],\n \"📏\": [\n \"straight_ruler\",\n \"stationery\",\n \"calculate\",\n \"length\",\n \"math\",\n \"school\",\n \"drawing\",\n \"architect\",\n \"sketch\",\n \"edge\"\n ],\n \"📐\": [\n \"triangular_ruler\",\n \"stationery\",\n \"math\",\n \"architect\",\n \"sketch\",\n \"set\",\n \"triangle\"\n ],\n \"✂️\": [\n \"scissors\",\n \"stationery\",\n \"cut\",\n \"black\",\n \"cutting\",\n \"tool\"\n ],\n \"🗃️\": [\n \"card_file_box\",\n \"business\",\n \"stationery\",\n \"database\"\n ],\n \"🗄️\": [\n \"file_cabinet\",\n \"filing\",\n \"organizing\"\n ],\n \"🗑️\": [\n \"wastebasket\",\n \"bin\",\n \"trash\",\n \"rubbish\",\n \"garbage\",\n \"toss\",\n \"basket\",\n \"can\",\n \"litter\",\n \"wastepaper\"\n ],\n \"🔒\": [\n \"locked\",\n \"security\",\n \"password\",\n \"padlock\",\n \"closed\",\n \"lock\",\n \"private\",\n \"privacy\"\n ],\n \"🔓\": [\n \"unlocked\",\n \"privacy\",\n \"security\",\n \"lock\",\n \"open\",\n \"padlock\",\n \"unlock\"\n ],\n \"🔏\": [\n \"locked_with_pen\",\n \"security\",\n \"secret\",\n \"fountain\",\n \"ink\",\n \"lock\",\n \"lock with\",\n \"nib\",\n \"privacy\"\n ],\n \"🔐\": [\n \"locked_with_key\",\n \"security\",\n \"privacy\",\n \"closed\",\n \"lock\",\n \"secure\",\n \"secret\"\n ],\n \"🔑\": [\n \"key\",\n \"lock\",\n \"door\",\n \"password\",\n \"gold\"\n ],\n \"🗝️\": [\n \"old_key\",\n \"lock\",\n \"door\",\n \"password\",\n \"clue\"\n ],\n \"🔨\": [\n \"hammer\",\n \"tools\",\n \"build\",\n \"create\",\n \"claw\",\n \"handyman\",\n \"tool\"\n ],\n \"🪓\": [\n \"axe\",\n \"tool\",\n \"chop\",\n \"cut\",\n \"hatchet\",\n \"split\",\n \"wood\"\n ],\n \"⛏️\": [\n \"pick\",\n \"tools\",\n \"dig\",\n \"mining\",\n \"pickaxe\",\n \"tool\"\n ],\n \"⚒️\": [\n \"hammer_and_pick\",\n \"tools\",\n \"build\",\n \"create\",\n \"tool\"\n ],\n \"🛠️\": [\n \"hammer_and_wrench\",\n \"tools\",\n \"build\",\n \"create\",\n \"spanner\",\n \"tool\"\n ],\n \"🗡️\": [\n \"dagger\",\n \"weapon\",\n \"knife\"\n ],\n \"⚔️\": [\n \"crossed_swords\",\n \"weapon\"\n ],\n \"🔫\": [\n \"pistol\",\n \"violence\",\n \"weapon\",\n \"revolver\",\n \"gun\",\n \"handgun\",\n \"shoot\",\n \"squirt\",\n \"tool\",\n \"water\"\n ],\n \"🏹\": [\n \"bow_and_arrow\",\n \"sports\",\n \"archer\",\n \"archery\",\n \"sagittarius\",\n \"tool\",\n \"zodiac\"\n ],\n \"🛡️\": [\n \"shield\",\n \"protection\",\n \"security\",\n \"weapon\"\n ],\n \"🔧\": [\n \"wrench\",\n \"tools\",\n \"diy\",\n \"ikea\",\n \"fix\",\n \"maintainer\",\n \"spanner\",\n \"tool\"\n ],\n \"🔩\": [\n \"nut_and_bolt\",\n \"handy\",\n \"tools\",\n \"fix\",\n \"screw\",\n \"tool\"\n ],\n \"⚙️\": [\n \"gear\",\n \"cog\",\n \"cogwheel\",\n \"tool\"\n ],\n \"🗜️\": [\n \"clamp\",\n \"tool\",\n \"compress\",\n \"compression\",\n \"table\",\n \"vice\",\n \"winzip\"\n ],\n \"⚖️\": [\n \"balance_scale\",\n \"law\",\n \"fairness\",\n \"weight\",\n \"justice\",\n \"libra\",\n \"scales\",\n \"tool\",\n \"zodiac\"\n ],\n \"🦯\": [\n \"probing_cane\",\n \"accessibility\",\n \"blind\",\n \"white\"\n ],\n \"🔗\": [\n \"link\",\n \"rings\",\n \"url\",\n \"chain\",\n \"hyperlink\",\n \"linked\",\n \"symbol\"\n ],\n \"⛓️\": [\n \"chains\",\n \"lock\",\n \"arrest\",\n \"chain\"\n ],\n \"🧰\": [\n \"toolbox\",\n \"tools\",\n \"diy\",\n \"fix\",\n \"maintainer\",\n \"mechanic\",\n \"chest\",\n \"tool\"\n ],\n \"🧲\": [\n \"magnet\",\n \"attraction\",\n \"magnetic\",\n \"horseshoe\"\n ],\n \"⚗️\": [\n \"alembic\",\n \"distilling\",\n \"science\",\n \"experiment\",\n \"chemistry\",\n \"tool\"\n ],\n \"🧪\": [\n \"test_tube\",\n \"chemistry\",\n \"experiment\",\n \"lab\",\n \"science\",\n \"chemist\",\n \"test\"\n ],\n \"🧫\": [\n \"petri_dish\",\n \"bacteria\",\n \"biology\",\n \"culture\",\n \"lab\",\n \"biologist\"\n ],\n \"🧬\": [\n \"dna\",\n \"biologist\",\n \"genetics\",\n \"life\",\n \"double\",\n \"evolution\",\n \"gene\",\n \"helix\"\n ],\n \"🔬\": [\n \"microscope\",\n \"laboratory\",\n \"experiment\",\n \"zoomin\",\n \"science\",\n \"study\",\n \"investigate\",\n \"magnify\",\n \"tool\"\n ],\n \"🔭\": [\n \"telescope\",\n \"stars\",\n \"space\",\n \"zoom\",\n \"science\",\n \"astronomy\",\n \"stargazing\",\n \"tool\"\n ],\n \"📡\": [\n \"satellite_antenna\",\n \"communication\",\n \"future\",\n \"radio\",\n \"space\",\n \"dish\",\n \"signal\"\n ],\n \"💉\": [\n \"syringe\",\n \"health\",\n \"hospital\",\n \"drugs\",\n \"blood\",\n \"medicine\",\n \"needle\",\n \"doctor\",\n \"nurse\",\n \"shot\",\n \"sick\",\n \"tool\",\n \"vaccination\",\n \"vaccine\"\n ],\n \"🩸\": [\n \"drop_of_blood\",\n \"period\",\n \"hurt\",\n \"harm\",\n \"wound\",\n \"bleed\",\n \"doctor\",\n \"donation\",\n \"injury\",\n \"medicine\",\n \"menstruation\"\n ],\n \"💊\": [\n \"pill\",\n \"health\",\n \"medicine\",\n \"doctor\",\n \"pharmacy\",\n \"drug\",\n \"capsule\",\n \"drugs\",\n \"sick\",\n \"tablet\"\n ],\n \"🩹\": [\n \"adhesive_bandage\",\n \"heal\",\n \"aid\",\n \"band\",\n \"doctor\",\n \"medicine\",\n \"plaster\"\n ],\n \"🩺\": [\n \"stethoscope\",\n \"health\",\n \"doctor\",\n \"heart\",\n \"medicine\",\n \"healthcheck\"\n ],\n \"🚪\": [\n \"door\",\n \"house\",\n \"entry\",\n \"exit\",\n \"doorway\",\n \"front\"\n ],\n \"🛏️\": [\n \"bed\",\n \"sleep\",\n \"rest\",\n \"bedroom\",\n \"hotel\"\n ],\n \"🛋️\": [\n \"couch_and_lamp\",\n \"read\",\n \"chill\",\n \"hotel\",\n \"lounge\",\n \"settee\",\n \"sofa\"\n ],\n \"🪑\": [\n \"chair\",\n \"sit\",\n \"furniture\",\n \"seat\"\n ],\n \"🚽\": [\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"washroom\",\n \"bathroom\",\n \"potty\",\n \"loo\"\n ],\n \"🚿\": [\n \"shower\",\n \"clean\",\n \"water\",\n \"bathroom\",\n \"bath\",\n \"head\"\n ],\n \"🛁\": [\n \"bathtub\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bath\",\n \"bubble\"\n ],\n \"🪒\": [\n \"razor\",\n \"cut\",\n \"sharp\",\n \"shave\"\n ],\n \"🧴\": [\n \"lotion_bottle\",\n \"moisturizer\",\n \"sunscreen\",\n \"shampoo\"\n ],\n \"🧷\": [\n \"safety_pin\",\n \"diaper\",\n \"punk\",\n \"rock\"\n ],\n \"🧹\": [\n \"broom\",\n \"cleaning\",\n \"sweeping\",\n \"witch\",\n \"brush\",\n \"sweep\"\n ],\n \"🧺\": [\n \"basket\",\n \"laundry\",\n \"farming\",\n \"picnic\"\n ],\n \"🧻\": [\n \"roll_of_paper\",\n \"roll\",\n \"toilet\",\n \"towels\"\n ],\n \"🧼\": [\n \"soap\",\n \"bar\",\n \"bathing\",\n \"cleaning\",\n \"lather\",\n \"soapdish\"\n ],\n \"🧽\": [\n \"sponge\",\n \"absorbing\",\n \"cleaning\",\n \"porous\"\n ],\n \"🧯\": [\n \"fire_extinguisher\",\n \"quench\",\n \"extinguish\"\n ],\n \"🛒\": [\n \"shopping_cart\",\n \"trolley\"\n ],\n \"🚬\": [\n \"cigarette\",\n \"kills\",\n \"tobacco\",\n \"joint\",\n \"smoke\",\n \"activity\",\n \"smoking\",\n \"symbol\"\n ],\n \"⚰️\": [\n \"coffin\",\n \"vampire\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"graveyard\",\n \"cemetery\",\n \"casket\",\n \"funeral\",\n \"box\",\n \"remove\"\n ],\n \"⚱️\": [\n \"funeral_urn\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"ashes\",\n \"vase\"\n ],\n \"🗿\": [\n \"moai\",\n \"rock\",\n \"easter island\",\n \"carving\",\n \"face\",\n \"human\",\n \"moyai\",\n \"statue\",\n \"stone\"\n ],\n \"🏧\": [\n \"atm_sign\",\n \"money\",\n \"sales\",\n \"cash\",\n \"blue-square\",\n \"payment\",\n \"bank\",\n \"automated\",\n \"machine\",\n \"teller\"\n ],\n \"🚮\": [\n \"litter_in_bin_sign\",\n \"blue-square\",\n \"sign\",\n \"human\",\n \"info\",\n \"its\",\n \"litterbox\",\n \"person\",\n \"place\",\n \"put\",\n \"symbol\",\n \"trash\"\n ],\n \"🚰\": [\n \"potable_water\",\n \"blue-square\",\n \"liquid\",\n \"restroom\",\n \"cleaning\",\n \"faucet\",\n \"drink\",\n \"drinking\",\n \"symbol\",\n \"tap\",\n \"thirst\",\n \"thirsty\"\n ],\n \"♿\": [\n \"wheelchair_symbol\",\n \"blue-square\",\n \"disabled\",\n \"accessibility\",\n \"access\",\n \"accessible\",\n \"bathroom\"\n ],\n \"🚹\": [\n \"men_s_room\",\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"blue-square\",\n \"gender\",\n \"male\",\n \"lavatory\",\n \"man\",\n \"mens\",\n \"men’s\",\n \"symbol\"\n ],\n \"🚺\": [\n \"women_s_room\",\n \"purple-square\",\n \"woman\",\n \"female\",\n \"toilet\",\n \"loo\",\n \"restroom\",\n \"gender\",\n \"lavatory\",\n \"symbol\",\n \"wc\",\n \"womens\",\n \"womens toilet\",\n \"women’s\"\n ],\n \"🚻\": [\n \"restroom\",\n \"blue-square\",\n \"toilet\",\n \"refresh\",\n \"wc\",\n \"gender\",\n \"bathroom\",\n \"lavatory\",\n \"sign\"\n ],\n \"🚼\": [\n \"baby_symbol\",\n \"orange-square\",\n \"child\",\n \"change\",\n \"changing\",\n \"nursery\",\n \"station\"\n ],\n \"🚾\": [\n \"water_closet\",\n \"toilet\",\n \"restroom\",\n \"blue-square\",\n \"lavatory\",\n \"wc\"\n ],\n \"🛂\": [\n \"passport_control\",\n \"custom\",\n \"blue-square\",\n \"border\",\n \"permissions\",\n \"authorization\",\n \"roles\"\n ],\n \"🛃\": [\n \"customs\",\n \"passport\",\n \"border\",\n \"blue-square\"\n ],\n \"🛄\": [\n \"baggage_claim\",\n \"blue-square\",\n \"airport\",\n \"transport\"\n ],\n \"🛅\": [\n \"left_luggage\",\n \"blue-square\",\n \"travel\",\n \"baggage\",\n \"bag with\",\n \"key\",\n \"locked\",\n \"locker\",\n \"suitcase\"\n ],\n \"⚠️\": [\n \"warning\",\n \"exclamation\",\n \"wip\",\n \"alert\",\n \"error\",\n \"problem\",\n \"issue\",\n \"sign\",\n \"symbol\"\n ],\n \"🚸\": [\n \"children_crossing\",\n \"school\",\n \"warning\",\n \"danger\",\n \"sign\",\n \"driving\",\n \"yellow-diamond\",\n \"child\",\n \"kids\",\n \"pedestrian\",\n \"traffic\",\n \"experience\",\n \"usability\"\n ],\n \"⛔\": [\n \"no_entry\",\n \"limit\",\n \"security\",\n \"privacy\",\n \"bad\",\n \"denied\",\n \"stop\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"traffic\"\n ],\n \"🚫\": [\n \"prohibited\",\n \"forbid\",\n \"stop\",\n \"limit\",\n \"denied\",\n \"disallow\",\n \"circle\",\n \"backslash\",\n \"banned\",\n \"block\",\n \"crossed\",\n \"entry\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"red\",\n \"restricted\",\n \"sign\"\n ],\n \"🚳\": [\n \"no_bicycles\",\n \"no_bikes\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"prohibited\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"sign\",\n \"vehicle\"\n ],\n \"🚭\": [\n \"no_smoking\",\n \"cigarette\",\n \"blue-square\",\n \"smell\",\n \"smoke\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"sign\",\n \"symbol\"\n ],\n \"🚯\": [\n \"no_littering\",\n \"trash\",\n \"bin\",\n \"garbage\",\n \"circle\",\n \"do\",\n \"forbidden\",\n \"litter\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚱\": [\n \"non_potable_water\",\n \"drink\",\n \"faucet\",\n \"tap\",\n \"circle\",\n \"drinking\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚷\": [\n \"no_pedestrians\",\n \"rules\",\n \"crossing\",\n \"walking\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"pedestrian\",\n \"people\",\n \"prohibited\"\n ],\n \"📵\": [\n \"no_mobile_phones\",\n \"iphone\",\n \"mute\",\n \"circle\",\n \"cell\",\n \"communication\",\n \"forbidden\",\n \"not\",\n \"phone\",\n \"prohibited\",\n \"smartphones\",\n \"telephone\"\n ],\n \"🔞\": [\n \"no_one_under_eighteen\",\n \"18\",\n \"drink\",\n \"pub\",\n \"night\",\n \"minor\",\n \"circle\",\n \"age\",\n \"forbidden\",\n \"not\",\n \"nsfw\",\n \"prohibited\",\n \"restriction\",\n \"symbol\",\n \"underage\"\n ],\n \"☢️\": [\n \"radioactive\",\n \"nuclear\",\n \"danger\",\n \"international\",\n \"radiation\",\n \"sign\",\n \"symbol\"\n ],\n \"☣️\": [\n \"biohazard\",\n \"danger\",\n \"sign\"\n ],\n \"⬆️\": [\n \"up_arrow\",\n \"blue-square\",\n \"continue\",\n \"top\",\n \"direction\",\n \"black\",\n \"cardinal\",\n \"north\",\n \"pointing\",\n \"upwards\",\n \"upgrade\"\n ],\n \"↗️\": [\n \"up_right_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northeast\",\n \"east\",\n \"intercardinal\",\n \"north\",\n \"upper\"\n ],\n \"➡️\": [\n \"right_arrow\",\n \"blue-square\",\n \"next\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"east\",\n \"pointing\",\n \"rightwards\",\n \"right arrow\"\n ],\n \"↘️\": [\n \"down_right_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southeast\",\n \"east\",\n \"intercardinal\",\n \"lower\",\n \"right arrow\",\n \"south\"\n ],\n \"⬇️\": [\n \"down_arrow\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"black\",\n \"cardinal\",\n \"downwards\",\n \"down arrow\",\n \"pointing\",\n \"south\",\n \"downgrade\"\n ],\n \"↙️\": [\n \"down_left_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southwest\",\n \"intercardinal\",\n \"left arrow\",\n \"lower\",\n \"south\",\n \"west\"\n ],\n \"⬅️\": [\n \"left_arrow\",\n \"blue-square\",\n \"previous\",\n \"back\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"leftwards\",\n \"left arrow\",\n \"pointing\",\n \"west\"\n ],\n \"↖️\": [\n \"up_left_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northwest\",\n \"intercardinal\",\n \"left arrow\",\n \"north\",\n \"upper\",\n \"west\"\n ],\n \"↕️\": [\n \"up_down_arrow\",\n \"blue-square\",\n \"direction\",\n \"way\",\n \"vertical\",\n \"arrows\",\n \"intercardinal\",\n \"northwest\"\n ],\n \"↔️\": [\n \"left_right_arrow\",\n \"shape\",\n \"direction\",\n \"horizontal\",\n \"sideways\",\n \"arrows\",\n \"horizontal arrows\"\n ],\n \"↩️\": [\n \"right_arrow_curving_left\",\n \"back\",\n \"return\",\n \"blue-square\",\n \"undo\",\n \"enter\",\n \"curved\",\n \"email\",\n \"hook\",\n \"leftwards\",\n \"reply\"\n ],\n \"↪️\": [\n \"left_arrow_curving_right\",\n \"blue-square\",\n \"return\",\n \"rotate\",\n \"direction\",\n \"email\",\n \"forward\",\n \"hook\",\n \"rightwards\",\n \"right curved\"\n ],\n \"⤴️\": [\n \"right_arrow_curving_up\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\",\n \"upwards\"\n ],\n \"⤵️\": [\n \"right_arrow_curving_down\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"curved\",\n \"downwards\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\"\n ],\n \"🔃\": [\n \"clockwise_vertical_arrows\",\n \"sync\",\n \"cycle\",\n \"round\",\n \"repeat\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"reload\",\n \"upwards\"\n ],\n \"🔄\": [\n \"counterclockwise_arrows_button\",\n \"blue-square\",\n \"sync\",\n \"cycle\",\n \"anticlockwise\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"refresh\",\n \"rotate\",\n \"switch\",\n \"upwards\",\n \"withershins\"\n ],\n \"🔙\": [\n \"back_arrow\",\n \"arrow\",\n \"words\",\n \"return\",\n \"above\",\n \"leftwards\"\n ],\n \"🔚\": [\n \"end_arrow\",\n \"words\",\n \"arrow\",\n \"above\",\n \"leftwards\"\n ],\n \"🔛\": [\n \"on_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"exclamation\",\n \"left\",\n \"mark\",\n \"on!\",\n \"right\"\n ],\n \"🔜\": [\n \"soon_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"rightwards\"\n ],\n \"🔝\": [\n \"top_arrow\",\n \"words\",\n \"blue-square\",\n \"above\",\n \"up\",\n \"upwards\"\n ],\n \"🛐\": [\n \"place_of_worship\",\n \"religion\",\n \"church\",\n \"temple\",\n \"prayer\",\n \"building\",\n \"religious\"\n ],\n \"⚛️\": [\n \"atom_symbol\",\n \"science\",\n \"physics\",\n \"chemistry\",\n \"atheist\"\n ],\n \"🕉️\": [\n \"om\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"aumkara\",\n \"hindu\",\n \"omkara\",\n \"pranava\",\n \"religion\",\n \"symbol\"\n ],\n \"✡️\": [\n \"star_of_david\",\n \"judaism\",\n \"jew\",\n \"jewish\",\n \"magen\",\n \"religion\"\n ],\n \"☸️\": [\n \"wheel_of_dharma\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"buddhist\",\n \"helm\",\n \"religion\"\n ],\n \"☯️\": [\n \"yin_yang\",\n \"balance\",\n \"religion\",\n \"tao\",\n \"taoist\"\n ],\n \"✝️\": [\n \"latin_cross\",\n \"christianity\",\n \"christian\",\n \"religion\"\n ],\n \"☦️\": [\n \"orthodox_cross\",\n \"suppedaneum\",\n \"religion\",\n \"christian\"\n ],\n \"☪️\": [\n \"star_and_crescent\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"☮️\": [\n \"peace_symbol\",\n \"hippie\",\n \"sign\"\n ],\n \"🕎\": [\n \"menorah\",\n \"hanukkah\",\n \"candles\",\n \"jewish\",\n \"branches\",\n \"candelabrum\",\n \"candlestick\",\n \"chanukiah\",\n \"nine\",\n \"religion\"\n ],\n \"🔯\": [\n \"dotted_six_pointed_star\",\n \"purple-square\",\n \"religion\",\n \"jewish\",\n \"hexagram\",\n \"dot\",\n \"fortune\",\n \"middle\"\n ],\n \"♈\": [\n \"aries\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"ram\"\n ],\n \"♉\": [\n \"taurus\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"bull\",\n \"ox\"\n ],\n \"♊\": [\n \"gemini\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"twins\"\n ],\n \"♋\": [\n \"cancer\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"crab\"\n ],\n \"♌\": [\n \"leo\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"lion\"\n ],\n \"♍\": [\n \"virgo\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"maiden\",\n \"virgin\"\n ],\n \"♎\": [\n \"libra\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"balance\",\n \"justice\",\n \"scales\"\n ],\n \"♏\": [\n \"scorpio\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"scorpion\",\n \"scorpius\"\n ],\n \"♐\": [\n \"sagittarius\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"archer\"\n ],\n \"♑\": [\n \"capricorn\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"goat\"\n ],\n \"♒\": [\n \"aquarius\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"bearer\",\n \"water\"\n ],\n \"♓\": [\n \"pisces\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"fish\"\n ],\n \"⛎\": [\n \"ophiuchus\",\n \"sign\",\n \"purple-square\",\n \"constellation\",\n \"astrology\",\n \"bearer\",\n \"serpent\",\n \"snake\",\n \"zodiac\"\n ],\n \"🔀\": [\n \"shuffle_tracks_button\",\n \"blue-square\",\n \"shuffle\",\n \"music\",\n \"random\",\n \"arrow\",\n \"arrows\",\n \"crossed\",\n \"rightwards\",\n \"symbol\",\n \"twisted\",\n \"merge\"\n ],\n \"🔁\": [\n \"repeat_button\",\n \"loop\",\n \"record\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"clockwise\",\n \"leftwards\",\n \"open\",\n \"retweet\",\n \"rightwards\",\n \"symbol\"\n ],\n \"🔂\": [\n \"repeat_single_button\",\n \"blue-square\",\n \"loop\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"circled\",\n \"clockwise\",\n \"leftwards\",\n \"number\",\n \"once\",\n \"one\",\n \"open\",\n \"overlay\",\n \"rightwards\",\n \"symbol\",\n \"track\"\n ],\n \"▶️\": [\n \"play_button\",\n \"blue-square\",\n \"right\",\n \"direction\",\n \"play\",\n \"arrow\",\n \"black\",\n \"forward\",\n \"pointing\",\n \"right triangle\",\n \"triangle\"\n ],\n \"⏩\": [\n \"fast_forward_button\",\n \"blue-square\",\n \"play\",\n \"speed\",\n \"continue\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\"\n ],\n \"⏭️\": [\n \"next_track_button\",\n \"forward\",\n \"next\",\n \"blue-square\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"⏯️\": [\n \"play_or_pause_button\",\n \"blue-square\",\n \"play\",\n \"pause\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"play/pause\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"◀️\": [\n \"reverse_button\",\n \"blue-square\",\n \"left\",\n \"direction\",\n \"arrow\",\n \"backward\",\n \"black\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏪\": [\n \"fast_reverse_button\",\n \"play\",\n \"blue-square\",\n \"arrow\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"rewind\",\n \"symbol\",\n \"triangle\",\n \"revert\"\n ],\n \"⏮️\": [\n \"last_track_button\",\n \"backward\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"previous\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"🔼\": [\n \"upwards_button\",\n \"blue-square\",\n \"triangle\",\n \"direction\",\n \"point\",\n \"forward\",\n \"top\",\n \"arrow\",\n \"pointing\",\n \"red\",\n \"small\",\n \"up\"\n ],\n \"⏫\": [\n \"fast_up_button\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"🔽\": [\n \"downwards_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"down\",\n \"pointing\",\n \"red\",\n \"small\",\n \"triangle\"\n ],\n \"⏬\": [\n \"fast_down_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏸️\": [\n \"pause_button\",\n \"pause\",\n \"blue-square\",\n \"bar\",\n \"double\",\n \"symbol\",\n \"vertical\"\n ],\n \"⏹️\": [\n \"stop_button\",\n \"blue-square\",\n \"black\",\n \"for\",\n \"square\",\n \"symbol\"\n ],\n \"⏺️\": [\n \"record_button\",\n \"blue-square\",\n \"black\",\n \"circle\",\n \"for\",\n \"symbol\"\n ],\n \"⏏️\": [\n \"eject_button\",\n \"blue-square\",\n \"symbol\"\n ],\n \"🎦\": [\n \"cinema\",\n \"blue-square\",\n \"record\",\n \"film\",\n \"movie\",\n \"curtain\",\n \"stage\",\n \"theater\",\n \"activity\",\n \"camera\",\n \"entertainment\",\n \"movies\",\n \"screen\",\n \"symbol\"\n ],\n \"🔅\": [\n \"dim_button\",\n \"sun\",\n \"afternoon\",\n \"warm\",\n \"summer\",\n \"brightness\",\n \"decrease\",\n \"low\",\n \"symbol\"\n ],\n \"🔆\": [\n \"bright_button\",\n \"sun\",\n \"light\",\n \"brightness\",\n \"high\",\n \"increase\",\n \"symbol\"\n ],\n \"📶\": [\n \"antenna_bars\",\n \"blue-square\",\n \"reception\",\n \"phone\",\n \"internet\",\n \"connection\",\n \"wifi\",\n \"bluetooth\",\n \"bars\",\n \"bar\",\n \"cell\",\n \"cellular\",\n \"communication\",\n \"mobile\",\n \"signal\",\n \"stairs\",\n \"strength\",\n \"telephone\"\n ],\n \"📳\": [\n \"vibration_mode\",\n \"orange-square\",\n \"phone\",\n \"cell\",\n \"communication\",\n \"heart\",\n \"mobile\",\n \"silent\",\n \"telephone\"\n ],\n \"📴\": [\n \"mobile_phone_off\",\n \"mute\",\n \"orange-square\",\n \"silence\",\n \"quiet\",\n \"cell\",\n \"communication\",\n \"telephone\"\n ],\n \"♀️\": [\n \"female_sign\",\n \"woman\",\n \"women\",\n \"lady\",\n \"girl\",\n \"symbol\",\n \"venus\"\n ],\n \"♂️\": [\n \"male_sign\",\n \"man\",\n \"boy\",\n \"men\",\n \"mars\",\n \"symbol\"\n ],\n \"⚕️\": [\n \"medical_symbol\",\n \"health\",\n \"hospital\",\n \"aesculapius\",\n \"asclepius\",\n \"asklepios\",\n \"care\",\n \"doctor\",\n \"medicine\",\n \"rod\",\n \"snake\",\n \"staff\"\n ],\n \"♾️\": [\n \"infinity\",\n \"forever\",\n \"paper\",\n \"permanent\",\n \"sign\",\n \"unbounded\",\n \"universal\"\n ],\n \"♻️\": [\n \"recycling_symbol\",\n \"arrow\",\n \"environment\",\n \"garbage\",\n \"trash\",\n \"black\",\n \"green\",\n \"logo\",\n \"recycle\",\n \"universal\",\n \"reuse\"\n ],\n \"⚜️\": [\n \"fleur_de_lis\",\n \"decorative\",\n \"scout\",\n \"new\",\n \"orleans\",\n \"saints\",\n \"scouts\"\n ],\n \"🔱\": [\n \"trident_emblem\",\n \"weapon\",\n \"spear\",\n \"anchor\",\n \"pitchfork\",\n \"ship\",\n \"tool\"\n ],\n \"📛\": [\n \"name_badge\",\n \"fire\",\n \"forbid\",\n \"tag\",\n \"tofu\"\n ],\n \"🔰\": [\n \"japanese_symbol_for_beginner\",\n \"badge\",\n \"shield\",\n \"chevron\",\n \"green\",\n \"leaf\",\n \"mark\",\n \"shoshinsha\",\n \"tool\",\n \"yellow\"\n ],\n \"⭕\": [\n \"hollow_red_circle\",\n \"circle\",\n \"round\",\n \"correct\",\n \"heavy\",\n \"large\",\n \"mark\",\n \"o\"\n ],\n \"✅\": [\n \"check_mark_button\",\n \"green-square\",\n \"ok\",\n \"agree\",\n \"vote\",\n \"election\",\n \"answer\",\n \"tick\",\n \"green\",\n \"heavy\",\n \"symbol\",\n \"white\",\n \"pass_tests\"\n ],\n \"☑️\": [\n \"check_box_with_check\",\n \"ok\",\n \"agree\",\n \"confirm\",\n \"black-square\",\n \"vote\",\n \"election\",\n \"yes\",\n \"tick\",\n \"ballot\",\n \"checkbox\",\n \"mark\"\n ],\n \"✔️\": [\n \"check_mark\",\n \"ok\",\n \"nike\",\n \"answer\",\n \"yes\",\n \"tick\",\n \"heavy\"\n ],\n \"✖️\": [\n \"multiplication_sign\",\n \"math\",\n \"calculation\",\n \"cancel\",\n \"heavy\",\n \"multiply\",\n \"symbol\",\n \"x\"\n ],\n \"❌\": [\n \"cross_mark\",\n \"no\",\n \"delete\",\n \"remove\",\n \"cancel\",\n \"red\",\n \"multiplication\",\n \"multiply\",\n \"x\"\n ],\n \"❎\": [\n \"cross_mark_button\",\n \"x\",\n \"green-square\",\n \"no\",\n \"deny\",\n \"negative\",\n \"square\",\n \"squared\"\n ],\n \"➕\": [\n \"plus_sign\",\n \"math\",\n \"calculation\",\n \"addition\",\n \"more\",\n \"increase\",\n \"heavy\",\n \"symbol\",\n \"add\"\n ],\n \"➖\": [\n \"minus_sign\",\n \"math\",\n \"calculation\",\n \"subtract\",\n \"less\",\n \"heavy\",\n \"symbol\",\n \"remove\"\n ],\n \"➗\": [\n \"division_sign\",\n \"divide\",\n \"math\",\n \"calculation\",\n \"heavy\",\n \"symbol\"\n ],\n \"➰\": [\n \"curly_loop\",\n \"scribble\",\n \"draw\",\n \"shape\",\n \"squiggle\",\n \"curl\",\n \"curling\"\n ],\n \"➿\": [\n \"double_curly_loop\",\n \"tape\",\n \"cassette\",\n \"curl\",\n \"curling\",\n \"voicemail\"\n ],\n \"〽️\": [\n \"part_alternation_mark\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"business\",\n \"economics\",\n \"bad\",\n \"m\",\n \"mcdonald’s\"\n ],\n \"✳️\": [\n \"eight_spoked_asterisk\",\n \"star\",\n \"sparkle\",\n \"green-square\"\n ],\n \"✴️\": [\n \"eight_pointed_star\",\n \"orange-square\",\n \"shape\",\n \"polygon\",\n \"black\",\n \"orange\"\n ],\n \"❇️\": [\n \"sparkle\",\n \"stars\",\n \"green-square\",\n \"awesome\",\n \"good\",\n \"fireworks\"\n ],\n \"‼️\": [\n \"double_exclamation_mark\",\n \"exclamation\",\n \"surprise\",\n \"bangbang\",\n \"punctuation\",\n \"red\"\n ],\n \"⁉️\": [\n \"exclamation_question_mark\",\n \"wat\",\n \"punctuation\",\n \"surprise\",\n \"interrobang\",\n \"red\"\n ],\n \"❓\": [\n \"question_mark\",\n \"doubt\",\n \"confused\",\n \"black\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"❔\": [\n \"white_question_mark\",\n \"doubts\",\n \"gray\",\n \"huh\",\n \"confused\",\n \"grey\",\n \"ornament\",\n \"outlined\",\n \"punctuation\"\n ],\n \"❕\": [\n \"white_exclamation_mark\",\n \"surprise\",\n \"punctuation\",\n \"gray\",\n \"wow\",\n \"warning\",\n \"grey\",\n \"ornament\",\n \"outlined\"\n ],\n \"❗\": [\n \"exclamation_mark\",\n \"heavy_exclamation_mark\",\n \"danger\",\n \"surprise\",\n \"punctuation\",\n \"wow\",\n \"warning\",\n \"bang\",\n \"red\",\n \"symbol\"\n ],\n \"〰️\": [\n \"wavy_dash\",\n \"draw\",\n \"line\",\n \"moustache\",\n \"mustache\",\n \"squiggle\",\n \"scribble\",\n \"punctuation\",\n \"wave\"\n ],\n \"©️\": [\n \"copyright\",\n \"ip\",\n \"license\",\n \"circle\",\n \"law\",\n \"legal\",\n \"c\",\n \"sign\"\n ],\n \"®️\": [\n \"registered\",\n \"alphabet\",\n \"circle\",\n \"r\",\n \"sign\"\n ],\n \"™️\": [\n \"trade_mark\",\n \"trademark\",\n \"brand\",\n \"law\",\n \"legal\",\n \"sign\",\n \"tm\"\n ],\n \"#️⃣\": [\n \"keycap_\",\n \"symbol\",\n \"blue-square\",\n \"twitter\",\n \"hash\",\n \"hashtag\",\n \"key\",\n \"number\",\n \"octothorpe\",\n \"pound\",\n \"sign\"\n ],\n \"*️⃣\": [\n \"keycap_\",\n \"star\",\n \"keycap\",\n \"asterisk\"\n ],\n \"0️⃣\": [\n \"keycap_0\",\n \"0\",\n \"numbers\",\n \"blue-square\",\n \"null\",\n \"zero\",\n \"digit\"\n ],\n \"1️⃣\": [\n \"keycap_1\",\n \"blue-square\",\n \"numbers\",\n \"1\",\n \"one\",\n \"digit\"\n ],\n \"2️⃣\": [\n \"keycap_2\",\n \"numbers\",\n \"2\",\n \"prime\",\n \"blue-square\",\n \"two\",\n \"digit\"\n ],\n \"3️⃣\": [\n \"keycap_3\",\n \"3\",\n \"numbers\",\n \"prime\",\n \"blue-square\",\n \"three\",\n \"digit\"\n ],\n \"4️⃣\": [\n \"keycap_4\",\n \"4\",\n \"numbers\",\n \"blue-square\",\n \"four\",\n \"digit\"\n ],\n \"5️⃣\": [\n \"keycap_5\",\n \"5\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"five\",\n \"digit\"\n ],\n \"6️⃣\": [\n \"keycap_6\",\n \"6\",\n \"numbers\",\n \"blue-square\",\n \"six\",\n \"digit\"\n ],\n \"7️⃣\": [\n \"keycap_7\",\n \"7\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"seven\",\n \"digit\"\n ],\n \"8️⃣\": [\n \"keycap_8\",\n \"8\",\n \"blue-square\",\n \"numbers\",\n \"eight\",\n \"digit\"\n ],\n \"9️⃣\": [\n \"keycap_9\",\n \"blue-square\",\n \"numbers\",\n \"9\",\n \"nine\",\n \"digit\"\n ],\n \"🔟\": [\n \"keycap_10\",\n \"numbers\",\n \"10\",\n \"blue-square\",\n \"ten\",\n \"number\"\n ],\n \"🔠\": [\n \"input_latin_uppercase\",\n \"alphabet\",\n \"words\",\n \"letters\",\n \"uppercase\",\n \"blue-square\",\n \"abcd\",\n \"capital\",\n \"for\",\n \"symbol\"\n ],\n \"🔡\": [\n \"input_latin_lowercase\",\n \"blue-square\",\n \"letters\",\n \"lowercase\",\n \"alphabet\",\n \"abcd\",\n \"for\",\n \"small\",\n \"symbol\"\n ],\n \"🔢\": [\n \"input_numbers\",\n \"numbers\",\n \"blue-square\",\n \"1234\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"for\",\n \"numeric\",\n \"symbol\"\n ],\n \"🔣\": [\n \"input_symbols\",\n \"blue-square\",\n \"music\",\n \"note\",\n \"ampersand\",\n \"percent\",\n \"glyphs\",\n \"characters\",\n \"for\",\n \"symbol\",\n \"symbol input\"\n ],\n \"🔤\": [\n \"input_latin_letters\",\n \"blue-square\",\n \"alphabet\",\n \"abc\",\n \"for\",\n \"symbol\"\n ],\n \"🅰️\": [\n \"a_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆎\": [\n \"ab_button\",\n \"red-square\",\n \"alphabet\",\n \"blood\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🅱️\": [\n \"b_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆑\": [\n \"cl_button\",\n \"alphabet\",\n \"words\",\n \"red-square\",\n \"clear\",\n \"sign\",\n \"squared\"\n ],\n \"🆒\": [\n \"cool_button\",\n \"words\",\n \"blue-square\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🆓\": [\n \"free_button\",\n \"blue-square\",\n \"words\",\n \"sign\",\n \"squared\"\n ],\n \"ℹ️\": [\n \"information\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"i\",\n \"info\",\n \"lowercase\",\n \"source\",\n \"tourist\"\n ],\n \"🆔\": [\n \"id_button\",\n \"purple-square\",\n \"words\",\n \"identification\",\n \"identity\",\n \"sign\",\n \"squared\"\n ],\n \"Ⓜ️\": [\n \"circled_m\",\n \"alphabet\",\n \"blue-circle\",\n \"letter\",\n \"capital\",\n \"circle\",\n \"latin\",\n \"metro\"\n ],\n \"🆕\": [\n \"new_button\",\n \"blue-square\",\n \"words\",\n \"start\",\n \"fresh\",\n \"sign\",\n \"squared\"\n ],\n \"🆖\": [\n \"ng_button\",\n \"blue-square\",\n \"words\",\n \"shape\",\n \"icon\",\n \"blooper\",\n \"good\",\n \"no\",\n \"sign\",\n \"squared\"\n ],\n \"🅾️\": [\n \"o_button\",\n \"alphabet\",\n \"red-square\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"o2\",\n \"squared\",\n \"type\"\n ],\n \"🆗\": [\n \"ok_button\",\n \"good\",\n \"agree\",\n \"yes\",\n \"blue-square\",\n \"okay\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🅿️\": [\n \"p_button\",\n \"cars\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"parking\",\n \"sign\",\n \"squared\"\n ],\n \"🆘\": [\n \"sos_button\",\n \"help\",\n \"red-square\",\n \"words\",\n \"emergency\",\n \"911\",\n \"distress\",\n \"sign\",\n \"signal\",\n \"squared\"\n ],\n \"🆙\": [\n \"up_button\",\n \"blue-square\",\n \"above\",\n \"high\",\n \"exclamation\",\n \"level\",\n \"mark\",\n \"sign\",\n \"squared\",\n \"up!\"\n ],\n \"🆚\": [\n \"vs_button\",\n \"words\",\n \"orange-square\",\n \"squared\",\n \"versus\"\n ],\n \"🈁\": [\n \"japanese_here_button\",\n \"blue-square\",\n \"here\",\n \"katakana\",\n \"japanese\",\n \"destination\",\n \"koko\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"word\",\n \"“here”\"\n ],\n \"🈂️\": [\n \"japanese_service_charge_button\",\n \"japanese\",\n \"blue-square\",\n \"katakana\",\n \"charge”\",\n \"meaning\",\n \"or\",\n \"sa\",\n \"sign\",\n \"squared\",\n \"“service\",\n \"“service”\"\n ],\n \"🈷️\": [\n \"japanese_monthly_amount_button\",\n \"chinese\",\n \"month\",\n \"moon\",\n \"japanese\",\n \"orange-square\",\n \"kanji\",\n \"amount”\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"radical\",\n \"sign\",\n \"squared\",\n \"u6708\",\n \"unified\",\n \"“monthly\"\n ],\n \"🈶\": [\n \"japanese_not_free_of_charge_button\",\n \"orange-square\",\n \"chinese\",\n \"have\",\n \"kanji\",\n \"charge”\",\n \"cjk\",\n \"exist\",\n \"ideograph\",\n \"meaning\",\n \"own\",\n \"sign\",\n \"squared\",\n \"u6709\",\n \"unified\",\n \"“not\"\n ],\n \"🈯\": [\n \"japanese_reserved_button\",\n \"chinese\",\n \"point\",\n \"green-square\",\n \"kanji\",\n \"cjk\",\n \"finger\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6307\",\n \"unified\",\n \"“reserved”\"\n ],\n \"🉐\": [\n \"japanese_bargain_button\",\n \"chinese\",\n \"kanji\",\n \"obtain\",\n \"get\",\n \"circle\",\n \"acquire\",\n \"advantage\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“bargain”\"\n ],\n \"🈹\": [\n \"japanese_discount_button\",\n \"cut\",\n \"divide\",\n \"chinese\",\n \"kanji\",\n \"pink-square\",\n \"bargain\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sale\",\n \"sign\",\n \"squared\",\n \"u5272\",\n \"unified\",\n \"“discount”\"\n ],\n \"🈚\": [\n \"japanese_free_of_charge_button\",\n \"nothing\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"orange-square\",\n \"charge”\",\n \"cjk\",\n \"ideograph\",\n \"lacking\",\n \"meaning\",\n \"negation\",\n \"sign\",\n \"squared\",\n \"u7121\",\n \"unified\",\n \"“free\"\n ],\n \"🈲\": [\n \"japanese_prohibited_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"forbidden\",\n \"limit\",\n \"restricted\",\n \"red-square\",\n \"cjk\",\n \"forbid\",\n \"ideograph\",\n \"meaning\",\n \"prohibit\",\n \"sign\",\n \"squared\",\n \"u7981\",\n \"unified\",\n \"“prohibited”\"\n ],\n \"🉑\": [\n \"japanese_acceptable_button\",\n \"ok\",\n \"good\",\n \"chinese\",\n \"kanji\",\n \"agree\",\n \"yes\",\n \"orange-circle\",\n \"accept\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“acceptable”\"\n ],\n \"🈸\": [\n \"japanese_application_button\",\n \"chinese\",\n \"japanese\",\n \"kanji\",\n \"orange-square\",\n \"apply\",\n \"cjk\",\n \"form\",\n \"ideograph\",\n \"meaning\",\n \"monkey\",\n \"request\",\n \"sign\",\n \"squared\",\n \"u7533\",\n \"unified\",\n \"“application”\"\n ],\n \"🈴\": [\n \"japanese_passing_grade_button\",\n \"japanese\",\n \"chinese\",\n \"join\",\n \"kanji\",\n \"red-square\",\n \"agreement\",\n \"cjk\",\n \"grade”\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"together\",\n \"u5408\",\n \"unified\",\n \"“passing\"\n ],\n \"🈳\": [\n \"japanese_vacancy_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"empty\",\n \"sky\",\n \"blue-square\",\n \"7a7a\",\n \"available\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u7a7a\",\n \"unified\",\n \"“vacancy”\"\n ],\n \"㊗️\": [\n \"japanese_congratulations_button\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"red-circle\",\n \"circled\",\n \"congratulate\",\n \"congratulation\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“congratulations”\"\n ],\n \"㊙️\": [\n \"japanese_secret_button\",\n \"privacy\",\n \"chinese\",\n \"sshh\",\n \"kanji\",\n \"red-circle\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“secret”\"\n ],\n \"🈺\": [\n \"japanese_open_for_business_button\",\n \"japanese\",\n \"opening hours\",\n \"orange-square\",\n \"55b6\",\n \"business”\",\n \"chinese\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"operating\",\n \"sign\",\n \"squared\",\n \"u55b6\",\n \"unified\",\n \"work\",\n \"“open\"\n ],\n \"🈵\": [\n \"japanese_no_vacancy_button\",\n \"full\",\n \"chinese\",\n \"japanese\",\n \"red-square\",\n \"kanji\",\n \"6e80\",\n \"cjk\",\n \"fullness\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6e80\",\n \"unified\",\n \"vacancy”\",\n \"“full;\",\n \"“no\"\n ],\n \"🔴\": [\n \"red_circle\",\n \"shape\",\n \"error\",\n \"danger\",\n \"geometric\",\n \"large\"\n ],\n \"🟠\": [\n \"orange_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟡\": [\n \"yellow_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟢\": [\n \"green_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🔵\": [\n \"blue_circle\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\",\n \"large\"\n ],\n \"🟣\": [\n \"purple_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟤\": [\n \"brown_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"⚫\": [\n \"black_circle\",\n \"shape\",\n \"button\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"⚪\": [\n \"white_circle\",\n \"shape\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"🟥\": [\n \"red_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟧\": [\n \"orange_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟨\": [\n \"yellow_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟩\": [\n \"green_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟦\": [\n \"blue_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟪\": [\n \"purple_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟫\": [\n \"brown_square\",\n \"geometric\",\n \"large\"\n ],\n \"⬛\": [\n \"black_large_square\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"⬜\": [\n \"white_large_square\",\n \"shape\",\n \"icon\",\n \"stone\",\n \"button\",\n \"geometric\"\n ],\n \"◼️\": [\n \"black_medium_square\",\n \"shape\",\n \"button\",\n \"icon\",\n \"geometric\"\n ],\n \"◻️\": [\n \"white_medium_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"geometric\"\n ],\n \"◾\": [\n \"black_medium_small_square\",\n \"icon\",\n \"shape\",\n \"button\",\n \"geometric\"\n ],\n \"◽\": [\n \"white_medium_small_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"▪️\": [\n \"black_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"▫️\": [\n \"white_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"🔶\": [\n \"large_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔷\": [\n \"large_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔸\": [\n \"small_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔹\": [\n \"small_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔺\": [\n \"red_triangle_pointed_up\",\n \"shape\",\n \"direction\",\n \"up\",\n \"top\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"🔻\": [\n \"red_triangle_pointed_down\",\n \"shape\",\n \"direction\",\n \"bottom\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"💠\": [\n \"diamond_with_a_dot\",\n \"jewel\",\n \"blue\",\n \"gem\",\n \"crystal\",\n \"fancy\",\n \"comic\",\n \"cuteness\",\n \"flower\",\n \"geometric\",\n \"inside\",\n \"kawaii\",\n \"shape\"\n ],\n \"🔘\": [\n \"radio_button\",\n \"input\",\n \"old\",\n \"music\",\n \"circle\",\n \"geometric\"\n ],\n \"🔳\": [\n \"white_square_button\",\n \"shape\",\n \"input\",\n \"geometric\",\n \"outlined\"\n ],\n \"🔲\": [\n \"black_square_button\",\n \"shape\",\n \"input\",\n \"frame\",\n \"geometric\"\n ],\n \"🏁\": [\n \"chequered_flag\",\n \"contest\",\n \"finishline\",\n \"race\",\n \"gokart\",\n \"checkered\",\n \"finish\",\n \"girl\",\n \"grid\",\n \"milestone\",\n \"racing\"\n ],\n \"🚩\": [\n \"triangular_flag\",\n \"mark\",\n \"milestone\",\n \"place\",\n \"pole\",\n \"post\",\n \"red\",\n \"flag\"\n ],\n \"🎌\": [\n \"crossed_flags\",\n \"japanese\",\n \"nation\",\n \"country\",\n \"border\",\n \"activity\",\n \"celebration\",\n \"cross\",\n \"flag\",\n \"two\"\n ],\n \"🏴\": [\n \"black_flag\",\n \"pirate\",\n \"waving\"\n ],\n \"🏳️\": [\n \"white_flag\",\n \"losing\",\n \"loser\",\n \"lost\",\n \"surrender\",\n \"give up\",\n \"fail\",\n \"waving\"\n ],\n \"🏳️🌈\": [\n \"rainbow_flag\",\n \"flag\",\n \"rainbow\",\n \"pride\",\n \"gay\",\n \"lgbt\",\n \"queer\",\n \"homosexual\",\n \"lesbian\",\n \"bisexual\"\n ],\n \"🏴☠️\": [\n \"pirate_flag\",\n \"skull\",\n \"crossbones\",\n \"flag\",\n \"banner\",\n \"jolly\",\n \"plunder\",\n \"roger\",\n \"treasure\"\n ],\n \"🇦🇨\": [\n \"flag_ascension_island\"\n ],\n \"🇦🇩\": [\n \"flag_andorra\",\n \"ad\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"andorra\",\n \"andorran\"\n ],\n \"🇦🇪\": [\n \"flag_united_arab_emirates\",\n \"united\",\n \"arab\",\n \"emirates\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_arab_emirates\",\n \"emirati\",\n \"uae\"\n ],\n \"🇦🇫\": [\n \"flag_afghanistan\",\n \"af\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"afghanistan\",\n \"afghan\"\n ],\n \"🇦🇬\": [\n \"flag_antigua_barbuda\",\n \"antigua\",\n \"barbuda\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antigua_barbuda\"\n ],\n \"🇦🇮\": [\n \"flag_anguilla\",\n \"ai\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"anguilla\",\n \"anguillan\"\n ],\n \"🇦🇱\": [\n \"flag_albania\",\n \"al\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"albania\",\n \"albanian\"\n ],\n \"🇦🇲\": [\n \"flag_armenia\",\n \"am\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"armenia\",\n \"armenian\"\n ],\n \"🇦🇴\": [\n \"flag_angola\",\n \"ao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"angola\",\n \"angolan\"\n ],\n \"🇦🇶\": [\n \"flag_antarctica\",\n \"aq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antarctica\",\n \"antarctic\"\n ],\n \"🇦🇷\": [\n \"flag_argentina\",\n \"ar\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"argentina\",\n \"argentinian\"\n ],\n \"🇦🇸\": [\n \"flag_american_samoa\",\n \"american\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"american_samoa\",\n \"samoan\"\n ],\n \"🇦🇹\": [\n \"flag_austria\",\n \"at\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"austria\",\n \"austrian\"\n ],\n \"🇦🇺\": [\n \"flag_australia\",\n \"au\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"australia\",\n \"aussie\",\n \"australian\",\n \"heard\",\n \"mcdonald\"\n ],\n \"🇦🇼\": [\n \"flag_aruba\",\n \"aw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aruba\",\n \"aruban\"\n ],\n \"🇦🇽\": [\n \"flag_aland_islands\",\n \"Åland\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aland_islands\"\n ],\n \"🇦🇿\": [\n \"flag_azerbaijan\",\n \"az\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"azerbaijan\",\n \"azerbaijani\"\n ],\n \"🇧🇦\": [\n \"flag_bosnia_herzegovina\",\n \"bosnia\",\n \"herzegovina\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bosnia_herzegovina\"\n ],\n \"🇧🇧\": [\n \"flag_barbados\",\n \"bb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"barbados\",\n \"bajan\",\n \"barbadian\"\n ],\n \"🇧🇩\": [\n \"flag_bangladesh\",\n \"bd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bangladesh\",\n \"bangladeshi\"\n ],\n \"🇧🇪\": [\n \"flag_belgium\",\n \"be\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belgium\",\n \"belgian\"\n ],\n \"🇧🇫\": [\n \"flag_burkina_faso\",\n \"burkina\",\n \"faso\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burkina_faso\",\n \"burkinabe\"\n ],\n \"🇧🇬\": [\n \"flag_bulgaria\",\n \"bg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bulgaria\",\n \"bulgarian\"\n ],\n \"🇧🇭\": [\n \"flag_bahrain\",\n \"bh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahrain\",\n \"bahrainian\",\n \"bahrani\"\n ],\n \"🇧🇮\": [\n \"flag_burundi\",\n \"bi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burundi\",\n \"burundian\"\n ],\n \"🇧🇯\": [\n \"flag_benin\",\n \"bj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"benin\",\n \"beninese\"\n ],\n \"🇧🇱\": [\n \"flag_st_barthelemy\",\n \"saint\",\n \"barthélemy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_barthelemy\",\n \"st.\"\n ],\n \"🇧🇲\": [\n \"flag_bermuda\",\n \"bm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bermuda\",\n \"bermudan flag\"\n ],\n \"🇧🇳\": [\n \"flag_brunei\",\n \"bn\",\n \"darussalam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brunei\",\n \"bruneian\"\n ],\n \"🇧🇴\": [\n \"flag_bolivia\",\n \"bo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bolivia\",\n \"bolivian\"\n ],\n \"🇧🇶\": [\n \"flag_caribbean_netherlands\",\n \"bonaire\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"caribbean_netherlands\",\n \"eustatius\",\n \"saba\",\n \"sint\"\n ],\n \"🇧🇷\": [\n \"flag_brazil\",\n \"br\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brazil\",\n \"brasil\",\n \"brazilian\",\n \"for\"\n ],\n \"🇧🇸\": [\n \"flag_bahamas\",\n \"bs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahamas\",\n \"bahamian\"\n ],\n \"🇧🇹\": [\n \"flag_bhutan\",\n \"bt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bhutan\",\n \"bhutanese\"\n ],\n \"🇧🇻\": [\n \"flag_bouvet_island\",\n \"norway\"\n ],\n \"🇧🇼\": [\n \"flag_botswana\",\n \"bw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"botswana\",\n \"batswana\"\n ],\n \"🇧🇾\": [\n \"flag_belarus\",\n \"by\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belarus\",\n \"belarusian\"\n ],\n \"🇧🇿\": [\n \"flag_belize\",\n \"bz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belize\",\n \"belizean\"\n ],\n \"🇨🇦\": [\n \"flag_canada\",\n \"ca\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canada\",\n \"canadian\"\n ],\n \"🇨🇨\": [\n \"flag_cocos_islands\",\n \"cocos\",\n \"keeling\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cocos_islands\",\n \"island\"\n ],\n \"🇨🇩\": [\n \"flag_congo_kinshasa\",\n \"congo\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_kinshasa\",\n \"drc\"\n ],\n \"🇨🇫\": [\n \"flag_central_african_republic\",\n \"central\",\n \"african\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"central_african_republic\"\n ],\n \"🇨🇬\": [\n \"flag_congo_brazzaville\",\n \"congo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_brazzaville\",\n \"republic\"\n ],\n \"🇨🇭\": [\n \"flag_switzerland\",\n \"ch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"switzerland\",\n \"cross\",\n \"red\",\n \"swiss\"\n ],\n \"🇨🇮\": [\n \"flag_cote_d_ivoire\",\n \"ivory\",\n \"coast\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cote_d_ivoire\",\n \"côte\",\n \"divoire\",\n \"d’ivoire\"\n ],\n \"🇨🇰\": [\n \"flag_cook_islands\",\n \"cook\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cook_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇨🇱\": [\n \"flag_chile\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chile\",\n \"chilean\"\n ],\n \"🇨🇲\": [\n \"flag_cameroon\",\n \"cm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cameroon\",\n \"cameroonian\"\n ],\n \"🇨🇳\": [\n \"flag_china\",\n \"china\",\n \"chinese\",\n \"prc\",\n \"flag\",\n \"country\",\n \"nation\",\n \"banner\",\n \"cn\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇨🇴\": [\n \"flag_colombia\",\n \"co\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"colombia\",\n \"colombian\"\n ],\n \"🇨🇵\": [\n \"flag_clipperton_island\"\n ],\n \"🇨🇷\": [\n \"flag_costa_rica\",\n \"costa\",\n \"rica\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"costa_rica\",\n \"rican\"\n ],\n \"🇨🇺\": [\n \"flag_cuba\",\n \"cu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cuba\",\n \"cuban\"\n ],\n \"🇨🇻\": [\n \"flag_cape_verde\",\n \"cabo\",\n \"verde\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cape_verde\",\n \"verdian\"\n ],\n \"🇨🇼\": [\n \"flag_curacao\",\n \"curaçao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"curacao\",\n \"antilles\",\n \"curaçaoan\"\n ],\n \"🇨🇽\": [\n \"flag_christmas_island\",\n \"christmas\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"christmas_island\"\n ],\n \"🇨🇾\": [\n \"flag_cyprus\",\n \"cy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cyprus\",\n \"cypriot\"\n ],\n \"🇨🇿\": [\n \"flag_czechia\",\n \"cz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"czechia\",\n \"czech\",\n \"republic\"\n ],\n \"🇩🇪\": [\n \"flag_germany\",\n \"german\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"germany\",\n \"de\",\n \"deutsch\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇩🇬\": [\n \"flag_diego_garcia\"\n ],\n \"🇩🇯\": [\n \"flag_djibouti\",\n \"dj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"djibouti\",\n \"djiboutian\"\n ],\n \"🇩🇰\": [\n \"flag_denmark\",\n \"dk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"denmark\",\n \"danish\"\n ],\n \"🇩🇲\": [\n \"flag_dominica\",\n \"dm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominica\"\n ],\n \"🇩🇴\": [\n \"flag_dominican_republic\",\n \"dominican\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominican_republic\",\n \"dom\",\n \"rep\"\n ],\n \"🇩🇿\": [\n \"flag_algeria\",\n \"dz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"algeria\",\n \"algerian\"\n ],\n \"🇪🇦\": [\n \"flag_ceuta_melilla\"\n ],\n \"🇪🇨\": [\n \"flag_ecuador\",\n \"ec\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ecuador\",\n \"ecuadorian\"\n ],\n \"🇪🇪\": [\n \"flag_estonia\",\n \"ee\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"estonia\",\n \"estonian\"\n ],\n \"🇪🇬\": [\n \"flag_egypt\",\n \"eg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"egypt\",\n \"egyptian\"\n ],\n \"🇪🇭\": [\n \"flag_western_sahara\",\n \"western\",\n \"sahara\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"western_sahara\",\n \"saharan\",\n \"west\"\n ],\n \"🇪🇷\": [\n \"flag_eritrea\",\n \"er\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eritrea\",\n \"eritrean\"\n ],\n \"🇪🇸\": [\n \"flag_spain\",\n \"spain\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ceuta\",\n \"es\",\n \"indicator\",\n \"letters\",\n \"melilla\",\n \"regional\",\n \"spanish\",\n \"symbol\"\n ],\n \"🇪🇹\": [\n \"flag_ethiopia\",\n \"et\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ethiopia\",\n \"ethiopian\"\n ],\n \"🇪🇺\": [\n \"flag_european_union\",\n \"european\",\n \"union\",\n \"flag\",\n \"banner\",\n \"eu\"\n ],\n \"🇫🇮\": [\n \"flag_finland\",\n \"fi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"finland\",\n \"finnish\"\n ],\n \"🇫🇯\": [\n \"flag_fiji\",\n \"fj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"fiji\",\n \"fijian\"\n ],\n \"🇫🇰\": [\n \"flag_falkland_islands\",\n \"falkland\",\n \"islands\",\n \"malvinas\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"falkland_islands\",\n \"falklander\",\n \"falklands\",\n \"island\",\n \"islas\"\n ],\n \"🇫🇲\": [\n \"flag_micronesia\",\n \"micronesia\",\n \"federated\",\n \"states\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"micronesian\"\n ],\n \"🇫🇴\": [\n \"flag_faroe_islands\",\n \"faroe\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"faroe_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇫🇷\": [\n \"flag_france\",\n \"banner\",\n \"flag\",\n \"nation\",\n \"france\",\n \"french\",\n \"country\",\n \"clipperton\",\n \"fr\",\n \"indicator\",\n \"island\",\n \"letters\",\n \"martin\",\n \"regional\",\n \"saint\",\n \"st.\",\n \"symbol\"\n ],\n \"🇬🇦\": [\n \"flag_gabon\",\n \"ga\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gabon\",\n \"gabonese\"\n ],\n \"🇬🇧\": [\n \"flag_united_kingdom\",\n \"united\",\n \"kingdom\",\n \"great\",\n \"britain\",\n \"northern\",\n \"ireland\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british\",\n \"UK\",\n \"english\",\n \"england\",\n \"union jack\",\n \"united_kingdom\",\n \"cornwall\",\n \"gb\",\n \"scotland\",\n \"wales\"\n ],\n \"🇬🇩\": [\n \"flag_grenada\",\n \"gd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"grenada\",\n \"grenadian\"\n ],\n \"🇬🇪\": [\n \"flag_georgia\",\n \"ge\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"georgia\",\n \"georgian\"\n ],\n \"🇬🇫\": [\n \"flag_french_guiana\",\n \"french\",\n \"guiana\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_guiana\",\n \"guinean\"\n ],\n \"🇬🇬\": [\n \"flag_guernsey\",\n \"gg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guernsey\"\n ],\n \"🇬🇭\": [\n \"flag_ghana\",\n \"gh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ghana\",\n \"ghanaian\"\n ],\n \"🇬🇮\": [\n \"flag_gibraltar\",\n \"gi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gibraltar\",\n \"gibraltarian\"\n ],\n \"🇬🇱\": [\n \"flag_greenland\",\n \"gl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greenland\",\n \"greenlandic\"\n ],\n \"🇬🇲\": [\n \"flag_gambia\",\n \"gm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gambia\",\n \"gambian flag\"\n ],\n \"🇬🇳\": [\n \"flag_guinea\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea\",\n \"guinean\"\n ],\n \"🇬🇵\": [\n \"flag_guadeloupe\",\n \"gp\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guadeloupe\",\n \"guadeloupean\"\n ],\n \"🇬🇶\": [\n \"flag_equatorial_guinea\",\n \"equatorial\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"equatorial_guinea\",\n \"equatoguinean\",\n \"guinean\"\n ],\n \"🇬🇷\": [\n \"flag_greece\",\n \"gr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greece\",\n \"greek\"\n ],\n \"🇬🇸\": [\n \"flag_south_georgia_south_sandwich_islands\",\n \"south\",\n \"georgia\",\n \"sandwich\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_georgia_south_sandwich_islands\",\n \"island\"\n ],\n \"🇬🇹\": [\n \"flag_guatemala\",\n \"gt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guatemala\",\n \"guatemalan\"\n ],\n \"🇬🇺\": [\n \"flag_guam\",\n \"gu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guam\",\n \"chamorro\",\n \"guamanian\"\n ],\n \"🇬🇼\": [\n \"flag_guinea_bissau\",\n \"gw\",\n \"bissau\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea_bissau\"\n ],\n \"🇬🇾\": [\n \"flag_guyana\",\n \"gy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guyana\",\n \"guyanese\"\n ],\n \"🇭🇰\": [\n \"flag_hong_kong_sar_china\",\n \"hong\",\n \"kong\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hong_kong_sar_china\"\n ],\n \"🇭🇲\": [\n \"flag_heard_mcdonald_islands\"\n ],\n \"🇭🇳\": [\n \"flag_honduras\",\n \"hn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"honduras\",\n \"honduran\"\n ],\n \"🇭🇷\": [\n \"flag_croatia\",\n \"hr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"croatia\",\n \"croatian\"\n ],\n \"🇭🇹\": [\n \"flag_haiti\",\n \"ht\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"haiti\",\n \"haitian\"\n ],\n \"🇭🇺\": [\n \"flag_hungary\",\n \"hu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hungary\",\n \"hungarian\"\n ],\n \"🇮🇨\": [\n \"flag_canary_islands\",\n \"canary\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canary_islands\",\n \"island\"\n ],\n \"🇮🇩\": [\n \"flag_indonesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indonesia\",\n \"indonesian\"\n ],\n \"🇮🇪\": [\n \"flag_ireland\",\n \"ie\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ireland\",\n \"irish flag\"\n ],\n \"🇮🇱\": [\n \"flag_israel\",\n \"il\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"israel\",\n \"israeli\"\n ],\n \"🇮🇲\": [\n \"flag_isle_of_man\",\n \"isle\",\n \"man\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"isle_of_man\",\n \"manx\"\n ],\n \"🇮🇳\": [\n \"flag_india\",\n \"in\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"india\",\n \"indian\"\n ],\n \"🇮🇴\": [\n \"flag_british_indian_ocean_territory\",\n \"british\",\n \"indian\",\n \"ocean\",\n \"territory\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_indian_ocean_territory\",\n \"chagos\",\n \"diego\",\n \"garcia\",\n \"island\"\n ],\n \"🇮🇶\": [\n \"flag_iraq\",\n \"iq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iraq\",\n \"iraqi\"\n ],\n \"🇮🇷\": [\n \"flag_iran\",\n \"iran\",\n \"islamic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iranian flag\"\n ],\n \"🇮🇸\": [\n \"flag_iceland\",\n \"is\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iceland\",\n \"icelandic\"\n ],\n \"🇮🇹\": [\n \"flag_italy\",\n \"italy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indicator\",\n \"italian\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇯🇪\": [\n \"flag_jersey\",\n \"je\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jersey\"\n ],\n \"🇯🇲\": [\n \"flag_jamaica\",\n \"jm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jamaica\",\n \"jamaican flag\"\n ],\n \"🇯🇴\": [\n \"flag_jordan\",\n \"jo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jordan\",\n \"jordanian\"\n ],\n \"🇯🇵\": [\n \"flag_japan\",\n \"japanese\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"japan\",\n \"jp\",\n \"ja\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇪\": [\n \"flag_kenya\",\n \"ke\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kenya\",\n \"kenyan\"\n ],\n \"🇰🇬\": [\n \"flag_kyrgyzstan\",\n \"kg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kyrgyzstan\",\n \"kyrgyzstani\"\n ],\n \"🇰🇭\": [\n \"flag_cambodia\",\n \"kh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cambodia\",\n \"cambodian\"\n ],\n \"🇰🇮\": [\n \"flag_kiribati\",\n \"ki\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kiribati\",\n \"i\"\n ],\n \"🇰🇲\": [\n \"flag_comoros\",\n \"km\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"comoros\",\n \"comoran\"\n ],\n \"🇰🇳\": [\n \"flag_st_kitts_nevis\",\n \"saint\",\n \"kitts\",\n \"nevis\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_kitts_nevis\",\n \"st.\"\n ],\n \"🇰🇵\": [\n \"flag_north_korea\",\n \"north\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"north_korea\",\n \"korean\"\n ],\n \"🇰🇷\": [\n \"flag_south_korea\",\n \"south\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"south_korea\",\n \"indicator\",\n \"korean\",\n \"kr\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇼\": [\n \"flag_kuwait\",\n \"kw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kuwait\",\n \"kuwaiti\"\n ],\n \"🇰🇾\": [\n \"flag_cayman_islands\",\n \"cayman\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cayman_islands\",\n \"caymanian\",\n \"island\"\n ],\n \"🇰🇿\": [\n \"flag_kazakhstan\",\n \"kz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kazakhstan\",\n \"kazakh\",\n \"kazakhstani\"\n ],\n \"🇱🇦\": [\n \"flag_laos\",\n \"lao\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"laos\",\n \"laotian\"\n ],\n \"🇱🇧\": [\n \"flag_lebanon\",\n \"lb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lebanon\",\n \"lebanese\"\n ],\n \"🇱🇨\": [\n \"flag_st_lucia\",\n \"saint\",\n \"lucia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_lucia\",\n \"st.\"\n ],\n \"🇱🇮\": [\n \"flag_liechtenstein\",\n \"li\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liechtenstein\",\n \"liechtensteiner\"\n ],\n \"🇱🇰\": [\n \"flag_sri_lanka\",\n \"sri\",\n \"lanka\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sri_lanka\",\n \"lankan\"\n ],\n \"🇱🇷\": [\n \"flag_liberia\",\n \"lr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liberia\",\n \"liberian\"\n ],\n \"🇱🇸\": [\n \"flag_lesotho\",\n \"ls\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lesotho\",\n \"basotho\"\n ],\n \"🇱🇹\": [\n \"flag_lithuania\",\n \"lt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lithuania\",\n \"lithuanian\"\n ],\n \"🇱🇺\": [\n \"flag_luxembourg\",\n \"lu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"luxembourg\",\n \"luxembourger\"\n ],\n \"🇱🇻\": [\n \"flag_latvia\",\n \"lv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"latvia\",\n \"latvian\"\n ],\n \"🇱🇾\": [\n \"flag_libya\",\n \"ly\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"libya\",\n \"libyan\"\n ],\n \"🇲🇦\": [\n \"flag_morocco\",\n \"ma\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"morocco\",\n \"moroccan\"\n ],\n \"🇲🇨\": [\n \"flag_monaco\",\n \"mc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"monaco\",\n \"monégasque\"\n ],\n \"🇲🇩\": [\n \"flag_moldova\",\n \"moldova\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"moldovan\"\n ],\n \"🇲🇪\": [\n \"flag_montenegro\",\n \"me\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montenegro\",\n \"montenegrin\"\n ],\n \"🇲🇫\": [\n \"flag_st_martin\",\n \"st.\"\n ],\n \"🇲🇬\": [\n \"flag_madagascar\",\n \"mg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"madagascar\",\n \"madagascan\"\n ],\n \"🇲🇭\": [\n \"flag_marshall_islands\",\n \"marshall\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"marshall_islands\",\n \"island\",\n \"marshallese\"\n ],\n \"🇲🇰\": [\n \"flag_north_macedonia\",\n \"macedonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"north_macedonia\",\n \"macedonian\"\n ],\n \"🇲🇱\": [\n \"flag_mali\",\n \"ml\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mali\",\n \"malian\"\n ],\n \"🇲🇲\": [\n \"flag_myanmar\",\n \"mm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"myanmar\",\n \"burma\",\n \"burmese\",\n \"for\",\n \"myanmarese flag\"\n ],\n \"🇲🇳\": [\n \"flag_mongolia\",\n \"mn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mongolia\",\n \"mongolian\"\n ],\n \"🇲🇴\": [\n \"flag_macao_sar_china\",\n \"macao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"macao_sar_china\",\n \"macanese flag\",\n \"macau\"\n ],\n \"🇲🇵\": [\n \"flag_northern_mariana_islands\",\n \"northern\",\n \"mariana\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"northern_mariana_islands\",\n \"island\",\n \"micronesian\",\n \"north\"\n ],\n \"🇲🇶\": [\n \"flag_martinique\",\n \"mq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"martinique\",\n \"martiniquais flag\",\n \"of martinique\",\n \"snake\"\n ],\n \"🇲🇷\": [\n \"flag_mauritania\",\n \"mr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritania\",\n \"mauritanian\"\n ],\n \"🇲🇸\": [\n \"flag_montserrat\",\n \"ms\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montserrat\",\n \"montserratian\"\n ],\n \"🇲🇹\": [\n \"flag_malta\",\n \"mt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malta\",\n \"maltese\"\n ],\n \"🇲🇺\": [\n \"flag_mauritius\",\n \"mu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritius\",\n \"mauritian\"\n ],\n \"🇲🇻\": [\n \"flag_maldives\",\n \"mv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"maldives\",\n \"maldivian\"\n ],\n \"🇲🇼\": [\n \"flag_malawi\",\n \"mw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malawi\",\n \"malawian flag\"\n ],\n \"🇲🇽\": [\n \"flag_mexico\",\n \"mx\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mexico\",\n \"mexican\"\n ],\n \"🇲🇾\": [\n \"flag_malaysia\",\n \"my\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malaysia\",\n \"malaysian\"\n ],\n \"🇲🇿\": [\n \"flag_mozambique\",\n \"mz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mozambique\",\n \"mozambican\"\n ],\n \"🇳🇦\": [\n \"flag_namibia\",\n \"na\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"namibia\",\n \"namibian\"\n ],\n \"🇳🇨\": [\n \"flag_new_caledonia\",\n \"new\",\n \"caledonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_caledonia\",\n \"caledonian\"\n ],\n \"🇳🇪\": [\n \"flag_niger\",\n \"ne\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niger\",\n \"nigerien flag\"\n ],\n \"🇳🇫\": [\n \"flag_norfolk_island\",\n \"norfolk\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norfolk_island\"\n ],\n \"🇳🇬\": [\n \"flag_nigeria\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nigeria\",\n \"nigerian\"\n ],\n \"🇳🇮\": [\n \"flag_nicaragua\",\n \"ni\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nicaragua\",\n \"nicaraguan\"\n ],\n \"🇳🇱\": [\n \"flag_netherlands\",\n \"nl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"netherlands\",\n \"dutch\"\n ],\n \"🇳🇴\": [\n \"flag_norway\",\n \"no\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norway\",\n \"bouvet\",\n \"jan\",\n \"mayen\",\n \"norwegian\",\n \"svalbard\"\n ],\n \"🇳🇵\": [\n \"flag_nepal\",\n \"np\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nepal\",\n \"nepalese\"\n ],\n \"🇳🇷\": [\n \"flag_nauru\",\n \"nr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nauru\",\n \"nauruan\"\n ],\n \"🇳🇺\": [\n \"flag_niue\",\n \"nu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niue\",\n \"niuean\"\n ],\n \"🇳🇿\": [\n \"flag_new_zealand\",\n \"new\",\n \"zealand\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_zealand\",\n \"kiwi\"\n ],\n \"🇴🇲\": [\n \"flag_oman\",\n \"om_symbol\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"oman\",\n \"omani\"\n ],\n \"🇵🇦\": [\n \"flag_panama\",\n \"pa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"panama\",\n \"panamanian\"\n ],\n \"🇵🇪\": [\n \"flag_peru\",\n \"pe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"peru\",\n \"peruvian\"\n ],\n \"🇵🇫\": [\n \"flag_french_polynesia\",\n \"french\",\n \"polynesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_polynesia\",\n \"polynesian\"\n ],\n \"🇵🇬\": [\n \"flag_papua_new_guinea\",\n \"papua\",\n \"new\",\n \"guinea\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"papua_new_guinea\",\n \"guinean\",\n \"png\"\n ],\n \"🇵🇭\": [\n \"flag_philippines\",\n \"ph\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"philippines\"\n ],\n \"🇵🇰\": [\n \"flag_pakistan\",\n \"pk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pakistan\",\n \"pakistani\"\n ],\n \"🇵🇱\": [\n \"flag_poland\",\n \"pl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"poland\",\n \"polish\"\n ],\n \"🇵🇲\": [\n \"flag_st_pierre_miquelon\",\n \"saint\",\n \"pierre\",\n \"miquelon\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_pierre_miquelon\",\n \"st.\"\n ],\n \"🇵🇳\": [\n \"flag_pitcairn_islands\",\n \"pitcairn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pitcairn_islands\",\n \"island\"\n ],\n \"🇵🇷\": [\n \"flag_puerto_rico\",\n \"puerto\",\n \"rico\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"puerto_rico\",\n \"rican\"\n ],\n \"🇵🇸\": [\n \"flag_palestinian_territories\",\n \"palestine\",\n \"palestinian\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palestinian_territories\"\n ],\n \"🇵🇹\": [\n \"flag_portugal\",\n \"pt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"portugal\",\n \"portugese\"\n ],\n \"🇵🇼\": [\n \"flag_palau\",\n \"pw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palau\",\n \"palauan\"\n ],\n \"🇵🇾\": [\n \"flag_paraguay\",\n \"py\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"paraguay\",\n \"paraguayan\"\n ],\n \"🇶🇦\": [\n \"flag_qatar\",\n \"qa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"qatar\",\n \"qatari\"\n ],\n \"🇷🇪\": [\n \"flag_reunion\",\n \"réunion\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"reunion\",\n \"réunionnais\"\n ],\n \"🇷🇴\": [\n \"flag_romania\",\n \"ro\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"romania\",\n \"romanian\"\n ],\n \"🇨🇶\": [\n \"flag_sark\",\n \"cq\",\n \"flag\",\n \"banner\"\n ],\n \"🇷🇸\": [\n \"flag_serbia\",\n \"rs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"serbia\",\n \"serbian flag\"\n ],\n \"🇷🇺\": [\n \"flag_russia\",\n \"russian\",\n \"federation\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"russia\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"ru\",\n \"symbol\"\n ],\n \"🇷🇼\": [\n \"flag_rwanda\",\n \"rw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"rwanda\",\n \"rwandan\"\n ],\n \"🇸🇦\": [\n \"flag_saudi_arabia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"saudi_arabia\",\n \"arabian flag\"\n ],\n \"🇸🇧\": [\n \"flag_solomon_islands\",\n \"solomon\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"solomon_islands\",\n \"island\",\n \"islander flag\"\n ],\n \"🇸🇨\": [\n \"flag_seychelles\",\n \"sc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"seychelles\",\n \"seychellois flag\"\n ],\n \"🇸🇩\": [\n \"flag_sudan\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sudan\",\n \"sudanese\"\n ],\n \"🇸🇪\": [\n \"flag_sweden\",\n \"se\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sweden\",\n \"swedish\"\n ],\n \"🇸🇬\": [\n \"flag_singapore\",\n \"sg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"singapore\",\n \"singaporean\"\n ],\n \"🇸🇭\": [\n \"flag_st_helena\",\n \"saint\",\n \"helena\",\n \"ascension\",\n \"tristan\",\n \"cunha\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_helena\",\n \"st.\"\n ],\n \"🇸🇮\": [\n \"flag_slovenia\",\n \"si\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovenia\",\n \"slovenian\"\n ],\n \"🇸🇯\": [\n \"flag_svalbard_jan_mayen\"\n ],\n \"🇸🇰\": [\n \"flag_slovakia\",\n \"sk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovakia\",\n \"slovakian\",\n \"slovak flag\"\n ],\n \"🇸🇱\": [\n \"flag_sierra_leone\",\n \"sierra\",\n \"leone\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sierra_leone\",\n \"leonean\"\n ],\n \"🇸🇲\": [\n \"flag_san_marino\",\n \"san\",\n \"marino\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"san_marino\",\n \"sammarinese\"\n ],\n \"🇸🇳\": [\n \"flag_senegal\",\n \"sn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"senegal\",\n \"sengalese\"\n ],\n \"🇸🇴\": [\n \"flag_somalia\",\n \"so\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"somalia\",\n \"somalian flag\"\n ],\n \"🇸🇷\": [\n \"flag_suriname\",\n \"sr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"suriname\",\n \"surinamer\"\n ],\n \"🇸🇸\": [\n \"flag_south_sudan\",\n \"south\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_sudan\",\n \"sudanese flag\"\n ],\n \"🇸🇹\": [\n \"flag_sao_tome_principe\",\n \"sao\",\n \"tome\",\n \"principe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sao_tome_principe\",\n \"príncipe\",\n \"são\",\n \"tomé\"\n ],\n \"🇸🇻\": [\n \"flag_el_salvador\",\n \"el\",\n \"salvador\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"el_salvador\",\n \"salvadoran\"\n ],\n \"🇸🇽\": [\n \"flag_sint_maarten\",\n \"sint\",\n \"maarten\",\n \"dutch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sint_maarten\"\n ],\n \"🇸🇾\": [\n \"flag_syria\",\n \"syrian\",\n \"arab\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"syria\"\n ],\n \"🇸🇿\": [\n \"flag_eswatini\",\n \"sz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eswatini\",\n \"swaziland\"\n ],\n \"🇹🇦\": [\n \"flag_tristan_da_cunha\"\n ],\n \"🇹🇨\": [\n \"flag_turks_caicos_islands\",\n \"turks\",\n \"caicos\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turks_caicos_islands\",\n \"island\"\n ],\n \"🇹🇩\": [\n \"flag_chad\",\n \"td\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chad\",\n \"chadian\"\n ],\n \"🇹🇫\": [\n \"flag_french_southern_territories\",\n \"french\",\n \"southern\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_southern_territories\",\n \"antarctic\",\n \"lands\"\n ],\n \"🇹🇬\": [\n \"flag_togo\",\n \"tg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"togo\",\n \"togolese\"\n ],\n \"🇹🇭\": [\n \"flag_thailand\",\n \"th\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"thailand\",\n \"thai\"\n ],\n \"🇹🇯\": [\n \"flag_tajikistan\",\n \"tj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tajikistan\",\n \"tajik\"\n ],\n \"🇹🇰\": [\n \"flag_tokelau\",\n \"tk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tokelau\",\n \"tokelauan\"\n ],\n \"🇹🇱\": [\n \"flag_timor_leste\",\n \"timor\",\n \"leste\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"timor_leste\",\n \"east\",\n \"leste flag\",\n \"timorese\"\n ],\n \"🇹🇲\": [\n \"flag_turkmenistan\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turkmenistan\",\n \"turkmen\"\n ],\n \"🇹🇳\": [\n \"flag_tunisia\",\n \"tn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tunisia\",\n \"tunisian\"\n ],\n \"🇹🇴\": [\n \"flag_tonga\",\n \"to\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tonga\",\n \"tongan flag\"\n ],\n \"🇹🇷\": [\n \"flag_turkey\",\n \"turkey\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tr\",\n \"turkish flag\",\n \"türkiye\"\n ],\n \"🇹🇹\": [\n \"flag_trinidad_tobago\",\n \"trinidad\",\n \"tobago\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"trinidad_tobago\"\n ],\n \"🇹🇻\": [\n \"flag_tuvalu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tuvalu\",\n \"tuvaluan\"\n ],\n \"🇹🇼\": [\n \"flag_taiwan\",\n \"tw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"taiwan\",\n \"china\",\n \"taiwanese\"\n ],\n \"🇹🇿\": [\n \"flag_tanzania\",\n \"tanzania\",\n \"united\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tanzanian\"\n ],\n \"🇺🇦\": [\n \"flag_ukraine\",\n \"ua\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ukraine\",\n \"ukrainian\"\n ],\n \"🇺🇬\": [\n \"flag_uganda\",\n \"ug\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uganda\",\n \"ugandan flag\"\n ],\n \"🇺🇲\": [\n \"flag_u_s_outlying_islands\",\n \"u.s.\",\n \"us\"\n ],\n \"🇺🇳\": [\n \"flag_united_nations\",\n \"un\",\n \"flag\",\n \"banner\"\n ],\n \"🇺🇸\": [\n \"flag_united_states\",\n \"united\",\n \"states\",\n \"america\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_states\",\n \"american\",\n \"indicator\",\n \"islands\",\n \"letters\",\n \"outlying\",\n \"regional\",\n \"symbol\",\n \"us\",\n \"usa\"\n ],\n \"🇺🇾\": [\n \"flag_uruguay\",\n \"uy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uruguay\",\n \"uruguayan\"\n ],\n \"🇺🇿\": [\n \"flag_uzbekistan\",\n \"uz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uzbekistan\",\n \"uzbek\",\n \"uzbekistani\"\n ],\n \"🇻🇦\": [\n \"flag_vatican_city\",\n \"vatican\",\n \"city\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vatican_city\",\n \"vanticanien\"\n ],\n \"🇻🇨\": [\n \"flag_st_vincent_grenadines\",\n \"saint\",\n \"vincent\",\n \"grenadines\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_vincent_grenadines\",\n \"st.\"\n ],\n \"🇻🇪\": [\n \"flag_venezuela\",\n \"ve\",\n \"bolivarian\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"venezuela\",\n \"venezuelan\"\n ],\n \"🇻🇬\": [\n \"flag_british_virgin_islands\",\n \"british\",\n \"virgin\",\n \"islands\",\n \"bvi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_virgin_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇻🇮\": [\n \"flag_u_s_virgin_islands\",\n \"virgin\",\n \"islands\",\n \"us\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"u_s_virgin_islands\",\n \"america\",\n \"island\",\n \"islander\",\n \"states\",\n \"u.s.\",\n \"united\",\n \"usa\"\n ],\n \"🇻🇳\": [\n \"flag_vietnam\",\n \"viet\",\n \"nam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vietnam\",\n \"vietnamese\"\n ],\n \"🇻🇺\": [\n \"flag_vanuatu\",\n \"vu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vanuatu\",\n \"ni\",\n \"vanuatu flag\"\n ],\n \"🇼🇫\": [\n \"flag_wallis_futuna\",\n \"wallis\",\n \"futuna\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"wallis_futuna\"\n ],\n \"🇼🇸\": [\n \"flag_samoa\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"samoa\",\n \"samoan flag\"\n ],\n \"🇽🇰\": [\n \"flag_kosovo\",\n \"xk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kosovo\",\n \"kosovar\"\n ],\n \"🇾🇪\": [\n \"flag_yemen\",\n \"ye\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"yemen\",\n \"yemeni flag\"\n ],\n \"🇾🇹\": [\n \"flag_mayotte\",\n \"yt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mayotte\"\n ],\n \"🇿🇦\": [\n \"flag_south_africa\",\n \"south\",\n \"africa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_africa\",\n \"african flag\"\n ],\n \"🇿🇲\": [\n \"flag_zambia\",\n \"zm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zambia\",\n \"zambian\"\n ],\n \"🇿🇼\": [\n \"flag_zimbabwe\",\n \"zw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zimbabwe\",\n \"zim\",\n \"zimbabwean flag\"\n ],\n \"🏴\": [\n \"flag_england\",\n \"flag\",\n \"english\",\n \"cross\",\n \"george's\",\n \"st\"\n ],\n \"🏴\": [\n \"flag_scotland\",\n \"flag\",\n \"scottish\",\n \"andrew's\",\n \"cross\",\n \"saltire\",\n \"st\"\n ],\n \"🏴\": [\n \"flag_wales\",\n \"flag\",\n \"welsh\",\n \"baner\",\n \"cymru\",\n \"ddraig\",\n \"dragon\",\n \"goch\",\n \"red\",\n \"y\"\n ],\n \"🥲\": [\n \"smiling face with tear\",\n \"sad\",\n \"cry\",\n \"pretend\",\n \"grateful\",\n \"happy\",\n \"proud\",\n \"relieved\",\n \"smile\",\n \"touched\"\n ],\n \"🥸\": [\n \"disguised face\",\n \"pretent\",\n \"brows\",\n \"glasses\",\n \"moustache\",\n \"disguise\",\n \"incognito\",\n \"nose\"\n ],\n \"🤌\": [\n \"pinched fingers\",\n \"size\",\n \"tiny\",\n \"small\",\n \"che\",\n \"finger\",\n \"gesture\",\n \"hand\",\n \"interrogation\",\n \"ma\",\n \"purse\",\n \"sarcastic\",\n \"vuoi\"\n ],\n \"🫀\": [\n \"anatomical heart\",\n \"health\",\n \"heartbeat\",\n \"cardiology\",\n \"organ\",\n \"pulse\"\n ],\n \"🫁\": [\n \"lungs\",\n \"breathe\",\n \"breath\",\n \"exhalation\",\n \"inhalation\",\n \"organ\",\n \"respiration\"\n ],\n \"🥷\": [\n \"ninja\",\n \"ninjutsu\",\n \"skills\",\n \"japanese\",\n \"fighter\",\n \"hidden\",\n \"stealth\"\n ],\n \"🤵♂️\": [\n \"man in tuxedo\",\n \"formal\",\n \"fashion\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\",\n \"wedding\"\n ],\n \"🤵♀️\": [\n \"woman in tuxedo\",\n \"formal\",\n \"fashion\",\n \"female\",\n \"wedding\",\n \"women\"\n ],\n \"👰♂️\": [\n \"man with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"male\",\n \"men\"\n ],\n \"👰♀️\": [\n \"woman with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"female\",\n \"women\"\n ],\n \"👩🍼\": [\n \"woman feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"nursing\",\n \"women\"\n ],\n \"👨🍼\": [\n \"man feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"male\",\n \"men\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑🍼\": [\n \"person feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑🎄\": [\n \"mx claus\",\n \"christmas\",\n \"activity\",\n \"celebration\",\n \"mx.\",\n \"santa\"\n ],\n \"🫂\": [\n \"people hugging\",\n \"care\",\n \"goodbye\",\n \"hello\",\n \"hug\",\n \"thanks\"\n ],\n \"🐈⬛\": [\n \"black cat\",\n \"superstition\",\n \"luck\",\n \"halloween\",\n \"pet\",\n \"unlucky\"\n ],\n \"🦬\": [\n \"bison\",\n \"ox\",\n \"buffalo\",\n \"herd\",\n \"wisent\"\n ],\n \"🦣\": [\n \"mammoth\",\n \"elephant\",\n \"tusks\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"tusk\",\n \"woolly\"\n ],\n \"🦫\": [\n \"beaver\",\n \"animal\",\n \"rodent\",\n \"dam\"\n ],\n \"🐻❄️\": [\n \"polar bear\",\n \"animal\",\n \"arctic\",\n \"face\",\n \"white\"\n ],\n \"🦤\": [\n \"dodo\",\n \"animal\",\n \"bird\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"mauritius\",\n \"obsolete\"\n ],\n \"🪶\": [\n \"feather\",\n \"bird\",\n \"fly\",\n \"flight\",\n \"light\",\n \"plumage\"\n ],\n \"🦭\": [\n \"seal\",\n \"animal\",\n \"creature\",\n \"sea\",\n \"lion\"\n ],\n \"🪲\": [\n \"beetle\",\n \"insect\",\n \"bug\"\n ],\n \"🪳\": [\n \"cockroach\",\n \"insect\",\n \"pests\",\n \"pest\",\n \"roach\"\n ],\n \"🪰\": [\n \"fly\",\n \"insect\",\n \"disease\",\n \"maggot\",\n \"pest\",\n \"rotting\"\n ],\n \"🪱\": [\n \"worm\",\n \"animal\",\n \"annelid\",\n \"earthworm\",\n \"parasite\"\n ],\n \"🪴\": [\n \"potted plant\",\n \"greenery\",\n \"house\",\n \"boring\",\n \"grow\",\n \"houseplant\",\n \"nurturing\",\n \"useless\"\n ],\n \"🫐\": [\n \"blueberries\",\n \"fruit\",\n \"berry\",\n \"bilberry\",\n \"blue\",\n \"blueberry\"\n ],\n \"🫒\": [\n \"olive\",\n \"fruit\",\n \"food\",\n \"olives\"\n ],\n \"🫑\": [\n \"bell pepper\",\n \"fruit\",\n \"plant\",\n \"capsicum\",\n \"vegetable\"\n ],\n \"🫓\": [\n \"flatbread\",\n \"flour\",\n \"food\",\n \"bakery\",\n \"arepa\",\n \"bread\",\n \"flat\",\n \"lavash\",\n \"naan\",\n \"pita\"\n ],\n \"🫔\": [\n \"tamale\",\n \"food\",\n \"masa\",\n \"mexican\",\n \"tamal\",\n \"wrapped\"\n ],\n \"🫕\": [\n \"fondue\",\n \"cheese\",\n \"pot\",\n \"food\",\n \"chocolate\",\n \"melted\",\n \"swiss\"\n ],\n \"🫖\": [\n \"teapot\",\n \"drink\",\n \"hot\",\n \"kettle\",\n \"pot\",\n \"tea\"\n ],\n \"🧋\": [\n \"bubble tea\",\n \"taiwan\",\n \"boba\",\n \"milk tea\",\n \"straw\",\n \"momi\",\n \"pearl\",\n \"tapioca\"\n ],\n \"🪨\": [\n \"rock\",\n \"stone\",\n \"boulder\",\n \"construction\",\n \"heavy\",\n \"solid\"\n ],\n \"🪵\": [\n \"wood\",\n \"nature\",\n \"timber\",\n \"trunk\",\n \"construction\",\n \"log\",\n \"lumber\"\n ],\n \"🛖\": [\n \"hut\",\n \"house\",\n \"structure\",\n \"roundhouse\",\n \"yurt\"\n ],\n \"🛻\": [\n \"pickup truck\",\n \"car\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🛼\": [\n \"roller skate\",\n \"footwear\",\n \"sports\",\n \"derby\",\n \"inline\"\n ],\n \"🪄\": [\n \"magic wand\",\n \"supernature\",\n \"power\",\n \"witch\",\n \"wizard\"\n ],\n \"🪅\": [\n \"pinata\",\n \"mexico\",\n \"candy\",\n \"celebration\",\n \"party\",\n \"piñata\"\n ],\n \"🪆\": [\n \"nesting dolls\",\n \"matryoshka\",\n \"toy\",\n \"doll\",\n \"russia\",\n \"russian\"\n ],\n \"🪡\": [\n \"sewing needle\",\n \"stitches\",\n \"embroidery\",\n \"sutures\",\n \"tailoring\"\n ],\n \"🪢\": [\n \"knot\",\n \"rope\",\n \"scout\",\n \"tangled\",\n \"tie\",\n \"twine\",\n \"twist\"\n ],\n \"🩴\": [\n \"thong sandal\",\n \"footwear\",\n \"summer\",\n \"beach\",\n \"flip\",\n \"flops\",\n \"jandals\",\n \"sandals\",\n \"thongs\",\n \"zōri\"\n ],\n \"🪖\": [\n \"military helmet\",\n \"army\",\n \"protection\",\n \"soldier\",\n \"warrior\"\n ],\n \"🪗\": [\n \"accordion\",\n \"music\",\n \"accordian\",\n \"box\",\n \"concertina\",\n \"squeeze\"\n ],\n \"🪘\": [\n \"long drum\",\n \"music\",\n \"beat\",\n \"conga\",\n \"djembe\",\n \"rhythm\"\n ],\n \"🪙\": [\n \"coin\",\n \"money\",\n \"currency\",\n \"gold\",\n \"metal\",\n \"silver\",\n \"treasure\"\n ],\n \"🪃\": [\n \"boomerang\",\n \"weapon\",\n \"australia\",\n \"rebound\",\n \"repercussion\"\n ],\n \"🪚\": [\n \"carpentry saw\",\n \"cut\",\n \"chop\",\n \"carpenter\",\n \"hand\",\n \"lumber\",\n \"tool\"\n ],\n \"🪛\": [\n \"screwdriver\",\n \"tools\",\n \"screw\",\n \"tool\"\n ],\n \"🪝\": [\n \"hook\",\n \"tools\",\n \"catch\",\n \"crook\",\n \"curve\",\n \"ensnare\",\n \"fishing\",\n \"point\",\n \"selling\",\n \"tool\"\n ],\n \"🪜\": [\n \"ladder\",\n \"tools\",\n \"climb\",\n \"rung\",\n \"step\",\n \"tool\"\n ],\n \"🛗\": [\n \"elevator\",\n \"lift\",\n \"accessibility\",\n \"hoist\"\n ],\n \"🪞\": [\n \"mirror\",\n \"reflection\",\n \"reflector\",\n \"speculum\"\n ],\n \"🪟\": [\n \"window\",\n \"scenery\",\n \"air\",\n \"frame\",\n \"fresh\",\n \"glass\",\n \"opening\",\n \"transparent\",\n \"view\"\n ],\n \"🪠\": [\n \"plunger\",\n \"toilet\",\n \"cup\",\n \"force\",\n \"plumber\",\n \"suction\"\n ],\n \"🪤\": [\n \"mouse trap\",\n \"cheese\",\n \"bait\",\n \"mousetrap\",\n \"rodent\",\n \"snare\"\n ],\n \"🪣\": [\n \"bucket\",\n \"water\",\n \"container\",\n \"cask\",\n \"pail\",\n \"vat\"\n ],\n \"🪥\": [\n \"toothbrush\",\n \"hygiene\",\n \"dental\",\n \"bathroom\",\n \"brush\",\n \"clean\",\n \"teeth\"\n ],\n \"🪦\": [\n \"headstone\",\n \"death\",\n \"rip\",\n \"grave\",\n \"cemetery\",\n \"graveyard\",\n \"halloween\",\n \"tombstone\"\n ],\n \"🪧\": [\n \"placard\",\n \"announcement\",\n \"demonstration\",\n \"lawn\",\n \"picket\",\n \"post\",\n \"protest\",\n \"sign\"\n ],\n \"⚧️\": [\n \"transgender symbol\",\n \"transgender\",\n \"lgbtq\",\n \"female\",\n \"lgbt\",\n \"male\",\n \"pride\",\n \"sign\",\n \"stroke\"\n ],\n \"🏳️⚧️\": [\n \"transgender flag\",\n \"transgender\",\n \"flag\",\n \"pride\",\n \"lgbtq\",\n \"blue\",\n \"lgbt\",\n \"light\",\n \"pink\",\n \"trans\",\n \"white\"\n ],\n \"😶🌫️\": [\n \"face in clouds\",\n \"shower\",\n \"steam\",\n \"dream\",\n \"absentminded\",\n \"brain\",\n \"fog\",\n \"forgetful\",\n \"haze\",\n \"head\",\n \"impractical\",\n \"unrealistic\"\n ],\n \"😮💨\": [\n \"face exhaling\",\n \"relieve\",\n \"relief\",\n \"tired\",\n \"sigh\",\n \"exhale\",\n \"gasp\",\n \"groan\",\n \"whisper\",\n \"whistle\"\n ],\n \"😵💫\": [\n \"face with spiral eyes\",\n \"sick\",\n \"ill\",\n \"confused\",\n \"nauseous\",\n \"nausea\",\n \"dizzy\",\n \"hypnotized\",\n \"trouble\",\n \"whoa\"\n ],\n \"❤️🔥\": [\n \"heart on fire\",\n \"passionate\",\n \"enthusiastic\",\n \"burn\",\n \"love\",\n \"lust\",\n \"sacred\"\n ],\n \"❤️🩹\": [\n \"mending heart\",\n \"broken heart\",\n \"bandage\",\n \"wounded\",\n \"bandaged\",\n \"healing\",\n \"healthier\",\n \"improving\",\n \"recovering\",\n \"recuperating\",\n \"unbroken\",\n \"well\"\n ],\n \"🧔♂️\": [\n \"man beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"male\",\n \"men\"\n ],\n \"🧔♀️\": [\n \"woman beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"female\",\n \"women\"\n ],\n \"🫠\": [\n \"melting face\",\n \"hot\",\n \"heat\",\n \"disappear\",\n \"dissolve\",\n \"dread\",\n \"liquid\",\n \"melt\",\n \"sarcasm\"\n ],\n \"🫢\": [\n \"face with open eyes and hand over mouth\",\n \"silence\",\n \"secret\",\n \"shock\",\n \"surprise\",\n \"amazement\",\n \"awe\",\n \"disbelief\",\n \"embarrass\",\n \"gasp\",\n \"scared\"\n ],\n \"🫣\": [\n \"face with peeking eye\",\n \"scared\",\n \"frightening\",\n \"embarrassing\",\n \"shy\",\n \"captivated\",\n \"peep\",\n \"stare\"\n ],\n \"🫡\": [\n \"saluting face\",\n \"respect\",\n \"salute\",\n \"ok\",\n \"sunny\",\n \"troops\",\n \"yes\"\n ],\n \"🫥\": [\n \"dotted line face\",\n \"invisible\",\n \"lonely\",\n \"isolation\",\n \"depression\",\n \"depressed\",\n \"disappear\",\n \"hide\",\n \"introvert\"\n ],\n \"🫤\": [\n \"face with diagonal mouth\",\n \"skeptic\",\n \"confuse\",\n \"frustrated\",\n \"indifferent\",\n \"confused\",\n \"disappointed\",\n \"meh\",\n \"skeptical\",\n \"unsure\"\n ],\n \"🥹\": [\n \"face holding back tears\",\n \"touched\",\n \"gratitude\",\n \"cry\",\n \"angry\",\n \"proud\",\n \"resist\",\n \"sad\"\n ],\n \"🫱\": [\n \"rightwards hand\",\n \"palm\",\n \"offer\",\n \"right\",\n \"rightward\"\n ],\n \"🫲\": [\n \"leftwards hand\",\n \"palm\",\n \"offer\",\n \"left\",\n \"leftward\"\n ],\n \"🫳\": [\n \"palm down hand\",\n \"palm\",\n \"drop\",\n \"dismiss\",\n \"shoo\"\n ],\n \"🫴\": [\n \"palm up hand\",\n \"lift\",\n \"offer\",\n \"demand\",\n \"beckon\",\n \"catch\",\n \"come\"\n ],\n \"🫰\": [\n \"hand with index finger and thumb crossed\",\n \"heart\",\n \"love\",\n \"money\",\n \"expensive\",\n \"snap\"\n ],\n \"🫵\": [\n \"index pointing at the viewer\",\n \"you\",\n \"recruit\",\n \"point\"\n ],\n \"🫶\": [\n \"heart hands\",\n \"love\",\n \"appreciation\",\n \"support\"\n ],\n \"🫦\": [\n \"biting lip\",\n \"flirt\",\n \"sexy\",\n \"pain\",\n \"worry\",\n \"anxious\",\n \"fear\",\n \"flirting\",\n \"nervous\",\n \"uncomfortable\",\n \"worried\"\n ],\n \"🫅\": [\n \"person with crown\",\n \"royalty\",\n \"power\",\n \"monarch\",\n \"noble\",\n \"regal\"\n ],\n \"🫃\": [\n \"pregnant man\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🫄\": [\n \"pregnant person\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🧌\": [\n \"troll\",\n \"mystical\",\n \"monster\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"shrek\"\n ],\n \"🪸\": [\n \"coral\",\n \"ocean\",\n \"sea\",\n \"reef\"\n ],\n \"🪷\": [\n \"lotus\",\n \"flower\",\n \"calm\",\n \"meditation\",\n \"buddhism\",\n \"hinduism\",\n \"india\",\n \"purity\",\n \"vietnam\"\n ],\n \"🪹\": [\n \"empty nest\",\n \"bird\",\n \"nesting\"\n ],\n \"🪺\": [\n \"nest with eggs\",\n \"bird\",\n \"nesting\"\n ],\n \"🫘\": [\n \"beans\",\n \"food\",\n \"kidney\",\n \"legume\"\n ],\n \"🫗\": [\n \"pouring liquid\",\n \"cup\",\n \"water\",\n \"drink\",\n \"empty\",\n \"glass\",\n \"spill\"\n ],\n \"🫙\": [\n \"jar\",\n \"container\",\n \"sauce\",\n \"condiment\",\n \"empty\",\n \"store\"\n ],\n \"🛝\": [\n \"playground slide\",\n \"fun\",\n \"park\",\n \"amusement\",\n \"play\"\n ],\n \"🛞\": [\n \"wheel\",\n \"car\",\n \"transport\",\n \"circle\",\n \"tire\",\n \"turn\"\n ],\n \"🛟\": [\n \"ring buoy\",\n \"life saver\",\n \"life preserver\",\n \"float\",\n \"rescue\",\n \"safety\"\n ],\n \"🪬\": [\n \"hamsa\",\n \"religion\",\n \"protection\",\n \"amulet\",\n \"fatima\",\n \"hand\",\n \"mary\",\n \"miriam\"\n ],\n \"🪩\": [\n \"mirror ball\",\n \"disco\",\n \"dance\",\n \"party\",\n \"glitter\"\n ],\n \"🪫\": [\n \"low battery\",\n \"drained\",\n \"dead\",\n \"electronic\",\n \"energy\",\n \"no\",\n \"red\"\n ],\n \"🩼\": [\n \"crutch\",\n \"accessibility\",\n \"assist\",\n \"aid\",\n \"cane\",\n \"disability\",\n \"hurt\",\n \"mobility\",\n \"stick\"\n ],\n \"🩻\": [\n \"x-ray\",\n \"skeleton\",\n \"medicine\",\n \"bones\",\n \"doctor\",\n \"medical\",\n \"ray\",\n \"x\"\n ],\n \"🫧\": [\n \"bubbles\",\n \"soap\",\n \"fun\",\n \"carbonation\",\n \"sparkling\",\n \"burp\",\n \"clean\",\n \"underwater\"\n ],\n \"🪪\": [\n \"identification card\",\n \"document\",\n \"credentials\",\n \"id\",\n \"license\",\n \"security\"\n ],\n \"🟰\": [\n \"heavy equals sign\",\n \"math\",\n \"equality\"\n ],\n \"🫨\": [\n \"shaking face\",\n \"dizzy\",\n \"shock\",\n \"blurry\",\n \"earthquake\"\n ],\n \"🩷\": [\n \"pink heart\",\n \"valentines\"\n ],\n \"🩵\": [\n \"light blue heart\",\n \"ice\",\n \"baby blue\"\n ],\n \"🩶\": [\n \"grey heart\",\n \"silver\",\n \"monochrome\"\n ],\n \"🫷\": [\n \"leftwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫸\": [\n \"rightwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫎\": [\n \"moose\",\n \"canada\",\n \"sweden\",\n \"sven\",\n \"cool\"\n ],\n \"🫏\": [\n \"donkey\",\n \"eeyore\",\n \"mule\"\n ],\n \"🪽\": [\n \"wing\",\n \"angel\",\n \"birds\",\n \"flying\",\n \"fly\"\n ],\n \"🐦⬛\": [\n \"black bird\",\n \"crow\"\n ],\n \"🪿\": [\n \"goose\",\n \"silly\",\n \"jemima\",\n \"goosebumps\",\n \"honk\"\n ],\n \"🪼\": [\n \"jellyfish\",\n \"sting\",\n \"tentacles\"\n ],\n \"🪻\": [\n \"hyacinth\",\n \"flower\",\n \"lavender\"\n ],\n \"🫚\": [\n \"ginger root\",\n \"spice\",\n \"yellow\",\n \"cooking\",\n \"gingerbread\"\n ],\n \"🫛\": [\n \"pea pod\",\n \"cozy\",\n \"green\"\n ],\n \"🪭\": [\n \"folding hand fan\",\n \"flamenco\",\n \"hot\",\n \"sensu\"\n ],\n \"🪮\": [\n \"hair pick\",\n \"afro\",\n \"comb\"\n ],\n \"🪇\": [\n \"maracas\",\n \"music\",\n \"instrument\",\n \"percussion\",\n \"shaker\"\n ],\n \"🪈\": [\n \"flute\",\n \"bamboo\",\n \"music\",\n \"instrument\",\n \"pied piper\",\n \"recorder\"\n ],\n \"🪯\": [\n \"khanda\",\n \"Sikhism\",\n \"religion\"\n ],\n \"🛜\": [\n \"wireless\",\n \"wifi\",\n \"internet\",\n \"contactless\",\n \"signal\"\n ],\n \"🙂↔️\": [\n \"head shaking horizontally\",\n \"disapprove\",\n \"indiffernt\",\n \"left\"\n ],\n \"🙂↕️\": [\n \"head shaking vertically\",\n \"down\",\n \"nod\"\n ],\n \"🚶➡️\": [\n \"person walking facing right\",\n \"peerson\",\n \"exercise\"\n ],\n \"🚶♀️➡️\": [\n \"woman walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🚶♂️➡️\": [\n \"man walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🧎➡️\": [\n \"person kneeling facing right\",\n \"pray\"\n ],\n \"🧎♀️➡️\": [\n \"woman kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧎♂️➡️\": [\n \"man kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧑🦯➡️\": [\n \"person with white cane facing right\",\n \"walk\",\n \"walk\",\n \"visually impaired\",\n \"blind\"\n ],\n \"👨🦯➡️\": [\n \"man with white cane facing right\",\n \"visually impaired\",\n \"blind\",\n \"walk\",\n \"stick\"\n ],\n \"👩🦯➡️\": [\n \"woman with white cane facing right\",\n \"stick\",\n \"visually impaired\",\n \"blind\"\n ],\n \"🧑🦼➡️\": [\n \"person in motorized wheelchair facing right\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨🦼➡️\": [\n \"man in motorized wheelchair facing right\",\n \"disability\",\n \"accessibility\",\n \"mobility\"\n ],\n \"👩🦼➡️\": [\n \"woman in motorized wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"🧑🦽➡️\": [\n \"person in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨🦽➡️\": [\n \"man in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👩🦽➡️\": [\n \"woman in manual wheelchair facing right\",\n \"disability\",\n \"mobility\",\n \"accessibility\"\n ],\n \"🏃➡️\": [\n \"person running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃♀️➡️\": [\n \"woman running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃♂️➡️\": [\n \"man running facing right\",\n \"jog\",\n \"exercise\"\n ],\n \"🧑🧑🧒\": [\n \"family adult, adult, child\",\n \"kid\",\n \"parents\"\n ],\n \"🧑🧑🧒🧒\": [\n \"family adult, adult, child, child\",\n \"children\",\n \"parents\"\n ],\n \"🧑🧒\": [\n \"family adult, child\",\n \"parent\",\n \"kid\"\n ],\n \"🧑🧒🧒\": [\n \"family adult, child, child\",\n \"parent\",\n \"children\"\n ],\n \"🐦🔥\": [\n \"phoenix\",\n \"immortal\",\n \"bird\",\n \"mythtical\",\n \"reborn\"\n ],\n \"🍋🟩\": [\n \"lime\",\n \"fruit\",\n \"acidic\",\n \"citric\"\n ],\n \"🍄🟫\": [\n \"brown mushroom\",\n \"toadstool\",\n \"fungus\"\n ],\n \"⛓️💥\": [\n \"broken chain\",\n \"constraint\",\n \"break\"\n ],\n \"\": [\n \"face with bags under eyes\",\n \"tired\",\n \"sleepy\",\n \"exhausted\"\n ],\n \"\": [\n \"fingerprint\"\n ],\n \"\": [\n \"leafless tree\"\n ],\n \"\": [\n \"root vegetable\",\n \"radish\"\n ],\n \"\": [\n \"harp\",\n \"music\",\n \"instrument\"\n ],\n \"\": [\n \"shovel\",\n \"tool\",\n \"dig\"\n ],\n \"\": [\n \"splatter\"\n ]\n}\n","/**\n * marked v17.0.1 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function Z(u){T=u}var C={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var me=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Te=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,N=/(?:[*+-]|\\d{1,9}[.)])/,re=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,se=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Oe=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),Q=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,ye=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,N).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",j=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",j).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ie=k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ie).getRegex(),U={blockquote:$e,code:be,def:ye,fences:Re,heading:Te,hr:I,html:Se,lheading:se,list:Pe,newline:xe,paragraph:ie,table:C,text:we},te=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...U,lheading:Oe,table:te,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",te).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...U,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",j).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:C,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",se).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,oe=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,K=/[\\s\\p{P}\\p{S}]/u,ae=/[^\\s\\p{P}\\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,K).getRegex(),le=/(?!~)[\\p{P}\\p{S}]/u,Ie=/(?!~)[\\s\\p{P}\\p{S}]/u,Ee=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=k(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",me?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=k(ue,\"u\").replace(/punct/g,D).getRegex(),ve=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=k(pe,\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),He=k(pe,\"gu\").replace(/notPunctSpace/g,Ee).replace(/punctSpace/g,Ie).replace(/punct/g,le).getRegex(),Ze=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),Ge=k(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=k(j).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=k(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ue=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),ne=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,W={_backpedal:C,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:oe,code:ze,del:C,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ue,tag:Fe,text:Ae,url:C},Ke={...W,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},G={...W,emStrongRDelimAst:He,emStrongLDelim:ve,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",ne).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",ne).getRegex()},We={...G,br:k(oe).replace(\"{2,}\",\"*\").getRegex(),text:k(G.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},E={normal:U,gfm:_e,pedantic:Le},M={normal:W,gfm:G,breaks:We,pedantic:Ke};var Xe={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},ke=u=>Xe[u];function w(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function X(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function J(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Je(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,O=>\" \".repeat(3*O.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let O=this.rules.other.nextBulletRegex(f),V=this.rules.other.hrRegex(f),Y=this.rules.other.fencesBeginRegex(f),ee=this.rules.other.headingBeginRegex(f),fe=this.rules.other.htmlBeginRegex(f);for(;e;){let H=e.split(`\n`,1)[0],A;if(h=H,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),Y.test(h)||ee.test(h)||fe.test(h)||O.test(h)||V.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||Y.test(g)||ee.test(g)||V.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),p+=H+`\n`,e=e.substring(H.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(g=>g.type===\"space\"),c=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=J(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(J(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),ge(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return ge(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:E.normal,inline:M.normal};this.options.pedantic?(t.block=E.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=E.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:E,inline:M}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(p=Math.min(p,g))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=X(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=X(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){let t=\"\";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(s.type)){t+=a||\"\";continue}}let i=r;switch(i.type){case\"space\":{t+=this.renderer.space(i);break}case\"hr\":{t+=this.renderer.hr(i);break}case\"heading\":{t+=this.renderer.heading(i);break}case\"code\":{t+=this.renderer.code(i);break}case\"table\":{t+=this.renderer.table(i);break}case\"blockquote\":{t+=this.renderer.blockquote(i);break}case\"list\":{t+=this.renderer.list(i);break}case\"checkbox\":{t+=this.renderer.checkbox(i);break}case\"html\":{t+=this.renderer.html(i);break}case\"def\":{t+=this.renderer.def(i);break}case\"paragraph\":{t+=this.renderer.paragraph(i);break}case\"text\":{t+=this.renderer.text(i);break}default:{let s='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"checkbox\":{n+=t.checkbox(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];S.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,p);return l.call(i,g)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,p);return g===!1&&(g=await l.apply(i,p)),g})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(u,e){return _.parse(u,e)}d.options=d.setOptions=function(u){return _.setOptions(u),d.defaults=_.defaults,Z(d.defaults),d};d.getDefaults=L;d.defaults=T;d.use=function(...u){return _.use(...u),d.defaults=_.defaults,Z(d.defaults),d};d.walkTokens=function(u,e){return _.walkTokens(u,e)};d.parseInline=_.parseInline;d.Parser=b;d.parser=b.parse;d.Renderer=P;d.TextRenderer=$;d.Lexer=x;d.lexer=x.lex;d.Tokenizer=y;d.Hooks=S;d.parse=d;var Dt=d.options,Ht=d.setOptions,Zt=d.use,Gt=d.walkTokens,Nt=d.parseInline,Qt=d,Ft=b.parse,jt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,jt as lexer,d as marked,Dt as options,Qt as parse,Nt as parseInline,Ft as parser,Ht as setOptions,Zt as use,Gt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","import DOMPurify from \"dompurify\";\nimport emojilib from \"emojilib\";\nimport { marked } from \"marked\";\n\nconst emojiMap = new Map<string, string>();\nfor (const [emoji, keywords] of Object.entries(emojilib)) {\n if (Array.isArray(keywords)) {\n for (const keyword of keywords) {\n const normalized = keyword.toLowerCase();\n if (!emojiMap.has(normalized)) {\n emojiMap.set(normalized, emoji);\n }\n }\n }\n}\n\nfunction detectContentType(content: string): \"html\" | \"markdown\" | \"text\" {\n const trimmed = content.trim();\n const htmlTagPattern = /<[a-z][\\s\\S]*>/i;\n if (htmlTagPattern.test(trimmed)) {\n return \"html\";\n }\n const markdownPatterns = [\n /^#{1,6}\\s+/m,\n /^\\s*[-*+]\\s+/m,\n /^\\s*\\d+\\.\\s+/m,\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/,\n /\\*\\*[^*]+\\*\\*/,\n /\\*[^*]+\\*/,\n /`[^`]+`/,\n ];\n if (markdownPatterns.some((pattern) => pattern.test(trimmed))) {\n return \"markdown\";\n }\n return \"text\";\n}\n\nfunction processEmojis(text: string): string {\n return text.replace(/:([a-z0-9_+-]+):/gi, (match, name) => {\n const normalized = name.toLowerCase();\n const emoji = emojiMap.get(normalized);\n return emoji || match;\n });\n}\n\nfunction textToHtml(text: string): string {\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\n/g, \"<br>\");\n}\n\nfunction normalizeInvisibleChars(text: string): string {\n return (\n text\n // Unify Windows/Mac line endings\n .replace(/\\r\\n?|\\u2028|\\u2029/g, \"\\n\")\n // Remove invisible Unicode format chars\n .replace(/\\p{Cf}/gu, \"\")\n // Convert all Unicode whitespace to normal spaces\n .replace(/\\p{Zs}/gu, \" \")\n // Remove control characters except \\n and \\t\n .replace(/[^\\S\\n\\t]+/g, \" \")\n // Remove trailing spaces before newline\n .replace(/[ \\t]+\\n/g, \"\\n\")\n // Collapse any combination of empty lines into max 2 line breaks\n .replace(/(\\n\\s*){2,}/g, \"\\n\\n\")\n .trim()\n );\n}\n\nexport function normalizeContent(content: string): string {\n if (!content) {\n return \"\";\n }\n\n const cleaned = normalizeInvisibleChars(content);\n\n const contentType = detectContentType(cleaned);\n let html: string;\n switch (contentType) {\n case \"html\":\n html = processEmojis(cleaned);\n break;\n case \"markdown\":\n html = marked.parse(cleaned, {\n breaks: true,\n gfm: true,\n }) as string;\n html = processEmojis(html);\n break;\n case \"text\":\n default: {\n const textWithEmojis = processEmojis(cleaned);\n html = textToHtml(textWithEmojis);\n break;\n }\n }\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n \"p\",\n \"br\",\n \"strong\",\n \"em\",\n \"u\",\n \"s\",\n \"a\",\n \"ul\",\n \"ol\",\n \"li\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"blockquote\",\n \"code\",\n \"pre\",\n \"img\",\n \"div\",\n \"span\",\n ],\n ALLOWED_ATTR: [\"href\", \"src\", \"alt\", \"title\", \"target\", \"rel\"],\n ALLOWED_URI_REGEXP:\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i,\n });\n}\n","type DateFormatOptions = {\n todayAsText?: boolean;\n showWeekday?: boolean;\n longMonth?: boolean;\n longYear?: boolean;\n withOrdinal?: boolean;\n includeTime?: boolean;\n};\n\nconst TIME_FORMAT_OPTIONS: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n};\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction formatTime(date: Date): string {\n return date.toLocaleTimeString([], TIME_FORMAT_OPTIONS);\n}\n\nfunction getYesterday(now: Date): Date {\n const yesterday = new Date(now);\n yesterday.setDate(now.getDate() - 1);\n return yesterday;\n}\n\nfunction formatYear(date: Date, longYear: boolean): string {\n return longYear\n ? date.getFullYear().toString()\n : `'${date.getFullYear().toString().slice(-2)}`;\n}\n\nfunction formatDay(day: number, withOrdinal: boolean): string {\n return withOrdinal ? `${day}${getOrdinal(day)}` : `${day}`;\n}\n\nfunction formatOlderDate(\n date: Date,\n now: Date,\n options: Required<DateFormatOptions>\n): string {\n const { longMonth, longYear, withOrdinal, showWeekday, includeTime } =\n options;\n\n const day = date.getDate();\n const monthFormat = longMonth ? \"long\" : \"short\";\n const month = date.toLocaleDateString([], { month: monthFormat });\n const dayFormatted = formatDay(day, withOrdinal);\n\n let result = `${month} ${dayFormatted}`;\n\n const isDifferentYear = date.getFullYear() !== now.getFullYear();\n if (isDifferentYear) {\n result += `, ${formatYear(date, longYear)}`;\n }\n\n if (showWeekday) {\n const weekday = date.toLocaleDateString([], { weekday: \"long\" });\n result = `${weekday}, ${result}`;\n }\n\n if (includeTime) {\n result += `, ${formatTime(date)}`;\n }\n\n return result;\n}\n\nexport function formatTimestamp(\n iso: string,\n options: DateFormatOptions = {}\n): string {\n const {\n todayAsText = false,\n showWeekday = false,\n longMonth = false,\n longYear = true,\n withOrdinal = false,\n includeTime = true,\n } = options;\n\n const date = new Date(iso);\n const now = new Date();\n\n if (isSameDay(date, now)) {\n if (todayAsText) return \"Today\";\n return formatTime(date);\n }\n\n const yesterday = getYesterday(now);\n if (isSameDay(date, yesterday)) {\n if (!includeTime) return \"Yesterday\";\n return `Yesterday, ${formatTime(date)}`;\n }\n\n return formatOlderDate(date, now, {\n todayAsText,\n showWeekday,\n longMonth,\n longYear,\n withOrdinal,\n includeTime,\n });\n}\n\nfunction getOrdinal(n: number): string {\n if (n % 100 >= 11 && n % 100 <= 13) return \"th\";\n\n switch (n % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n onKeyDown,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n onKeyDown?.(e);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type ComponentPropsWithoutRef,\n type ElementType,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableOwnProps = {\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\ntype PressableProps<T extends ElementType = \"div\"> = PressableOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof PressableOwnProps | \"as\">;\n\nexport function Pressable<T extends ElementType = \"div\">({\n as,\n disabled = false,\n onPress,\n className,\n children,\n ...props\n}: PressableProps<T>) {\n const Component = as || \"div\";\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionState = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n};\n\nexport type AccordionProps = {\n children: ReactNode | ((state: AccordionState) => ReactNode);\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n\n if (type === \"single\") {\n return new Set([defaultValue as string]);\n }\n\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n if (type === \"single\") {\n return prev.has(value) ? new Set() : new Set([value]);\n }\n\n const next = new Set(prev);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className} data-type={type}>\n {typeof children === \"function\"\n ? children({ openItems, toggleItem })\n : children}\n </div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLDivElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AirtableIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M16.56 6.99L6.49 11.16C5.93 11.39 5.94 12.18 6.5 12.41L16.61 16.42C17.5 16.77 18.49 16.77 19.37 16.42L29.48 12.41C30.05 12.18 30.05 11.39 29.49 11.16L19.43 6.99C18.51 6.61 17.48 6.61 16.56 6.99\"\n fill=\"#FCB400\"\n />\n <path\n d=\"M18.89 18.6V28.62C18.89 29.09 19.37 29.42 19.81 29.25L31.07 24.87C31.2 24.82 31.31 24.74 31.38 24.63C31.46 24.51 31.5 24.38 31.5 24.25V14.23C31.5 13.76 31.02 13.43 30.58 13.61L19.31 17.98C19.19 18.03 19.08 18.11 19 18.23C18.93 18.34 18.89 18.47 18.89 18.6Z\"\n fill=\"#18BFFF\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L12.57 20.9L5.52 24.28C5.07 24.5 4.5 24.17 4.5 23.67V14.28C4.5 14.1 4.59 13.94 4.72 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.06 13.59 5.3 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"#F82B60\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L4.71 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.05 13.59 5.29 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"black\"\n fillOpacity=\"0.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid h-full grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { normalizeContent } from \"@utils/rich-content\";\n\nexport type RichContentProps = {\n content: string;\n className?: string;\n};\n\nexport function RichContent({ content, className }: RichContentProps) {\n const sanitizedHtml = normalizeContent(content);\n\n return (\n <div\n className={cn(\n \"normalized-content text-sm leading-[1.3] font-normal text-neutral-900\",\n className\n )}\n dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\n />\n );\n}\n","import { cn } from \"@utils/classnames\";\n\ntype SkeletonProps = {\n className?: string;\n};\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"skeleton rounded-md\", className)} />;\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\n/** Reason for toast dismissal */\nexport type DismissReason = \"manual\" | \"timeout\";\n\n/** Render function signature for dynamic toast content */\nexport type ToastRenderFn = (close: () => void, remainingTime: number) => ReactNode;\n\n/** Lifecycle callbacks */\nexport type ToastCallbacks = {\n /** Called when the toast appears */\n onOpen?: () => void;\n /** Called when the user manually dismisses the toast */\n onClose?: () => void;\n /** Called when the toast disappears due to timeout */\n onAutoClose?: () => void;\n /** Called when the toast is removed for any reason */\n onDismiss?: (reason: DismissReason) => void;\n};\n\nexport type ToastItem = {\n id: string;\n content: ReactNode | ToastRenderFn;\n position: ToastPosition;\n duration: number;\n /** If true, the toast will not auto-dismiss and must be closed manually */\n persistent?: boolean;\n callbacks?: ToastCallbacks;\n /** Optional key for deduplication - only one toast with this key can be active */\n key?: string;\n /** Internal: timestamp used to signal timer restart on refresh */\n _refreshedAt?: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\n/** Maps dedupe key -> toast id for active toasts (visible or exiting) */\nconst activeKeys = new Map<string, string>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n // Register key if provided\n if (toast.key) {\n activeKeys.set(toast.key, toast.id);\n }\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n // Note: key is NOT removed here - it stays active during exit animation\n // The key is removed in cleanup() after exit animation completes\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n\n /**\n * Called after exit animation completes to clean up key mapping.\n * This ensures the key stays \"active\" during exit animation to prevent duplicates.\n */\n cleanup(id: string) {\n for (const [key, toastId] of activeKeys) {\n if (toastId === id) {\n activeKeys.delete(key);\n break;\n }\n }\n },\n\n /**\n * Check if a dedupe key is currently active (toast visible or exiting)\n */\n getActiveToastIdByKey(key: string): string | undefined {\n return activeKeys.get(key);\n },\n\n /**\n * Update an existing toast's content and/or duration.\n * Used for refresh behavior when a duplicate key is called.\n */\n update(id: string, updates: { content?: ReactNode | ToastRenderFn; duration?: number }) {\n const toast = toasts.find((t) => t.id === id);\n if (!toast) return false;\n\n toasts = toasts.map((t) =>\n t.id === id ? { ...t, ...updates, _refreshedAt: Date.now() } : t\n );\n notify();\n return true;\n },\n};\n","import {\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport {\n toastStore,\n type DismissReason,\n type ToastItem,\n type ToastPosition,\n type ToastRenderFn,\n} from \"./toast-store\";\n\nconst ANIMATION_DURATION_MS = 200;\nconst COUNTDOWN_INTERVAL_MS = 100;\n\nconst POSITION_CLASSES: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\nconst ANIMATION_TRANSFORMS: Record<ToastPosition, string> = {\n \"top-left\": \"-translate-x-full\",\n \"top-center\": \"-translate-y-full\",\n \"top-right\": \"translate-x-full\",\n \"bottom-left\": \"-translate-x-full\",\n \"bottom-center\": \"translate-y-full\",\n \"bottom-right\": \"translate-x-full\",\n};\n\ntype AnimationState = \"entering\" | \"visible\" | \"exiting\";\n\ntype AnimatedToast = ToastItem & {\n animationState: AnimationState;\n};\n\ntype TimerState = {\n timeoutId: number | null;\n startedAt: number;\n remainingTime: number;\n isPaused: boolean;\n /** Tracks _refreshedAt to detect refresh calls */\n refreshedAt?: number;\n};\n\ntype ToastWrapperProps = {\n toast: AnimatedToast;\n remainingTime: number;\n onExitComplete: (id: string) => void;\n onClose: (id: string) => void;\n onHoverStart: () => void;\n onHoverEnd: () => void;\n};\n\nfunction isRenderFn(content: unknown): content is ToastRenderFn {\n return typeof content === \"function\";\n}\n\n// SSR-safe client detection using useSyncExternalStore\nconst subscribeNoop = () => () => {};\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nfunction groupByPosition(\n toasts: AnimatedToast[]\n): Partial<Record<ToastPosition, AnimatedToast[]>> {\n return toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Partial<Record<ToastPosition, AnimatedToast[]>>\n );\n}\n\nfunction computeAnimationClasses(\n isVisible: boolean,\n position: ToastPosition\n): string {\n const baseClasses =\n \"transition-all duration-200 ease-out motion-reduce:transition-none motion-reduce:transform-none\";\n const transformClass = ANIMATION_TRANSFORMS[position];\n\n return cn(\n baseClasses,\n isVisible\n ? \"translate-x-0 translate-y-0 opacity-100\"\n : `opacity-0 ${transformClass}`\n );\n}\n\nfunction updateAnimationState(toast: AnimatedToast): AnimatedToast {\n if (toast.animationState === \"entering\") {\n return { ...toast, animationState: \"visible\" };\n }\n return toast;\n}\n\nfunction markAsExiting(\n toast: AnimatedToast,\n shouldExit: boolean\n): AnimatedToast {\n if (shouldExit && toast.animationState !== \"exiting\") {\n return { ...toast, animationState: \"exiting\" };\n }\n return toast;\n}\n\nfunction ToastWrapper({\n toast,\n remainingTime,\n onExitComplete,\n onClose,\n onHoverStart,\n onHoverEnd,\n}: ToastWrapperProps) {\n const [hasEntered, setHasEntered] = useState(false);\n\n // Trigger enter animation on mount\n useEffect(() => {\n const frame = requestAnimationFrame(() => setHasEntered(true));\n return () => cancelAnimationFrame(frame);\n }, []);\n\n // Handle exit animation completion\n useEffect(() => {\n if (toast.animationState !== \"exiting\") return;\n\n const timer = setTimeout(\n () => onExitComplete(toast.id),\n ANIMATION_DURATION_MS\n );\n return () => clearTimeout(timer);\n }, [toast.animationState, toast.id, onExitComplete]);\n\n const handleClose = useCallback(() => onClose(toast.id), [onClose, toast.id]);\n\n const isVisible = hasEntered && toast.animationState !== \"exiting\";\n const content = isRenderFn(toast.content)\n ? toast.content(handleClose, remainingTime)\n : toast.content;\n\n return (\n <div\n className={cn(\n \"pointer-events-auto\",\n computeAnimationClasses(isVisible, toast.position)\n )}\n onMouseEnter={onHoverStart}\n onMouseLeave={onHoverEnd}\n >\n {content}\n </div>\n );\n}\n\nfunction useToastTimers(\n storeToasts: ToastItem[],\n dismissReasons: React.MutableRefObject<Map<string, DismissReason>>\n) {\n const [remainingTimes, setRemainingTimes] = useState<Map<string, number>>(\n () => new Map()\n );\n const timerStates = useRef<Map<string, TimerState>>(new Map());\n const countdownInterval = useRef<number | null>(null);\n const isPausedRef = useRef(false);\n\n const clearTimer = useCallback((id: string) => {\n const state = timerStates.current.get(id);\n if (state?.timeoutId) {\n clearTimeout(state.timeoutId);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem, initialRemaining?: number) => {\n clearTimer(toast.id);\n\n const remaining = initialRemaining ?? toast.duration;\n const now = Date.now();\n\n const timeoutId = window.setTimeout(() => {\n dismissReasons.current.set(toast.id, \"timeout\");\n toastStore.remove(toast.id);\n }, remaining);\n\n timerStates.current.set(toast.id, {\n timeoutId,\n startedAt: now,\n remainingTime: remaining,\n isPaused: false,\n refreshedAt: toast._refreshedAt,\n });\n\n setRemainingTimes((prev) => new Map(prev).set(toast.id, remaining));\n },\n [clearTimer, dismissReasons]\n );\n\n const startCountdownInterval = useCallback(() => {\n if (countdownInterval.current) return;\n\n countdownInterval.current = window.setInterval(() => {\n const now = Date.now();\n setRemainingTimes((prev) => {\n const next = new Map(prev);\n timerStates.current.forEach((state, id) => {\n if (!state.isPaused && state.timeoutId) {\n const elapsed = now - state.startedAt;\n next.set(id, Math.max(0, state.remainingTime - elapsed));\n }\n });\n return next;\n });\n }, COUNTDOWN_INTERVAL_MS);\n }, []);\n\n const pauseAll = useCallback(() => {\n if (isPausedRef.current) return;\n isPausedRef.current = true;\n\n const now = Date.now();\n\n timerStates.current.forEach((state, id) => {\n if (state.timeoutId) {\n clearTimeout(state.timeoutId);\n }\n\n const elapsed = now - state.startedAt;\n timerStates.current.set(id, {\n ...state,\n timeoutId: null,\n remainingTime: Math.max(0, state.remainingTime - elapsed),\n isPaused: true,\n });\n });\n\n if (countdownInterval.current) {\n clearInterval(countdownInterval.current);\n countdownInterval.current = null;\n }\n }, []);\n\n const resumeAll = useCallback(() => {\n if (!isPausedRef.current) return;\n isPausedRef.current = false;\n\n timerStates.current.forEach((state, id) => {\n if (state.isPaused && state.remainingTime > 0) {\n const toast = storeToasts.find((t) => t.id === id);\n if (toast) {\n startTimer(toast, state.remainingTime);\n }\n }\n });\n\n startCountdownInterval();\n }, [storeToasts, startTimer, startCountdownInterval]);\n\n const cleanupTimer = useCallback((id: string) => {\n timerStates.current.delete(id);\n setRemainingTimes((prev) => {\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // Start timers when new toasts appear (skip persistent toasts)\n // Also restart timer when _refreshedAt changes (refresh behavior)\n useEffect(() => {\n storeToasts.forEach((toast) => {\n if (toast.persistent) return;\n\n const existingState = timerStates.current.get(toast.id);\n\n if (!existingState) {\n // New toast - start timer\n startTimer(toast);\n } else if (existingState.refreshedAt !== toast._refreshedAt) {\n // Refresh triggered - restart timer with full duration\n startTimer(toast);\n }\n });\n\n const hasNonPersistent = storeToasts.some((t) => !t.persistent);\n if (hasNonPersistent) {\n startCountdownInterval();\n }\n }, [storeToasts, startTimer, startCountdownInterval]);\n\n // Cleanup countdown interval on unmount\n useEffect(() => {\n return () => {\n if (countdownInterval.current) {\n clearInterval(countdownInterval.current);\n }\n };\n }, []);\n\n return {\n remainingTimes,\n pauseAll,\n resumeAll,\n cleanupTimer,\n };\n}\n\nexport function Toaster() {\n const [storeToasts, setStoreToasts] = useState<ToastItem[]>([]);\n const [animatedToasts, setAnimatedToasts] = useState<AnimatedToast[]>([]);\n\n const prevToastIds = useRef<Set<string>>(new Set());\n const dismissReasons = useRef<Map<string, DismissReason>>(new Map());\n const animatedToastsRef = useRef<AnimatedToast[]>([]);\n\n const { remainingTimes, pauseAll, resumeAll, cleanupTimer } = useToastTimers(\n storeToasts,\n dismissReasons\n );\n\n // Subscribe to store\n useEffect(() => toastStore.subscribe(setStoreToasts), []);\n\n // SSR-safe client detection\n const mounted = useSyncExternalStore(\n subscribeNoop,\n getClientSnapshot,\n getServerSnapshot\n );\n\n const callOnOpen = useCallback((toast: ToastItem) => {\n toast.callbacks?.onOpen?.();\n }, []);\n\n const callDismissCallbacks = useCallback(\n (toast: ToastItem, reason: DismissReason) => {\n if (reason === \"manual\") {\n toast.callbacks?.onClose?.();\n } else {\n toast.callbacks?.onAutoClose?.();\n }\n toast.callbacks?.onDismiss?.(reason);\n },\n []\n );\n\n // Sync store toasts with animated toasts\n useEffect(() => {\n const currentIds = new Set(storeToasts.map((t) => t.id));\n const storeToastMap = new Map(storeToasts.map((t) => [t.id, t]));\n const prevIds = prevToastIds.current;\n\n // Call dismiss callbacks for removed toasts\n animatedToastsRef.current\n .filter((t) => !currentIds.has(t.id) && t.animationState !== \"exiting\")\n .forEach((toast) => {\n const reason = dismissReasons.current.get(toast.id) ?? \"timeout\";\n callDismissCallbacks(toast, reason);\n dismissReasons.current.delete(toast.id);\n });\n\n setAnimatedToasts((prev) => {\n const updated = prev\n .map((toast) => {\n // Update content/duration if the toast was refreshed\n const storeToast = storeToastMap.get(toast.id);\n if (storeToast) {\n return {\n ...toast,\n content: storeToast.content,\n duration: storeToast.duration,\n };\n }\n return toast;\n })\n .map((toast) => markAsExiting(toast, !currentIds.has(toast.id)))\n .map(updateAnimationState);\n\n const newToasts: AnimatedToast[] = storeToasts\n .filter((t) => !prevIds.has(t.id))\n .map((t) => {\n callOnOpen(t);\n return { ...t, animationState: \"entering\" as const };\n });\n\n const result = [...newToasts, ...updated];\n animatedToastsRef.current = result;\n return result;\n });\n\n prevToastIds.current = currentIds;\n }, [storeToasts, callOnOpen, callDismissCallbacks]);\n\n const handleExitComplete = useCallback(\n (id: string) => {\n setAnimatedToasts((prev) => {\n const result = prev.filter((t) => t.id !== id);\n animatedToastsRef.current = result;\n return result;\n });\n cleanupTimer(id);\n // Clean up dedupe key mapping after exit animation completes\n toastStore.cleanup(id);\n },\n [cleanupTimer]\n );\n\n const handleManualClose = useCallback((id: string) => {\n dismissReasons.current.set(id, \"manual\");\n toastStore.remove(id);\n }, []);\n\n if (!mounted) {\n return null;\n }\n\n const grouped = groupByPosition(animatedToasts);\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, AnimatedToast[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"pointer-events-none fixed z-1000 flex flex-col items-end gap-2 p-4\",\n POSITION_CLASSES[position]\n )}\n >\n {items.map((toast) => (\n <ToastWrapper\n key={toast.id}\n toast={toast}\n remainingTime={remainingTimes.get(toast.id) ?? toast.duration}\n onExitComplete={handleExitComplete}\n onClose={handleManualClose}\n onHoverStart={pauseAll}\n onHoverEnd={resumeAll}\n />\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[32px] w-[32px] text-[0.875em]\",\n xl: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type BulkActionsSkeletonProps = {\n className?: string;\n};\n\nexport function BulkActionsSkeleton({ className }: BulkActionsSkeletonProps) {\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n <Skeleton className=\"h-4 w-30\" />\n </div>\n\n {/* Bulk actions skeleton */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\" />\n\n {/* Density skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={<MinusIcon size={12} className=\"text-neutral-900\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\ntype IconCountButtonOrientation = \"vertical\" | \"horizontal\";\n\nexport type IconCountButtonSkeletonProps = {\n orientation?: IconCountButtonOrientation;\n className?: string;\n};\n\nexport function IconCountButtonSkeleton({\n orientation = \"vertical\",\n className,\n}: IconCountButtonSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n className={cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\",\n className\n )}\n >\n <Skeleton className=\"size-8 rounded-full\" />\n\n <div\n className={cn(\"flex items-center gap-1\", isVertical && \"text-[9px]\")}\n >\n <Skeleton className={cn(\"h-3\", isVertical ? \"w-10\" : \"w-14\")} />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n function formatCount(count: number, max = 99): string {\n return count > max ? `${max}+` : String(count);\n }\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({formatCount(count)})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\nexport type DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","export const EVENT_CARD_HEIGHT_SIZE = {\n normal: { style: \"h-[165px]\", value: 165 },\n compact: { style: \"h-[60px]\", value: 60 },\n};\n","import type { CSSProperties } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventCardSkeletonProps = {\n density?: Density;\n className?: string;\n style?: CSSProperties;\n};\n\nexport function EventCardSkeleton({\n density = \"normal\",\n className,\n style,\n}: EventCardSkeletonProps) {\n return (\n <Card\n className={cn(\n \"w-full rounded-lg bg-white-variant-5 p-4\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n\n <CardTitle className=\"flex h-5 items-center\">\n <Skeleton className=\"h-4 w-48\" />\n </CardTitle>\n\n <CardContent>\n <Skeleton className=\"my-1 h-4 w-full\" />\n <Skeleton className=\"my-1 h-4 w-3/4\" />\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-23 rounded-full\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n </div>\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n\n <div className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n\n <div className=\"flex-1\" />\n\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type EventStatusBadgeType = \"fire\" | \"insight\" | \"done\";\nexport type EventActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusBadgeConfig = {\n label?: string;\n onClick?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type EventStatusBadges = Partial<\n Record<EventStatusBadgeType, StatusBadgeConfig>\n>;\nexport type EventActions = Partial<Record<EventActionType, ActionConfig>>;\n\nexport type EventCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n timestampTooltip?: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statusBadges?: EventStatusBadges;\n actions?: EventActions;\n\n // Density\n density?: Density;\n\n // Styles\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst EVENT_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction EventCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction EventStatusesList({\n statusBadges,\n density,\n}: {\n statusBadges: EventStatusBadges;\n density?: Density;\n}) {\n if (Object.keys(statusBadges).length === 0) return null;\n\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statusBadges) as EventStatusBadgeType[]).map((status) => {\n const config = statusBadges[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onClick}\n density={density}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nfunction EventActionsList({\n actions,\n className,\n}: {\n actions: EventActions;\n className?: string;\n}) {\n if (Object.keys(actions).length === 0) return null;\n\n return (\n <div className={cn(\"flex gap-2\", className)}>\n <StopPropagation>\n {(Object.keys(actions) as EventActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...EVENT_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function EventCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n timestampTooltip,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statusBadges = {},\n actions = {},\n density = \"normal\",\n className,\n style,\n}: EventCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"line-clamp-1 text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <EventStatusesList statusBadges={statusBadges} />\n\n <EventActionsList\n actions={actions}\n className=\"col-start-2 justify-self-end\"\n />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n {icon}\n\n <EventStatusesList statusBadges={statusBadges} density={density} />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n <span className=\"truncate\">{sender}</span>\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <div className=\"flex-1\" />\n\n <EventActionsList actions={actions} />\n\n <InfoTooltip content={timestampTooltip}>\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n </InfoTooltip>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { FireIcon } from \"@icons/index\";\n\nexport type EventDetailPriorityProps = {\n priorityText: string;\n};\n\nexport function EventDetailPriority({\n priorityText,\n}: EventDetailPriorityProps) {\n return (\n <div className=\"sticky top-14 z-5 flex min-h-14 shrink-0 items-center gap-4 bg-tertiary-50 p-4\">\n <FireIcon size={32} className=\"text-tertiary-500-variant-2\" />\n <div className=\"py-1 text-xs leading-[1.2] font-normal text-neutral-800\">\n <span className=\"font-bold\">High Urgency: </span>\n {priorityText}\n </div>\n </div>\n );\n}\n","import { SummaryIcon } from \"@icons/index\";\n\nexport type EventDetailSummaryProps = {\n summary: string;\n};\n\nexport function EventDetailSummary({ summary }: EventDetailSummaryProps) {\n return (\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <SummaryIcon size={24} />\n <p className=\"text-sm leading-[1.3] font-normal text-neutral-800\">\n <span className=\"font-bold\">Summary: </span>\n {summary}\n </p>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { EventDetailPriority } from \"./event-detail-priority\";\nimport { EventDetailSummary } from \"./event-detail-summary\";\n\nexport type EventDetailContentHeaderProps = {\n summary?: string;\n priorityText?: string;\n className?: string;\n children: ReactNode;\n};\n\nexport function EventDetailContentHeader({\n summary,\n priorityText,\n children,\n className,\n}: EventDetailContentHeaderProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {priorityText != null && (\n <EventDetailPriority priorityText={priorityText} />\n )}\n <div className=\"flex flex-col gap-4 p-4\">\n {summary != null && <EventDetailSummary summary={summary} />}\n {children}\n </div>\n </div>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentCalendarProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentCalendar({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentCalendarProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentEmailProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentEmail({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentEmailProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { useCallback, useRef, type ReactNode } from \"react\";\n\nimport { Button } from \"@primitives/button\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n useAccordion,\n} from \"@components/accordion\";\nimport { RichContent } from \"@components/rich-content\";\nimport { Avatar } from \"@patterns/avatar\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, ExternalLinkIcon, FireIcon } from \"@icons/index\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type {\n Message,\n MessageDetail,\n MessageGroup,\n MessageReply,\n} from \"./types/event-detail.types\";\n\nexport type EventDetailContentMessageProps = {\n detail: MessageDetail;\n className?: string;\n};\n\ntype MessageGroupWithPriority = MessageGroup & {\n totalPriorityGroups?: number;\n priorityIndex?: number;\n};\n\nfunction DateSeparator({ timestamp }: { timestamp: string }) {\n return (\n <div className=\"flex items-center gap-4\">\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n <span className=\"rounded-full border border-neutral-300-variant-2 px-3 py-1 text-xs font-semibold text-neutral-600\">\n {timestamp}\n </span>\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n </div>\n );\n}\n\nfunction MessageActions({\n isPriority,\n onExternalLinkClick,\n onMarkAsFireClick,\n}: {\n isPriority?: boolean;\n onExternalLinkClick?: () => void;\n onMarkAsFireClick?: () => void;\n}) {\n return (\n <>\n {onExternalLinkClick && (\n <IconButton\n icon={<ExternalLinkIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-primary-500\"\n title=\"Open in Slack\"\n aria-label=\"Open in Slack\"\n onClick={onExternalLinkClick}\n />\n )}\n {onMarkAsFireClick && !isPriority && (\n <IconButton\n icon={<FireIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-tertiary-500\"\n title=\"Mark as Fire\"\n aria-label=\"Mark as Fire\"\n onClick={onMarkAsFireClick}\n />\n )}\n </>\n );\n}\n\nfunction MessageContent({ content }: { content: string }) {\n return (\n <div className=\"text-sm leading-relaxed text-neutral-900\">\n <RichContent className=\"max-w-[1260px]\" content={content} />\n </div>\n );\n}\n\nfunction RepliesTrigger({\n replyId,\n replyCount,\n}: {\n replyId: string;\n replyCount: number;\n}) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(`replies-${replyId}`);\n\n return (\n <div className=\"flex items-center gap-2 p-1.5 px-2 text-xs font-medium text-neutral-600\">\n <ArrowIcon\n direction={isOpen ? \"up\" : \"down\"}\n size={12}\n className=\"transition-transform\"\n />\n <span>\n {replyCount} {replyCount === 1 ? \"reply\" : \"replies\"}\n </span>\n </div>\n );\n}\n\nfunction MessageReplies({ replies }: { replies: MessageReply[] }) {\n if (!replies || replies.length === 0) return null;\n\n const replyId = replies[0]?.id;\n if (!replyId) return null;\n\n return (\n <Accordion type=\"multiple\" defaultValue={[`replies-${replyId}`]}>\n <AccordionItem\n value={`replies-${replyId}`}\n className=\"flex flex-col gap-2\"\n >\n <AccordionTrigger\n value={`replies-${replyId}`}\n className=\"flex items-center justify-between rounded transition-colors hover:bg-neutral-50\"\n >\n <RepliesTrigger replyId={replyId} replyCount={replies.length} />\n </AccordionTrigger>\n <AccordionContent\n value={`replies-${replyId}`}\n className=\"ml-3 flex flex-col gap-4 border-l-2 border-neutral-500 pl-4\"\n >\n {replies.map((reply) => (\n <div key={reply.id} className=\"flex gap-3\">\n <Avatar name={reply.author} size=\"lg\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {reply.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {reply.timestamp}\n </div>\n </div>\n <MessageContent content={reply.body} />\n </div>\n </div>\n ))}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n}\n\nfunction MessageItem({\n message,\n isPriority = false,\n}: {\n message: Message;\n isPriority?: boolean;\n}) {\n return (\n <div className=\"transition-colors\">\n <div className=\"flex gap-3\">\n <Avatar name={message.author} size={isPriority ? \"xl\" : \"lg\"} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {message.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {message.timestamp}\n </div>\n <MessageActions\n isPriority={isPriority}\n onExternalLinkClick={message.onExternalLinkClick}\n onMarkAsFireClick={message.onMarkAsFireClick}\n />\n </div>\n <MessageContent content={message.body} />\n </div>\n {message.replies && message.replies.length > 0 && (\n <MessageReplies replies={message.replies} />\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityNavigation({\n priorityIndex,\n priorityTotal,\n onPreviousPriority,\n onNextPriority,\n}: {\n priorityIndex?: number;\n priorityTotal?: number;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n if (!priorityIndex || !priorityTotal || priorityTotal <= 1) return null;\n\n const showNext = priorityIndex > 1;\n const showPrevious = priorityIndex < priorityTotal;\n\n if (!showPrevious && !showNext) return null;\n\n return (\n <div className=\"mb-3 flex justify-center px-2\">\n <div className=\"flex w-full items-center justify-center gap-4\">\n <div className=\"flex flex-1 justify-end\">\n {showPrevious && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Previous Fire\"\n onClick={onPreviousPriority}\n >\n <ArrowIcon direction=\"left\" size={14} />\n <span>Previous Fire</span>\n </Button>\n )}\n </div>\n <span className=\"text-xs font-medium text-neutral-700\">\n {priorityIndex} / {priorityTotal}\n </span>\n <div className=\"flex-1\">\n {showNext && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Next Fire\"\n onClick={onNextPriority}\n >\n <span>Next Fire</span>\n <ArrowIcon direction=\"right\" size={14} />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroupHeader({\n title,\n onMarkAsNotFireClick,\n}: {\n title?: string;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!title) return null;\n\n return (\n <div className=\"border-b border-neutral-200 pb-3\">\n <div className=\"flex items-center gap-2\">\n <IconButton\n icon={<FireIcon size={16} className=\"text-tertiary-500\" />}\n className=\"relative flex h-6 w-6 shrink-0 items-center justify-center rounded-full border border-tertiary-400 bg-tertiary-50 transition-opacity hover:opacity-70\"\n aria-label=\"Priority\"\n onClick={onMarkAsNotFireClick}\n />\n <h4 className=\"text-tertiary-700 text-xs font-semibold tracking-wide uppercase\">\n {title}\n </h4>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroup({\n group,\n children,\n onPreviousPriority,\n onNextPriority,\n onMarkAsNotFireClick,\n}: {\n group: MessageGroupWithPriority;\n children: ReactNode;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!group.isPriority) {\n return <>{children}</>;\n }\n\n return (\n <div className=\"relative scroll-mt-[180px]\" data-group-id={group.id}>\n <PriorityNavigation\n priorityIndex={group.priorityIndex}\n priorityTotal={group.totalPriorityGroups}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n />\n <div className=\"relative flex flex-col gap-4 rounded-r-lg border-l-[3px] border-tertiary-500 bg-tertiary-50-alpha-50 p-4\">\n <PriorityGroupHeader\n title={group.priorityText}\n onMarkAsNotFireClick={onMarkAsNotFireClick}\n />\n {children}\n </div>\n </div>\n );\n}\n\nfunction MessageGroup({\n group,\n onPreviousPriority,\n onNextPriority,\n}: {\n group: MessageGroupWithPriority;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n return (\n <div className=\"flex flex-col gap-4\">\n <DateSeparator timestamp={group.timestamp} />\n <PriorityGroup\n group={group}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n onMarkAsNotFireClick={group.messages[0]?.onMarkAsFireClick}\n >\n {group.messages.map((message) => (\n <MessageItem\n key={message.id}\n message={message}\n isPriority={group.isPriority}\n />\n ))}\n </PriorityGroup>\n </div>\n );\n}\n\nexport function EventDetailContentMessage({\n detail: { groups, summary, priorityText },\n className,\n}: EventDetailContentMessageProps) {\n const totalPriorityGroups = groups.filter((g) => g.isPriority).length;\n const containerRef = useRef<HTMLDivElement>(null);\n\n let counter = totalPriorityGroups;\n\n const scrollToPriorityGroup = useCallback(\n (targetIndex: number) => {\n if (!containerRef.current) return;\n\n const priorityGroups = Array.from(\n containerRef.current.querySelectorAll<HTMLElement>(\n '[data-group-id][class*=\"scroll-mt\"]'\n )\n );\n\n // Filter to only priority groups (those with data-group-id)\n const validPriorityGroups = priorityGroups.filter((el) => {\n const groupId = el.getAttribute(\"data-group-id\");\n if (!groupId) return false;\n // Find the corresponding group to check if it's priority\n const group = groups.find((g) => g.id === groupId);\n return group?.isPriority;\n });\n\n if (\n targetIndex >= 1 &&\n targetIndex <= totalPriorityGroups &&\n validPriorityGroups.length === totalPriorityGroups\n ) {\n // Convert priorityIndex to array index\n // priorityIndex: totalPriorityGroups (first) -> 1 (last)\n // arrayIndex: 0 (first) -> totalPriorityGroups - 1 (last)\n const arrayIndex = totalPriorityGroups - targetIndex;\n const targetGroup = validPriorityGroups[arrayIndex];\n if (targetGroup) {\n targetGroup.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n }\n },\n [groups, totalPriorityGroups]\n );\n\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <div ref={containerRef} className=\"flex flex-col gap-4\">\n {groups.map((group) => {\n const priorityIndex = group.isPriority ? counter-- : 0;\n\n const handlePreviousPriority = priorityIndex\n ? () => {\n // Previous Fire = go to earlier fire (higher index number)\n const prevIndex = priorityIndex + 1;\n if (prevIndex <= totalPriorityGroups) {\n scrollToPriorityGroup(prevIndex);\n }\n }\n : undefined;\n\n const handleNextPriority = priorityIndex\n ? () => {\n // Next Fire = go to later fire (lower index number)\n const nextIndex = priorityIndex - 1;\n if (nextIndex >= 1) {\n scrollToPriorityGroup(nextIndex);\n }\n }\n : undefined;\n\n return (\n <MessageGroup\n key={group.id}\n group={{ ...group, priorityIndex, totalPriorityGroups }}\n onPreviousPriority={handlePreviousPriority}\n onNextPriority={handleNextPriority}\n />\n );\n })}\n </div>\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentTicketProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentTicket({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentTicketProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, FireIcon, MoreIcon, type IconProps } from \"@icons/index\";\n\nexport type EventDetailHeaderProps = {\n icon: ReactElement<IconProps>;\n subject: string;\n from: string;\n prefixTimestamp?: string;\n timestamp: string;\n isPriority: boolean;\n isOpen: boolean;\n isFirstEvent: boolean;\n isSingleEvent: boolean;\n className?: string;\n};\n\nexport function EventDetailHeader({\n icon,\n subject,\n from,\n prefixTimestamp,\n timestamp,\n isPriority,\n isOpen,\n isFirstEvent,\n isSingleEvent,\n className,\n}: EventDetailHeaderProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n data-priority={isPriority}\n >\n <div className=\"flex w-full items-center gap-4\">\n {isFirstEvent && (\n <IconButton\n icon={\n <ArrowIcon\n direction=\"left\"\n size={24}\n className=\"text-neutral-700\"\n />\n }\n aria-label=\"Go back\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n <div className=\"relative shrink-0\">\n <div className=\"relative flex items-center justify-center\">\n {cloneElement(icon, { size: 36 })}\n {!isOpen && isPriority && (\n <FireIcon\n size={16}\n className=\"absolute right-[-12px] bottom-0 text-tertiary-500-variant-2\"\n />\n )}\n </div>\n </div>\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"line-clamp-1 truncate text-sm leading-[1.3] font-bold text-neutral-900\">\n {from}\n </h3>\n <div className=\"line-clamp-1 text-sm leading-[1.3] font-normal text-neutral-900\">\n {subject}\n </div>\n </div>\n <div className=\"leading-[1.2]tracking-[0.12px] flex items-center gap-1 text-right text-xs whitespace-nowrap\">\n {prefixTimestamp != null && (\n <span className=\"font-normal text-neutral-600\">\n {prefixTimestamp}\n </span>\n )}\n <span className=\"font-semibold text-neutral-800\">{timestamp}</span>\n </div>\n <div className=\"flex items-center gap-2\">\n {!isSingleEvent && (\n <IconButton\n icon={\n <ArrowIcon\n size={24}\n className=\"text-neutral-700\"\n direction={isOpen ? \"up\" : \"down\"}\n />\n }\n aria-label=\"Toggle event\"\n className=\"rounded p-1 hover:bg-neutral-100\"\n />\n )}\n {isFirstEvent && (\n <IconButton\n icon={<MoreIcon size={24} className=\"text-neutral-700\" />}\n aria-label=\"Close\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventDetailSkeletonProps = {\n className?: string;\n};\n\nexport function EventDetailSkeleton({ className }: EventDetailSkeletonProps) {\n return (\n <div className={cn(\"w-full\", className)}>\n <EventDetailHeaderSkeleton />\n <EventDetailContentSkeleton />\n </div>\n );\n}\n\ntype EventDetailHeaderSkeletonProps = {\n className?: string;\n};\n\nfunction EventDetailHeaderSkeleton({\n className,\n}: EventDetailHeaderSkeletonProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n >\n <div className=\"flex w-full items-center gap-4\">\n <Skeleton className=\"h-9 w-9 rounded-full\" />\n <div className=\"min-w-0 flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n </div>\n <Skeleton className=\"h-3 w-14\" />\n </div>\n </div>\n );\n}\n\nfunction EventDetailContentSkeleton() {\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex flex-col gap-4 p-4\">\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n </div>\n </div>\n <div className=\"space-y-3\">\n <Skeleton className=\"h-3 w-2/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n <Skeleton className=\"h-3 w-8/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-5/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@components/accordion\";\n\nimport { EventDetailContentCalendar } from \"./event-detail-content-calendar\";\nimport { EventDetailContentEmail } from \"./event-detail-content-email\";\nimport { EventDetailContentMessage } from \"./event-detail-content-message\";\nimport { EventDetailContentTicket } from \"./event-detail-content-ticket\";\nimport { EventDetailHeader } from \"./event-detail-header\";\nimport type { EventDetailItem } from \"./types/event-detail.types\";\n\nexport type EventDetailProps = {\n events: EventDetailItem[];\n};\n\nconst eventContentRenderers = {\n email: (event: Extract<EventDetailItem, { type: \"email\" }>) => (\n <EventDetailContentEmail detail={event.detail} />\n ),\n message: (event: Extract<EventDetailItem, { type: \"message\" }>) => (\n <EventDetailContentMessage detail={event.detail} />\n ),\n ticket: (event: Extract<EventDetailItem, { type: \"ticket\" }>) => (\n <EventDetailContentTicket detail={event.detail} />\n ),\n calendar: (event: Extract<EventDetailItem, { type: \"calendar\" }>) => (\n <EventDetailContentCalendar detail={event.detail} />\n ),\n};\n\nfunction renderEventContent<T extends EventDetailItem[\"type\"]>(\n event: Extract<EventDetailItem, { type: T }>\n) {\n return eventContentRenderers[event.type](event as never);\n}\n\nfunction getEventValue(event: EventDetailItem, index: number) {\n return event.id ?? `${event.type}-${event.timestamp}-${index}`;\n}\n\nexport function EventDetail({ events }: EventDetailProps) {\n if (events.length === 0) return null;\n\n if (events.length === 1) {\n const event = events[0];\n\n return (\n <div className=\"w-full\">\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n prefixTimestamp={event.prefixTimestamp}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isOpen\n isFirstEvent\n isSingleEvent\n className=\"sticky top-0 z-10 border-b border-neutral-400\"\n />\n {renderEventContent(event)}\n </div>\n );\n }\n\n const defaultValue = getEventValue(events[0], 0);\n\n return (\n <Accordion defaultValue={defaultValue}>\n {({ openItems }) => (\n <>\n {events.map((event, index) => {\n const value = getEventValue(event, index);\n const isOpen = openItems.has(value);\n\n return (\n <AccordionItem key={value} value={value}>\n <AccordionTrigger\n value={value}\n className={cn(\n \"sticky top-0 z-10\",\n index > 0 && \"border-y border-neutral-400\"\n )}\n >\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n prefixTimestamp={event.prefixTimestamp}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isFirstEvent={index === 0}\n isSingleEvent={false}\n isOpen={isOpen}\n />\n </AccordionTrigger>\n\n <AccordionContent value={value}>\n {renderEventContent(event)}\n </AccordionContent>\n </AccordionItem>\n );\n })}\n </>\n )}\n </Accordion>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type FilterBarSkeletonProps = {\n itemCount?: number;\n className?: string;\n};\n\nexport function FilterBarSkeleton({\n itemCount = 3,\n className,\n}: FilterBarSkeletonProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <FilterChipSkeleton key={index} />\n ))}\n </div>\n );\n}\n\nfunction FilterChipSkeleton() {\n return (\n <div className=\"flex items-center gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1\">\n <Skeleton className=\"m-0.5 size-4 rounded-full\" />\n <Skeleton className=\"h-3 w-15\" />\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child, index) => cloneElement(child, { key: index }))}\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\nimport { Divider } from \"@patterns/layout/divider\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\nexport type IntegrationBarSkeletonProps = {\n orientation?: IntegrationBarOrientation;\n itemCount?: number;\n className?: string;\n};\n\nexport function IntegrationBarSkeleton({\n orientation = \"vertical\",\n itemCount = 3,\n className,\n}: IntegrationBarSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n const containerClasses = cn(\n \"size-full\",\n isVertical ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n );\n\n const gridClasses = cn(\n \"grid h-full w-full place-items-center gap-4\",\n isVertical ? \"grid-cols-1\" : \"auto-cols-max grid-flow-col\",\n className\n );\n\n const itemClasses = cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\"\n );\n\n const labelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-12 text-[9px]\" : \"w-16 text-xs\"\n );\n\n const addLabelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-8 text-[9px]\" : \"w-10 text-xs\"\n );\n\n return (\n <div className={containerClasses}>\n <div className={gridClasses}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <div key={index} className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={labelSkeletonClasses} />\n </div>\n ))}\n\n <Divider orientation={isVertical ? \"horizontal\" : \"vertical\"} />\n\n <div className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={addLabelSkeletonClasses} />\n </div>\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","import { useState, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onKeyDown,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n onKeyDown={onKeyDown}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport {\n toastStore,\n type ToastPosition,\n type ToastCallbacks,\n type ToastRenderFn,\n} from \"./toast-store\";\n\nexport type ShowToastOptions = {\n /**\n * Toast content - can be a ReactNode or a render function.\n * Render function receives (close, remainingTime) for custom close buttons and countdowns.\n */\n content: ReactNode | ToastRenderFn;\n /** Duration in ms before auto-dismiss (default: 4000) */\n duration?: number;\n /** Position on screen (default: \"bottom-right\") */\n position?: ToastPosition;\n /** If true, the toast will not auto-dismiss and must be closed manually */\n persistent?: boolean;\n /** Called when the toast appears */\n onOpen?: ToastCallbacks[\"onOpen\"];\n /** Called when the user manually dismisses the toast */\n onClose?: ToastCallbacks[\"onClose\"];\n /** Called when the toast disappears due to timeout */\n onAutoClose?: ToastCallbacks[\"onAutoClose\"];\n /** Called when the toast is removed for any reason */\n onDismiss?: ToastCallbacks[\"onDismiss\"];\n /**\n * Unique key for deduplication.\n * If a toast with this key is already active (visible or exiting),\n * a new toast will NOT be created.\n */\n key?: string;\n /**\n * When true and a toast with the same key already exists,\n * update its content and restart its timer instead of ignoring the call.\n * Only applies when `key` is provided.\n * @default false\n */\n refresh?: boolean;\n};\n\nconst DEFAULT_DURATION = 4000;\nconst DEFAULT_POSITION: ToastPosition = \"bottom-right\";\n\nfunction buildCallbacks({\n onOpen,\n onClose,\n onAutoClose,\n onDismiss,\n}: Pick<\n ShowToastOptions,\n \"onOpen\" | \"onClose\" | \"onAutoClose\" | \"onDismiss\"\n>): ToastCallbacks | undefined {\n const hasCallbacks = onOpen || onClose || onAutoClose || onDismiss;\n return hasCallbacks ? { onOpen, onClose, onAutoClose, onDismiss } : undefined;\n}\n\nfunction showToast({\n content,\n duration = DEFAULT_DURATION,\n position = DEFAULT_POSITION,\n persistent,\n onOpen,\n onClose,\n onAutoClose,\n onDismiss,\n key,\n refresh = false,\n}: ShowToastOptions) {\n // Handle deduplication by key\n if (key) {\n const existingId = toastStore.getActiveToastIdByKey(key);\n if (existingId) {\n if (refresh) {\n // Update existing toast content and trigger timer restart\n toastStore.update(existingId, { content, duration });\n }\n // Return existing toast info (whether refreshed or not)\n return {\n id: existingId,\n dismiss: () => toastStore.remove(existingId),\n /** True if the toast already existed and was not created */\n deduplicated: true,\n };\n }\n }\n\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n persistent,\n callbacks: buildCallbacks({ onOpen, onClose, onAutoClose, onDismiss }),\n key,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n deduplicated: false,\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ToastRenderFn | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({ content, ...options });\n}\n","import { Button } from \"@primitives/button\";\nimport { toast, type ShowToastOptions } from \"@components/toast/toast\";\n\nexport type ConfirmationToastProps = ConfirmationTemplateProps & {\n options?: Omit<ShowToastOptions, \"content\">;\n};\n\nexport function ConfirmationToast({\n title,\n description,\n cancelLabel,\n acceptLabel,\n onCancel,\n onAccept,\n options = {},\n}: ConfirmationToastProps) {\n return toast(\n (close) => (\n <ConfirmationTemplate\n title={title}\n description={description}\n cancelLabel={cancelLabel}\n acceptLabel={acceptLabel}\n onCancel={() => onCancel(close)}\n onAccept={() => onAccept(close)}\n />\n ),\n {\n ...options,\n }\n );\n}\n\ntype ConfirmationTemplateProps = {\n title: string;\n description: string;\n cancelLabel: string;\n acceptLabel: string;\n onCancel: (close: () => void) => void;\n onAccept: (close: () => void) => void;\n};\n\nfunction ConfirmationTemplate({\n title,\n description,\n cancelLabel,\n acceptLabel,\n onCancel,\n onAccept,\n}: ConfirmationTemplateProps) {\n return (\n <div className=\"flex w-full max-w-md flex-col justify-center gap-6 rounded-lg bg-white p-6 shadow-xl\">\n <div className=\"flex flex-col justify-center gap-3\">\n <h3 className=\"text-base font-medium text-neutral-900\">{title}</h3>\n <p className=\"text-sm text-neutral-600\">{description}</p>\n </div>\n <div className=\"flex items-center justify-end gap-3\">\n <Button\n className=\"rounded-lg border border-neutral-300 px-4 py-2 text-sm font-medium text-neutral-900 transition-opacity hover:opacity-70\"\n onClick={() => onCancel(close)}\n >\n {cancelLabel}\n </Button>\n <Button\n className=\"rounded-lg bg-error-base px-4 py-2 text-sm font-medium text-white transition-opacity hover:opacity-90\"\n onClick={() => onAccept(close)}\n >\n {acceptLabel}\n </Button>\n </div>\n </div>\n );\n}\n","import { Button } from \"@primitives/button\";\nimport { toast, type ShowToastOptions } from \"@components/toast/toast\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon } from \"@icons/index\";\n\nexport type UndoToastProps = UndoToastTemplateProps & {\n options?: Omit<ShowToastOptions, \"content\">;\n};\n\nexport function UndoToast({\n title,\n subtitle,\n description,\n onUndo,\n onClose,\n options = {},\n}: UndoToastProps) {\n return toast(\n (close) => (\n <UndoToastTemplate\n title={title}\n subtitle={subtitle}\n description={description}\n onUndo={() => onUndo(close)}\n onClose={() => onClose(close)}\n />\n ),\n {\n ...options,\n }\n );\n}\n\ntype UndoToastTemplateProps = {\n title: string;\n subtitle?: string;\n description?: string;\n onUndo: (close: () => void) => void;\n onClose: (close: () => void) => void;\n};\n\nexport function UndoToastTemplate({\n title,\n subtitle,\n description,\n onUndo,\n onClose,\n}: UndoToastTemplateProps) {\n return (\n <div className=\"grid max-w-[400px] min-w-[280px] grid-cols-[auto_1fr] gap-3 rounded-lg bg-success-base p-4\">\n <div className=\"flex flex-col justify-center gap-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-medium text-white\">{title}</span>\n <Button\n className=\"text-xs font-semibold text-white underline transition-colors hover:text-neutral-200\"\n onClick={() => onUndo(close)}\n >\n Undo\n </Button>\n </div>\n {subtitle && (\n <div className=\"line-clamp-2 text-xs font-semibold text-white-alpha-90\">\n {subtitle}\n </div>\n )}\n {description && (\n <div className=\"line-clamp-2 text-xs text-white-alpha-80\">\n {description}\n </div>\n )}\n </div>\n <div className=\"flex items-center justify-center\">\n <IconButton\n icon={\n <CloseIcon\n size={20}\n className=\"text-white\"\n onClick={() => onClose(close)}\n />\n }\n />\n </div>\n </div>\n );\n}\n","import { toast as baseToast } from \"@components/toast/toast\";\n\nimport {\n ConfirmationToast,\n type ConfirmationToastProps,\n} from \"./confimation-toast\";\nimport { UndoToast, type UndoToastProps } from \"./undo-toast\";\n\nexport const toast = Object.assign(baseToast, {\n confirm: (options: ConfirmationToastProps) => {\n return ConfirmationToast(options);\n },\n undo: (options: UndoToastProps) => {\n return UndoToast(options);\n },\n});\n","import type { SVGProps } from \"react\";\n\ntype QtaloImageProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function QtaloImage({\n size = 40,\n className,\n ...props\n}: QtaloImageProps) {\n return (\n <svg\n width={(144 / 40) * size}\n height={size}\n viewBox=\"0 0 144 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n {...props}\n >\n <g clipPath=\"url(#clip0_5796_4580)\">\n <path\n d=\"M65.1904 0.776112C66.9609 0.776112 68.4651 2.20751 68.4651 4.08969C68.4651 5.97188 66.9749 7.34751 65.1904 7.34751H57.3189V35.8778C57.3189 38.0342 55.6045 39.7909 53.6098 39.7909C51.6151 39.7909 49.8305 38.0295 49.8305 35.8778V7.34751H42.0105C40.24 7.34751 38.6797 5.91611 38.6797 4.08969C38.6797 2.26327 40.24 0.776112 42.0105 0.776112H65.2091H65.1904ZM88.0387 10.5403C89.982 10.5403 91.7479 12.1947 91.7479 14.128V36.152C91.7479 38.1364 89.9774 39.7397 88.0387 39.7397C86.1 39.7397 84.3809 38.1364 84.3809 36.152V35.1017C83.9324 36.8072 80.9987 39.7909 76.1637 39.7909C70.0628 39.7909 62.7425 35.1017 62.7425 25.0633C62.7425 15.025 70.1282 10.3869 76.1637 10.3869C80.0971 10.3869 83.2738 12.4922 84.3809 15.0761V14.1466C84.3809 12.2133 86.044 10.5588 88.0387 10.5588V10.5403ZM77.4998 33.5494C80.6017 33.5494 84.7126 31.2908 84.7126 25.0447C84.7126 18.7987 80.6017 16.54 77.4998 16.54C73.842 16.54 70.0114 19.4028 70.0114 25.0447C70.0114 30.6866 73.842 33.5494 77.4998 33.5494ZM105.309 36.0823C105.309 38.0667 103.646 39.67 101.703 39.67C99.7595 39.67 98.045 38.0667 98.045 36.0823V3.58778C98.045 1.65447 99.7081 0 101.703 0C103.698 0 105.309 1.65447 105.309 3.58778V36.1008V36.0823Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M125.262 10.0894C117.129 10.0894 110.523 16.6608 110.523 24.7518C110.523 32.8429 117.129 39.4143 125.262 39.4143C133.395 39.4143 140.001 32.8429 140.001 24.7518C140.001 16.6608 133.395 10.0894 125.262 10.0894ZM130.415 32.2341L130.405 32.2248C128.952 33.2194 127.168 33.8049 125.267 33.8049C120.24 33.8049 116.167 29.7524 116.167 24.7518C116.167 20.3368 119.339 16.6608 123.534 15.8707V24.0966C123.534 24.5288 123.688 24.9424 123.982 25.2677L130.405 32.2248C130.405 32.2248 130.415 32.2248 130.415 32.2202V32.2388V32.2341Z\"\n fill=\"white\"\n />\n <path\n d=\"M33.3918 33.5632C36.6152 30.1473 38.6613 25.5092 38.6613 20.0904C38.6613 8.45336 29.0754 0.380859 19.312 0.380859C9.54853 0.380859 0 8.45336 0 20.095C0 31.7367 9.60459 39.7906 19.312 39.7906C22.5353 39.7906 25.6932 38.9123 28.5195 37.3601L30.2339 39.1214C30.7898 39.6745 31.57 39.9998 32.4015 39.9998C34.1159 39.9998 35.5034 38.6195 35.5034 36.9139C35.5034 36.1378 35.1717 35.4314 34.6718 34.8087L33.3872 33.5306V33.5632H33.3918ZM28.1738 28.3209L24.5674 24.6309C24.0629 24.0267 23.2313 23.7014 22.3998 23.7014C20.6854 23.7014 19.2979 25.1328 19.2979 26.7873C19.2979 27.6145 19.681 28.3395 20.2322 28.8925L23.2827 32.0295C21.9981 32.4757 20.6807 32.7545 19.2933 32.7545C13.1923 32.7545 7.81541 27.6842 7.81541 20.1136C7.81541 12.5431 13.1923 7.47276 19.2933 7.47276C25.3942 7.47276 30.8412 12.5431 30.8412 20.1136C30.8412 23.3714 29.8368 26.1831 28.1691 28.3395V28.3209H28.1738Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M130.428 32.2433L130.418 32.234C128.966 33.2286 127.181 33.8141 125.28 33.8141C120.253 33.8141 116.18 29.7616 116.18 24.761C116.18 20.346 119.352 16.6699 123.547 15.8799V24.1057C123.547 24.538 123.701 24.9516 123.995 25.2769L130.418 32.234C130.418 32.234 130.428 32.234 130.428 32.2294V32.248V32.2433Z\"\n fill=\"#6663FF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_5796_4580\">\n <rect width=\"140\" height=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n"],"x_google_ignoreList":[6,7,8],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["days: CalendarDay[]","freeze","x","seal","apply","construct","getGlobal","_createTrustedTypesPolicy","html","_","_createHooksMap","window","document","isRegexOrFunction","_parseConfig","_checkValidNamespace","_forceRemove","_removeAttribute","_initDocument","_createNodeIterator","_isClobbered","_isNode","hooks","_sanitizeElements","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","_isValidAttribute","DATA_ATTR","ARIA_ATTR","ATTR_WHITESPACE","IS_SCRIPT_OR_DATA","_isBasicCustomElement","CUSTOM_ELEMENT","_sanitizeAttributes","_sanitizeShadowDOM","html: string","TIME_FORMAT_OPTIONS: Intl.DateTimeFormatOptions","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","toasts: ToastItem[]","POSITION_CLASSES: Record<ToastPosition, string>","ANIMATION_TRANSFORMS: Record<ToastPosition, string>","newToasts: AnimatedToast[]","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>","DEFAULT_POSITION: ToastPosition"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../node_modules/dompurify/dist/purify.es.mjs","../node_modules/emojilib/dist/emoji-en-US.json","../node_modules/marked/lib/marked.esm.js","../src/utils/rich-content.ts","../src/utils/timestamp.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/rich-content/rich-content.tsx","../src/components/skeleton/skeleton.tsx","../src/components/toast/toast-store.ts","../src/components/toast/toaster.tsx","../src/patterns/account-info/account-info.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/patterns/bulk-actions/bulk-actions-skeleton.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button-skeleton.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/types/sizes.ts","../src/patterns/event-card/event-card-skeleton.tsx","../src/patterns/event-card/event-card.tsx","../src/patterns/event-detail/event-detail-priority.tsx","../src/patterns/event-detail/event-detail-summary.tsx","../src/patterns/event-detail/event-detail-content-header.tsx","../src/patterns/event-detail/event-detail-content-calendar.tsx","../src/patterns/event-detail/event-detail-content-email.tsx","../src/patterns/event-detail/event-detail-content-message.tsx","../src/patterns/event-detail/event-detail-content-ticket.tsx","../src/patterns/event-detail/event-detail-header.tsx","../src/patterns/event-detail/event-detail-skeleton.tsx","../src/patterns/event-detail/event-detail.tsx","../src/patterns/filter-bar/filter-bar-skeleton.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar-skeleton.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/patterns/integrations-card/integration-item-skeleton.tsx","../src/patterns/integrations-card/integration-card.tsx","../src/patterns/integrations-card/integration-item.tsx","../src/patterns/search-input/search-input.tsx","../src/components/toast/toast.tsx","../src/patterns/toast-api/confimation-toast.tsx","../src/patterns/toast-api/undo-toast.tsx","../src/patterns/toast-api/toast-api.ts","../src/images/qtalo.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","{\n \"😀\": [\n \"grinning_face\",\n \"face\",\n \"smile\",\n \"happy\",\n \"joy\",\n \":D\",\n \"grin\",\n \"smiley\"\n ],\n \"😃\": [\n \"grinning_face_with_big_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"haha\",\n \":D\",\n \":)\",\n \"smile\",\n \"funny\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😄\": [\n \"grinning_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"funny\",\n \"haha\",\n \"laugh\",\n \"like\",\n \":D\",\n \":)\",\n \"smile\",\n \"eye\",\n \"grin\",\n \"mouth\",\n \"open\",\n \"pleased\",\n \"smiley\"\n ],\n \"😁\": [\n \"beaming_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"smile\",\n \"joy\",\n \"kawaii\",\n \"eye\",\n \"grin\",\n \"grinning\"\n ],\n \"😆\": [\n \"grinning_squinting_face\",\n \"happy\",\n \"joy\",\n \"lol\",\n \"satisfied\",\n \"haha\",\n \"face\",\n \"glad\",\n \"XD\",\n \"laugh\",\n \"big\",\n \"closed\",\n \"eyes\",\n \"grin\",\n \"laughing\",\n \"mouth\",\n \"open\",\n \"smile\",\n \"smiling\",\n \"tightly\"\n ],\n \"😅\": [\n \"grinning_face_with_sweat\",\n \"face\",\n \"hot\",\n \"happy\",\n \"laugh\",\n \"sweat\",\n \"smile\",\n \"relief\",\n \"cold\",\n \"exercise\",\n \"mouth\",\n \"open\",\n \"smiling\"\n ],\n \"🤣\": [\n \"rolling_on_the_floor_laughing\",\n \"face\",\n \"rolling\",\n \"floor\",\n \"laughing\",\n \"lol\",\n \"haha\",\n \"rofl\",\n \"laugh\",\n \"rotfl\"\n ],\n \"😂\": [\n \"face_with_tears_of_joy\",\n \"face\",\n \"cry\",\n \"tears\",\n \"weep\",\n \"happy\",\n \"happytears\",\n \"haha\",\n \"crying\",\n \"laugh\",\n \"laughing\",\n \"lol\",\n \"tear\"\n ],\n \"🙂\": [\n \"slightly_smiling_face\",\n \"face\",\n \"smile\",\n \"fine\",\n \"happy\",\n \"this\"\n ],\n \"🙃\": [\n \"upside_down_face\",\n \"face\",\n \"flipped\",\n \"silly\",\n \"smile\",\n \"sarcasm\"\n ],\n \"😉\": [\n \"winking_face\",\n \"face\",\n \"happy\",\n \"mischievous\",\n \"secret\",\n \";)\",\n \"smile\",\n \"eye\",\n \"flirt\",\n \"wink\",\n \"winky\"\n ],\n \"😊\": [\n \"smiling_face_with_smiling_eyes\",\n \"face\",\n \"smile\",\n \"happy\",\n \"flushed\",\n \"crush\",\n \"embarrassed\",\n \"shy\",\n \"joy\",\n \"^^\",\n \"blush\",\n \"eye\",\n \"proud\",\n \"smiley\"\n ],\n \"😇\": [\n \"smiling_face_with_halo\",\n \"face\",\n \"angel\",\n \"heaven\",\n \"halo\",\n \"innocent\",\n \"fairy\",\n \"fantasy\",\n \"smile\",\n \"tale\"\n ],\n \"🥰\": [\n \"smiling_face_with_hearts\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"hearts\",\n \"adore\",\n \"eyes\",\n \"three\"\n ],\n \"😍\": [\n \"smiling_face_with_heart_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"heart\",\n \"eye\",\n \"shaped\",\n \"smile\"\n ],\n \"🤩\": [\n \"star_struck\",\n \"face\",\n \"smile\",\n \"starry\",\n \"eyes\",\n \"grinning\",\n \"excited\",\n \"eyed\",\n \"wow\"\n ],\n \"😘\": [\n \"face_blowing_a_kiss\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"blow\",\n \"flirt\",\n \"heart\",\n \"kissing\",\n \"throwing\"\n ],\n \"😗\": [\n \"kissing_face\",\n \"love\",\n \"like\",\n \"face\",\n \"3\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"duck\",\n \"kissy\",\n \"whistling\"\n ],\n \"☺️\": [\n \"smiling_face\",\n \"face\",\n \"blush\",\n \"massage\",\n \"happiness\",\n \"happy\",\n \"outlined\",\n \"pleased\",\n \"relaxed\",\n \"smile\",\n \"smiley\",\n \"white\"\n ],\n \"😚\": [\n \"kissing_face_with_closed_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\"\n ],\n \"😙\": [\n \"kissing_face_with_smiling_eyes\",\n \"face\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\",\n \"smile\",\n \"whistle\",\n \"whistling\"\n ],\n \"😋\": [\n \"face_savoring_food\",\n \"happy\",\n \"joy\",\n \"tongue\",\n \"smile\",\n \"face\",\n \"silly\",\n \"yummy\",\n \"nom\",\n \"delicious\",\n \"savouring\",\n \"goofy\",\n \"hungry\",\n \"lick\",\n \"licking\",\n \"lips\",\n \"smiling\",\n \"um\",\n \"yum\"\n ],\n \"😛\": [\n \"face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"cheeky\",\n \"out\",\n \"stuck\"\n ],\n \"😜\": [\n \"winking_face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"wink\",\n \"tongue\",\n \"crazy\",\n \"eye\",\n \"joke\",\n \"out\",\n \"silly\",\n \"stuck\"\n ],\n \"🤪\": [\n \"zany_face\",\n \"face\",\n \"goofy\",\n \"crazy\",\n \"excited\",\n \"eye\",\n \"eyes\",\n \"grinning\",\n \"large\",\n \"one\",\n \"small\",\n \"wacky\",\n \"wild\"\n ],\n \"😝\": [\n \"squinting_face_with_tongue\",\n \"face\",\n \"prank\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"horrible\",\n \"out\",\n \"stuck\",\n \"taste\",\n \"tightly\"\n ],\n \"🤑\": [\n \"money_mouth_face\",\n \"face\",\n \"rich\",\n \"dollar\",\n \"money\",\n \"eyes\",\n \"sign\"\n ],\n \"🤗\": [\n \"hugging_face\",\n \"face\",\n \"smile\",\n \"hug\",\n \"hands\",\n \"hugs\",\n \"open\",\n \"smiling\"\n ],\n \"🤭\": [\n \"face_with_hand_over_mouth\",\n \"face\",\n \"whoops\",\n \"shock\",\n \"surprise\",\n \"blushing\",\n \"covering\",\n \"eyes\",\n \"quiet\",\n \"smiling\"\n ],\n \"🤫\": [\n \"shushing_face\",\n \"face\",\n \"quiet\",\n \"shhh\",\n \"closed\",\n \"covering\",\n \"finger\",\n \"hush\",\n \"lips\",\n \"shh\",\n \"shush\",\n \"silence\"\n ],\n \"🤔\": [\n \"thinking_face\",\n \"face\",\n \"hmmm\",\n \"think\",\n \"consider\",\n \"chin\",\n \"shade\",\n \"thinker\",\n \"throwing\",\n \"thumb\"\n ],\n \"🤐\": [\n \"zipper_mouth_face\",\n \"face\",\n \"sealed\",\n \"zipper\",\n \"secret\",\n \"hush\",\n \"lips\",\n \"silence\",\n \"zip\"\n ],\n \"🤨\": [\n \"face_with_raised_eyebrow\",\n \"face\",\n \"distrust\",\n \"scepticism\",\n \"disapproval\",\n \"disbelief\",\n \"surprise\",\n \"suspicious\",\n \"colbert\",\n \"mild\",\n \"one\",\n \"rock\",\n \"skeptic\"\n ],\n \"😐\": [\n \"neutral_face\",\n \"indifference\",\n \"meh\",\n \":|\",\n \"neutral\",\n \"deadpan\",\n \"faced\",\n \"mouth\",\n \"straight\"\n ],\n \"😑\": [\n \"expressionless_face\",\n \"face\",\n \"indifferent\",\n \"-_-\",\n \"meh\",\n \"deadpan\",\n \"inexpressive\",\n \"mouth\",\n \"straight\",\n \"unexpressive\"\n ],\n \"😶\": [\n \"face_without_mouth\",\n \"face\",\n \"blank\",\n \"mouthless\",\n \"mute\",\n \"no\",\n \"quiet\",\n \"silence\",\n \"silent\"\n ],\n \"😏\": [\n \"smirking_face\",\n \"face\",\n \"smile\",\n \"mean\",\n \"prank\",\n \"smug\",\n \"sarcasm\",\n \"flirting\",\n \"sexual\",\n \"smirk\",\n \"suggestive\"\n ],\n \"😒\": [\n \"unamused_face\",\n \"indifference\",\n \"bored\",\n \"straight face\",\n \"serious\",\n \"sarcasm\",\n \"unimpressed\",\n \"skeptical\",\n \"dubious\",\n \"ugh\",\n \"side_eye\",\n \"dissatisfied\",\n \"meh\",\n \"unhappy\"\n ],\n \"🙄\": [\n \"face_with_rolling_eyes\",\n \"face\",\n \"eyeroll\",\n \"frustrated\",\n \"eye\",\n \"roll\"\n ],\n \"😬\": [\n \"grimacing_face\",\n \"face\",\n \"grimace\",\n \"teeth\",\n \"awkward\",\n \"eek\",\n \"nervous\"\n ],\n \"🤥\": [\n \"lying_face\",\n \"face\",\n \"lie\",\n \"pinocchio\",\n \"liar\",\n \"long\",\n \"nose\"\n ],\n \"😌\": [\n \"relieved_face\",\n \"face\",\n \"relaxed\",\n \"phew\",\n \"massage\",\n \"happiness\",\n \"content\",\n \"pleased\",\n \"whew\"\n ],\n \"😔\": [\n \"pensive_face\",\n \"face\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \"dejected\",\n \"sadface\",\n \"sorrowful\"\n ],\n \"😪\": [\n \"sleepy_face\",\n \"face\",\n \"tired\",\n \"rest\",\n \"nap\",\n \"bubble\",\n \"side\",\n \"sleep\",\n \"snot\",\n \"tear\"\n ],\n \"🤤\": [\n \"drooling_face\",\n \"face\",\n \"drool\"\n ],\n \"😴\": [\n \"sleeping_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"night\",\n \"zzz\",\n \"sleep\",\n \"snoring\"\n ],\n \"😷\": [\n \"face_with_medical_mask\",\n \"face\",\n \"sick\",\n \"ill\",\n \"disease\",\n \"covid\",\n \"cold\",\n \"coronavirus\",\n \"doctor\",\n \"medicine\",\n \"surgical\"\n ],\n \"🤒\": [\n \"face_with_thermometer\",\n \"sick\",\n \"temperature\",\n \"thermometer\",\n \"cold\",\n \"fever\",\n \"covid\",\n \"ill\"\n ],\n \"🤕\": [\n \"face_with_head_bandage\",\n \"injured\",\n \"clumsy\",\n \"bandage\",\n \"hurt\",\n \"bandaged\",\n \"injury\"\n ],\n \"🤢\": [\n \"nauseated_face\",\n \"face\",\n \"vomit\",\n \"gross\",\n \"green\",\n \"sick\",\n \"throw up\",\n \"ill\",\n \"barf\",\n \"disgust\",\n \"disgusted\",\n \"green face\"\n ],\n \"🤮\": [\n \"face_vomiting\",\n \"face\",\n \"sick\",\n \"barf\",\n \"ill\",\n \"mouth\",\n \"open\",\n \"puke\",\n \"spew\",\n \"throwing\",\n \"up\",\n \"vomit\"\n ],\n \"🤧\": [\n \"sneezing_face\",\n \"face\",\n \"gesundheit\",\n \"sneeze\",\n \"sick\",\n \"allergy\",\n \"achoo\"\n ],\n \"🥵\": [\n \"hot_face\",\n \"face\",\n \"feverish\",\n \"heat\",\n \"red\",\n \"sweating\",\n \"overheated\",\n \"stroke\"\n ],\n \"🥶\": [\n \"cold_face\",\n \"face\",\n \"blue\",\n \"freezing\",\n \"frozen\",\n \"frostbite\",\n \"icicles\",\n \"ice\"\n ],\n \"🥴\": [\n \"woozy_face\",\n \"face\",\n \"dizzy\",\n \"intoxicated\",\n \"tipsy\",\n \"wavy\",\n \"drunk\",\n \"eyes\",\n \"groggy\",\n \"mouth\",\n \"uneven\"\n ],\n \"😵\": [\n \"dizzy_face\",\n \"spent\",\n \"unconscious\",\n \"xox\",\n \"dizzy\",\n \"cross\",\n \"crossed\",\n \"dead\",\n \"eyes\",\n \"knocked\",\n \"out\",\n \"spiral eyes\"\n ],\n \"🤯\": [\n \"exploding_head\",\n \"face\",\n \"shocked\",\n \"mind\",\n \"blown\",\n \"blowing\",\n \"explosion\",\n \"mad\"\n ],\n \"🤠\": [\n \"cowboy_hat_face\",\n \"face\",\n \"cowgirl\",\n \"hat\"\n ],\n \"🥳\": [\n \"partying_face\",\n \"face\",\n \"celebration\",\n \"woohoo\",\n \"birthday\",\n \"hat\",\n \"horn\",\n \"party\"\n ],\n \"😎\": [\n \"smiling_face_with_sunglasses\",\n \"face\",\n \"cool\",\n \"smile\",\n \"summer\",\n \"beach\",\n \"sunglass\",\n \"best\",\n \"bright\",\n \"eye\",\n \"eyewear\",\n \"friends\",\n \"glasses\",\n \"mutual\",\n \"snapchat\",\n \"sun\",\n \"weather\"\n ],\n \"🤓\": [\n \"nerd_face\",\n \"face\",\n \"nerdy\",\n \"geek\",\n \"dork\",\n \"glasses\",\n \"smiling\"\n ],\n \"🧐\": [\n \"face_with_monocle\",\n \"face\",\n \"stuffy\",\n \"wealthy\",\n \"rich\",\n \"exploration\",\n \"inspection\"\n ],\n \"😕\": [\n \"confused_face\",\n \"face\",\n \"indifference\",\n \"huh\",\n \"weird\",\n \"hmmm\",\n \":/\",\n \"meh\",\n \"nonplussed\",\n \"puzzled\",\n \"s\"\n ],\n \"😟\": [\n \"worried_face\",\n \"face\",\n \"concern\",\n \"nervous\",\n \":(\",\n \"sad\",\n \"sadface\"\n ],\n \"🙁\": [\n \"slightly_frowning_face\",\n \"face\",\n \"frowning\",\n \"disappointed\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"unhappy\"\n ],\n \"☹️\": [\n \"frowning_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"megafrown\",\n \"unhappy\",\n \"white\"\n ],\n \"😮\": [\n \"face_with_open_mouth\",\n \"face\",\n \"surprise\",\n \"impressed\",\n \"wow\",\n \"whoa\",\n \":O\",\n \"surprised\",\n \"sympathy\"\n ],\n \"😯\": [\n \"hushed_face\",\n \"face\",\n \"woo\",\n \"shh\",\n \"silence\",\n \"speechless\",\n \"stunned\",\n \"surprise\",\n \"surprised\"\n ],\n \"😲\": [\n \"astonished_face\",\n \"face\",\n \"xox\",\n \"surprised\",\n \"poisoned\",\n \"amazed\",\n \"drunk face\",\n \"gasp\",\n \"gasping\",\n \"shocked\",\n \"totally\"\n ],\n \"😳\": [\n \"flushed_face\",\n \"face\",\n \"blush\",\n \"shy\",\n \"flattered\",\n \"blushing\",\n \"dazed\",\n \"embarrassed\",\n \"eyes\",\n \"open\",\n \"shame\",\n \"wide\"\n ],\n \"🥺\": [\n \"pleading_face\",\n \"face\",\n \"begging\",\n \"mercy\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"grievance\",\n \"eyes\",\n \"glossy\",\n \"puppy\",\n \"simp\"\n ],\n \"😦\": [\n \"frowning_face_with_open_mouth\",\n \"face\",\n \"aw\",\n \"what\",\n \"frown\",\n \"yawning\"\n ],\n \"😧\": [\n \"anguished_face\",\n \"face\",\n \"stunned\",\n \"nervous\",\n \"pained\"\n ],\n \"😨\": [\n \"fearful_face\",\n \"face\",\n \"scared\",\n \"terrified\",\n \"nervous\",\n \"fear\",\n \"oops\",\n \"shocked\",\n \"surprised\"\n ],\n \"😰\": [\n \"anxious_face_with_sweat\",\n \"face\",\n \"nervous\",\n \"sweat\",\n \"blue\",\n \"cold\",\n \"concerned face\",\n \"mouth\",\n \"open\",\n \"rushed\"\n ],\n \"😥\": [\n \"sad_but_relieved_face\",\n \"face\",\n \"phew\",\n \"sweat\",\n \"nervous\",\n \"disappointed\",\n \"eyebrow\",\n \"whew\"\n ],\n \"😢\": [\n \"crying_face\",\n \"face\",\n \"tears\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \":'(\",\n \"cry\",\n \"tear\"\n ],\n \"😭\": [\n \"loudly_crying_face\",\n \"sobbing\",\n \"face\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \"bawling\",\n \"sob\",\n \"tear\"\n ],\n \"😱\": [\n \"face_screaming_in_fear\",\n \"face\",\n \"munch\",\n \"scared\",\n \"omg\",\n \"alone\",\n \"fearful\",\n \"home\",\n \"horror\",\n \"scream\",\n \"shocked\"\n ],\n \"😖\": [\n \"confounded_face\",\n \"face\",\n \"confused\",\n \"sick\",\n \"unwell\",\n \"oops\",\n \":S\",\n \"mouth\",\n \"quivering\",\n \"scrunched\"\n ],\n \"😣\": [\n \"persevering_face\",\n \"face\",\n \"sick\",\n \"no\",\n \"upset\",\n \"oops\",\n \"eyes\",\n \"helpless\",\n \"persevere\",\n \"scrunched\",\n \"struggling\"\n ],\n \"😞\": [\n \"disappointed_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \":(\",\n \"sadface\"\n ],\n \"😓\": [\n \"downcast_face_with_sweat\",\n \"face\",\n \"hot\",\n \"sad\",\n \"tired\",\n \"exercise\",\n \"cold\",\n \"hard\",\n \"work\"\n ],\n \"😩\": [\n \"weary_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"sad\",\n \"frustrated\",\n \"upset\",\n \"distraught\",\n \"wailing\"\n ],\n \"😫\": [\n \"tired_face\",\n \"sick\",\n \"whine\",\n \"upset\",\n \"frustrated\",\n \"distraught\",\n \"exhausted\",\n \"fed\",\n \"up\"\n ],\n \"🥱\": [\n \"yawning_face\",\n \"tired\",\n \"sleepy\",\n \"bored\",\n \"yawn\"\n ],\n \"😤\": [\n \"face_with_steam_from_nose\",\n \"face\",\n \"gas\",\n \"phew\",\n \"proud\",\n \"pride\",\n \"triumph\",\n \"airing\",\n \"frustrated\",\n \"grievances\",\n \"look\",\n \"mad\",\n \"smug\",\n \"steaming\",\n \"won\"\n ],\n \"😡\": [\n \"pouting_face\",\n \"angry\",\n \"mad\",\n \"hate\",\n \"despise\",\n \"enraged\",\n \"grumpy\",\n \"pout\",\n \"rage\",\n \"red\"\n ],\n \"😠\": [\n \"angry_face\",\n \"mad\",\n \"face\",\n \"annoyed\",\n \"frustrated\",\n \"anger\",\n \"grumpy\"\n ],\n \"🤬\": [\n \"face_with_symbols_on_mouth\",\n \"face\",\n \"swearing\",\n \"cursing\",\n \"cussing\",\n \"profanity\",\n \"expletive\",\n \"covering\",\n \"foul\",\n \"grawlix\",\n \"over\",\n \"serious\"\n ],\n \"😈\": [\n \"smiling_face_with_horns\",\n \"devil\",\n \"horns\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"happy\",\n \"imp\",\n \"purple\",\n \"red devil\",\n \"smile\",\n \"tale\"\n ],\n \"👿\": [\n \"angry_face_with_horns\",\n \"devil\",\n \"angry\",\n \"horns\",\n \"demon\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"goblin\",\n \"imp\",\n \"purple\",\n \"sad\",\n \"tale\"\n ],\n \"💀\": [\n \"skull\",\n \"dead\",\n \"skeleton\",\n \"creepy\",\n \"death\",\n \"dead\",\n \"body\",\n \"danger\",\n \"face\",\n \"fairy\",\n \"grey\",\n \"halloween\",\n \"monster\",\n \"poison\",\n \"tale\"\n ],\n \"☠️\": [\n \"skull_and_crossbones\",\n \"poison\",\n \"danger\",\n \"deadly\",\n \"scary\",\n \"death\",\n \"pirate\",\n \"evil\",\n \"body\",\n \"face\",\n \"halloween\",\n \"monster\"\n ],\n \"💩\": [\n \"pile_of_poo\",\n \"hankey\",\n \"shitface\",\n \"fail\",\n \"turd\",\n \"shit\",\n \"comic\",\n \"crap\",\n \"dirt\",\n \"dog\",\n \"dung\",\n \"face\",\n \"monster\",\n \"poop\",\n \"smiling\",\n \"bad\",\n \"needs_improvement\"\n ],\n \"🤡\": [\n \"clown_face\",\n \"face\",\n \"mock\"\n ],\n \"👹\": [\n \"ogre\",\n \"monster\",\n \"red\",\n \"mask\",\n \"halloween\",\n \"scary\",\n \"creepy\",\n \"devil\",\n \"demon\",\n \"japanese_ogre\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"oni\",\n \"tale\",\n \"shrek\"\n ],\n \"👺\": [\n \"goblin\",\n \"red\",\n \"evil\",\n \"mask\",\n \"monster\",\n \"scary\",\n \"creepy\",\n \"japanese_goblin\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"long\",\n \"nose\",\n \"tale\",\n \"tengu\"\n ],\n \"👻\": [\n \"ghost\",\n \"halloween\",\n \"spooky\",\n \"scary\",\n \"creature\",\n \"disappear\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"ghoul\",\n \"monster\",\n \"tale\"\n ],\n \"👽\": [\n \"alien\",\n \"UFO\",\n \"paul\",\n \"weird\",\n \"outer_space\",\n \"creature\",\n \"et\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"monster\",\n \"tale\",\n \"external\"\n ],\n \"👾\": [\n \"alien_monster\",\n \"game\",\n \"arcade\",\n \"play\",\n \"creature\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"invader\",\n \"retro\",\n \"space\",\n \"tale\",\n \"ufo\",\n \"video\"\n ],\n \"🤖\": [\n \"robot\",\n \"computer\",\n \"machine\",\n \"bot\",\n \"face\",\n \"monster\"\n ],\n \"😺\": [\n \"grinning_cat\",\n \"animal\",\n \"cats\",\n \"happy\",\n \"smile\",\n \"face\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😸\": [\n \"grinning_cat_with_smiling_eyes\",\n \"animal\",\n \"cats\",\n \"smile\",\n \"eye\",\n \"face\",\n \"grin\",\n \"happy\"\n ],\n \"😹\": [\n \"cat_with_tears_of_joy\",\n \"animal\",\n \"cats\",\n \"haha\",\n \"happy\",\n \"tears\",\n \"face\",\n \"laughing\",\n \"tear\"\n ],\n \"😻\": [\n \"smiling_cat_with_heart_eyes\",\n \"animal\",\n \"love\",\n \"like\",\n \"affection\",\n \"cats\",\n \"valentines\",\n \"heart\",\n \"eye\",\n \"face\",\n \"loving cat\",\n \"shaped\",\n \"smile\"\n ],\n \"😼\": [\n \"cat_with_wry_smile\",\n \"animal\",\n \"cats\",\n \"smirk\",\n \"face\",\n \"ironic\",\n \"smirking\"\n ],\n \"😽\": [\n \"kissing_cat\",\n \"animal\",\n \"cats\",\n \"kiss\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"face\"\n ],\n \"🙀\": [\n \"weary_cat\",\n \"animal\",\n \"cats\",\n \"munch\",\n \"scared\",\n \"scream\",\n \"face\",\n \"fear\",\n \"horror\",\n \"oh\",\n \"screaming\",\n \"surprised\"\n ],\n \"😿\": [\n \"crying_cat\",\n \"animal\",\n \"tears\",\n \"weep\",\n \"sad\",\n \"cats\",\n \"upset\",\n \"cry\",\n \"face\",\n \"sad cat\",\n \"tear\"\n ],\n \"😾\": [\n \"pouting_cat\",\n \"animal\",\n \"cats\",\n \"face\",\n \"grumpy\"\n ],\n \"🙈\": [\n \"see_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"haha\",\n \"blind\",\n \"covering\",\n \"eyes\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"ignore\",\n \"mizaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙉\": [\n \"hear_no_evil_monkey\",\n \"animal\",\n \"monkey\",\n \"nature\",\n \"covering\",\n \"deaf\",\n \"ears\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"kikazaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙊\": [\n \"speak_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"omg\",\n \"covering\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"hush\",\n \"iwazaru\",\n \"mouth\",\n \"mute\",\n \"not\",\n \"no speaking\",\n \"prohibited\",\n \"ignore\"\n ],\n \"💋\": [\n \"kiss_mark\",\n \"face\",\n \"lips\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"kissing\",\n \"lipstick\",\n \"romance\"\n ],\n \"💌\": [\n \"love_letter\",\n \"email\",\n \"like\",\n \"affection\",\n \"envelope\",\n \"valentines\",\n \"heart\",\n \"mail\",\n \"note\",\n \"romance\"\n ],\n \"💘\": [\n \"heart_with_arrow\",\n \"love\",\n \"like\",\n \"heart\",\n \"affection\",\n \"valentines\",\n \"cupid\",\n \"lovestruck\",\n \"romance\"\n ],\n \"💝\": [\n \"heart_with_ribbon\",\n \"love\",\n \"valentines\",\n \"box\",\n \"chocolate\",\n \"chocolates\",\n \"gift\",\n \"valentine\"\n ],\n \"💖\": [\n \"sparkling_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"excited\",\n \"sparkle\",\n \"sparkly\",\n \"stars heart\"\n ],\n \"💗\": [\n \"growing_heart\",\n \"like\",\n \"love\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"excited\",\n \"heartpulse\",\n \"multiple\",\n \"nervous\",\n \"pulse\",\n \"triple\"\n ],\n \"💓\": [\n \"beating_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"heart\",\n \"alarm\",\n \"heartbeat\",\n \"pulsating\",\n \"wifi\"\n ],\n \"💞\": [\n \"revolving_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"two\"\n ],\n \"💕\": [\n \"two_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"pink\",\n \"small\"\n ],\n \"💟\": [\n \"heart_decoration\",\n \"purple-square\",\n \"love\",\n \"like\"\n ],\n \"❣️\": [\n \"heart_exclamation\",\n \"decoration\",\n \"love\",\n \"above\",\n \"an\",\n \"as\",\n \"dot\",\n \"heavy\",\n \"mark\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"💔\": [\n \"broken_heart\",\n \"sad\",\n \"sorry\",\n \"break\",\n \"heart\",\n \"heartbreak\",\n \"breaking\",\n \"brokenhearted\"\n ],\n \"❤️\": [\n \"red_heart\",\n \"love\",\n \"like\",\n \"valentines\",\n \"black\",\n \"heavy\"\n ],\n \"🧡\": [\n \"orange_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\"\n ],\n \"💛\": [\n \"yellow_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bf\",\n \"gold\",\n \"snapchat\"\n ],\n \"💚\": [\n \"green_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"nct\"\n ],\n \"💙\": [\n \"blue_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"brand\",\n \"neutral\"\n ],\n \"💜\": [\n \"purple_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bts\",\n \"emoji\"\n ],\n \"🤎\": [\n \"brown_heart\",\n \"coffee\"\n ],\n \"🖤\": [\n \"black_heart\",\n \"evil\",\n \"dark\",\n \"wicked\"\n ],\n \"🤍\": [\n \"white_heart\",\n \"pure\"\n ],\n \"💯\": [\n \"hundred_points\",\n \"score\",\n \"perfect\",\n \"numbers\",\n \"century\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"pass\",\n \"hundred\",\n \"100\",\n \"full\",\n \"keep\",\n \"symbol\"\n ],\n \"💢\": [\n \"anger_symbol\",\n \"angry\",\n \"mad\",\n \"comic\",\n \"pop\",\n \"sign\",\n \"vein\"\n ],\n \"💥\": [\n \"collision\",\n \"bomb\",\n \"explode\",\n \"explosion\",\n \"blown\",\n \"bang\",\n \"boom\",\n \"comic\",\n \"impact\",\n \"red\",\n \"spark\",\n \"symbol\",\n \"break\"\n ],\n \"💫\": [\n \"dizzy\",\n \"star\",\n \"sparkle\",\n \"shoot\",\n \"magic\",\n \"circle\",\n \"comic\",\n \"symbol\",\n \"animations\",\n \"transitions\"\n ],\n \"💦\": [\n \"sweat_droplets\",\n \"water\",\n \"drip\",\n \"oops\",\n \"comic\",\n \"drops\",\n \"plewds\",\n \"splashing\",\n \"symbol\",\n \"workout\"\n ],\n \"💨\": [\n \"dashing_away\",\n \"wind\",\n \"air\",\n \"fast\",\n \"shoo\",\n \"fart\",\n \"smoke\",\n \"puff\",\n \"blow\",\n \"comic\",\n \"dash\",\n \"gust\",\n \"running\",\n \"steam\",\n \"symbol\",\n \"vaping\"\n ],\n \"🕳️\": [\n \"hole\",\n \"embarrassing\"\n ],\n \"💣\": [\n \"bomb\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"terrorism\",\n \"comic\"\n ],\n \"💬\": [\n \"speech_balloon\",\n \"bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"chat\",\n \"comic\",\n \"comment\",\n \"dialog\",\n \"text\",\n \"literals\"\n ],\n \"👁️🗨️\": [\n \"eye_in_speech_bubble\",\n \"info\",\n \"am\",\n \"i\",\n \"witness\"\n ],\n \"🗨️\": [\n \"left_speech_bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"dialog\"\n ],\n \"🗯️\": [\n \"right_anger_bubble\",\n \"caption\",\n \"speech\",\n \"thinking\",\n \"mad\",\n \"angry\",\n \"balloon\",\n \"zag\",\n \"zig\"\n ],\n \"💭\": [\n \"thought_balloon\",\n \"bubble\",\n \"cloud\",\n \"speech\",\n \"thinking\",\n \"dream\",\n \"comic\"\n ],\n \"💤\": [\n \"zzz\",\n \"sleepy\",\n \"tired\",\n \"dream\",\n \"bedtime\",\n \"boring\",\n \"comic\",\n \"sign\",\n \"sleep\",\n \"sleeping\",\n \"symbol\"\n ],\n \"👋\": [\n \"waving_hand\",\n \"wave\",\n \"hands\",\n \"gesture\",\n \"goodbye\",\n \"solong\",\n \"farewell\",\n \"hello\",\n \"hi\",\n \"palm\",\n \"body\",\n \"sign\"\n ],\n \"🤚\": [\n \"raised_back_of_hand\",\n \"fingers\",\n \"raised\",\n \"backhand\",\n \"body\"\n ],\n \"🖐️\": [\n \"hand_with_fingers_splayed\",\n \"hand\",\n \"fingers\",\n \"palm\",\n \"body\",\n \"finger\",\n \"five\",\n \"raised\"\n ],\n \"✋\": [\n \"raised_hand\",\n \"fingers\",\n \"stop\",\n \"highfive\",\n \"palm\",\n \"ban\",\n \"body\",\n \"five\",\n \"high\"\n ],\n \"🖖\": [\n \"vulcan_salute\",\n \"hand\",\n \"fingers\",\n \"spock\",\n \"star trek\",\n \"between\",\n \"body\",\n \"finger\",\n \"middle\",\n \"part\",\n \"prosper\",\n \"raised\",\n \"ring\",\n \"split\"\n ],\n \"👌\": [\n \"ok_hand\",\n \"fingers\",\n \"limbs\",\n \"perfect\",\n \"ok\",\n \"okay\",\n \"body\",\n \"sign\"\n ],\n \"🤏\": [\n \"pinching_hand\",\n \"tiny\",\n \"small\",\n \"size\",\n \"amount\",\n \"body\",\n \"little\"\n ],\n \"✌️\": [\n \"victory_hand\",\n \"fingers\",\n \"ohyeah\",\n \"hand\",\n \"peace\",\n \"victory\",\n \"two\",\n \"air\",\n \"body\",\n \"quotes\",\n \"sign\",\n \"v\"\n ],\n \"🤞\": [\n \"crossed_fingers\",\n \"good\",\n \"lucky\",\n \"body\",\n \"cross\",\n \"finger\",\n \"hand\",\n \"hopeful\",\n \"index\",\n \"luck\",\n \"middle\"\n ],\n \"🤟\": [\n \"love_you_gesture\",\n \"hand\",\n \"fingers\",\n \"gesture\",\n \"body\",\n \"i\",\n \"ily\",\n \"sign\"\n ],\n \"🤘\": [\n \"sign_of_the_horns\",\n \"hand\",\n \"fingers\",\n \"evil_eye\",\n \"sign_of_horns\",\n \"rock_on\",\n \"body\",\n \"devil\",\n \"finger\",\n \"heavy\",\n \"metal\"\n ],\n \"🤙\": [\n \"call_me_hand\",\n \"hands\",\n \"gesture\",\n \"shaka\",\n \"body\",\n \"phone\",\n \"sign\"\n ],\n \"👈\": [\n \"backhand_index_pointing_left\",\n \"direction\",\n \"fingers\",\n \"hand\",\n \"left\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👉\": [\n \"backhand_index_pointing_right\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"right\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👆\": [\n \"backhand_index_pointing_up\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"middle\",\n \"point\",\n \"white\"\n ],\n \"🖕\": [\n \"middle_finger\",\n \"hand\",\n \"fingers\",\n \"rude\",\n \"middle\",\n \"flipping\",\n \"bird\",\n \"body\",\n \"dito\",\n \"extended\",\n \"fu\",\n \"medio\",\n \"middle finger\",\n \"reversed\"\n ],\n \"👇\": [\n \"backhand_index_pointing_down\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"down\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"☝️\": [\n \"index_pointing_up\",\n \"hand\",\n \"fingers\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"point\",\n \"secret\",\n \"white\"\n ],\n \"👍\": [\n \"thumbs_up\",\n \"thumbsup\",\n \"yes\",\n \"awesome\",\n \"good\",\n \"agree\",\n \"accept\",\n \"cool\",\n \"hand\",\n \"like\",\n \"+1\",\n \"approve\",\n \"body\",\n \"ok\",\n \"sign\",\n \"thumb\"\n ],\n \"👎\": [\n \"thumbs_down\",\n \"thumbsdown\",\n \"no\",\n \"dislike\",\n \"hand\",\n \"-1\",\n \"bad\",\n \"body\",\n \"bury\",\n \"disapprove\",\n \"sign\",\n \"thumb\"\n ],\n \"✊\": [\n \"raised_fist\",\n \"fingers\",\n \"hand\",\n \"grasp\",\n \"body\",\n \"clenched\",\n \"power\",\n \"pump\",\n \"punch\"\n ],\n \"👊\": [\n \"oncoming_fist\",\n \"angry\",\n \"violence\",\n \"fist\",\n \"hit\",\n \"attack\",\n \"hand\",\n \"body\",\n \"bro\",\n \"brofist\",\n \"bump\",\n \"clenched\",\n \"closed\",\n \"facepunch\",\n \"fisted\",\n \"punch\",\n \"sign\"\n ],\n \"🤛\": [\n \"left_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"leftwards\"\n ],\n \"🤜\": [\n \"right_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"rightwards\",\n \"right fist\"\n ],\n \"👏\": [\n \"clapping_hands\",\n \"hands\",\n \"praise\",\n \"applause\",\n \"congrats\",\n \"yay\",\n \"body\",\n \"clap\",\n \"golf\",\n \"hand\",\n \"round\",\n \"sign\"\n ],\n \"🙌\": [\n \"raising_hands\",\n \"gesture\",\n \"hooray\",\n \"yea\",\n \"celebration\",\n \"hands\",\n \"air\",\n \"arms\",\n \"banzai\",\n \"body\",\n \"both\",\n \"festivus\",\n \"hallelujah\",\n \"hand\",\n \"miracle\",\n \"person\",\n \"praise\",\n \"raised\",\n \"two\"\n ],\n \"👐\": [\n \"open_hands\",\n \"fingers\",\n \"butterfly\",\n \"hands\",\n \"open\",\n \"body\",\n \"hand\",\n \"hug\",\n \"jazz\",\n \"sign\"\n ],\n \"🤲\": [\n \"palms_up_together\",\n \"hands\",\n \"gesture\",\n \"cupped\",\n \"prayer\",\n \"body\",\n \"dua\",\n \"facing\"\n ],\n \"🤝\": [\n \"handshake\",\n \"agreement\",\n \"shake\",\n \"deal\",\n \"hand\",\n \"hands\",\n \"meeting\",\n \"shaking\"\n ],\n \"🙏\": [\n \"folded_hands\",\n \"please\",\n \"hope\",\n \"wish\",\n \"namaste\",\n \"highfive\",\n \"pray\",\n \"thank you\",\n \"thanks\",\n \"appreciate\",\n \"ask\",\n \"body\",\n \"bow\",\n \"five\",\n \"gesture\",\n \"hand\",\n \"high\",\n \"person\",\n \"prayer\",\n \"pressed\",\n \"together\"\n ],\n \"✍️\": [\n \"writing_hand\",\n \"lower_left_ballpoint_pen\",\n \"stationery\",\n \"write\",\n \"compose\",\n \"body\"\n ],\n \"💅\": [\n \"nail_polish\",\n \"nail_care\",\n \"beauty\",\n \"manicure\",\n \"finger\",\n \"fashion\",\n \"nail\",\n \"slay\",\n \"body\",\n \"cosmetics\",\n \"fingers\",\n \"nonchalant\"\n ],\n \"🤳\": [\n \"selfie\",\n \"camera\",\n \"phone\",\n \"arm\",\n \"hand\"\n ],\n \"💪\": [\n \"flexed_biceps\",\n \"arm\",\n \"flex\",\n \"hand\",\n \"summer\",\n \"strong\",\n \"biceps\",\n \"bicep\",\n \"body\",\n \"comic\",\n \"feats\",\n \"flexing\",\n \"muscle\",\n \"muscles\",\n \"strength\",\n \"workout\"\n ],\n \"🦾\": [\n \"mechanical_arm\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦿\": [\n \"mechanical_leg\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦵\": [\n \"leg\",\n \"kick\",\n \"limb\",\n \"body\"\n ],\n \"🦶\": [\n \"foot\",\n \"kick\",\n \"stomp\",\n \"body\"\n ],\n \"👂\": [\n \"ear\",\n \"face\",\n \"hear\",\n \"sound\",\n \"listen\",\n \"body\",\n \"ears\",\n \"hearing\",\n \"listening\",\n \"nose\"\n ],\n \"🦻\": [\n \"ear_with_hearing_aid\",\n \"accessibility\",\n \"body\",\n \"hard\"\n ],\n \"👃\": [\n \"nose\",\n \"smell\",\n \"sniff\",\n \"body\",\n \"smelling\",\n \"sniffing\",\n \"stinky\"\n ],\n \"🧠\": [\n \"brain\",\n \"smart\",\n \"intelligent\",\n \"body\",\n \"organ\"\n ],\n \"🦷\": [\n \"tooth\",\n \"teeth\",\n \"dentist\",\n \"body\"\n ],\n \"🦴\": [\n \"bone\",\n \"skeleton\",\n \"body\"\n ],\n \"👀\": [\n \"eyes\",\n \"look\",\n \"watch\",\n \"stalk\",\n \"peek\",\n \"see\",\n \"body\",\n \"eye\",\n \"eyeballs\",\n \"face\",\n \"shifty\",\n \"wide\"\n ],\n \"👁️\": [\n \"eye\",\n \"face\",\n \"look\",\n \"see\",\n \"watch\",\n \"stare\",\n \"body\",\n \"single\"\n ],\n \"👅\": [\n \"tongue\",\n \"mouth\",\n \"playful\",\n \"body\",\n \"out\",\n \"taste\"\n ],\n \"👄\": [\n \"mouth\",\n \"kiss\",\n \"body\",\n \"kissing\",\n \"lips\"\n ],\n \"👶\": [\n \"baby\",\n \"child\",\n \"boy\",\n \"girl\",\n \"toddler\",\n \"newborn\",\n \"young\"\n ],\n \"🧒\": [\n \"child\",\n \"gender-neutral\",\n \"young\",\n \"boy\",\n \"gender\",\n \"girl\",\n \"inclusive\",\n \"neutral\",\n \"person\",\n \"unspecified\"\n ],\n \"👦\": [\n \"boy\",\n \"man\",\n \"male\",\n \"guy\",\n \"teenager\",\n \"child\",\n \"young\"\n ],\n \"👧\": [\n \"girl\",\n \"female\",\n \"woman\",\n \"teenager\",\n \"child\",\n \"maiden\",\n \"virgin\",\n \"virgo\",\n \"young\",\n \"zodiac\"\n ],\n \"🧑\": [\n \"person\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"inclusive\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👱\": [\n \"person_blond_hair\",\n \"hairstyle\",\n \"blonde\",\n \"haired\",\n \"man\"\n ],\n \"👨\": [\n \"man\",\n \"mustache\",\n \"father\",\n \"dad\",\n \"guy\",\n \"classy\",\n \"sir\",\n \"moustache\",\n \"adult\",\n \"male\",\n \"men\"\n ],\n \"🧔\": [\n \"man_beard\",\n \"person\",\n \"bewhiskered\",\n \"bearded\"\n ],\n \"👨🦰\": [\n \"man_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"ginger\",\n \"haired\",\n \"male\",\n \"men\",\n \"redhead\"\n ],\n \"👨🦱\": [\n \"man_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨🦳\": [\n \"man_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨🦲\": [\n \"man_bald\",\n \"hairless\",\n \"adult\",\n \"hair\",\n \"male\",\n \"men\",\n \"no\"\n ],\n \"👩\": [\n \"woman\",\n \"female\",\n \"girls\",\n \"lady\",\n \"adult\",\n \"women\",\n \"yellow\"\n ],\n \"👩🦰\": [\n \"woman_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"ginger\",\n \"haired\",\n \"redhead\",\n \"women\"\n ],\n \"🧑🦰\": [\n \"person_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦱\": [\n \"woman_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑🦱\": [\n \"person_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦳\": [\n \"woman_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑🦳\": [\n \"person_white_hair\",\n \"elder\",\n \"old\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩🦲\": [\n \"woman_bald\",\n \"hairless\",\n \"adult\",\n \"female\",\n \"hair\",\n \"no\",\n \"women\"\n ],\n \"🧑🦲\": [\n \"person_bald\",\n \"hairless\",\n \"adult\",\n \"gender\",\n \"hair\",\n \"no\",\n \"unspecified\"\n ],\n \"👱♀️\": [\n \"woman_blond_hair\",\n \"woman\",\n \"female\",\n \"girl\",\n \"blonde\",\n \"person\",\n \"haired\",\n \"women\"\n ],\n \"👱♂️\": [\n \"man_blond_hair\",\n \"man\",\n \"male\",\n \"boy\",\n \"blonde\",\n \"guy\",\n \"person\",\n \"haired\",\n \"men\"\n ],\n \"🧓\": [\n \"older_person\",\n \"human\",\n \"elder\",\n \"senior\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"old\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👴\": [\n \"old_man\",\n \"human\",\n \"male\",\n \"men\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandpa\",\n \"older\"\n ],\n \"👵\": [\n \"old_woman\",\n \"human\",\n \"female\",\n \"women\",\n \"lady\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandma\",\n \"nanna\",\n \"older\"\n ],\n \"🙍\": [\n \"person_frowning\",\n \"worried\",\n \"frown\",\n \"gesture\",\n \"sad\",\n \"woman\"\n ],\n \"🙍♂️\": [\n \"man_frowning\",\n \"male\",\n \"boy\",\n \"man\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"men\"\n ],\n \"🙍♀️\": [\n \"woman_frowning\",\n \"female\",\n \"girl\",\n \"woman\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"women\"\n ],\n \"🙎\": [\n \"person_pouting\",\n \"upset\",\n \"blank\",\n \"face\",\n \"fed\",\n \"gesture\",\n \"look\",\n \"up\"\n ],\n \"🙎♂️\": [\n \"man_pouting\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"men\"\n ],\n \"🙎♀️\": [\n \"woman_pouting\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"women\"\n ],\n \"🙅\": [\n \"person_gesturing_no\",\n \"decline\",\n \"arms\",\n \"deal\",\n \"denied\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"x\"\n ],\n \"🙅♂️\": [\n \"man_gesturing_no\",\n \"male\",\n \"boy\",\n \"man\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"men\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\"\n ],\n \"🙅♀️\": [\n \"woman_gesturing_no\",\n \"female\",\n \"girl\",\n \"woman\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"women\"\n ],\n \"🙆\": [\n \"person_gesturing_ok\",\n \"agree\",\n \"ballerina\",\n \"face\",\n \"gesture\",\n \"hand\",\n \"hands\",\n \"head\"\n ],\n \"🙆♂️\": [\n \"man_gesturing_ok\",\n \"men\",\n \"boy\",\n \"male\",\n \"blue\",\n \"human\",\n \"man\",\n \"gesture\",\n \"hand\"\n ],\n \"🙆♀️\": [\n \"woman_gesturing_ok\",\n \"women\",\n \"girl\",\n \"female\",\n \"pink\",\n \"human\",\n \"woman\",\n \"gesture\",\n \"hand\"\n ],\n \"💁\": [\n \"person_tipping_hand\",\n \"information\",\n \"attendant\",\n \"bellhop\",\n \"concierge\",\n \"desk\",\n \"female\",\n \"flick\",\n \"girl\",\n \"hair\",\n \"help\",\n \"sassy\",\n \"woman\",\n \"women\"\n ],\n \"💁♂️\": [\n \"man_tipping_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"men\",\n \"sassy\"\n ],\n \"💁♀️\": [\n \"woman_tipping_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"sassy\",\n \"women\"\n ],\n \"🙋\": [\n \"person_raising_hand\",\n \"question\",\n \"answering\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"up\"\n ],\n \"🙋♂️\": [\n \"man_raising_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"happy\",\n \"men\",\n \"one\",\n \"raised\"\n ],\n \"🙋♀️\": [\n \"woman_raising_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"women\"\n ],\n \"🧏\": [\n \"deaf_person\",\n \"accessibility\",\n \"ear\",\n \"hear\"\n ],\n \"🧏♂️\": [\n \"deaf_man\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"🧏♀️\": [\n \"deaf_woman\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🙇\": [\n \"person_bowing\",\n \"respectiful\",\n \"apology\",\n \"bow\",\n \"boy\",\n \"cute\",\n \"deeply\",\n \"dogeza\",\n \"gesture\",\n \"man\",\n \"massage\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇♂️\": [\n \"man_bowing\",\n \"man\",\n \"male\",\n \"boy\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"men\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇♀️\": [\n \"woman_bowing\",\n \"woman\",\n \"female\",\n \"girl\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"respect\",\n \"sorry\",\n \"thanks\",\n \"women\"\n ],\n \"🤦\": [\n \"person_facepalming\",\n \"disappointed\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"head\",\n \"hitting\",\n \"palm\",\n \"picard\",\n \"smh\"\n ],\n \"🤦♂️\": [\n \"man_facepalming\",\n \"man\",\n \"male\",\n \"boy\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"men\",\n \"palm\"\n ],\n \"🤦♀️\": [\n \"woman_facepalming\",\n \"woman\",\n \"female\",\n \"girl\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"palm\",\n \"women\"\n ],\n \"🤷\": [\n \"person_shrugging\",\n \"regardless\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"shruggie\",\n \"¯\\\\\"\n ],\n \"🤷♂️\": [\n \"man_shrugging\",\n \"man\",\n \"male\",\n \"boy\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"men\",\n \"shrug\"\n ],\n \"🤷♀️\": [\n \"woman_shrugging\",\n \"woman\",\n \"female\",\n \"girl\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"women\"\n ],\n \"🧑⚕️\": [\n \"health_worker\",\n \"hospital\",\n \"dentist\",\n \"doctor\",\n \"healthcare\",\n \"md\",\n \"nurse\",\n \"physician\",\n \"professional\",\n \"therapist\"\n ],\n \"👨⚕️\": [\n \"man_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"man\",\n \"human\",\n \"dentist\",\n \"male\",\n \"md\",\n \"men\",\n \"physician\",\n \"professional\"\n ],\n \"👩⚕️\": [\n \"woman_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"woman\",\n \"human\",\n \"dentist\",\n \"female\",\n \"md\",\n \"physician\",\n \"professional\",\n \"women\"\n ],\n \"🧑🎓\": [\n \"student\",\n \"learn\",\n \"education\",\n \"graduate\",\n \"pupil\",\n \"school\"\n ],\n \"👨🎓\": [\n \"man_student\",\n \"graduate\",\n \"man\",\n \"human\",\n \"education\",\n \"graduation\",\n \"male\",\n \"men\",\n \"pupil\",\n \"school\"\n ],\n \"👩🎓\": [\n \"woman_student\",\n \"graduate\",\n \"woman\",\n \"human\",\n \"education\",\n \"female\",\n \"graduation\",\n \"pupil\",\n \"school\",\n \"women\"\n ],\n \"🧑🏫\": [\n \"teacher\",\n \"professor\",\n \"education\",\n \"educator\",\n \"instructor\"\n ],\n \"👨🏫\": [\n \"man_teacher\",\n \"instructor\",\n \"professor\",\n \"man\",\n \"human\",\n \"education\",\n \"educator\",\n \"male\",\n \"men\",\n \"school\"\n ],\n \"👩🏫\": [\n \"woman_teacher\",\n \"instructor\",\n \"professor\",\n \"woman\",\n \"human\",\n \"education\",\n \"educator\",\n \"female\",\n \"school\",\n \"women\"\n ],\n \"🧑⚖️\": [\n \"judge\",\n \"law\",\n \"court\",\n \"justice\",\n \"scales\"\n ],\n \"👨⚖️\": [\n \"man_judge\",\n \"justice\",\n \"court\",\n \"man\",\n \"human\",\n \"law\",\n \"male\",\n \"men\",\n \"scales\"\n ],\n \"👩⚖️\": [\n \"woman_judge\",\n \"justice\",\n \"court\",\n \"woman\",\n \"human\",\n \"female\",\n \"law\",\n \"scales\",\n \"women\"\n ],\n \"🧑🌾\": [\n \"farmer\",\n \"crops\",\n \"farm\",\n \"farming\",\n \"gardener\",\n \"rancher\",\n \"worker\"\n ],\n \"👨🌾\": [\n \"man_farmer\",\n \"rancher\",\n \"gardener\",\n \"man\",\n \"human\",\n \"farm\",\n \"farming\",\n \"male\",\n \"men\",\n \"worker\"\n ],\n \"👩🌾\": [\n \"woman_farmer\",\n \"rancher\",\n \"gardener\",\n \"woman\",\n \"human\",\n \"farm\",\n \"farming\",\n \"female\",\n \"women\",\n \"worker\"\n ],\n \"🧑🍳\": [\n \"cook\",\n \"food\",\n \"kitchen\",\n \"culinary\",\n \"chef\",\n \"cooking\",\n \"service\"\n ],\n \"👨🍳\": [\n \"man_cook\",\n \"chef\",\n \"man\",\n \"human\",\n \"cooking\",\n \"food\",\n \"male\",\n \"men\",\n \"service\"\n ],\n \"👩🍳\": [\n \"woman_cook\",\n \"chef\",\n \"woman\",\n \"human\",\n \"cooking\",\n \"female\",\n \"food\",\n \"service\",\n \"women\"\n ],\n \"🧑🔧\": [\n \"mechanic\",\n \"worker\",\n \"technician\",\n \"electrician\",\n \"person\",\n \"plumber\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👨🔧\": [\n \"man_mechanic\",\n \"plumber\",\n \"man\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"male\",\n \"men\",\n \"person\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👩🔧\": [\n \"woman_mechanic\",\n \"plumber\",\n \"woman\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"female\",\n \"person\",\n \"repair\",\n \"tradesperson\",\n \"women\"\n ],\n \"🧑🏭\": [\n \"factory_worker\",\n \"labor\",\n \"assembly\",\n \"industrial\",\n \"welder\"\n ],\n \"👨🏭\": [\n \"man_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"man\",\n \"human\",\n \"male\",\n \"men\",\n \"welder\"\n ],\n \"👩🏭\": [\n \"woman_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"woman\",\n \"human\",\n \"female\",\n \"welder\",\n \"women\"\n ],\n \"🧑💼\": [\n \"office_worker\",\n \"business\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"clerk\",\n \"manager\"\n ],\n \"👨💼\": [\n \"man_office_worker\",\n \"business\",\n \"manager\",\n \"man\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businessman\",\n \"ceo\",\n \"clerk\",\n \"male\",\n \"men\"\n ],\n \"👩💼\": [\n \"woman_office_worker\",\n \"business\",\n \"manager\",\n \"woman\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businesswoman\",\n \"ceo\",\n \"clerk\",\n \"female\",\n \"women\"\n ],\n \"🧑🔬\": [\n \"scientist\",\n \"chemistry\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"lab\",\n \"mathematician\",\n \"physicist\",\n \"technician\"\n ],\n \"👨🔬\": [\n \"man_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"man\",\n \"human\",\n \"lab\",\n \"male\",\n \"mathematician\",\n \"men\",\n \"research\",\n \"technician\"\n ],\n \"👩🔬\": [\n \"woman_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"woman\",\n \"human\",\n \"female\",\n \"lab\",\n \"mathematician\",\n \"research\",\n \"technician\",\n \"women\"\n ],\n \"🧑💻\": [\n \"technologist\",\n \"computer\",\n \"coder\",\n \"engineer\",\n \"laptop\",\n \"software\",\n \"technology\",\n \"developer\"\n ],\n \"👨💻\": [\n \"man_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"man\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"male\",\n \"men\",\n \"technology\"\n ],\n \"👩💻\": [\n \"woman_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"woman\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"female\",\n \"technology\",\n \"women\"\n ],\n \"🧑🎤\": [\n \"singer\",\n \"song\",\n \"artist\",\n \"performer\",\n \"actor\",\n \"entertainer\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"rockstar\",\n \"star\"\n ],\n \"👨🎤\": [\n \"man_singer\",\n \"rockstar\",\n \"entertainer\",\n \"man\",\n \"human\",\n \"actor\",\n \"aladdin\",\n \"bowie\",\n \"male\",\n \"men\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"sane\",\n \"star\"\n ],\n \"👩🎤\": [\n \"woman_singer\",\n \"rockstar\",\n \"entertainer\",\n \"woman\",\n \"human\",\n \"actor\",\n \"female\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"star\",\n \"women\"\n ],\n \"🧑🎨\": [\n \"artist\",\n \"painting\",\n \"draw\",\n \"creativity\",\n \"art\",\n \"paint\",\n \"painter\",\n \"palette\"\n ],\n \"👨🎨\": [\n \"man_artist\",\n \"painter\",\n \"man\",\n \"human\",\n \"art\",\n \"male\",\n \"men\",\n \"paint\",\n \"palette\"\n ],\n \"👩🎨\": [\n \"woman_artist\",\n \"painter\",\n \"woman\",\n \"human\",\n \"art\",\n \"female\",\n \"paint\",\n \"palette\",\n \"women\"\n ],\n \"🧑✈️\": [\n \"pilot\",\n \"fly\",\n \"plane\",\n \"airplane\",\n \"aviation\",\n \"aviator\"\n ],\n \"👨✈️\": [\n \"man_pilot\",\n \"aviator\",\n \"plane\",\n \"man\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"male\",\n \"men\"\n ],\n \"👩✈️\": [\n \"woman_pilot\",\n \"aviator\",\n \"plane\",\n \"woman\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"female\",\n \"women\"\n ],\n \"🧑🚀\": [\n \"astronaut\",\n \"outerspace\",\n \"moon\",\n \"planets\",\n \"rocket\",\n \"space\",\n \"stars\"\n ],\n \"👨🚀\": [\n \"man_astronaut\",\n \"space\",\n \"rocket\",\n \"man\",\n \"human\",\n \"cosmonaut\",\n \"male\",\n \"men\",\n \"moon\",\n \"planets\",\n \"stars\"\n ],\n \"👩🚀\": [\n \"woman_astronaut\",\n \"space\",\n \"rocket\",\n \"woman\",\n \"human\",\n \"cosmonaut\",\n \"female\",\n \"moon\",\n \"planets\",\n \"stars\",\n \"women\"\n ],\n \"🧑🚒\": [\n \"firefighter\",\n \"fire\",\n \"firetruck\"\n ],\n \"👨🚒\": [\n \"man_firefighter\",\n \"fireman\",\n \"man\",\n \"human\",\n \"fire\",\n \"firetruck\",\n \"male\",\n \"men\"\n ],\n \"👩🚒\": [\n \"woman_firefighter\",\n \"fireman\",\n \"woman\",\n \"human\",\n \"female\",\n \"fire\",\n \"firetruck\",\n \"women\"\n ],\n \"👮\": [\n \"police_officer\",\n \"cop\",\n \"law\",\n \"policeman\",\n \"policewoman\"\n ],\n \"👮♂️\": [\n \"man_police_officer\",\n \"man\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"cop\",\n \"male\",\n \"men\",\n \"policeman\"\n ],\n \"👮♀️\": [\n \"woman_police_officer\",\n \"woman\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"female\",\n \"cop\",\n \"policewoman\",\n \"women\"\n ],\n \"🕵️\": [\n \"detective\",\n \"human\",\n \"spy\",\n \"eye\",\n \"or\",\n \"private\",\n \"sleuth\"\n ],\n \"🕵️♂️\": [\n \"man_detective\",\n \"crime\",\n \"male\",\n \"men\",\n \"sleuth\",\n \"spy\"\n ],\n \"🕵️♀️\": [\n \"woman_detective\",\n \"human\",\n \"spy\",\n \"detective\",\n \"female\",\n \"woman\",\n \"sleuth\",\n \"women\"\n ],\n \"💂\": [\n \"guard\",\n \"protect\",\n \"british\",\n \"guardsman\"\n ],\n \"💂♂️\": [\n \"man_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"male\",\n \"guy\",\n \"royal\",\n \"guardsman\",\n \"men\"\n ],\n \"💂♀️\": [\n \"woman_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"female\",\n \"royal\",\n \"woman\",\n \"guardsman\",\n \"guardswoman\",\n \"women\"\n ],\n \"👷\": [\n \"construction_worker\",\n \"labor\",\n \"build\",\n \"builder\",\n \"face\",\n \"hard\",\n \"hat\",\n \"helmet\",\n \"safety\",\n \"add_ci\",\n \"update_ci\"\n ],\n \"👷♂️\": [\n \"man_construction_worker\",\n \"male\",\n \"human\",\n \"wip\",\n \"guy\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"helmet\",\n \"men\"\n ],\n \"👷♀️\": [\n \"woman_construction_worker\",\n \"female\",\n \"human\",\n \"wip\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"woman\",\n \"helmet\",\n \"women\"\n ],\n \"🤴\": [\n \"prince\",\n \"boy\",\n \"man\",\n \"male\",\n \"crown\",\n \"royal\",\n \"king\",\n \"fairy\",\n \"fantasy\",\n \"men\",\n \"tale\"\n ],\n \"👸\": [\n \"princess\",\n \"girl\",\n \"woman\",\n \"female\",\n \"blond\",\n \"crown\",\n \"royal\",\n \"queen\",\n \"blonde\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"tiara\",\n \"women\"\n ],\n \"👳\": [\n \"person_wearing_turban\",\n \"headdress\",\n \"arab\",\n \"man\",\n \"muslim\",\n \"sikh\"\n ],\n \"👳♂️\": [\n \"man_wearing_turban\",\n \"male\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"men\"\n ],\n \"👳♀️\": [\n \"woman_wearing_turban\",\n \"female\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"woman\",\n \"women\"\n ],\n \"👲\": [\n \"man_with_skullcap\",\n \"male\",\n \"boy\",\n \"chinese\",\n \"asian\",\n \"cap\",\n \"gua\",\n \"hat\",\n \"mao\",\n \"person\",\n \"pi\"\n ],\n \"🧕\": [\n \"woman_with_headscarf\",\n \"female\",\n \"hijab\",\n \"mantilla\",\n \"tichel\"\n ],\n \"🤵\": [\n \"man_in_tuxedo\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\"\n ],\n \"👰\": [\n \"bride_with_veil\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"woman\",\n \"bride\",\n \"person\"\n ],\n \"🤰\": [\n \"pregnant_woman\",\n \"baby\",\n \"female\",\n \"pregnancy\",\n \"pregnant lady\",\n \"women\"\n ],\n \"🤱\": [\n \"breast_feeding\",\n \"nursing\",\n \"baby\",\n \"breastfeeding\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"mother\",\n \"woman\",\n \"women\"\n ],\n \"👼\": [\n \"baby_angel\",\n \"heaven\",\n \"wings\",\n \"halo\",\n \"cherub\",\n \"cupid\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"putto\",\n \"tale\"\n ],\n \"🎅\": [\n \"santa_claus\",\n \"festival\",\n \"man\",\n \"male\",\n \"xmas\",\n \"father christmas\",\n \"activity\",\n \"celebration\",\n \"men\",\n \"nicholas\",\n \"saint\",\n \"sinterklaas\"\n ],\n \"🤶\": [\n \"mrs_claus\",\n \"woman\",\n \"female\",\n \"xmas\",\n \"mother christmas\",\n \"activity\",\n \"celebration\",\n \"mrs.\",\n \"santa\",\n \"women\"\n ],\n \"🦸\": [\n \"superhero\",\n \"marvel\",\n \"fantasy\",\n \"good\",\n \"hero\",\n \"heroine\",\n \"superpower\",\n \"superpowers\"\n ],\n \"🦸♂️\": [\n \"man_superhero\",\n \"man\",\n \"male\",\n \"good\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\"\n ],\n \"🦸♀️\": [\n \"woman_superhero\",\n \"woman\",\n \"female\",\n \"good\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"hero\",\n \"superpower\",\n \"women\"\n ],\n \"🦹\": [\n \"supervillain\",\n \"marvel\",\n \"bad\",\n \"criminal\",\n \"evil\",\n \"fantasy\",\n \"superpower\",\n \"superpowers\",\n \"villain\"\n ],\n \"🦹♂️\": [\n \"man_supervillain\",\n \"man\",\n \"male\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\",\n \"villain\"\n ],\n \"🦹♀️\": [\n \"woman_supervillain\",\n \"woman\",\n \"female\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"superpower\",\n \"villain\",\n \"women\"\n ],\n \"🧙\": [\n \"mage\",\n \"magic\",\n \"fantasy\",\n \"sorcerer\",\n \"sorceress\",\n \"witch\",\n \"wizard\"\n ],\n \"🧙♂️\": [\n \"man_mage\",\n \"man\",\n \"male\",\n \"mage\",\n \"sorcerer\",\n \"fantasy\",\n \"men\",\n \"wizard\"\n ],\n \"🧙♀️\": [\n \"woman_mage\",\n \"woman\",\n \"female\",\n \"mage\",\n \"witch\",\n \"fantasy\",\n \"sorceress\",\n \"wizard\",\n \"women\"\n ],\n \"🧚\": [\n \"fairy\",\n \"wings\",\n \"magical\",\n \"fantasy\",\n \"oberon\",\n \"puck\",\n \"titania\"\n ],\n \"🧚♂️\": [\n \"man_fairy\",\n \"man\",\n \"male\",\n \"fantasy\",\n \"men\",\n \"oberon\",\n \"puck\"\n ],\n \"🧚♀️\": [\n \"woman_fairy\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"titania\",\n \"wings\",\n \"women\"\n ],\n \"🧛\": [\n \"vampire\",\n \"blood\",\n \"twilight\",\n \"dracula\",\n \"fantasy\",\n \"undead\"\n ],\n \"🧛♂️\": [\n \"man_vampire\",\n \"man\",\n \"male\",\n \"dracula\",\n \"fantasy\",\n \"men\",\n \"undead\"\n ],\n \"🧛♀️\": [\n \"woman_vampire\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"undead\",\n \"unded\",\n \"women\"\n ],\n \"🧜\": [\n \"merperson\",\n \"sea\",\n \"fantasy\",\n \"merboy\",\n \"mergirl\",\n \"mermaid\",\n \"merman\",\n \"merwoman\"\n ],\n \"🧜♂️\": [\n \"merman\",\n \"man\",\n \"male\",\n \"triton\",\n \"fantasy\",\n \"men\",\n \"mermaid\"\n ],\n \"🧜♀️\": [\n \"mermaid\",\n \"woman\",\n \"female\",\n \"merwoman\",\n \"ariel\",\n \"fantasy\",\n \"women\"\n ],\n \"🧝\": [\n \"elf\",\n \"magical\",\n \"ears\",\n \"fantasy\",\n \"legolas\",\n \"pointed\"\n ],\n \"🧝♂️\": [\n \"man_elf\",\n \"man\",\n \"male\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"men\",\n \"pointed\"\n ],\n \"🧝♀️\": [\n \"woman_elf\",\n \"woman\",\n \"female\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"pointed\",\n \"women\"\n ],\n \"🧞\": [\n \"genie\",\n \"magical\",\n \"wishes\",\n \"djinn\",\n \"djinni\",\n \"fantasy\",\n \"jinni\"\n ],\n \"🧞♂️\": [\n \"man_genie\",\n \"man\",\n \"male\",\n \"djinn\",\n \"fantasy\",\n \"men\"\n ],\n \"🧞♀️\": [\n \"woman_genie\",\n \"woman\",\n \"female\",\n \"djinn\",\n \"fantasy\",\n \"women\"\n ],\n \"🧟\": [\n \"zombie\",\n \"dead\",\n \"fantasy\",\n \"undead\",\n \"walking\"\n ],\n \"🧟♂️\": [\n \"man_zombie\",\n \"man\",\n \"male\",\n \"dracula\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"men\"\n ],\n \"🧟♀️\": [\n \"woman_zombie\",\n \"woman\",\n \"female\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"women\"\n ],\n \"💆\": [\n \"person_getting_massage\",\n \"relax\",\n \"face\",\n \"head\",\n \"massaging\",\n \"salon\",\n \"spa\"\n ],\n \"💆♂️\": [\n \"man_getting_massage\",\n \"male\",\n \"boy\",\n \"man\",\n \"head\",\n \"face\",\n \"men\",\n \"salon\",\n \"spa\"\n ],\n \"💆♀️\": [\n \"woman_getting_massage\",\n \"female\",\n \"girl\",\n \"woman\",\n \"head\",\n \"face\",\n \"salon\",\n \"spa\",\n \"women\"\n ],\n \"💇\": [\n \"person_getting_haircut\",\n \"hairstyle\",\n \"barber\",\n \"beauty\",\n \"cutting\",\n \"hair\",\n \"hairdresser\",\n \"parlor\"\n ],\n \"💇♂️\": [\n \"man_getting_haircut\",\n \"male\",\n \"boy\",\n \"man\",\n \"barber\",\n \"beauty\",\n \"men\",\n \"parlor\"\n ],\n \"💇♀️\": [\n \"woman_getting_haircut\",\n \"female\",\n \"girl\",\n \"woman\",\n \"barber\",\n \"beauty\",\n \"parlor\",\n \"women\"\n ],\n \"🚶\": [\n \"person_walking\",\n \"move\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"walker\"\n ],\n \"🚶♂️\": [\n \"man_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"hike\",\n \"male\",\n \"men\",\n \"pedestrian\",\n \"walk\"\n ],\n \"🚶♀️\": [\n \"woman_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"woman\",\n \"female\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"women\"\n ],\n \"🧍\": [\n \"person_standing\",\n \"still\",\n \"stand\"\n ],\n \"🧍♂️\": [\n \"man_standing\",\n \"still\",\n \"male\",\n \"men\",\n \"stand\"\n ],\n \"🧍♀️\": [\n \"woman_standing\",\n \"still\",\n \"female\",\n \"stand\",\n \"women\"\n ],\n \"🧎\": [\n \"person_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\"\n ],\n \"🧎♂️\": [\n \"man_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\",\n \"male\",\n \"men\"\n ],\n \"🧎♀️\": [\n \"woman_kneeling\",\n \"respectful\",\n \"pray\",\n \"female\",\n \"kneel\",\n \"women\"\n ],\n \"🧑🦯\": [\n \"person_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"white\"\n ],\n \"👨🦯\": [\n \"man_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"male\",\n \"men\",\n \"white\"\n ],\n \"👩🦯\": [\n \"woman_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"female\",\n \"white\",\n \"women\"\n ],\n \"🧑🦼\": [\n \"person_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨🦼\": [\n \"man_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩🦼\": [\n \"woman_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🧑🦽\": [\n \"person_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨🦽\": [\n \"man_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩🦽\": [\n \"woman_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🏃\": [\n \"person_running\",\n \"move\",\n \"exercise\",\n \"jogging\",\n \"marathon\",\n \"run\",\n \"runner\",\n \"workout\"\n ],\n \"🏃♂️\": [\n \"man_running\",\n \"man\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"male\",\n \"marathon\",\n \"men\",\n \"racing\",\n \"runner\",\n \"workout\"\n ],\n \"🏃♀️\": [\n \"woman_running\",\n \"woman\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"female\",\n \"boy\",\n \"marathon\",\n \"racing\",\n \"runner\",\n \"women\",\n \"workout\"\n ],\n \"💃\": [\n \"woman_dancing\",\n \"female\",\n \"girl\",\n \"woman\",\n \"fun\",\n \"dance\",\n \"dancer\",\n \"dress\",\n \"red\",\n \"salsa\",\n \"women\"\n ],\n \"🕺\": [\n \"man_dancing\",\n \"male\",\n \"boy\",\n \"fun\",\n \"dancer\",\n \"dance\",\n \"disco\",\n \"men\"\n ],\n \"🕴️\": [\n \"man_in_suit_levitating\",\n \"suit\",\n \"business\",\n \"levitate\",\n \"hover\",\n \"jump\",\n \"boy\",\n \"hovering\",\n \"jabsco\",\n \"male\",\n \"men\",\n \"person\",\n \"rude\",\n \"walt\"\n ],\n \"👯\": [\n \"people_with_bunny_ears\",\n \"perform\",\n \"costume\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"wearing\",\n \"women\"\n ],\n \"👯♂️\": [\n \"men_with_bunny_ears\",\n \"male\",\n \"bunny\",\n \"men\",\n \"boys\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"man\",\n \"partying\",\n \"wearing\"\n ],\n \"👯♀️\": [\n \"women_with_bunny_ears\",\n \"female\",\n \"bunny\",\n \"women\",\n \"girls\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"people\",\n \"wearing\"\n ],\n \"🧖\": [\n \"person_in_steamy_room\",\n \"relax\",\n \"spa\",\n \"hamam\",\n \"sauna\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖♂️\": [\n \"man_in_steamy_room\",\n \"male\",\n \"man\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"men\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖♀️\": [\n \"woman_in_steamy_room\",\n \"female\",\n \"woman\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"steam\",\n \"steambath\",\n \"women\"\n ],\n \"🧗\": [\n \"person_climbing\",\n \"sport\",\n \"bouldering\",\n \"climber\",\n \"rock\"\n ],\n \"🧗♂️\": [\n \"man_climbing\",\n \"sports\",\n \"hobby\",\n \"man\",\n \"male\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"men\"\n ],\n \"🧗♀️\": [\n \"woman_climbing\",\n \"sports\",\n \"hobby\",\n \"woman\",\n \"female\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"women\"\n ],\n \"🤺\": [\n \"person_fencing\",\n \"sports\",\n \"fencing\",\n \"sword\",\n \"fencer\"\n ],\n \"🏇\": [\n \"horse_racing\",\n \"animal\",\n \"betting\",\n \"competition\",\n \"gambling\",\n \"luck\",\n \"jockey\",\n \"race\",\n \"racehorse\"\n ],\n \"⛷️\": [\n \"skier\",\n \"sports\",\n \"winter\",\n \"snow\",\n \"ski\"\n ],\n \"🏂\": [\n \"snowboarder\",\n \"sports\",\n \"winter\",\n \"ski\",\n \"snow\",\n \"snowboard\",\n \"snowboarding\"\n ],\n \"🏌️\": [\n \"person_golfing\",\n \"sports\",\n \"business\",\n \"ball\",\n \"club\",\n \"golf\",\n \"golfer\"\n ],\n \"🏌️♂️\": [\n \"man_golfing\",\n \"sport\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"male\",\n \"men\"\n ],\n \"🏌️♀️\": [\n \"woman_golfing\",\n \"sports\",\n \"business\",\n \"woman\",\n \"female\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"women\"\n ],\n \"🏄\": [\n \"person_surfing\",\n \"sport\",\n \"sea\",\n \"surf\",\n \"surfer\"\n ],\n \"🏄♂️\": [\n \"man_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"male\",\n \"men\",\n \"surfer\"\n ],\n \"🏄♀️\": [\n \"woman_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"woman\",\n \"female\",\n \"surfer\",\n \"women\"\n ],\n \"🚣\": [\n \"person_rowing_boat\",\n \"sport\",\n \"move\",\n \"paddles\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣♂️\": [\n \"man_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"male\",\n \"men\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣♀️\": [\n \"woman_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"woman\",\n \"female\",\n \"rowboat\",\n \"vehicle\",\n \"women\"\n ],\n \"🏊\": [\n \"person_swimming\",\n \"sport\",\n \"pool\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊♂️\": [\n \"man_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"male\",\n \"men\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊♀️\": [\n \"woman_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"woman\",\n \"female\",\n \"swim\",\n \"swimmer\",\n \"women\"\n ],\n \"⛹️\": [\n \"person_bouncing_ball\",\n \"sports\",\n \"human\",\n \"basketball\",\n \"player\"\n ],\n \"⛹️♂️\": [\n \"man_bouncing_ball\",\n \"sport\",\n \"basketball\",\n \"male\",\n \"men\",\n \"player\"\n ],\n \"⛹️♀️\": [\n \"woman_bouncing_ball\",\n \"sports\",\n \"human\",\n \"woman\",\n \"female\",\n \"basketball\",\n \"player\",\n \"women\"\n ],\n \"🏋️\": [\n \"person_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"bodybuilder\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️♂️\": [\n \"man_lifting_weights\",\n \"sport\",\n \"gym\",\n \"lifter\",\n \"male\",\n \"men\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️♀️\": [\n \"woman_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"woman\",\n \"female\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"women\",\n \"workout\"\n ],\n \"🚴\": [\n \"person_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\"\n ],\n \"🚴♂️\": [\n \"man_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"bicyclist\",\n \"male\",\n \"men\"\n ],\n \"🚴♀️\": [\n \"woman_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"women\"\n ],\n \"🚵\": [\n \"person_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\",\n \"biker\"\n ],\n \"🚵♂️\": [\n \"man_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"bicyclist\",\n \"biker\",\n \"male\",\n \"men\"\n ],\n \"🚵♀️\": [\n \"woman_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"biker\",\n \"women\"\n ],\n \"🤸\": [\n \"person_cartwheeling\",\n \"sport\",\n \"gymnastic\",\n \"cartwheel\",\n \"doing\",\n \"gymnast\",\n \"gymnastics\"\n ],\n \"🤸♂️\": [\n \"man_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"male\",\n \"men\"\n ],\n \"🤸♀️\": [\n \"woman_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"female\",\n \"women\"\n ],\n \"🤼\": [\n \"people_wrestling\",\n \"sport\",\n \"wrestle\",\n \"wrestler\",\n \"wrestlers\"\n ],\n \"🤼♂️\": [\n \"men_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"male\",\n \"man\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤼♀️\": [\n \"women_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"female\",\n \"woman\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤽\": [\n \"person_playing_water_polo\",\n \"sport\"\n ],\n \"🤽♂️\": [\n \"man_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"male\",\n \"men\"\n ],\n \"🤽♀️\": [\n \"woman_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"female\",\n \"women\"\n ],\n \"🤾\": [\n \"person_playing_handball\",\n \"sport\",\n \"ball\"\n ],\n \"🤾♂️\": [\n \"man_playing_handball\",\n \"sports\",\n \"ball\",\n \"male\",\n \"men\"\n ],\n \"🤾♀️\": [\n \"woman_playing_handball\",\n \"sports\",\n \"ball\",\n \"female\",\n \"women\"\n ],\n \"🤹\": [\n \"person_juggling\",\n \"performance\",\n \"balance\",\n \"juggle\",\n \"juggler\",\n \"multitask\",\n \"skill\"\n ],\n \"🤹♂️\": [\n \"man_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"juggler\",\n \"male\",\n \"men\"\n ],\n \"🤹♀️\": [\n \"woman_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"female\",\n \"juggler\",\n \"women\"\n ],\n \"🧘\": [\n \"person_in_lotus_position\",\n \"meditate\",\n \"meditation\",\n \"serenity\",\n \"yoga\"\n ],\n \"🧘♂️\": [\n \"man_in_lotus_position\",\n \"man\",\n \"male\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"men\"\n ],\n \"🧘♀️\": [\n \"woman_in_lotus_position\",\n \"woman\",\n \"female\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"women\"\n ],\n \"🛀\": [\n \"person_taking_bath\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bathing\",\n \"bathtub\",\n \"hot\"\n ],\n \"🛌\": [\n \"person_in_bed\",\n \"bed\",\n \"rest\",\n \"accommodation\",\n \"hotel\",\n \"sleep\",\n \"sleeping\"\n ],\n \"🧑🤝🧑\": [\n \"people_holding_hands\",\n \"friendship\",\n \"couple\",\n \"date\",\n \"gender\",\n \"hand\",\n \"hold\",\n \"inclusive\",\n \"neutral\",\n \"nonconforming\"\n ],\n \"👭\": [\n \"women_holding_hands\",\n \"pair\",\n \"friendship\",\n \"couple\",\n \"love\",\n \"like\",\n \"female\",\n \"people\",\n \"human\",\n \"date\",\n \"hand\",\n \"hold\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"two\",\n \"woman\"\n ],\n \"👫\": [\n \"woman_and_man_holding_hands\",\n \"pair\",\n \"people\",\n \"human\",\n \"love\",\n \"date\",\n \"dating\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"marriage\",\n \"couple\",\n \"female\",\n \"hand\",\n \"heterosexual\",\n \"hold\",\n \"male\",\n \"men\",\n \"straight\",\n \"women\"\n ],\n \"👬\": [\n \"men_holding_hands\",\n \"pair\",\n \"couple\",\n \"love\",\n \"like\",\n \"bromance\",\n \"friendship\",\n \"people\",\n \"human\",\n \"date\",\n \"gay\",\n \"hand\",\n \"hold\",\n \"lgbt\",\n \"male\",\n \"man\",\n \"pride\",\n \"two\"\n ],\n \"💏\": [\n \"kiss\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"gender\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩❤️💋👨\": [\n \"kiss_woman_man\",\n \"love\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨❤️💋👨\": [\n \"kiss_man_man\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"gay\",\n \"heart\",\n \"kissing\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩❤️💋👩\": [\n \"kiss_woman_woman\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"💑\": [\n \"couple_with_heart\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"gender\",\n \"loving\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩❤️👨\": [\n \"couple_with_heart_woman_man\",\n \"love\",\n \"female\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨❤️👨\": [\n \"couple_with_heart_man_man\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩❤️👩\": [\n \"couple_with_heart_woman_woman\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"👪\": [\n \"family\",\n \"home\",\n \"parents\",\n \"child\",\n \"mom\",\n \"dad\",\n \"father\",\n \"mother\",\n \"people\",\n \"human\",\n \"boy\",\n \"female\",\n \"male\",\n \"man\",\n \"men\",\n \"woman\",\n \"women\"\n ],\n \"👨👩👦\": [\n \"family_man_woman_boy\",\n \"love\",\n \"father\",\n \"mother\",\n \"son\"\n ],\n \"👨👩👧\": [\n \"family_man_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"women\"\n ],\n \"👨👩👧👦\": [\n \"family_man_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👨👩👦👦\": [\n \"family_man_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👨👩👧👧\": [\n \"family_man_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"👨👨👦\": [\n \"family_man_man_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨👨👧\": [\n \"family_man_man_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👨👨👧👦\": [\n \"family_man_man_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨👨👦👦\": [\n \"family_man_man_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"sons\",\n \"two\"\n ],\n \"👨👨👧👧\": [\n \"family_man_man_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👩👩👦\": [\n \"family_woman_woman_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧\": [\n \"family_woman_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧👦\": [\n \"family_woman_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩👩👦👦\": [\n \"family_woman_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩👩👧👧\": [\n \"family_woman_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👨👦\": [\n \"family_man_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨👦👦\": [\n \"family_man_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"sons\",\n \"two\"\n ],\n \"👨👧\": [\n \"family_man_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\"\n ],\n \"👨👧👦\": [\n \"family_man_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨👧👧\": [\n \"family_man_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"two\"\n ],\n \"👩👦\": [\n \"family_woman_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"female\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👩👦👦\": [\n \"family_woman_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩👧\": [\n \"family_woman_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"female\",\n \"mother\",\n \"women\"\n ],\n \"👩👧👦\": [\n \"family_woman_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"male\",\n \"mother\",\n \"son\"\n ],\n \"👩👧👧\": [\n \"family_woman_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"🗣️\": [\n \"speaking_head\",\n \"user\",\n \"person\",\n \"human\",\n \"sing\",\n \"say\",\n \"talk\",\n \"face\",\n \"mansplaining\",\n \"shout\",\n \"shouting\",\n \"silhouette\",\n \"speak\"\n ],\n \"👤\": [\n \"bust_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"shadow\"\n ],\n \"👥\": [\n \"busts_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"group\",\n \"team\",\n \"bust\",\n \"people\",\n \"shadows\",\n \"silhouettes\",\n \"two\",\n \"users\",\n \"contributors\"\n ],\n \"👣\": [\n \"footprints\",\n \"feet\",\n \"tracking\",\n \"walking\",\n \"beach\",\n \"body\",\n \"clothing\",\n \"footprint\",\n \"footsteps\",\n \"print\",\n \"tracks\"\n ],\n \"🐵\": [\n \"monkey_face\",\n \"animal\",\n \"nature\",\n \"circus\",\n \"head\"\n ],\n \"🐒\": [\n \"monkey\",\n \"animal\",\n \"nature\",\n \"banana\",\n \"circus\",\n \"cheeky\"\n ],\n \"🦍\": [\n \"gorilla\",\n \"animal\",\n \"nature\",\n \"circus\"\n ],\n \"🦧\": [\n \"orangutan\",\n \"animal\",\n \"ape\"\n ],\n \"🐶\": [\n \"dog_face\",\n \"animal\",\n \"friend\",\n \"nature\",\n \"woof\",\n \"puppy\",\n \"pet\",\n \"faithful\"\n ],\n \"🐕\": [\n \"dog\",\n \"animal\",\n \"nature\",\n \"friend\",\n \"doge\",\n \"pet\",\n \"faithful\",\n \"dog2\",\n \"doggo\"\n ],\n \"🦮\": [\n \"guide_dog\",\n \"animal\",\n \"blind\",\n \"accessibility\",\n \"eye\",\n \"seeing\"\n ],\n \"🐕🦺\": [\n \"service_dog\",\n \"blind\",\n \"animal\",\n \"accessibility\",\n \"assistance\"\n ],\n \"🐩\": [\n \"poodle\",\n \"dog\",\n \"animal\",\n \"101\",\n \"nature\",\n \"pet\",\n \"miniature\",\n \"standard\",\n \"toy\"\n ],\n \"🐺\": [\n \"wolf\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\"\n ],\n \"🦊\": [\n \"fox\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦝\": [\n \"raccoon\",\n \"animal\",\n \"nature\",\n \"curious\",\n \"face\",\n \"sly\"\n ],\n \"🐱\": [\n \"cat_face\",\n \"animal\",\n \"meow\",\n \"nature\",\n \"pet\",\n \"kitten\",\n \"kitty\"\n ],\n \"🐈\": [\n \"cat\",\n \"animal\",\n \"meow\",\n \"pet\",\n \"cats\",\n \"cat2\",\n \"domestic\",\n \"feline\",\n \"housecat\"\n ],\n \"🦁\": [\n \"lion\",\n \"animal\",\n \"nature\",\n \"face\",\n \"leo\",\n \"zodiac\"\n ],\n \"🐯\": [\n \"tiger_face\",\n \"animal\",\n \"cat\",\n \"danger\",\n \"wild\",\n \"nature\",\n \"roar\",\n \"cute\"\n ],\n \"🐅\": [\n \"tiger\",\n \"animal\",\n \"nature\",\n \"roar\",\n \"bengal\",\n \"tiger2\"\n ],\n \"🐆\": [\n \"leopard\",\n \"animal\",\n \"nature\",\n \"african\",\n \"jaguar\"\n ],\n \"🐴\": [\n \"horse_face\",\n \"animal\",\n \"brown\",\n \"nature\",\n \"head\"\n ],\n \"🐎\": [\n \"horse\",\n \"animal\",\n \"gamble\",\n \"luck\",\n \"equestrian\",\n \"galloping\",\n \"racehorse\",\n \"racing\",\n \"speed\"\n ],\n \"🦄\": [\n \"unicorn\",\n \"animal\",\n \"nature\",\n \"mystical\",\n \"face\"\n ],\n \"🦓\": [\n \"zebra\",\n \"animal\",\n \"nature\",\n \"stripes\",\n \"safari\",\n \"face\",\n \"stripe\"\n ],\n \"🦌\": [\n \"deer\",\n \"animal\",\n \"nature\",\n \"horns\",\n \"venison\",\n \"buck\",\n \"reindeer\",\n \"stag\"\n ],\n \"🐮\": [\n \"cow_face\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"happy\"\n ],\n \"🐂\": [\n \"ox\",\n \"animal\",\n \"cow\",\n \"beef\",\n \"bull\",\n \"bullock\",\n \"oxen\",\n \"steer\",\n \"taurus\",\n \"zodiac\"\n ],\n \"🐃\": [\n \"water_buffalo\",\n \"animal\",\n \"nature\",\n \"ox\",\n \"cow\",\n \"domestic\"\n ],\n \"🐄\": [\n \"cow\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"cow2\",\n \"dairy\"\n ],\n \"🐷\": [\n \"pig_face\",\n \"animal\",\n \"oink\",\n \"nature\",\n \"head\"\n ],\n \"🐖\": [\n \"pig\",\n \"animal\",\n \"nature\",\n \"hog\",\n \"pig2\",\n \"sow\"\n ],\n \"🐗\": [\n \"boar\",\n \"animal\",\n \"nature\",\n \"pig\",\n \"warthog\",\n \"wild\"\n ],\n \"🐽\": [\n \"pig_nose\",\n \"animal\",\n \"oink\",\n \"face\",\n \"snout\"\n ],\n \"🐏\": [\n \"ram\",\n \"animal\",\n \"sheep\",\n \"nature\",\n \"aries\",\n \"male\",\n \"zodiac\"\n ],\n \"🐑\": [\n \"ewe\",\n \"animal\",\n \"nature\",\n \"wool\",\n \"shipit\",\n \"female\",\n \"lamb\",\n \"sheep\"\n ],\n \"🐐\": [\n \"goat\",\n \"animal\",\n \"nature\",\n \"capricorn\",\n \"zodiac\"\n ],\n \"🐪\": [\n \"camel\",\n \"animal\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"arabian\",\n \"bump\",\n \"dromedary\",\n \"one\"\n ],\n \"🐫\": [\n \"two_hump_camel\",\n \"animal\",\n \"nature\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"asian\",\n \"bactrian\",\n \"bump\"\n ],\n \"🦙\": [\n \"llama\",\n \"animal\",\n \"nature\",\n \"alpaca\",\n \"guanaco\",\n \"vicuña\",\n \"wool\"\n ],\n \"🦒\": [\n \"giraffe\",\n \"animal\",\n \"nature\",\n \"spots\",\n \"safari\",\n \"face\"\n ],\n \"🐘\": [\n \"elephant\",\n \"animal\",\n \"nature\",\n \"nose\",\n \"th\",\n \"circus\"\n ],\n \"🦏\": [\n \"rhinoceros\",\n \"animal\",\n \"nature\",\n \"horn\",\n \"rhino\"\n ],\n \"🦛\": [\n \"hippopotamus\",\n \"animal\",\n \"nature\",\n \"hippo\"\n ],\n \"🐭\": [\n \"mouse_face\",\n \"animal\",\n \"nature\",\n \"cheese_wedge\",\n \"rodent\"\n ],\n \"🐁\": [\n \"mouse\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"dormouse\",\n \"mice\",\n \"mouse2\"\n ],\n \"🐀\": [\n \"rat\",\n \"animal\",\n \"mouse\",\n \"rodent\"\n ],\n \"🐹\": [\n \"hamster\",\n \"animal\",\n \"nature\",\n \"face\",\n \"pet\"\n ],\n \"🐰\": [\n \"rabbit_face\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"spring\",\n \"magic\",\n \"bunny\",\n \"easter\"\n ],\n \"🐇\": [\n \"rabbit\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"magic\",\n \"spring\",\n \"bunny\",\n \"rabbit2\"\n ],\n \"🐿️\": [\n \"chipmunk\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"squirrel\"\n ],\n \"🦔\": [\n \"hedgehog\",\n \"animal\",\n \"nature\",\n \"spiny\",\n \"face\"\n ],\n \"🦇\": [\n \"bat\",\n \"animal\",\n \"nature\",\n \"blind\",\n \"vampire\",\n \"batman\"\n ],\n \"🐻\": [\n \"bear\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\",\n \"teddy\"\n ],\n \"🐨\": [\n \"koala\",\n \"animal\",\n \"nature\",\n \"bear\",\n \"face\",\n \"marsupial\"\n ],\n \"🐼\": [\n \"panda\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦥\": [\n \"sloth\",\n \"animal\",\n \"lazy\",\n \"slow\"\n ],\n \"🦦\": [\n \"otter\",\n \"animal\",\n \"fishing\",\n \"playful\"\n ],\n \"🦨\": [\n \"skunk\",\n \"animal\",\n \"smelly\",\n \"stink\"\n ],\n \"🦘\": [\n \"kangaroo\",\n \"animal\",\n \"nature\",\n \"australia\",\n \"joey\",\n \"hop\",\n \"marsupial\",\n \"jump\",\n \"roo\"\n ],\n \"🦡\": [\n \"badger\",\n \"animal\",\n \"nature\",\n \"honey\",\n \"pester\"\n ],\n \"🐾\": [\n \"paw_prints\",\n \"animal\",\n \"tracking\",\n \"footprints\",\n \"dog\",\n \"cat\",\n \"pet\",\n \"feet\",\n \"kitten\",\n \"print\",\n \"puppy\"\n ],\n \"🦃\": [\n \"turkey\",\n \"animal\",\n \"bird\",\n \"thanksgiving\",\n \"wild\"\n ],\n \"🐔\": [\n \"chicken\",\n \"animal\",\n \"cluck\",\n \"nature\",\n \"bird\",\n \"hen\"\n ],\n \"🐓\": [\n \"rooster\",\n \"animal\",\n \"nature\",\n \"chicken\",\n \"bird\",\n \"cock\",\n \"cockerel\"\n ],\n \"🐣\": [\n \"hatching_chick\",\n \"animal\",\n \"chicken\",\n \"egg\",\n \"born\",\n \"baby\",\n \"bird\"\n ],\n \"🐤\": [\n \"baby_chick\",\n \"animal\",\n \"chicken\",\n \"bird\",\n \"yellow\"\n ],\n \"🐥\": [\n \"front_facing_baby_chick\",\n \"animal\",\n \"chicken\",\n \"baby\",\n \"bird\",\n \"hatched\",\n \"standing\"\n ],\n \"🐦\": [\n \"bird\",\n \"animal\",\n \"nature\",\n \"fly\",\n \"tweet\",\n \"spring\"\n ],\n \"🐧\": [\n \"penguin\",\n \"animal\",\n \"nature\",\n \"bird\"\n ],\n \"🕊️\": [\n \"dove\",\n \"animal\",\n \"bird\",\n \"fly\",\n \"peace\"\n ],\n \"🦅\": [\n \"eagle\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"bald\"\n ],\n \"🦆\": [\n \"duck\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"mallard\"\n ],\n \"🦢\": [\n \"swan\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"cygnet\",\n \"duckling\",\n \"ugly\"\n ],\n \"🦉\": [\n \"owl\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"hoot\",\n \"wise\"\n ],\n \"🦩\": [\n \"flamingo\",\n \"animal\",\n \"flamboyant\",\n \"tropical\"\n ],\n \"🦚\": [\n \"peacock\",\n \"animal\",\n \"nature\",\n \"peahen\",\n \"bird\",\n \"ostentatious\",\n \"proud\"\n ],\n \"🦜\": [\n \"parrot\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"pirate\",\n \"talk\"\n ],\n \"🐸\": [\n \"frog\",\n \"animal\",\n \"nature\",\n \"croak\",\n \"toad\",\n \"face\"\n ],\n \"🐊\": [\n \"crocodile\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"lizard\",\n \"alligator\",\n \"croc\"\n ],\n \"🐢\": [\n \"turtle\",\n \"animal\",\n \"slow\",\n \"nature\",\n \"tortoise\",\n \"terrapin\"\n ],\n \"🦎\": [\n \"lizard\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"gecko\"\n ],\n \"🐍\": [\n \"snake\",\n \"animal\",\n \"evil\",\n \"nature\",\n \"hiss\",\n \"python\",\n \"bearer\",\n \"ophiuchus\",\n \"serpent\",\n \"zodiac\"\n ],\n \"🐲\": [\n \"dragon_face\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"head\",\n \"tale\"\n ],\n \"🐉\": [\n \"dragon\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"tale\"\n ],\n \"🦕\": [\n \"sauropod\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"brachiosaurus\",\n \"brontosaurus\",\n \"diplodocus\",\n \"extinct\"\n ],\n \"🦖\": [\n \"t_rex\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"tyrannosaurus\",\n \"extinct\",\n \"trex\"\n ],\n \"🐳\": [\n \"spouting_whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"cute\",\n \"face\"\n ],\n \"🐋\": [\n \"whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"whale2\"\n ],\n \"🐬\": [\n \"dolphin\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"flipper\",\n \"fins\",\n \"beach\"\n ],\n \"🐟\": [\n \"fish\",\n \"animal\",\n \"food\",\n \"nature\",\n \"freshwater\",\n \"pisces\",\n \"zodiac\"\n ],\n \"🐠\": [\n \"tropical_fish\",\n \"animal\",\n \"swim\",\n \"ocean\",\n \"beach\",\n \"nemo\",\n \"blue\",\n \"yellow\"\n ],\n \"🐡\": [\n \"blowfish\",\n \"animal\",\n \"nature\",\n \"food\",\n \"sea\",\n \"ocean\",\n \"fish\",\n \"fugu\",\n \"pufferfish\"\n ],\n \"🦈\": [\n \"shark\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"jaws\",\n \"fins\",\n \"beach\",\n \"great\",\n \"white\"\n ],\n \"🐙\": [\n \"octopus\",\n \"animal\",\n \"creature\",\n \"ocean\",\n \"sea\",\n \"nature\",\n \"beach\"\n ],\n \"🐚\": [\n \"spiral_shell\",\n \"nature\",\n \"sea\",\n \"beach\",\n \"seashell\"\n ],\n \"🐌\": [\n \"snail\",\n \"slow\",\n \"animal\",\n \"shell\",\n \"garden\",\n \"slug\"\n ],\n \"🦋\": [\n \"butterfly\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"caterpillar\",\n \"pretty\"\n ],\n \"🐛\": [\n \"bug\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"worm\",\n \"caterpillar\"\n ],\n \"🐜\": [\n \"ant\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\"\n ],\n \"🐝\": [\n \"honeybee\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\",\n \"spring\",\n \"honey\",\n \"bee\",\n \"bumblebee\"\n ],\n \"🐞\": [\n \"lady_beetle\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"ladybug\",\n \"bug\",\n \"ladybird\"\n ],\n \"🦗\": [\n \"cricket\",\n \"animal\",\n \"chirp\",\n \"grasshopper\",\n \"insect\",\n \"orthoptera\"\n ],\n \"🕷️\": [\n \"spider\",\n \"animal\",\n \"arachnid\",\n \"insect\"\n ],\n \"🕸️\": [\n \"spider_web\",\n \"animal\",\n \"insect\",\n \"arachnid\",\n \"silk\",\n \"cobweb\",\n \"spiderweb\"\n ],\n \"🦂\": [\n \"scorpion\",\n \"animal\",\n \"arachnid\",\n \"scorpio\",\n \"scorpius\",\n \"zodiac\"\n ],\n \"🦟\": [\n \"mosquito\",\n \"animal\",\n \"nature\",\n \"insect\",\n \"malaria\",\n \"disease\",\n \"fever\",\n \"pest\",\n \"virus\"\n ],\n \"🦠\": [\n \"microbe\",\n \"amoeba\",\n \"bacteria\",\n \"germs\",\n \"virus\",\n \"covid\",\n \"cell\",\n \"coronavirus\",\n \"germ\",\n \"microorganism\"\n ],\n \"💐\": [\n \"bouquet\",\n \"flowers\",\n \"nature\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"romance\"\n ],\n \"🌸\": [\n \"cherry_blossom\",\n \"nature\",\n \"plant\",\n \"spring\",\n \"flower\",\n \"pink\",\n \"sakura\"\n ],\n \"💮\": [\n \"white_flower\",\n \"japanese\",\n \"spring\",\n \"blossom\",\n \"cherry\",\n \"doily\",\n \"done\",\n \"paper\",\n \"stamp\",\n \"well\"\n ],\n \"🏵️\": [\n \"rosette\",\n \"flower\",\n \"decoration\",\n \"military\",\n \"plant\"\n ],\n \"🌹\": [\n \"rose\",\n \"flowers\",\n \"valentines\",\n \"love\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"red\"\n ],\n \"🥀\": [\n \"wilted_flower\",\n \"plant\",\n \"nature\",\n \"flower\",\n \"rose\",\n \"dead\",\n \"drooping\"\n ],\n \"🌺\": [\n \"hibiscus\",\n \"plant\",\n \"vegetable\",\n \"flowers\",\n \"beach\",\n \"flower\"\n ],\n \"🌻\": [\n \"sunflower\",\n \"nature\",\n \"plant\",\n \"fall\",\n \"flower\",\n \"sun\",\n \"yellow\"\n ],\n \"🌼\": [\n \"blossom\",\n \"nature\",\n \"flowers\",\n \"yellow\",\n \"blossoming flower\",\n \"daisy\",\n \"flower\",\n \"plant\"\n ],\n \"🌷\": [\n \"tulip\",\n \"flowers\",\n \"plant\",\n \"nature\",\n \"summer\",\n \"spring\",\n \"flower\"\n ],\n \"🌱\": [\n \"seedling\",\n \"plant\",\n \"nature\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"sprout\",\n \"sprouting\",\n \"young\",\n \"seed\"\n ],\n \"🌲\": [\n \"evergreen_tree\",\n \"plant\",\n \"nature\",\n \"fir\",\n \"pine\",\n \"wood\"\n ],\n \"🌳\": [\n \"deciduous_tree\",\n \"plant\",\n \"nature\",\n \"rounded\",\n \"shedding\",\n \"wood\"\n ],\n \"🌴\": [\n \"palm_tree\",\n \"plant\",\n \"vegetable\",\n \"nature\",\n \"summer\",\n \"beach\",\n \"mojito\",\n \"tropical\",\n \"coconut\"\n ],\n \"🌵\": [\n \"cactus\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"desert\"\n ],\n \"🌾\": [\n \"sheaf_of_rice\",\n \"nature\",\n \"plant\",\n \"crop\",\n \"ear\",\n \"farming\",\n \"grain\",\n \"wheat\"\n ],\n \"🌿\": [\n \"herb\",\n \"vegetable\",\n \"plant\",\n \"medicine\",\n \"weed\",\n \"grass\",\n \"lawn\",\n \"crop\",\n \"leaf\"\n ],\n \"☘️\": [\n \"shamrock\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"irish\",\n \"clover\",\n \"trefoil\"\n ],\n \"🍀\": [\n \"four_leaf_clover\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"lucky\",\n \"irish\",\n \"ireland\",\n \"luck\"\n ],\n \"🍁\": [\n \"maple_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"ca\",\n \"fall\",\n \"canada\",\n \"canadian\",\n \"falling\"\n ],\n \"🍂\": [\n \"fallen_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"leaves\",\n \"autumn\",\n \"brown\",\n \"fall\",\n \"falling\"\n ],\n \"🍃\": [\n \"leaf_fluttering_in_wind\",\n \"nature\",\n \"plant\",\n \"tree\",\n \"vegetable\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"blow\",\n \"flutter\",\n \"green\",\n \"leaves\"\n ],\n \"🍇\": [\n \"grapes\",\n \"fruit\",\n \"food\",\n \"wine\",\n \"grape\",\n \"plant\"\n ],\n \"🍈\": [\n \"melon\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"cantaloupe\",\n \"honeydew\",\n \"muskmelon\",\n \"plant\"\n ],\n \"🍉\": [\n \"watermelon\",\n \"fruit\",\n \"food\",\n \"picnic\",\n \"summer\",\n \"plant\"\n ],\n \"🍊\": [\n \"tangerine\",\n \"food\",\n \"fruit\",\n \"nature\",\n \"orange\",\n \"mandarin\",\n \"plant\"\n ],\n \"🍋\": [\n \"lemon\",\n \"fruit\",\n \"nature\",\n \"citrus\",\n \"lemonade\",\n \"plant\"\n ],\n \"🍌\": [\n \"banana\",\n \"fruit\",\n \"food\",\n \"monkey\",\n \"plant\",\n \"plantain\"\n ],\n \"🍍\": [\n \"pineapple\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥭\": [\n \"mango\",\n \"fruit\",\n \"food\",\n \"tropical\"\n ],\n \"🍎\": [\n \"red_apple\",\n \"fruit\",\n \"mac\",\n \"school\",\n \"delicious\",\n \"plant\"\n ],\n \"🍏\": [\n \"green_apple\",\n \"fruit\",\n \"nature\",\n \"delicious\",\n \"golden\",\n \"granny\",\n \"plant\",\n \"smith\"\n ],\n \"🍐\": [\n \"pear\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🍑\": [\n \"peach\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"bottom\",\n \"butt\",\n \"plant\"\n ],\n \"🍒\": [\n \"cherries\",\n \"food\",\n \"fruit\",\n \"berries\",\n \"cherry\",\n \"plant\",\n \"red\",\n \"wild\"\n ],\n \"🍓\": [\n \"strawberry\",\n \"fruit\",\n \"food\",\n \"nature\",\n \"berry\",\n \"plant\"\n ],\n \"🥝\": [\n \"kiwi_fruit\",\n \"fruit\",\n \"food\",\n \"chinese\",\n \"gooseberry\",\n \"kiwifruit\"\n ],\n \"🍅\": [\n \"tomato\",\n \"fruit\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥥\": [\n \"coconut\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"palm\",\n \"cocoanut\",\n \"colada\",\n \"piña\"\n ],\n \"🥑\": [\n \"avocado\",\n \"fruit\",\n \"food\"\n ],\n \"🍆\": [\n \"eggplant\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"aubergine\",\n \"phallic\",\n \"plant\",\n \"purple\"\n ],\n \"🥔\": [\n \"potato\",\n \"food\",\n \"tuber\",\n \"vegatable\",\n \"starch\",\n \"baked\",\n \"idaho\",\n \"vegetable\"\n ],\n \"🥕\": [\n \"carrot\",\n \"vegetable\",\n \"food\",\n \"orange\"\n ],\n \"🌽\": [\n \"ear_of_corn\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"cob\",\n \"maize\",\n \"maze\"\n ],\n \"🌶️\": [\n \"hot_pepper\",\n \"food\",\n \"spicy\",\n \"chilli\",\n \"chili\",\n \"plant\"\n ],\n \"🥒\": [\n \"cucumber\",\n \"fruit\",\n \"food\",\n \"pickle\",\n \"gherkin\",\n \"vegetable\"\n ],\n \"🥬\": [\n \"leafy_green\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"bok choy\",\n \"cabbage\",\n \"kale\",\n \"lettuce\",\n \"chinese\",\n \"cos\",\n \"greens\",\n \"romaine\"\n ],\n \"🥦\": [\n \"broccoli\",\n \"fruit\",\n \"food\",\n \"vegetable\",\n \"cabbage\",\n \"wild\"\n ],\n \"🧄\": [\n \"garlic\",\n \"food\",\n \"spice\",\n \"cook\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🧅\": [\n \"onion\",\n \"cook\",\n \"food\",\n \"spice\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🍄\": [\n \"mushroom\",\n \"plant\",\n \"vegetable\",\n \"fungus\",\n \"shroom\",\n \"toadstool\"\n ],\n \"🥜\": [\n \"peanuts\",\n \"food\",\n \"nut\",\n \"nuts\",\n \"peanut\",\n \"vegetable\"\n ],\n \"🌰\": [\n \"chestnut\",\n \"food\",\n \"squirrel\",\n \"acorn\",\n \"nut\",\n \"plant\"\n ],\n \"🍞\": [\n \"bread\",\n \"food\",\n \"wheat\",\n \"breakfast\",\n \"toast\",\n \"loaf\"\n ],\n \"🥐\": [\n \"croissant\",\n \"food\",\n \"bread\",\n \"french\",\n \"breakfast\",\n \"crescent\",\n \"roll\"\n ],\n \"🥖\": [\n \"baguette_bread\",\n \"food\",\n \"bread\",\n \"french\",\n \"france\",\n \"bakery\"\n ],\n \"🥨\": [\n \"pretzel\",\n \"food\",\n \"bread\",\n \"twisted\",\n \"germany\",\n \"bakery\",\n \"soft\",\n \"twist\"\n ],\n \"🥯\": [\n \"bagel\",\n \"food\",\n \"bread\",\n \"bakery\",\n \"schmear\",\n \"jewish_bakery\",\n \"breakfast\",\n \"cheese\",\n \"cream\"\n ],\n \"🥞\": [\n \"pancakes\",\n \"food\",\n \"breakfast\",\n \"flapjacks\",\n \"hotcakes\",\n \"brunch\",\n \"crêpe\",\n \"crêpes\",\n \"hotcake\",\n \"pancake\"\n ],\n \"🧇\": [\n \"waffle\",\n \"food\",\n \"breakfast\",\n \"brunch\",\n \"indecisive\",\n \"iron\"\n ],\n \"🧀\": [\n \"cheese_wedge\",\n \"food\",\n \"chadder\",\n \"swiss\"\n ],\n \"🍖\": [\n \"meat_on_bone\",\n \"good\",\n \"food\",\n \"drumstick\",\n \"barbecue\",\n \"bbq\",\n \"manga\"\n ],\n \"🍗\": [\n \"poultry_leg\",\n \"food\",\n \"meat\",\n \"drumstick\",\n \"bird\",\n \"chicken\",\n \"turkey\",\n \"bone\"\n ],\n \"🥩\": [\n \"cut_of_meat\",\n \"food\",\n \"cow\",\n \"meat\",\n \"cut\",\n \"chop\",\n \"lambchop\",\n \"porkchop\",\n \"steak\"\n ],\n \"🥓\": [\n \"bacon\",\n \"food\",\n \"breakfast\",\n \"pork\",\n \"pig\",\n \"meat\",\n \"brunch\",\n \"rashers\"\n ],\n \"🍔\": [\n \"hamburger\",\n \"meat\",\n \"fast food\",\n \"beef\",\n \"cheeseburger\",\n \"mcdonalds\",\n \"burger king\"\n ],\n \"🍟\": [\n \"french_fries\",\n \"chips\",\n \"snack\",\n \"fast food\",\n \"potato\",\n \"mcdonald's\"\n ],\n \"🍕\": [\n \"pizza\",\n \"food\",\n \"party\",\n \"italy\",\n \"cheese\",\n \"pepperoni\",\n \"slice\"\n ],\n \"🌭\": [\n \"hot_dog\",\n \"food\",\n \"frankfurter\",\n \"america\",\n \"hotdog\",\n \"redhot\",\n \"sausage\",\n \"wiener\"\n ],\n \"🥪\": [\n \"sandwich\",\n \"food\",\n \"lunch\",\n \"bread\",\n \"toast\",\n \"bakery\",\n \"cheese\",\n \"deli\",\n \"meat\",\n \"vegetables\"\n ],\n \"🌮\": [\n \"taco\",\n \"food\",\n \"mexican\"\n ],\n \"🌯\": [\n \"burrito\",\n \"food\",\n \"mexican\",\n \"wrap\"\n ],\n \"🥙\": [\n \"stuffed_flatbread\",\n \"food\",\n \"flatbread\",\n \"stuffed\",\n \"gyro\",\n \"mediterranean\",\n \"doner\",\n \"falafel\",\n \"kebab\",\n \"pita\",\n \"sandwich\",\n \"shawarma\"\n ],\n \"🧆\": [\n \"falafel\",\n \"food\",\n \"mediterranean\",\n \"chickpea\",\n \"falfel\",\n \"meatball\"\n ],\n \"🥚\": [\n \"egg\",\n \"food\",\n \"chicken\",\n \"breakfast\",\n \"easter_egg\"\n ],\n \"🍳\": [\n \"cooking\",\n \"food\",\n \"breakfast\",\n \"kitchen\",\n \"egg\",\n \"skillet\",\n \"fried\",\n \"frying\",\n \"pan\"\n ],\n \"🥘\": [\n \"shallow_pan_of_food\",\n \"food\",\n \"cooking\",\n \"casserole\",\n \"paella\",\n \"skillet\",\n \"curry\"\n ],\n \"🍲\": [\n \"pot_of_food\",\n \"food\",\n \"meat\",\n \"soup\",\n \"hot pot\",\n \"bowl\",\n \"stew\"\n ],\n \"🥣\": [\n \"bowl_with_spoon\",\n \"food\",\n \"breakfast\",\n \"cereal\",\n \"oatmeal\",\n \"porridge\",\n \"congee\",\n \"tableware\"\n ],\n \"🥗\": [\n \"green_salad\",\n \"food\",\n \"healthy\",\n \"lettuce\",\n \"vegetable\"\n ],\n \"🍿\": [\n \"popcorn\",\n \"food\",\n \"movie theater\",\n \"films\",\n \"snack\",\n \"drama\",\n \"corn\",\n \"popping\"\n ],\n \"🧈\": [\n \"butter\",\n \"food\",\n \"cook\",\n \"dairy\"\n ],\n \"🧂\": [\n \"salt\",\n \"condiment\",\n \"shaker\"\n ],\n \"🥫\": [\n \"canned_food\",\n \"food\",\n \"soup\",\n \"tomatoes\",\n \"can\",\n \"preserve\",\n \"tin\",\n \"tinned\"\n ],\n \"🍱\": [\n \"bento_box\",\n \"food\",\n \"japanese\",\n \"box\",\n \"lunch\",\n \"assets\"\n ],\n \"🍘\": [\n \"rice_cracker\",\n \"food\",\n \"japanese\",\n \"snack\",\n \"senbei\"\n ],\n \"🍙\": [\n \"rice_ball\",\n \"food\",\n \"japanese\",\n \"onigiri\",\n \"omusubi\"\n ],\n \"🍚\": [\n \"cooked_rice\",\n \"food\",\n \"asian\",\n \"boiled\",\n \"bowl\",\n \"steamed\"\n ],\n \"🍛\": [\n \"curry_rice\",\n \"food\",\n \"spicy\",\n \"hot\",\n \"indian\"\n ],\n \"🍜\": [\n \"steaming_bowl\",\n \"food\",\n \"japanese\",\n \"noodle\",\n \"chopsticks\",\n \"ramen\",\n \"noodles\",\n \"soup\"\n ],\n \"🍝\": [\n \"spaghetti\",\n \"food\",\n \"italian\",\n \"pasta\",\n \"noodle\"\n ],\n \"🍠\": [\n \"roasted_sweet_potato\",\n \"food\",\n \"nature\",\n \"plant\",\n \"goguma\",\n \"yam\"\n ],\n \"🍢\": [\n \"oden\",\n \"skewer\",\n \"food\",\n \"japanese\",\n \"kebab\",\n \"seafood\",\n \"stick\"\n ],\n \"🍣\": [\n \"sushi\",\n \"food\",\n \"fish\",\n \"japanese\",\n \"rice\",\n \"sashimi\",\n \"seafood\"\n ],\n \"🍤\": [\n \"fried_shrimp\",\n \"food\",\n \"animal\",\n \"appetizer\",\n \"summer\",\n \"prawn\",\n \"tempura\"\n ],\n \"🍥\": [\n \"fish_cake_with_swirl\",\n \"food\",\n \"japan\",\n \"sea\",\n \"beach\",\n \"narutomaki\",\n \"pink\",\n \"swirl\",\n \"kamaboko\",\n \"surimi\",\n \"ramen\",\n \"design\",\n \"fishcake\",\n \"pastry\"\n ],\n \"🥮\": [\n \"moon_cake\",\n \"food\",\n \"autumn\",\n \"dessert\",\n \"festival\",\n \"mooncake\",\n \"yuèbǐng\"\n ],\n \"🍡\": [\n \"dango\",\n \"food\",\n \"dessert\",\n \"sweet\",\n \"japanese\",\n \"barbecue\",\n \"meat\",\n \"balls\",\n \"green\",\n \"pink\",\n \"skewer\",\n \"stick\",\n \"white\"\n ],\n \"🥟\": [\n \"dumpling\",\n \"food\",\n \"empanada\",\n \"pierogi\",\n \"potsticker\",\n \"gyoza\",\n \"gyōza\",\n \"jiaozi\"\n ],\n \"🥠\": [\n \"fortune_cookie\",\n \"food\",\n \"prophecy\",\n \"dessert\"\n ],\n \"🥡\": [\n \"takeout_box\",\n \"food\",\n \"leftovers\",\n \"chinese\",\n \"container\",\n \"out\",\n \"oyster\",\n \"pail\",\n \"take\"\n ],\n \"🦀\": [\n \"crab\",\n \"animal\",\n \"crustacean\",\n \"cancer\",\n \"zodiac\"\n ],\n \"🦞\": [\n \"lobster\",\n \"animal\",\n \"nature\",\n \"bisque\",\n \"claws\",\n \"seafood\"\n ],\n \"🦐\": [\n \"shrimp\",\n \"animal\",\n \"ocean\",\n \"nature\",\n \"seafood\",\n \"food\",\n \"prawn\",\n \"shellfish\",\n \"small\"\n ],\n \"🦑\": [\n \"squid\",\n \"animal\",\n \"nature\",\n \"ocean\",\n \"sea\",\n \"food\",\n \"molusc\"\n ],\n \"🦪\": [\n \"oyster\",\n \"food\",\n \"diving\",\n \"pearl\"\n ],\n \"🍦\": [\n \"soft_ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"icecream\",\n \"mr.\",\n \"serve\",\n \"sweet\",\n \"whippy\"\n ],\n \"🍧\": [\n \"shaved_ice\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"cone\",\n \"snow\",\n \"sweet\"\n ],\n \"🍨\": [\n \"ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"bowl\",\n \"sweet\"\n ],\n \"🍩\": [\n \"doughnut\",\n \"food\",\n \"dessert\",\n \"snack\",\n \"sweet\",\n \"donut\",\n \"breakfast\"\n ],\n \"🍪\": [\n \"cookie\",\n \"food\",\n \"snack\",\n \"oreo\",\n \"chocolate\",\n \"sweet\",\n \"dessert\",\n \"biscuit\",\n \"chip\"\n ],\n \"🎂\": [\n \"birthday_cake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"candles\",\n \"celebration\",\n \"party\",\n \"pastry\",\n \"sweet\"\n ],\n \"🍰\": [\n \"shortcake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"pastry\",\n \"piece\",\n \"slice\",\n \"strawberry\",\n \"sweet\"\n ],\n \"🧁\": [\n \"cupcake\",\n \"food\",\n \"dessert\",\n \"bakery\",\n \"sweet\",\n \"cake\",\n \"fairy\",\n \"pastry\"\n ],\n \"🥧\": [\n \"pie\",\n \"food\",\n \"dessert\",\n \"pastry\",\n \"filling\",\n \"sweet\"\n ],\n \"🍫\": [\n \"chocolate_bar\",\n \"food\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"candy\"\n ],\n \"🍬\": [\n \"candy\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"lolly\"\n ],\n \"🍭\": [\n \"lollipop\",\n \"food\",\n \"snack\",\n \"candy\",\n \"sweet\",\n \"dessert\",\n \"lollypop\",\n \"sucker\"\n ],\n \"🍮\": [\n \"custard\",\n \"dessert\",\n \"food\",\n \"pudding\",\n \"flan\",\n \"caramel\",\n \"creme\",\n \"sweet\"\n ],\n \"🍯\": [\n \"honey_pot\",\n \"bees\",\n \"sweet\",\n \"kitchen\",\n \"honeypot\"\n ],\n \"🍼\": [\n \"baby_bottle\",\n \"food\",\n \"container\",\n \"milk\",\n \"drink\",\n \"feeding\"\n ],\n \"🥛\": [\n \"glass_of_milk\",\n \"beverage\",\n \"drink\",\n \"cow\"\n ],\n \"☕\": [\n \"hot_beverage\",\n \"beverage\",\n \"caffeine\",\n \"latte\",\n \"espresso\",\n \"coffee\",\n \"mug\",\n \"cafe\",\n \"chocolate\",\n \"drink\",\n \"steaming\",\n \"tea\"\n ],\n \"🍵\": [\n \"teacup_without_handle\",\n \"drink\",\n \"bowl\",\n \"breakfast\",\n \"green\",\n \"british\",\n \"beverage\",\n \"cup\",\n \"matcha\",\n \"tea\"\n ],\n \"🍶\": [\n \"sake\",\n \"wine\",\n \"drink\",\n \"drunk\",\n \"beverage\",\n \"japanese\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"bottle\",\n \"cup\",\n \"rice\"\n ],\n \"🍾\": [\n \"bottle_with_popping_cork\",\n \"drink\",\n \"wine\",\n \"bottle\",\n \"celebration\",\n \"bar\",\n \"bubbly\",\n \"champagne\",\n \"party\",\n \"sparkling\"\n ],\n \"🍷\": [\n \"wine_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"red\"\n ],\n \"🍸\": [\n \"cocktail_glass\",\n \"drink\",\n \"drunk\",\n \"alcohol\",\n \"beverage\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"martini\"\n ],\n \"🍹\": [\n \"tropical_drink\",\n \"beverage\",\n \"cocktail\",\n \"summer\",\n \"beach\",\n \"alcohol\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"fruit\",\n \"punch\",\n \"tiki\",\n \"vacation\"\n ],\n \"🍺\": [\n \"beer_mug\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"stein\"\n ],\n \"🍻\": [\n \"clinking_beer_mugs\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"beers\",\n \"cheers\",\n \"clink\",\n \"drinks\",\n \"mug\"\n ],\n \"🥂\": [\n \"clinking_glasses\",\n \"beverage\",\n \"drink\",\n \"party\",\n \"alcohol\",\n \"celebrate\",\n \"cheers\",\n \"wine\",\n \"champagne\",\n \"toast\",\n \"celebration\",\n \"clink\",\n \"glass\"\n ],\n \"🥃\": [\n \"tumbler_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"liquor\",\n \"booze\",\n \"bourbon\",\n \"scotch\",\n \"whisky\",\n \"glass\",\n \"shot\",\n \"rum\",\n \"whiskey\"\n ],\n \"🥤\": [\n \"cup_with_straw\",\n \"drink\",\n \"soda\",\n \"go\",\n \"juice\",\n \"malt\",\n \"milkshake\",\n \"pop\",\n \"smoothie\",\n \"soft\",\n \"tableware\",\n \"water\"\n ],\n \"🧃\": [\n \"beverage_box\",\n \"drink\",\n \"juice\",\n \"straw\",\n \"sweet\"\n ],\n \"🧉\": [\n \"mate\",\n \"drink\",\n \"tea\",\n \"beverage\",\n \"bombilla\",\n \"chimarrão\",\n \"cimarrón\",\n \"maté\",\n \"yerba\"\n ],\n \"🧊\": [\n \"ice\",\n \"water\",\n \"cold\",\n \"cube\",\n \"iceberg\"\n ],\n \"🥢\": [\n \"chopsticks\",\n \"food\",\n \"hashi\",\n \"jeotgarak\",\n \"kuaizi\"\n ],\n \"🍽️\": [\n \"fork_and_knife_with_plate\",\n \"food\",\n \"eat\",\n \"meal\",\n \"lunch\",\n \"dinner\",\n \"restaurant\",\n \"cooking\",\n \"cutlery\",\n \"dining\",\n \"tableware\"\n ],\n \"🍴\": [\n \"fork_and_knife\",\n \"cutlery\",\n \"kitchen\",\n \"cooking\",\n \"silverware\",\n \"tableware\"\n ],\n \"🥄\": [\n \"spoon\",\n \"cutlery\",\n \"kitchen\",\n \"tableware\"\n ],\n \"🔪\": [\n \"kitchen_knife\",\n \"knife\",\n \"blade\",\n \"cutlery\",\n \"kitchen\",\n \"weapon\",\n \"butchers\",\n \"chop\",\n \"cooking\",\n \"cut\",\n \"hocho\",\n \"tool\"\n ],\n \"🏺\": [\n \"amphora\",\n \"vase\",\n \"jar\",\n \"aquarius\",\n \"cooking\",\n \"drink\",\n \"jug\",\n \"tool\",\n \"zodiac\"\n ],\n \"🌍\": [\n \"globe_showing_europe_africa\",\n \"globe\",\n \"world\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌎\": [\n \"globe_showing_americas\",\n \"globe\",\n \"world\",\n \"USA\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌏\": [\n \"globe_showing_asia_australia\",\n \"globe\",\n \"world\",\n \"east\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌐\": [\n \"globe_with_meridians\",\n \"earth\",\n \"international\",\n \"world\",\n \"internet\",\n \"interweb\",\n \"i18n\",\n \"global\",\n \"web\",\n \"wide\",\n \"www\",\n \"internationalization\",\n \"localization\"\n ],\n \"🗺️\": [\n \"world_map\",\n \"location\",\n \"direction\",\n \"travel\"\n ],\n \"🗾\": [\n \"map_of_japan\",\n \"nation\",\n \"country\",\n \"japanese\",\n \"asia\",\n \"silhouette\"\n ],\n \"🧭\": [\n \"compass\",\n \"magnetic\",\n \"navigation\",\n \"orienteering\"\n ],\n \"🏔️\": [\n \"snow_capped_mountain\",\n \"photo\",\n \"nature\",\n \"environment\",\n \"winter\",\n \"cold\"\n ],\n \"⛰️\": [\n \"mountain\",\n \"photo\",\n \"nature\",\n \"environment\"\n ],\n \"🌋\": [\n \"volcano\",\n \"photo\",\n \"nature\",\n \"disaster\",\n \"eruption\",\n \"mountain\",\n \"weather\"\n ],\n \"🗻\": [\n \"mount_fuji\",\n \"photo\",\n \"mountain\",\n \"nature\",\n \"japanese\",\n \"capped\",\n \"san\",\n \"snow\"\n ],\n \"🏕️\": [\n \"camping\",\n \"photo\",\n \"outdoors\",\n \"tent\",\n \"campsite\"\n ],\n \"🏖️\": [\n \"beach_with_umbrella\",\n \"weather\",\n \"summer\",\n \"sunny\",\n \"sand\",\n \"mojito\"\n ],\n \"🏜️\": [\n \"desert\",\n \"photo\",\n \"warm\",\n \"saharah\"\n ],\n \"🏝️\": [\n \"desert_island\",\n \"photo\",\n \"tropical\",\n \"mojito\"\n ],\n \"🏞️\": [\n \"national_park\",\n \"photo\",\n \"environment\",\n \"nature\"\n ],\n \"🏟️\": [\n \"stadium\",\n \"photo\",\n \"place\",\n \"sports\",\n \"concert\",\n \"venue\",\n \"grandstand\",\n \"sport\"\n ],\n \"🏛️\": [\n \"classical_building\",\n \"art\",\n \"culture\",\n \"history\"\n ],\n \"🏗️\": [\n \"building_construction\",\n \"wip\",\n \"working\",\n \"progress\",\n \"crane\",\n \"architectural\"\n ],\n \"🧱\": [\n \"brick\",\n \"bricks\",\n \"clay\",\n \"construction\",\n \"mortar\",\n \"wall\",\n \"infrastructure\"\n ],\n \"🏘️\": [\n \"houses\",\n \"buildings\",\n \"photo\",\n \"building\",\n \"group\",\n \"house\"\n ],\n \"🏚️\": [\n \"derelict_house\",\n \"abandon\",\n \"evict\",\n \"broken\",\n \"building\",\n \"abandoned\",\n \"haunted\",\n \"old\"\n ],\n \"🏠\": [\n \"house\",\n \"building\",\n \"home\"\n ],\n \"🏡\": [\n \"house_with_garden\",\n \"home\",\n \"plant\",\n \"nature\",\n \"building\",\n \"tree\"\n ],\n \"🏢\": [\n \"office_building\",\n \"building\",\n \"bureau\",\n \"work\",\n \"city\",\n \"high\",\n \"rise\"\n ],\n \"🏣\": [\n \"japanese_post_office\",\n \"building\",\n \"envelope\",\n \"communication\",\n \"japan\",\n \"mark\",\n \"postal\"\n ],\n \"🏤\": [\n \"post_office\",\n \"building\",\n \"email\",\n \"european\"\n ],\n \"🏥\": [\n \"hospital\",\n \"building\",\n \"health\",\n \"surgery\",\n \"doctor\",\n \"cross\",\n \"emergency\",\n \"medical\",\n \"medicine\",\n \"red\",\n \"room\"\n ],\n \"🏦\": [\n \"bank\",\n \"building\",\n \"money\",\n \"sales\",\n \"cash\",\n \"business\",\n \"enterprise\",\n \"bakkureru\",\n \"bk\",\n \"branch\"\n ],\n \"🏨\": [\n \"hotel\",\n \"building\",\n \"accomodation\",\n \"checkin\",\n \"accommodation\",\n \"h\"\n ],\n \"🏩\": [\n \"love_hotel\",\n \"like\",\n \"affection\",\n \"dating\",\n \"building\",\n \"heart\",\n \"hospital\"\n ],\n \"🏪\": [\n \"convenience_store\",\n \"building\",\n \"shopping\",\n \"groceries\",\n \"corner\",\n \"e\",\n \"eleven®\",\n \"hour\",\n \"kwik\",\n \"mart\",\n \"shop\"\n ],\n \"🏫\": [\n \"school\",\n \"building\",\n \"student\",\n \"education\",\n \"learn\",\n \"teach\",\n \"clock\",\n \"elementary\",\n \"high\",\n \"middle\",\n \"tower\"\n ],\n \"🏬\": [\n \"department_store\",\n \"building\",\n \"shopping\",\n \"mall\",\n \"center\",\n \"shops\"\n ],\n \"🏭\": [\n \"factory\",\n \"building\",\n \"industry\",\n \"pollution\",\n \"smoke\",\n \"industrial\",\n \"smog\"\n ],\n \"🏯\": [\n \"japanese_castle\",\n \"photo\",\n \"building\",\n \"fortress\"\n ],\n \"🏰\": [\n \"castle\",\n \"building\",\n \"royalty\",\n \"history\",\n \"european\",\n \"turrets\"\n ],\n \"💒\": [\n \"wedding\",\n \"love\",\n \"like\",\n \"affection\",\n \"couple\",\n \"marriage\",\n \"bride\",\n \"groom\",\n \"activity\",\n \"chapel\",\n \"church\",\n \"heart\",\n \"romance\"\n ],\n \"🗼\": [\n \"tokyo_tower\",\n \"photo\",\n \"japanese\",\n \"eiffel\",\n \"red\"\n ],\n \"🗽\": [\n \"statue_of_liberty\",\n \"american\",\n \"newyork\",\n \"new\",\n \"york\"\n ],\n \"⛪\": [\n \"church\",\n \"building\",\n \"religion\",\n \"christ\",\n \"christian\",\n \"cross\"\n ],\n \"🕌\": [\n \"mosque\",\n \"islam\",\n \"worship\",\n \"minaret\",\n \"domed\",\n \"muslim\",\n \"religion\",\n \"roof\"\n ],\n \"🛕\": [\n \"hindu_temple\",\n \"religion\"\n ],\n \"🕍\": [\n \"synagogue\",\n \"judaism\",\n \"worship\",\n \"temple\",\n \"jewish\",\n \"jew\",\n \"religion\",\n \"synagog\"\n ],\n \"⛩️\": [\n \"shinto_shrine\",\n \"temple\",\n \"japan\",\n \"kyoto\",\n \"kami\",\n \"michi\",\n \"no\",\n \"religion\"\n ],\n \"🕋\": [\n \"kaaba\",\n \"mecca\",\n \"mosque\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"⛲\": [\n \"fountain\",\n \"photo\",\n \"summer\",\n \"water\",\n \"fresh\",\n \"feature\",\n \"park\"\n ],\n \"⛺\": [\n \"tent\",\n \"photo\",\n \"camping\",\n \"outdoors\"\n ],\n \"🌁\": [\n \"foggy\",\n \"photo\",\n \"mountain\",\n \"bridge\",\n \"city\",\n \"fog\",\n \"fog bridge\",\n \"karl\",\n \"under\",\n \"weather\"\n ],\n \"🌃\": [\n \"night_with_stars\",\n \"evening\",\n \"city\",\n \"downtown\",\n \"star\",\n \"starry\",\n \"weather\"\n ],\n \"🏙️\": [\n \"cityscape\",\n \"photo\",\n \"night life\",\n \"urban\",\n \"building\",\n \"city\",\n \"skyline\"\n ],\n \"🌄\": [\n \"sunrise_over_mountains\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"morning\",\n \"mountain\",\n \"sun\",\n \"weather\"\n ],\n \"🌅\": [\n \"sunrise\",\n \"morning\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌆\": [\n \"cityscape_at_dusk\",\n \"photo\",\n \"evening\",\n \"sky\",\n \"buildings\",\n \"building\",\n \"city\",\n \"landscape\",\n \"orange\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌇\": [\n \"sunset\",\n \"photo\",\n \"good morning\",\n \"dawn\",\n \"building\",\n \"buildings\",\n \"city\",\n \"dusk\",\n \"over\",\n \"sun\",\n \"sunrise\",\n \"weather\"\n ],\n \"🌉\": [\n \"bridge_at_night\",\n \"photo\",\n \"sanfrancisco\",\n \"gate\",\n \"golden\",\n \"weather\"\n ],\n \"♨️\": [\n \"hot_springs\",\n \"bath\",\n \"warm\",\n \"relax\",\n \"hotsprings\",\n \"onsen\",\n \"steam\",\n \"steaming\"\n ],\n \"🎠\": [\n \"carousel_horse\",\n \"photo\",\n \"carnival\",\n \"activity\",\n \"entertainment\",\n \"fairground\",\n \"go\",\n \"merry\",\n \"round\"\n ],\n \"🎡\": [\n \"ferris_wheel\",\n \"photo\",\n \"carnival\",\n \"londoneye\",\n \"activity\",\n \"amusement\",\n \"big\",\n \"entertainment\",\n \"fairground\",\n \"observation\",\n \"park\"\n ],\n \"🎢\": [\n \"roller_coaster\",\n \"carnival\",\n \"playground\",\n \"photo\",\n \"fun\",\n \"activity\",\n \"amusement\",\n \"entertainment\",\n \"park\",\n \"rollercoaster\",\n \"theme\"\n ],\n \"💈\": [\n \"barber_pole\",\n \"hair\",\n \"salon\",\n \"style\",\n \"barber's\",\n \"haircut\",\n \"hairdresser\",\n \"shop\",\n \"stripes\"\n ],\n \"🎪\": [\n \"circus_tent\",\n \"festival\",\n \"carnival\",\n \"party\",\n \"activity\",\n \"big\",\n \"entertainment\",\n \"top\"\n ],\n \"🚂\": [\n \"locomotive\",\n \"transportation\",\n \"vehicle\",\n \"train\",\n \"engine\",\n \"railway\",\n \"steam\"\n ],\n \"🚃\": [\n \"railway_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"electric\",\n \"railcar\",\n \"railroad\",\n \"train\",\n \"tram\",\n \"trolleybus\",\n \"wagon\"\n ],\n \"🚄\": [\n \"high_speed_train\",\n \"transportation\",\n \"vehicle\",\n \"bullettrain\",\n \"railway\",\n \"shinkansen\",\n \"side\"\n ],\n \"🚅\": [\n \"bullet_train\",\n \"transportation\",\n \"vehicle\",\n \"speed\",\n \"fast\",\n \"public\",\n \"travel\",\n \"bullettrain\",\n \"front\",\n \"high\",\n \"nose\",\n \"railway\",\n \"shinkansen\"\n ],\n \"🚆\": [\n \"train\",\n \"transportation\",\n \"vehicle\",\n \"diesel\",\n \"electric\",\n \"passenger\",\n \"railway\",\n \"regular\",\n \"train2\"\n ],\n \"🚇\": [\n \"metro\",\n \"transportation\",\n \"blue-square\",\n \"mrt\",\n \"underground\",\n \"tube\",\n \"subway\",\n \"train\",\n \"vehicle\"\n ],\n \"🚈\": [\n \"light_rail\",\n \"transportation\",\n \"vehicle\",\n \"railway\"\n ],\n \"🚉\": [\n \"station\",\n \"transportation\",\n \"vehicle\",\n \"public\",\n \"platform\",\n \"railway\",\n \"train\"\n ],\n \"🚊\": [\n \"tram\",\n \"transportation\",\n \"vehicle\",\n \"trolleybus\"\n ],\n \"🚝\": [\n \"monorail\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🚞\": [\n \"mountain_railway\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"funicular\",\n \"train\"\n ],\n \"🚋\": [\n \"tram_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"public\",\n \"travel\",\n \"train\",\n \"trolleybus\"\n ],\n \"🚌\": [\n \"bus\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"school\"\n ],\n \"🚍\": [\n \"oncoming_bus\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚎\": [\n \"trolleybus\",\n \"bart\",\n \"transportation\",\n \"vehicle\",\n \"bus\",\n \"electric bus\",\n \"tram\",\n \"trolley\"\n ],\n \"🚐\": [\n \"minibus\",\n \"vehicle\",\n \"car\",\n \"transportation\",\n \"bus\",\n \"minivan\",\n \"mover\",\n \"people\"\n ],\n \"🚑\": [\n \"ambulance\",\n \"health\",\n \"911\",\n \"hospital\",\n \"vehicle\"\n ],\n \"🚒\": [\n \"fire_engine\",\n \"transportation\",\n \"cars\",\n \"vehicle\",\n \"department\",\n \"truck\"\n ],\n \"🚓\": [\n \"police_car\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"cop\",\n \"patrol\",\n \"side\"\n ],\n \"🚔\": [\n \"oncoming_police_car\",\n \"vehicle\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"911\",\n \"front of\",\n \"🚓 cop\"\n ],\n \"🚕\": [\n \"taxi\",\n \"uber\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"new\",\n \"side\",\n \"taxicab\",\n \"york\"\n ],\n \"🚖\": [\n \"oncoming_taxi\",\n \"vehicle\",\n \"cars\",\n \"uber\",\n \"front\",\n \"taxicab\"\n ],\n \"🚗\": [\n \"automobile\",\n \"red\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"side\"\n ],\n \"🚘\": [\n \"oncoming_automobile\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚙\": [\n \"sport_utility_vehicle\",\n \"transportation\",\n \"vehicle\",\n \"blue\",\n \"campervan\",\n \"car\",\n \"motorhome\",\n \"recreational\",\n \"rv\"\n ],\n \"🚚\": [\n \"delivery_truck\",\n \"cars\",\n \"transportation\",\n \"vehicle\",\n \"resources\"\n ],\n \"🚛\": [\n \"articulated_lorry\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"express\",\n \"green\",\n \"semi\",\n \"truck\"\n ],\n \"🚜\": [\n \"tractor\",\n \"vehicle\",\n \"car\",\n \"farming\",\n \"agriculture\",\n \"farm\"\n ],\n \"🏎️\": [\n \"racing_car\",\n \"sports\",\n \"race\",\n \"fast\",\n \"formula\",\n \"f1\",\n \"one\"\n ],\n \"🏍️\": [\n \"motorcycle\",\n \"race\",\n \"sports\",\n \"fast\",\n \"motorbike\",\n \"racing\"\n ],\n \"🛵\": [\n \"motor_scooter\",\n \"vehicle\",\n \"vespa\",\n \"sasha\",\n \"bike\",\n \"cycle\"\n ],\n \"🦽\": [\n \"manual_wheelchair\",\n \"accessibility\"\n ],\n \"🦼\": [\n \"motorized_wheelchair\",\n \"accessibility\"\n ],\n \"🛺\": [\n \"auto_rickshaw\",\n \"move\",\n \"transportation\",\n \"tuk\"\n ],\n \"🚲\": [\n \"bicycle\",\n \"bike\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"push\",\n \"vehicle\"\n ],\n \"🛴\": [\n \"kick_scooter\",\n \"vehicle\",\n \"kick\",\n \"razor\"\n ],\n \"🛹\": [\n \"skateboard\",\n \"board\",\n \"skate\"\n ],\n \"🚏\": [\n \"bus_stop\",\n \"transportation\",\n \"wait\",\n \"busstop\"\n ],\n \"🛣️\": [\n \"motorway\",\n \"road\",\n \"cupertino\",\n \"interstate\",\n \"highway\"\n ],\n \"🛤️\": [\n \"railway_track\",\n \"train\",\n \"transportation\"\n ],\n \"🛢️\": [\n \"oil_drum\",\n \"barrell\"\n ],\n \"⛽\": [\n \"fuel_pump\",\n \"gas station\",\n \"petroleum\",\n \"diesel\",\n \"fuelpump\",\n \"petrol\"\n ],\n \"🚨\": [\n \"police_car_light\",\n \"police\",\n \"ambulance\",\n \"911\",\n \"emergency\",\n \"alert\",\n \"error\",\n \"pinged\",\n \"law\",\n \"legal\",\n \"beacon\",\n \"cars\",\n \"car’s\",\n \"emergency light\",\n \"flashing\",\n \"revolving\",\n \"rotating\",\n \"siren\",\n \"vehicle\",\n \"warning\"\n ],\n \"🚥\": [\n \"horizontal_traffic_light\",\n \"transportation\",\n \"signal\"\n ],\n \"🚦\": [\n \"vertical_traffic_light\",\n \"transportation\",\n \"driving\",\n \"semaphore\",\n \"signal\"\n ],\n \"🛑\": [\n \"stop_sign\",\n \"stop\",\n \"octagonal\"\n ],\n \"🚧\": [\n \"construction\",\n \"wip\",\n \"progress\",\n \"caution\",\n \"warning\",\n \"barrier\",\n \"black\",\n \"roadwork\",\n \"sign\",\n \"striped\",\n \"yellow\",\n \"work_in_progress\"\n ],\n \"⚓\": [\n \"anchor\",\n \"ship\",\n \"ferry\",\n \"sea\",\n \"boat\",\n \"admiralty\",\n \"fisherman\",\n \"pattern\",\n \"tool\"\n ],\n \"⛵\": [\n \"sailboat\",\n \"ship\",\n \"summer\",\n \"transportation\",\n \"water\",\n \"sailing\",\n \"boat\",\n \"dinghy\",\n \"resort\",\n \"sea\",\n \"vehicle\",\n \"yacht\"\n ],\n \"🛶\": [\n \"canoe\",\n \"boat\",\n \"paddle\",\n \"water\",\n \"ship\"\n ],\n \"🚤\": [\n \"speedboat\",\n \"ship\",\n \"transportation\",\n \"vehicle\",\n \"summer\",\n \"boat\",\n \"motorboat\",\n \"powerboat\"\n ],\n \"🛳️\": [\n \"passenger_ship\",\n \"yacht\",\n \"cruise\",\n \"ferry\",\n \"vehicle\"\n ],\n \"⛴️\": [\n \"ferry\",\n \"boat\",\n \"ship\",\n \"yacht\",\n \"passenger\"\n ],\n \"🛥️\": [\n \"motor_boat\",\n \"ship\",\n \"motorboat\",\n \"vehicle\"\n ],\n \"🚢\": [\n \"ship\",\n \"transportation\",\n \"titanic\",\n \"deploy\",\n \"boat\",\n \"cruise\",\n \"passenger\",\n \"vehicle\"\n ],\n \"✈️\": [\n \"airplane\",\n \"vehicle\",\n \"transportation\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛩️\": [\n \"small_airplane\",\n \"flight\",\n \"transportation\",\n \"fly\",\n \"vehicle\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛫\": [\n \"airplane_departure\",\n \"airport\",\n \"flight\",\n \"landing\",\n \"aeroplane\",\n \"departures\",\n \"off\",\n \"plane\",\n \"taking\",\n \"vehicle\"\n ],\n \"🛬\": [\n \"airplane_arrival\",\n \"airport\",\n \"flight\",\n \"boarding\",\n \"aeroplane\",\n \"arrivals\",\n \"arriving\",\n \"landing\",\n \"plane\",\n \"vehicle\"\n ],\n \"🪂\": [\n \"parachute\",\n \"fly\",\n \"glide\",\n \"hang\",\n \"parasail\",\n \"skydive\"\n ],\n \"💺\": [\n \"seat\",\n \"sit\",\n \"airplane\",\n \"transport\",\n \"bus\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"chair\",\n \"train\"\n ],\n \"🚁\": [\n \"helicopter\",\n \"transportation\",\n \"vehicle\",\n \"fly\"\n ],\n \"🚟\": [\n \"suspension_railway\",\n \"vehicle\",\n \"transportation\"\n ],\n \"🚠\": [\n \"mountain_cableway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"gondola\"\n ],\n \"🚡\": [\n \"aerial_tramway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"car\",\n \"gondola\",\n \"ropeway\"\n ],\n \"🛰️\": [\n \"satellite\",\n \"communication\",\n \"gps\",\n \"orbit\",\n \"spaceflight\",\n \"NASA\",\n \"ISS\",\n \"artificial\",\n \"space\",\n \"vehicle\"\n ],\n \"🚀\": [\n \"rocket\",\n \"launch\",\n \"ship\",\n \"staffmode\",\n \"NASA\",\n \"outer space\",\n \"outer_space\",\n \"fly\",\n \"shuttle\",\n \"vehicle\",\n \"deploy\"\n ],\n \"🛸\": [\n \"flying_saucer\",\n \"transportation\",\n \"vehicle\",\n \"ufo\",\n \"alien\",\n \"extraterrestrial\",\n \"fantasy\",\n \"space\"\n ],\n \"🛎️\": [\n \"bellhop_bell\",\n \"service\",\n \"hotel\"\n ],\n \"🧳\": [\n \"luggage\",\n \"packing\",\n \"travel\",\n \"suitcase\"\n ],\n \"⌛\": [\n \"hourglass_done\",\n \"time\",\n \"clock\",\n \"oldschool\",\n \"limit\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"sand\",\n \"timer\"\n ],\n \"⏳\": [\n \"hourglass_not_done\",\n \"oldschool\",\n \"time\",\n \"countdown\",\n \"flowing\",\n \"sand\",\n \"timer\"\n ],\n \"⌚\": [\n \"watch\",\n \"time\",\n \"accessories\",\n \"apple\",\n \"clock\",\n \"timepiece\",\n \"wrist\",\n \"wristwatch\"\n ],\n \"⏰\": [\n \"alarm_clock\",\n \"time\",\n \"wake\",\n \"morning\"\n ],\n \"⏱️\": [\n \"stopwatch\",\n \"time\",\n \"deadline\",\n \"clock\"\n ],\n \"⏲️\": [\n \"timer_clock\",\n \"alarm\"\n ],\n \"🕰️\": [\n \"mantelpiece_clock\",\n \"time\"\n ],\n \"🕛\": [\n \"twelve_o_clock\",\n \"12\",\n \"00:00\",\n \"0000\",\n \"12:00\",\n \"1200\",\n \"time\",\n \"noon\",\n \"midnight\",\n \"midday\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock12\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕧\": [\n \"twelve_thirty\",\n \"00:30\",\n \"0030\",\n \"12:30\",\n \"1230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1230\",\n \"face\"\n ],\n \"🕐\": [\n \"one_o_clock\",\n \"1\",\n \"1:00\",\n \"100\",\n \"13:00\",\n \"1300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock1\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕜\": [\n \"one_thirty\",\n \"1:30\",\n \"130\",\n \"13:30\",\n \"1330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock130\",\n \"face\"\n ],\n \"🕑\": [\n \"two_o_clock\",\n \"2\",\n \"2:00\",\n \"200\",\n \"14:00\",\n \"1400\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock2\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕝\": [\n \"two_thirty\",\n \"2:30\",\n \"230\",\n \"14:30\",\n \"1430\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock230\",\n \"face\"\n ],\n \"🕒\": [\n \"three_o_clock\",\n \"3\",\n \"3:00\",\n \"300\",\n \"15:00\",\n \"1500\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock3\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕞\": [\n \"three_thirty\",\n \"3:30\",\n \"330\",\n \"15:30\",\n \"1530\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock330\",\n \"face\"\n ],\n \"🕓\": [\n \"four_o_clock\",\n \"4\",\n \"4:00\",\n \"400\",\n \"16:00\",\n \"1600\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock4\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕟\": [\n \"four_thirty\",\n \"4:30\",\n \"430\",\n \"16:30\",\n \"1630\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock430\",\n \"face\"\n ],\n \"🕔\": [\n \"five_o_clock\",\n \"5\",\n \"5:00\",\n \"500\",\n \"17:00\",\n \"1700\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock5\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕠\": [\n \"five_thirty\",\n \"5:30\",\n \"530\",\n \"17:30\",\n \"1730\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock530\",\n \"face\"\n ],\n \"🕕\": [\n \"six_o_clock\",\n \"6\",\n \"6:00\",\n \"600\",\n \"18:00\",\n \"1800\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"dawn\",\n \"dusk\",\n \"clock6\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕡\": [\n \"six_thirty\",\n \"6:30\",\n \"630\",\n \"18:30\",\n \"1830\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock630\",\n \"face\"\n ],\n \"🕖\": [\n \"seven_o_clock\",\n \"7\",\n \"7:00\",\n \"700\",\n \"19:00\",\n \"1900\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock7\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕢\": [\n \"seven_thirty\",\n \"7:30\",\n \"730\",\n \"19:30\",\n \"1930\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock730\",\n \"face\"\n ],\n \"🕗\": [\n \"eight_o_clock\",\n \"8\",\n \"8:00\",\n \"800\",\n \"20:00\",\n \"2000\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock8\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕣\": [\n \"eight_thirty\",\n \"8:30\",\n \"830\",\n \"20:30\",\n \"2030\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock830\",\n \"face\"\n ],\n \"🕘\": [\n \"nine_o_clock\",\n \"9\",\n \"9:00\",\n \"900\",\n \"21:00\",\n \"2100\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock9\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕤\": [\n \"nine_thirty\",\n \"9:30\",\n \"930\",\n \"21:30\",\n \"2130\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock930\",\n \"face\"\n ],\n \"🕙\": [\n \"ten_o_clock\",\n \"10\",\n \"10:00\",\n \"1000\",\n \"22:00\",\n \"2200\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock10\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕥\": [\n \"ten_thirty\",\n \"10:30\",\n \"1030\",\n \"22:30\",\n \"2230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1030\",\n \"face\"\n ],\n \"🕚\": [\n \"eleven_o_clock\",\n \"11\",\n \"11:00\",\n \"1100\",\n \"23:00\",\n \"2300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock11\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕦\": [\n \"eleven_thirty\",\n \"11:30\",\n \"1130\",\n \"23:30\",\n \"2330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1130\",\n \"face\"\n ],\n \"🌑\": [\n \"new_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"dark\",\n \"eclipse\",\n \"shadow moon\",\n \"solar\",\n \"symbol\",\n \"weather\"\n ],\n \"🌒\": [\n \"waxing_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌓\": [\n \"first_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌔\": [\n \"waxing_gibbous_moon\",\n \"nature\",\n \"night\",\n \"sky\",\n \"gray\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌕\": [\n \"full_moon\",\n \"nature\",\n \"yellow\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌖\": [\n \"waning_gibbous_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"waxing_gibbous_moon\",\n \"symbol\",\n \"weather\"\n ],\n \"🌗\": [\n \"last_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌘\": [\n \"waning_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌙\": [\n \"crescent_moon\",\n \"night\",\n \"sleep\",\n \"sky\",\n \"evening\",\n \"magic\",\n \"space\",\n \"weather\"\n ],\n \"🌚\": [\n \"new_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"creepy\",\n \"dark\",\n \"molester\",\n \"weather\"\n ],\n \"🌛\": [\n \"first_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌜\": [\n \"last_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌡️\": [\n \"thermometer\",\n \"weather\",\n \"temperature\",\n \"hot\",\n \"cold\"\n ],\n \"☀️\": [\n \"sun\",\n \"weather\",\n \"nature\",\n \"brightness\",\n \"summer\",\n \"beach\",\n \"spring\",\n \"black\",\n \"bright\",\n \"rays\",\n \"space\",\n \"sunny\",\n \"sunshine\"\n ],\n \"🌝\": [\n \"full_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"bright\",\n \"moonface\",\n \"smiley\",\n \"smiling\",\n \"weather\"\n ],\n \"🌞\": [\n \"sun_with_face\",\n \"nature\",\n \"morning\",\n \"sky\",\n \"bright\",\n \"smiley\",\n \"smiling\",\n \"space\",\n \"summer\",\n \"sunface\",\n \"weather\"\n ],\n \"🪐\": [\n \"ringed_planet\",\n \"outerspace\",\n \"planets\",\n \"saturn\",\n \"saturnine\",\n \"space\"\n ],\n \"⭐\": [\n \"star\",\n \"night\",\n \"yellow\",\n \"gold\",\n \"medium\",\n \"white\"\n ],\n \"🌟\": [\n \"glowing_star\",\n \"night\",\n \"sparkle\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"glittery\",\n \"glow\",\n \"shining\",\n \"star2\"\n ],\n \"🌠\": [\n \"shooting_star\",\n \"night\",\n \"photo\",\n \"activity\",\n \"falling\",\n \"meteoroid\",\n \"space\",\n \"stars\",\n \"upon\",\n \"when\",\n \"wish\",\n \"you\"\n ],\n \"🌌\": [\n \"milky_way\",\n \"photo\",\n \"space\",\n \"stars\",\n \"galaxy\",\n \"night\",\n \"sky\",\n \"universe\",\n \"weather\"\n ],\n \"☁️\": [\n \"cloud\",\n \"weather\",\n \"sky\",\n \"cloudy\",\n \"overcast\"\n ],\n \"⛅\": [\n \"sun_behind_cloud\",\n \"weather\",\n \"nature\",\n \"cloudy\",\n \"morning\",\n \"fall\",\n \"spring\",\n \"partly\",\n \"sunny\"\n ],\n \"⛈️\": [\n \"cloud_with_lightning_and_rain\",\n \"weather\",\n \"lightning\",\n \"thunder\"\n ],\n \"🌤️\": [\n \"sun_behind_small_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌥️\": [\n \"sun_behind_large_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌦️\": [\n \"sun_behind_rain_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌧️\": [\n \"cloud_with_rain\",\n \"weather\"\n ],\n \"🌨️\": [\n \"cloud_with_snow\",\n \"weather\",\n \"cold\"\n ],\n \"🌩️\": [\n \"cloud_with_lightning\",\n \"weather\",\n \"thunder\"\n ],\n \"🌪️\": [\n \"tornado\",\n \"weather\",\n \"cyclone\",\n \"twister\",\n \"cloud\",\n \"whirlwind\"\n ],\n \"🌫️\": [\n \"fog\",\n \"weather\",\n \"cloud\"\n ],\n \"🌬️\": [\n \"wind_face\",\n \"gust\",\n \"air\",\n \"blow\",\n \"blowing\",\n \"cloud\",\n \"mother\",\n \"nature\",\n \"weather\"\n ],\n \"🌀\": [\n \"cyclone\",\n \"weather\",\n \"swirl\",\n \"blue\",\n \"cloud\",\n \"vortex\",\n \"spiral\",\n \"whirlpool\",\n \"spin\",\n \"tornado\",\n \"hurricane\",\n \"typhoon\",\n \"dizzy\",\n \"twister\"\n ],\n \"🌈\": [\n \"rainbow\",\n \"nature\",\n \"happy\",\n \"unicorn_face\",\n \"photo\",\n \"sky\",\n \"spring\",\n \"gay\",\n \"lgbt\",\n \"pride\",\n \"primary\",\n \"rain\",\n \"weather\"\n ],\n \"🌂\": [\n \"closed_umbrella\",\n \"weather\",\n \"rain\",\n \"drizzle\",\n \"clothing\",\n \"collapsed umbrella\",\n \"pink\"\n ],\n \"☂️\": [\n \"umbrella\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"open\",\n \"rain\"\n ],\n \"☔\": [\n \"umbrella_with_rain_drops\",\n \"rainy\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"drop\",\n \"raining\"\n ],\n \"⛱️\": [\n \"umbrella_on_ground\",\n \"weather\",\n \"summer\",\n \"beach\",\n \"parasol\",\n \"rain\",\n \"sun\"\n ],\n \"⚡\": [\n \"high_voltage\",\n \"thunder\",\n \"weather\",\n \"lightning bolt\",\n \"fast\",\n \"zap\",\n \"danger\",\n \"electric\",\n \"electricity\",\n \"sign\",\n \"thunderbolt\",\n \"speed\"\n ],\n \"❄️\": [\n \"snowflake\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"snow\",\n \"snowing\"\n ],\n \"☃️\": [\n \"snowman\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"snow\",\n \"snowflakes\",\n \"snowing\"\n ],\n \"⛄\": [\n \"snowman_without_snow\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"without_snow\",\n \"frosty\",\n \"olaf\"\n ],\n \"☄️\": [\n \"comet\",\n \"space\"\n ],\n \"🔥\": [\n \"fire\",\n \"hot\",\n \"cook\",\n \"flame\",\n \"burn\",\n \"lit\",\n \"snapstreak\",\n \"tool\",\n \"remove\"\n ],\n \"💧\": [\n \"droplet\",\n \"water\",\n \"drip\",\n \"faucet\",\n \"spring\",\n \"cold\",\n \"comic\",\n \"drop\",\n \"sweat\",\n \"weather\"\n ],\n \"🌊\": [\n \"water_wave\",\n \"sea\",\n \"water\",\n \"wave\",\n \"nature\",\n \"tsunami\",\n \"disaster\",\n \"beach\",\n \"ocean\",\n \"waves\",\n \"weather\"\n ],\n \"🎃\": [\n \"jack_o_lantern\",\n \"halloween\",\n \"light\",\n \"pumpkin\",\n \"creepy\",\n \"fall\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"gourd\"\n ],\n \"🎄\": [\n \"christmas_tree\",\n \"festival\",\n \"vacation\",\n \"december\",\n \"xmas\",\n \"celebration\",\n \"activity\",\n \"entertainment\",\n \"xmas tree\"\n ],\n \"🎆\": [\n \"fireworks\",\n \"photo\",\n \"festival\",\n \"carnival\",\n \"congratulations\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"explosion\"\n ],\n \"🎇\": [\n \"sparkler\",\n \"stars\",\n \"night\",\n \"shine\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"firework\",\n \"fireworks\",\n \"hanabi\",\n \"senko\",\n \"sparkle\"\n ],\n \"🧨\": [\n \"firecracker\",\n \"dynamite\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"explosive\",\n \"fireworks\"\n ],\n \"✨\": [\n \"sparkles\",\n \"stars\",\n \"shine\",\n \"shiny\",\n \"cool\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"entertainment\",\n \"glitter\",\n \"sparkle\",\n \"star\"\n ],\n \"🎈\": [\n \"balloon\",\n \"party\",\n \"celebration\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"entertainment\",\n \"red\"\n ],\n \"🎉\": [\n \"party_popper\",\n \"party\",\n \"congratulations\",\n \"birthday\",\n \"magic\",\n \"circus\",\n \"celebration\",\n \"tada\",\n \"activity\",\n \"entertainment\",\n \"hat\",\n \"hooray\"\n ],\n \"🎊\": [\n \"confetti_ball\",\n \"festival\",\n \"party\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎋\": [\n \"tanabata_tree\",\n \"plant\",\n \"nature\",\n \"branch\",\n \"summer\",\n \"bamboo\",\n \"wish\",\n \"star_festival\",\n \"tanzaku\",\n \"activity\",\n \"banner\",\n \"celebration\",\n \"entertainment\",\n \"japanese\"\n ],\n \"🎍\": [\n \"pine_decoration\",\n \"japanese\",\n \"plant\",\n \"nature\",\n \"vegetable\",\n \"panda\",\n \"new_years\",\n \"bamboo\",\n \"activity\",\n \"celebration\",\n \"kadomatsu\",\n \"year\"\n ],\n \"🎎\": [\n \"japanese_dolls\",\n \"japanese\",\n \"toy\",\n \"kimono\",\n \"activity\",\n \"celebration\",\n \"doll\",\n \"entertainment\",\n \"festival\",\n \"hinamatsuri\",\n \"imperial\"\n ],\n \"🎏\": [\n \"carp_streamer\",\n \"fish\",\n \"japanese\",\n \"koinobori\",\n \"carp\",\n \"banner\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"flag\",\n \"flags\",\n \"socks\",\n \"wind\"\n ],\n \"🎐\": [\n \"wind_chime\",\n \"nature\",\n \"ding\",\n \"spring\",\n \"bell\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"furin\",\n \"jellyfish\"\n ],\n \"🎑\": [\n \"moon_viewing_ceremony\",\n \"photo\",\n \"japan\",\n \"asia\",\n \"tsukimi\",\n \"activity\",\n \"autumn\",\n \"celebration\",\n \"dumplings\",\n \"entertainment\",\n \"festival\",\n \"grass\",\n \"harvest\",\n \"mid\",\n \"rice\",\n \"scene\"\n ],\n \"🧧\": [\n \"red_envelope\",\n \"gift\",\n \"ang\",\n \"good\",\n \"hóngbāo\",\n \"lai\",\n \"luck\",\n \"money\",\n \"packet\",\n \"pao\",\n \"see\"\n ],\n \"🎀\": [\n \"ribbon\",\n \"decoration\",\n \"pink\",\n \"girl\",\n \"bowtie\",\n \"bow\",\n \"celebration\"\n ],\n \"🎁\": [\n \"wrapped_gift\",\n \"present\",\n \"birthday\",\n \"christmas\",\n \"xmas\",\n \"box\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎗️\": [\n \"reminder_ribbon\",\n \"sports\",\n \"cause\",\n \"support\",\n \"awareness\",\n \"celebration\"\n ],\n \"🎟️\": [\n \"admission_tickets\",\n \"sports\",\n \"concert\",\n \"entrance\",\n \"entertainment\",\n \"ticket\"\n ],\n \"🎫\": [\n \"ticket\",\n \"event\",\n \"concert\",\n \"pass\",\n \"activity\",\n \"admission\",\n \"entertainment\",\n \"stub\",\n \"tour\",\n \"world\"\n ],\n \"🎖️\": [\n \"military_medal\",\n \"award\",\n \"winning\",\n \"army\",\n \"celebration\",\n \"decoration\",\n \"medallion\"\n ],\n \"🏆\": [\n \"trophy\",\n \"win\",\n \"award\",\n \"contest\",\n \"place\",\n \"ftw\",\n \"ceremony\",\n \"championship\",\n \"prize\",\n \"winner\",\n \"winners\"\n ],\n \"🏅\": [\n \"sports_medal\",\n \"award\",\n \"winning\",\n \"gold\",\n \"winner\"\n ],\n \"🥇\": [\n \"1st_place_medal\",\n \"award\",\n \"winning\",\n \"first\",\n \"gold\"\n ],\n \"🥈\": [\n \"2nd_place_medal\",\n \"award\",\n \"second\",\n \"silver\"\n ],\n \"🥉\": [\n \"3rd_place_medal\",\n \"award\",\n \"third\",\n \"bronze\"\n ],\n \"⚽\": [\n \"soccer_ball\",\n \"sports\",\n \"football\"\n ],\n \"⚾\": [\n \"baseball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"softball\"\n ],\n \"🥎\": [\n \"softball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\",\n \"glove\",\n \"sport\",\n \"underarm\"\n ],\n \"🏀\": [\n \"basketball\",\n \"sports\",\n \"balls\",\n \"NBA\",\n \"ball\",\n \"hoop\",\n \"orange\"\n ],\n \"🏐\": [\n \"volleyball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\"\n ],\n \"🏈\": [\n \"american_football\",\n \"sports\",\n \"balls\",\n \"NFL\",\n \"ball\",\n \"gridiron\",\n \"superbowl\"\n ],\n \"🏉\": [\n \"rugby_football\",\n \"sports\",\n \"team\",\n \"ball\",\n \"league\",\n \"union\"\n ],\n \"🎾\": [\n \"tennis\",\n \"sports\",\n \"balls\",\n \"green\",\n \"ball\",\n \"racket\",\n \"racquet\"\n ],\n \"🥏\": [\n \"flying_disc\",\n \"sports\",\n \"frisbee\",\n \"ultimate\",\n \"game\",\n \"golf\",\n \"sport\"\n ],\n \"🎳\": [\n \"bowling\",\n \"sports\",\n \"fun\",\n \"play\",\n \"ball\",\n \"game\",\n \"pin\",\n \"pins\",\n \"skittles\",\n \"ten\"\n ],\n \"🏏\": [\n \"cricket_game\",\n \"sports\",\n \"ball\",\n \"bat\",\n \"field\"\n ],\n \"🏑\": [\n \"field_hockey\",\n \"sports\",\n \"ball\",\n \"game\",\n \"stick\"\n ],\n \"🏒\": [\n \"ice_hockey\",\n \"sports\",\n \"game\",\n \"puck\",\n \"stick\"\n ],\n \"🥍\": [\n \"lacrosse\",\n \"sports\",\n \"ball\",\n \"stick\",\n \"game\",\n \"goal\",\n \"sport\"\n ],\n \"🏓\": [\n \"ping_pong\",\n \"sports\",\n \"pingpong\",\n \"ball\",\n \"bat\",\n \"game\",\n \"paddle\",\n \"table\",\n \"tennis\"\n ],\n \"🏸\": [\n \"badminton\",\n \"sports\",\n \"birdie\",\n \"game\",\n \"racquet\",\n \"shuttlecock\"\n ],\n \"🥊\": [\n \"boxing_glove\",\n \"sports\",\n \"fighting\"\n ],\n \"🥋\": [\n \"martial_arts_uniform\",\n \"judo\",\n \"karate\",\n \"taekwondo\"\n ],\n \"🥅\": [\n \"goal_net\",\n \"sports\",\n \"catch\"\n ],\n \"⛳\": [\n \"flag_in_hole\",\n \"sports\",\n \"business\",\n \"flag\",\n \"hole\",\n \"summer\",\n \"golf\"\n ],\n \"⛸️\": [\n \"ice_skate\",\n \"sports\",\n \"skating\"\n ],\n \"🎣\": [\n \"fishing_pole\",\n \"food\",\n \"hobby\",\n \"summer\",\n \"entertainment\",\n \"fish\",\n \"rod\"\n ],\n \"🤿\": [\n \"diving_mask\",\n \"sport\",\n \"ocean\",\n \"scuba\",\n \"snorkeling\"\n ],\n \"🎽\": [\n \"running_shirt\",\n \"play\",\n \"pageant\",\n \"athletics\",\n \"marathon\",\n \"sash\",\n \"singlet\"\n ],\n \"🎿\": [\n \"skis\",\n \"sports\",\n \"winter\",\n \"cold\",\n \"snow\",\n \"boot\",\n \"ski\",\n \"skiing\"\n ],\n \"🛷\": [\n \"sled\",\n \"sleigh\",\n \"luge\",\n \"toboggan\",\n \"sledge\"\n ],\n \"🥌\": [\n \"curling_stone\",\n \"sports\",\n \"game\",\n \"rock\"\n ],\n \"🎯\": [\n \"direct_hit\",\n \"game\",\n \"play\",\n \"bar\",\n \"target\",\n \"bullseye\",\n \"activity\",\n \"archery\",\n \"bull\",\n \"dart\",\n \"darts\",\n \"entertainment\",\n \"eye\"\n ],\n \"🪀\": [\n \"yo_yo\",\n \"toy\",\n \"fluctuate\",\n \"yoyo\"\n ],\n \"🪁\": [\n \"kite\",\n \"wind\",\n \"fly\",\n \"soar\",\n \"toy\"\n ],\n \"🎱\": [\n \"pool_8_ball\",\n \"pool\",\n \"hobby\",\n \"game\",\n \"luck\",\n \"magic\",\n \"8ball\",\n \"billiard\",\n \"billiards\",\n \"cue\",\n \"eight\",\n \"snooker\"\n ],\n \"🔮\": [\n \"crystal_ball\",\n \"disco\",\n \"party\",\n \"magic\",\n \"circus\",\n \"fortune_teller\",\n \"clairvoyant\",\n \"fairy\",\n \"fantasy\",\n \"psychic\",\n \"purple\",\n \"tale\",\n \"tool\"\n ],\n \"🧿\": [\n \"nazar_amulet\",\n \"bead\",\n \"charm\",\n \"boncuğu\",\n \"evil\",\n \"eye\",\n \"talisman\"\n ],\n \"🎮\": [\n \"video_game\",\n \"play\",\n \"console\",\n \"PS4\",\n \"controller\",\n \"entertainment\",\n \"gamepad\",\n \"playstation\",\n \"u\",\n \"wii\",\n \"xbox\"\n ],\n \"🕹️\": [\n \"joystick\",\n \"game\",\n \"play\",\n \"entertainment\",\n \"video\"\n ],\n \"🎰\": [\n \"slot_machine\",\n \"bet\",\n \"gamble\",\n \"vegas\",\n \"fruit machine\",\n \"luck\",\n \"casino\",\n \"activity\",\n \"gambling\",\n \"game\",\n \"poker\"\n ],\n \"🎲\": [\n \"game_die\",\n \"dice\",\n \"random\",\n \"tabletop\",\n \"play\",\n \"luck\",\n \"entertainment\",\n \"gambling\"\n ],\n \"🧩\": [\n \"puzzle_piece\",\n \"interlocking\",\n \"puzzle\",\n \"piece\",\n \"clue\",\n \"jigsaw\"\n ],\n \"🧸\": [\n \"teddy_bear\",\n \"plush\",\n \"stuffed\",\n \"plaything\",\n \"toy\"\n ],\n \"♠️\": [\n \"spade_suit\",\n \"poker\",\n \"cards\",\n \"suits\",\n \"magic\",\n \"black\",\n \"card\",\n \"game\",\n \"spades\"\n ],\n \"♥️\": [\n \"heart_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"game\",\n \"hearts\"\n ],\n \"♦️\": [\n \"diamond_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"diamonds\",\n \"game\"\n ],\n \"♣️\": [\n \"club_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"clubs\",\n \"game\"\n ],\n \"♟️\": [\n \"chess_pawn\",\n \"expendable\",\n \"black\",\n \"dupe\",\n \"game\",\n \"piece\"\n ],\n \"🃏\": [\n \"joker\",\n \"poker\",\n \"cards\",\n \"game\",\n \"play\",\n \"magic\",\n \"black\",\n \"card\",\n \"entertainment\",\n \"playing\",\n \"wildcard\"\n ],\n \"🀄\": [\n \"mahjong_red_dragon\",\n \"game\",\n \"play\",\n \"chinese\",\n \"kanji\",\n \"tile\"\n ],\n \"🎴\": [\n \"flower_playing_cards\",\n \"game\",\n \"sunset\",\n \"red\",\n \"activity\",\n \"card\",\n \"deck\",\n \"entertainment\",\n \"hanafuda\",\n \"hwatu\",\n \"japanese\",\n \"of cards\"\n ],\n \"🎭\": [\n \"performing_arts\",\n \"acting\",\n \"theater\",\n \"drama\",\n \"activity\",\n \"art\",\n \"comedy\",\n \"entertainment\",\n \"greek\",\n \"logo\",\n \"mask\",\n \"masks\",\n \"theatre\",\n \"theatre masks\",\n \"tragedy\"\n ],\n \"🖼️\": [\n \"framed_picture\",\n \"photography\",\n \"art\",\n \"frame\",\n \"museum\",\n \"painting\"\n ],\n \"🎨\": [\n \"artist_palette\",\n \"design\",\n \"paint\",\n \"draw\",\n \"colors\",\n \"activity\",\n \"art\",\n \"entertainment\",\n \"museum\",\n \"painting\",\n \"improve\"\n ],\n \"🧵\": [\n \"thread\",\n \"needle\",\n \"sewing\",\n \"spool\",\n \"string\",\n \"crafts\"\n ],\n \"🧶\": [\n \"yarn\",\n \"ball\",\n \"crochet\",\n \"knit\",\n \"crafts\"\n ],\n \"👓\": [\n \"glasses\",\n \"fashion\",\n \"accessories\",\n \"eyesight\",\n \"nerdy\",\n \"dork\",\n \"geek\",\n \"clothing\",\n \"eye\",\n \"eyeglasses\",\n \"eyewear\"\n ],\n \"🕶️\": [\n \"sunglasses\",\n \"face\",\n \"cool\",\n \"accessories\",\n \"dark\",\n \"eye\",\n \"eyewear\",\n \"glasses\"\n ],\n \"🥽\": [\n \"goggles\",\n \"eyes\",\n \"protection\",\n \"safety\",\n \"clothing\",\n \"eye\",\n \"swimming\",\n \"welding\"\n ],\n \"🥼\": [\n \"lab_coat\",\n \"doctor\",\n \"experiment\",\n \"scientist\",\n \"chemist\",\n \"clothing\"\n ],\n \"🦺\": [\n \"safety_vest\",\n \"protection\",\n \"emergency\"\n ],\n \"👔\": [\n \"necktie\",\n \"shirt\",\n \"suitup\",\n \"formal\",\n \"fashion\",\n \"cloth\",\n \"business\",\n \"clothing\",\n \"tie\"\n ],\n \"👕\": [\n \"t_shirt\",\n \"fashion\",\n \"cloth\",\n \"casual\",\n \"shirt\",\n \"tee\",\n \"clothing\",\n \"polo\",\n \"tshirt\"\n ],\n \"👖\": [\n \"jeans\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"denim\",\n \"pants\",\n \"trousers\"\n ],\n \"🧣\": [\n \"scarf\",\n \"neck\",\n \"winter\",\n \"clothes\",\n \"clothing\"\n ],\n \"🧤\": [\n \"gloves\",\n \"hands\",\n \"winter\",\n \"clothes\",\n \"clothing\",\n \"hand\"\n ],\n \"🧥\": [\n \"coat\",\n \"jacket\",\n \"clothing\"\n ],\n \"🧦\": [\n \"socks\",\n \"stockings\",\n \"clothes\",\n \"clothing\",\n \"pair\",\n \"stocking\"\n ],\n \"👗\": [\n \"dress\",\n \"clothes\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"gown\",\n \"skirt\"\n ],\n \"👘\": [\n \"kimono\",\n \"dress\",\n \"fashion\",\n \"women\",\n \"female\",\n \"japanese\",\n \"clothing\",\n \"dressing\",\n \"gown\"\n ],\n \"🥻\": [\n \"sari\",\n \"dress\",\n \"clothing\",\n \"saree\",\n \"shari\"\n ],\n \"🩱\": [\n \"one_piece_swimsuit\",\n \"fashion\",\n \"bathing\",\n \"clothing\",\n \"suit\",\n \"swim\"\n ],\n \"🩲\": [\n \"briefs\",\n \"clothing\",\n \"bathing\",\n \"brief\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"🩳\": [\n \"shorts\",\n \"clothing\",\n \"bathing\",\n \"pants\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"👙\": [\n \"bikini\",\n \"swimming\",\n \"female\",\n \"woman\",\n \"girl\",\n \"fashion\",\n \"beach\",\n \"summer\",\n \"bathers\",\n \"clothing\",\n \"swim\",\n \"swimsuit\"\n ],\n \"👚\": [\n \"woman_s_clothes\",\n \"fashion\",\n \"shopping_bags\",\n \"female\",\n \"blouse\",\n \"clothing\",\n \"pink\",\n \"shirt\",\n \"womans\",\n \"woman’s\"\n ],\n \"👛\": [\n \"purse\",\n \"fashion\",\n \"accessories\",\n \"money\",\n \"sales\",\n \"shopping\",\n \"clothing\",\n \"coin\",\n \"wallet\"\n ],\n \"👜\": [\n \"handbag\",\n \"fashion\",\n \"accessory\",\n \"accessories\",\n \"shopping\",\n \"bag\",\n \"clothing\",\n \"purse\",\n \"women’s\"\n ],\n \"👝\": [\n \"clutch_bag\",\n \"bag\",\n \"accessories\",\n \"shopping\",\n \"clothing\",\n \"pouch\",\n \"small\"\n ],\n \"🛍️\": [\n \"shopping_bags\",\n \"mall\",\n \"buy\",\n \"purchase\",\n \"bag\",\n \"hotel\"\n ],\n \"🎒\": [\n \"backpack\",\n \"student\",\n \"education\",\n \"bag\",\n \"activity\",\n \"rucksack\",\n \"satchel\",\n \"school\"\n ],\n \"👞\": [\n \"man_s_shoe\",\n \"fashion\",\n \"male\",\n \"brown\",\n \"clothing\",\n \"dress\",\n \"mans\",\n \"man’s\"\n ],\n \"👟\": [\n \"running_shoe\",\n \"shoes\",\n \"sports\",\n \"sneakers\",\n \"athletic\",\n \"clothing\",\n \"runner\",\n \"sneaker\",\n \"sport\",\n \"tennis\",\n \"trainer\"\n ],\n \"🥾\": [\n \"hiking_boot\",\n \"backpacking\",\n \"camping\",\n \"hiking\",\n \"clothing\"\n ],\n \"🥿\": [\n \"flat_shoe\",\n \"ballet\",\n \"slip-on\",\n \"slipper\",\n \"clothing\",\n \"woman’s\"\n ],\n \"👠\": [\n \"high_heeled_shoe\",\n \"fashion\",\n \"shoes\",\n \"female\",\n \"pumps\",\n \"stiletto\",\n \"clothing\",\n \"heel\",\n \"heels\",\n \"woman\"\n ],\n \"👡\": [\n \"woman_s_sandal\",\n \"shoes\",\n \"fashion\",\n \"flip flops\",\n \"clothing\",\n \"heeled\",\n \"sandals\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"🩰\": [\n \"ballet_shoes\",\n \"dance\",\n \"clothing\",\n \"pointe\",\n \"shoe\"\n ],\n \"👢\": [\n \"woman_s_boot\",\n \"shoes\",\n \"fashion\",\n \"boots\",\n \"clothing\",\n \"cowgirl\",\n \"heeled\",\n \"high\",\n \"knee\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"👑\": [\n \"crown\",\n \"king\",\n \"kod\",\n \"leader\",\n \"royalty\",\n \"lord\",\n \"clothing\",\n \"queen\",\n \"royal\"\n ],\n \"👒\": [\n \"woman_s_hat\",\n \"fashion\",\n \"accessories\",\n \"female\",\n \"lady\",\n \"spring\",\n \"bow\",\n \"clothing\",\n \"ladies\",\n \"womans\",\n \"woman’s\"\n ],\n \"🎩\": [\n \"top_hat\",\n \"magic\",\n \"gentleman\",\n \"classy\",\n \"circus\",\n \"activity\",\n \"clothing\",\n \"entertainment\",\n \"formal\",\n \"groom\",\n \"tophat\",\n \"wear\"\n ],\n \"🎓\": [\n \"graduation_cap\",\n \"school\",\n \"college\",\n \"degree\",\n \"university\",\n \"graduation\",\n \"cap\",\n \"hat\",\n \"legal\",\n \"learn\",\n \"education\",\n \"academic\",\n \"activity\",\n \"board\",\n \"celebration\",\n \"clothing\",\n \"graduate\",\n \"mortar\",\n \"square\"\n ],\n \"🧢\": [\n \"billed_cap\",\n \"cap\",\n \"baseball\",\n \"clothing\",\n \"hat\"\n ],\n \"⛑️\": [\n \"rescue_worker_s_helmet\",\n \"construction\",\n \"build\",\n \"aid\",\n \"cross\",\n \"face\",\n \"hat\",\n \"white\",\n \"worker’s\"\n ],\n \"📿\": [\n \"prayer_beads\",\n \"dhikr\",\n \"religious\",\n \"clothing\",\n \"necklace\",\n \"religion\",\n \"rosary\"\n ],\n \"💄\": [\n \"lipstick\",\n \"female\",\n \"girl\",\n \"fashion\",\n \"woman\",\n \"cosmetics\",\n \"gloss\",\n \"lip\",\n \"makeup\",\n \"style\"\n ],\n \"💍\": [\n \"ring\",\n \"wedding\",\n \"propose\",\n \"marriage\",\n \"valentines\",\n \"diamond\",\n \"fashion\",\n \"jewelry\",\n \"gem\",\n \"engagement\",\n \"engaged\",\n \"romance\"\n ],\n \"💎\": [\n \"gem_stone\",\n \"blue\",\n \"ruby\",\n \"diamond\",\n \"jewelry\",\n \"gemstone\",\n \"jewel\",\n \"romance\"\n ],\n \"🔇\": [\n \"muted_speaker\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"quiet\",\n \"cancellation\",\n \"mute\",\n \"off\",\n \"silent\",\n \"stroke\"\n ],\n \"🔈\": [\n \"speaker_low_volume\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"broadcast\",\n \"soft\"\n ],\n \"🔉\": [\n \"speaker_medium_volume\",\n \"volume\",\n \"speaker\",\n \"broadcast\",\n \"low\",\n \"one\",\n \"reduce\",\n \"sound\",\n \"wave\"\n ],\n \"🔊\": [\n \"speaker_high_volume\",\n \"volume\",\n \"noise\",\n \"noisy\",\n \"speaker\",\n \"broadcast\",\n \"entertainment\",\n \"increase\",\n \"loud\",\n \"sound\",\n \"three\",\n \"waves\"\n ],\n \"📢\": [\n \"loudspeaker\",\n \"volume\",\n \"sound\",\n \"address\",\n \"announcement\",\n \"bullhorn\",\n \"communication\",\n \"loud\",\n \"megaphone\",\n \"pa\",\n \"public\",\n \"system\"\n ],\n \"📣\": [\n \"megaphone\",\n \"sound\",\n \"speaker\",\n \"volume\",\n \"bullhorn\",\n \"cheering\",\n \"communication\",\n \"mega\"\n ],\n \"📯\": [\n \"postal_horn\",\n \"instrument\",\n \"music\",\n \"bugle\",\n \"communication\",\n \"entertainment\",\n \"french\",\n \"post\"\n ],\n \"🔔\": [\n \"bell\",\n \"sound\",\n \"notification\",\n \"christmas\",\n \"xmas\",\n \"chime\",\n \"liberty\",\n \"ringer\",\n \"wedding\"\n ],\n \"🔕\": [\n \"bell_with_slash\",\n \"sound\",\n \"volume\",\n \"mute\",\n \"quiet\",\n \"silent\",\n \"cancellation\",\n \"disabled\",\n \"forbidden\",\n \"muted\",\n \"no\",\n \"not\",\n \"notifications\",\n \"off\",\n \"prohibited\",\n \"ringer\",\n \"stroke\"\n ],\n \"🎼\": [\n \"musical_score\",\n \"treble\",\n \"clef\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\",\n \"sheet\"\n ],\n \"🎵\": [\n \"musical_note\",\n \"score\",\n \"tone\",\n \"sound\",\n \"activity\",\n \"beamed\",\n \"eighth\",\n \"entertainment\",\n \"music\",\n \"notes\",\n \"pair\",\n \"quavers\"\n ],\n \"🎶\": [\n \"musical_notes\",\n \"music\",\n \"score\",\n \"activity\",\n \"entertainment\",\n \"multiple\",\n \"note\",\n \"singing\"\n ],\n \"🎙️\": [\n \"studio_microphone\",\n \"sing\",\n \"recording\",\n \"artist\",\n \"talkshow\",\n \"mic\",\n \"music\",\n \"podcast\"\n ],\n \"🎚️\": [\n \"level_slider\",\n \"scale\",\n \"music\"\n ],\n \"🎛️\": [\n \"control_knobs\",\n \"dial\",\n \"music\"\n ],\n \"🎤\": [\n \"microphone\",\n \"sound\",\n \"music\",\n \"PA\",\n \"sing\",\n \"talkshow\",\n \"activity\",\n \"entertainment\",\n \"karaoke\",\n \"mic\",\n \"singing\"\n ],\n \"🎧\": [\n \"headphone\",\n \"music\",\n \"score\",\n \"gadgets\",\n \"activity\",\n \"earbud\",\n \"earphone\",\n \"earphones\",\n \"entertainment\",\n \"headphones\",\n \"ipod\"\n ],\n \"📻\": [\n \"radio\",\n \"communication\",\n \"music\",\n \"podcast\",\n \"program\",\n \"digital\",\n \"entertainment\",\n \"video\",\n \"wireless\"\n ],\n \"🎷\": [\n \"saxophone\",\n \"music\",\n \"instrument\",\n \"jazz\",\n \"blues\",\n \"activity\",\n \"entertainment\",\n \"sax\"\n ],\n \"🎸\": [\n \"guitar\",\n \"music\",\n \"instrument\",\n \"acoustic guitar\",\n \"activity\",\n \"bass\",\n \"electric\",\n \"entertainment\",\n \"rock\"\n ],\n \"🎹\": [\n \"musical_keyboard\",\n \"piano\",\n \"instrument\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\"\n ],\n \"🎺\": [\n \"trumpet\",\n \"music\",\n \"brass\",\n \"activity\",\n \"entertainment\",\n \"horn\",\n \"instrument\",\n \"jazz\"\n ],\n \"🎻\": [\n \"violin\",\n \"music\",\n \"instrument\",\n \"orchestra\",\n \"symphony\",\n \"activity\",\n \"entertainment\",\n \"quartet\",\n \"smallest\",\n \"string\",\n \"world’s\"\n ],\n \"🪕\": [\n \"banjo\",\n \"music\",\n \"instructment\",\n \"activity\",\n \"entertainment\",\n \"instrument\",\n \"stringed\"\n ],\n \"🥁\": [\n \"drum\",\n \"music\",\n \"instrument\",\n \"drumsticks\",\n \"snare\"\n ],\n \"📱\": [\n \"mobile_phone\",\n \"technology\",\n \"apple\",\n \"gadgets\",\n \"dial\",\n \"cell\",\n \"communication\",\n \"iphone\",\n \"smartphone\",\n \"telephone\",\n \"responsive_design\"\n ],\n \"📲\": [\n \"mobile_phone_with_arrow\",\n \"iphone\",\n \"incoming\",\n \"call\",\n \"calling\",\n \"cell\",\n \"communication\",\n \"left\",\n \"pointing\",\n \"receive\",\n \"rightwards\",\n \"telephone\"\n ],\n \"☎️\": [\n \"telephone\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"black\",\n \"phone\",\n \"rotary\"\n ],\n \"📞\": [\n \"telephone_receiver\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"call\",\n \"handset\",\n \"phone\"\n ],\n \"📟\": [\n \"pager\",\n \"bbcall\",\n \"oldschool\",\n \"90s\",\n \"beeper\",\n \"bleeper\",\n \"communication\"\n ],\n \"📠\": [\n \"fax_machine\",\n \"communication\",\n \"technology\",\n \"facsimile\"\n ],\n \"🔋\": [\n \"battery\",\n \"power\",\n \"energy\",\n \"sustain\",\n \"aa\",\n \"phone\"\n ],\n \"🔌\": [\n \"electric_plug\",\n \"charger\",\n \"power\",\n \"ac\",\n \"adaptor\",\n \"cable\",\n \"electricity\"\n ],\n \"💻\": [\n \"laptop\",\n \"technology\",\n \"screen\",\n \"display\",\n \"monitor\",\n \"computer\",\n \"desktop\",\n \"notebook\",\n \"pc\",\n \"personal\"\n ],\n \"🖥️\": [\n \"desktop_computer\",\n \"technology\",\n \"computing\",\n \"screen\",\n \"imac\"\n ],\n \"🖨️\": [\n \"printer\",\n \"paper\",\n \"ink\",\n \"computer\"\n ],\n \"⌨️\": [\n \"keyboard\",\n \"technology\",\n \"computer\",\n \"type\",\n \"input\",\n \"text\"\n ],\n \"🖱️\": [\n \"computer_mouse\",\n \"click\",\n \"button\",\n \"three\"\n ],\n \"🖲️\": [\n \"trackball\",\n \"technology\",\n \"trackpad\",\n \"computer\"\n ],\n \"💽\": [\n \"computer_disk\",\n \"technology\",\n \"record\",\n \"data\",\n \"disk\",\n \"90s\",\n \"entertainment\",\n \"minidisc\",\n \"minidisk\",\n \"optical\"\n ],\n \"💾\": [\n \"floppy_disk\",\n \"oldschool\",\n \"technology\",\n \"save\",\n \"90s\",\n \"80s\",\n \"computer\"\n ],\n \"💿\": [\n \"optical_disk\",\n \"technology\",\n \"dvd\",\n \"disk\",\n \"disc\",\n \"90s\",\n \"cd\",\n \"compact\",\n \"computer\",\n \"rom\"\n ],\n \"📀\": [\n \"dvd\",\n \"cd\",\n \"disk\",\n \"disc\",\n \"computer\",\n \"entertainment\",\n \"optical\",\n \"rom\",\n \"video\"\n ],\n \"🧮\": [\n \"abacus\",\n \"calculation\",\n \"count\",\n \"counting\",\n \"frame\",\n \"math\"\n ],\n \"🎥\": [\n \"movie_camera\",\n \"film\",\n \"record\",\n \"activity\",\n \"cinema\",\n \"entertainment\",\n \"hollywood\",\n \"video\"\n ],\n \"🎞️\": [\n \"film_frames\",\n \"movie\",\n \"cinema\",\n \"entertainment\",\n \"strip\"\n ],\n \"📽️\": [\n \"film_projector\",\n \"video\",\n \"tape\",\n \"record\",\n \"movie\",\n \"cinema\",\n \"entertainment\"\n ],\n \"🎬\": [\n \"clapper_board\",\n \"movie\",\n \"film\",\n \"record\",\n \"activity\",\n \"clapboard\",\n \"director\",\n \"entertainment\",\n \"slate\"\n ],\n \"📺\": [\n \"television\",\n \"technology\",\n \"program\",\n \"oldschool\",\n \"show\",\n \"entertainment\",\n \"tv\",\n \"video\"\n ],\n \"📷\": [\n \"camera\",\n \"gadgets\",\n \"photography\",\n \"digital\",\n \"entertainment\",\n \"photo\",\n \"video\"\n ],\n \"📸\": [\n \"camera_with_flash\",\n \"photography\",\n \"gadgets\",\n \"photo\",\n \"video\",\n \"snapshots\"\n ],\n \"📹\": [\n \"video_camera\",\n \"film\",\n \"record\",\n \"camcorder\",\n \"entertainment\"\n ],\n \"📼\": [\n \"videocassette\",\n \"record\",\n \"video\",\n \"oldschool\",\n \"90s\",\n \"80s\",\n \"entertainment\",\n \"tape\",\n \"vcr\",\n \"vhs\"\n ],\n \"🔍\": [\n \"magnifying_glass_tilted_left\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\"\n ],\n \"🔎\": [\n \"magnifying_glass_tilted_right\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\",\n \"seo\"\n ],\n \"🕯️\": [\n \"candle\",\n \"fire\",\n \"wax\",\n \"light\"\n ],\n \"💡\": [\n \"light_bulb\",\n \"light\",\n \"electricity\",\n \"idea\",\n \"comic\",\n \"electric\"\n ],\n \"🔦\": [\n \"flashlight\",\n \"dark\",\n \"camping\",\n \"sight\",\n \"night\",\n \"electric\",\n \"light\",\n \"tool\",\n \"torch\"\n ],\n \"🏮\": [\n \"red_paper_lantern\",\n \"light\",\n \"paper\",\n \"halloween\",\n \"spooky\",\n \"asian\",\n \"bar\",\n \"izakaya\",\n \"japanese\"\n ],\n \"🪔\": [\n \"diya_lamp\",\n \"lighting\",\n \"oil\"\n ],\n \"📔\": [\n \"notebook_with_decorative_cover\",\n \"classroom\",\n \"notes\",\n \"record\",\n \"paper\",\n \"study\",\n \"book\",\n \"decorated\"\n ],\n \"📕\": [\n \"closed_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"learn\",\n \"red\"\n ],\n \"📖\": [\n \"open_book\",\n \"book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"literature\",\n \"learn\",\n \"study\",\n \"novel\"\n ],\n \"📗\": [\n \"green_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"study\",\n \"textbook\"\n ],\n \"📘\": [\n \"blue_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"learn\",\n \"study\",\n \"textbook\"\n ],\n \"📙\": [\n \"orange_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"study\"\n ],\n \"📚\": [\n \"books\",\n \"literature\",\n \"library\",\n \"study\",\n \"book\",\n \"pile\",\n \"stack\"\n ],\n \"📓\": [\n \"notebook\",\n \"stationery\",\n \"record\",\n \"notes\",\n \"paper\",\n \"study\",\n \"black\",\n \"book\",\n \"composition\",\n \"white\"\n ],\n \"📒\": [\n \"ledger\",\n \"notes\",\n \"paper\",\n \"binder\",\n \"book\",\n \"bound\",\n \"notebook\",\n \"spiral\",\n \"yellow\"\n ],\n \"📃\": [\n \"page_with_curl\",\n \"documents\",\n \"office\",\n \"paper\",\n \"curled\",\n \"curly page\",\n \"document\",\n \"license\"\n ],\n \"📜\": [\n \"scroll\",\n \"documents\",\n \"ancient\",\n \"history\",\n \"paper\",\n \"degree\",\n \"document\",\n \"parchment\"\n ],\n \"📄\": [\n \"page_facing_up\",\n \"documents\",\n \"office\",\n \"paper\",\n \"information\",\n \"document\",\n \"printed\"\n ],\n \"📰\": [\n \"newspaper\",\n \"press\",\n \"headline\",\n \"communication\",\n \"news\",\n \"paper\"\n ],\n \"🗞️\": [\n \"rolled_up_newspaper\",\n \"press\",\n \"headline\",\n \"delivery\",\n \"news\",\n \"paper\",\n \"roll\"\n ],\n \"📑\": [\n \"bookmark_tabs\",\n \"favorite\",\n \"save\",\n \"order\",\n \"tidy\",\n \"mark\",\n \"marker\"\n ],\n \"🔖\": [\n \"bookmark\",\n \"favorite\",\n \"label\",\n \"save\",\n \"mark\",\n \"price\",\n \"tag\"\n ],\n \"🏷️\": [\n \"label\",\n \"sale\",\n \"tag\"\n ],\n \"💰\": [\n \"money_bag\",\n \"dollar\",\n \"payment\",\n \"coins\",\n \"sale\",\n \"cream\",\n \"moneybag\",\n \"moneybags\",\n \"rich\"\n ],\n \"💴\": [\n \"yen_banknote\",\n \"money\",\n \"sales\",\n \"japanese\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💵\": [\n \"dollar_banknote\",\n \"money\",\n \"sales\",\n \"bill\",\n \"currency\",\n \"american\",\n \"bank\",\n \"banknotes\",\n \"note\",\n \"sign\"\n ],\n \"💶\": [\n \"euro_banknote\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💷\": [\n \"pound_banknote\",\n \"british\",\n \"sterling\",\n \"money\",\n \"sales\",\n \"bills\",\n \"uk\",\n \"england\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"quid\",\n \"sign\",\n \"twenty\"\n ],\n \"💸\": [\n \"money_with_wings\",\n \"dollar\",\n \"bills\",\n \"payment\",\n \"sale\",\n \"bank\",\n \"banknote\",\n \"bill\",\n \"fly\",\n \"flying\",\n \"losing\",\n \"note\"\n ],\n \"💳\": [\n \"credit_card\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"bill\",\n \"payment\",\n \"shopping\",\n \"amex\",\n \"bank\",\n \"club\",\n \"diners\",\n \"mastercard\",\n \"subscription\",\n \"visa\"\n ],\n \"🧾\": [\n \"receipt\",\n \"accounting\",\n \"expenses\",\n \"bookkeeping\",\n \"evidence\",\n \"proof\"\n ],\n \"💹\": [\n \"chart_increasing_with_yen\",\n \"green-square\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"bank\",\n \"currency\",\n \"exchange\",\n \"growth\",\n \"market\",\n \"money\",\n \"rate\",\n \"rise\",\n \"sign\",\n \"trend\",\n \"upward\",\n \"upwards\"\n ],\n \"💱\": [\n \"currency_exchange\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"travel\",\n \"bank\"\n ],\n \"💲\": [\n \"heavy_dollar_sign\",\n \"money\",\n \"sales\",\n \"payment\",\n \"currency\",\n \"buck\"\n ],\n \"✉️\": [\n \"envelope\",\n \"letter\",\n \"postal\",\n \"inbox\",\n \"communication\",\n \"email\",\n \"✉ letter\"\n ],\n \"📧\": [\n \"e_mail\",\n \"communication\",\n \"inbox\",\n \"email\",\n \"letter\",\n \"symbol\"\n ],\n \"📨\": [\n \"incoming_envelope\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"fast\",\n \"letter\",\n \"lines\",\n \"mail\",\n \"receive\"\n ],\n \"📩\": [\n \"envelope_with_arrow\",\n \"email\",\n \"communication\",\n \"above\",\n \"down\",\n \"downwards\",\n \"insert\",\n \"letter\",\n \"mail\",\n \"outgoing\",\n \"sent\"\n ],\n \"📤\": [\n \"outbox_tray\",\n \"inbox\",\n \"email\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"sent\"\n ],\n \"📥\": [\n \"inbox_tray\",\n \"email\",\n \"documents\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"receive\"\n ],\n \"📦\": [\n \"package\",\n \"mail\",\n \"gift\",\n \"cardboard\",\n \"box\",\n \"moving\",\n \"communication\",\n \"parcel\",\n \"shipping\",\n \"container\"\n ],\n \"📫\": [\n \"closed_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📪\": [\n \"closed_mailbox_with_lowered_flag\",\n \"email\",\n \"communication\",\n \"inbox\",\n \"mail\",\n \"postbox\"\n ],\n \"📬\": [\n \"open_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📭\": [\n \"open_mailbox_with_lowered_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"no\",\n \"postbox\"\n ],\n \"📮\": [\n \"postbox\",\n \"email\",\n \"letter\",\n \"envelope\",\n \"communication\",\n \"mail\",\n \"mailbox\"\n ],\n \"🗳️\": [\n \"ballot_box_with_ballot\",\n \"election\",\n \"vote\",\n \"voting\"\n ],\n \"✏️\": [\n \"pencil\",\n \"stationery\",\n \"write\",\n \"paper\",\n \"writing\",\n \"school\",\n \"study\",\n \"lead\",\n \"pencil2\",\n \"typos\"\n ],\n \"✒️\": [\n \"black_nib\",\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"fountain\",\n \"✒ fountain\"\n ],\n \"🖋️\": [\n \"fountain_pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖊️\": [\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"ballpoint\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖌️\": [\n \"paintbrush\",\n \"drawing\",\n \"creativity\",\n \"art\",\n \"brush\",\n \"communication\",\n \"left\",\n \"lower\",\n \"painting\"\n ],\n \"🖍️\": [\n \"crayon\",\n \"drawing\",\n \"creativity\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"📝\": [\n \"memo\",\n \"write\",\n \"documents\",\n \"stationery\",\n \"pencil\",\n \"paper\",\n \"writing\",\n \"legal\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"study\",\n \"compose\",\n \"communication\",\n \"document\",\n \"memorandum\",\n \"note\",\n \"documentation\"\n ],\n \"💼\": [\n \"briefcase\",\n \"business\",\n \"documents\",\n \"work\",\n \"law\",\n \"legal\",\n \"job\",\n \"career\",\n \"suitcase\"\n ],\n \"📁\": [\n \"file_folder\",\n \"documents\",\n \"business\",\n \"office\",\n \"closed\",\n \"directory\",\n \"manilla\"\n ],\n \"📂\": [\n \"open_file_folder\",\n \"documents\",\n \"load\"\n ],\n \"🗂️\": [\n \"card_index_dividers\",\n \"organizing\",\n \"business\",\n \"stationery\"\n ],\n \"📅\": [\n \"calendar\",\n \"schedule\",\n \"date\",\n \"day\",\n \"emoji\",\n \"july\",\n \"world\"\n ],\n \"📆\": [\n \"tear_off_calendar\",\n \"schedule\",\n \"date\",\n \"planning\",\n \"day\",\n \"desk\"\n ],\n \"🗒️\": [\n \"spiral_notepad\",\n \"memo\",\n \"stationery\",\n \"note\",\n \"pad\"\n ],\n \"🗓️\": [\n \"spiral_calendar\",\n \"date\",\n \"schedule\",\n \"planning\",\n \"pad\"\n ],\n \"📇\": [\n \"card_index\",\n \"business\",\n \"stationery\",\n \"rolodex\",\n \"system\"\n ],\n \"📈\": [\n \"chart_increasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recovery\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"good\",\n \"success\",\n \"growth\",\n \"metrics\",\n \"pointing\",\n \"positive chart\",\n \"trend\",\n \"up\",\n \"upward\",\n \"upwards\",\n \"analytics\"\n ],\n \"📉\": [\n \"chart_decreasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recession\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"bad\",\n \"failure\",\n \"down\",\n \"downwards\",\n \"down pointing\",\n \"metrics\",\n \"negative chart\",\n \"trend\"\n ],\n \"📊\": [\n \"bar_chart\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"metrics\"\n ],\n \"📋\": [\n \"clipboard\",\n \"stationery\",\n \"documents\"\n ],\n \"📌\": [\n \"pushpin\",\n \"stationery\",\n \"mark\",\n \"here\",\n \"location\",\n \"pin\",\n \"tack\",\n \"thumb\"\n ],\n \"📍\": [\n \"round_pushpin\",\n \"stationery\",\n \"location\",\n \"map\",\n \"here\",\n \"dropped\",\n \"pin\",\n \"red\"\n ],\n \"📎\": [\n \"paperclip\",\n \"documents\",\n \"stationery\",\n \"clippy\"\n ],\n \"🖇️\": [\n \"linked_paperclips\",\n \"documents\",\n \"stationery\",\n \"communication\",\n \"link\",\n \"paperclip\"\n ],\n \"📏\": [\n \"straight_ruler\",\n \"stationery\",\n \"calculate\",\n \"length\",\n \"math\",\n \"school\",\n \"drawing\",\n \"architect\",\n \"sketch\",\n \"edge\"\n ],\n \"📐\": [\n \"triangular_ruler\",\n \"stationery\",\n \"math\",\n \"architect\",\n \"sketch\",\n \"set\",\n \"triangle\"\n ],\n \"✂️\": [\n \"scissors\",\n \"stationery\",\n \"cut\",\n \"black\",\n \"cutting\",\n \"tool\"\n ],\n \"🗃️\": [\n \"card_file_box\",\n \"business\",\n \"stationery\",\n \"database\"\n ],\n \"🗄️\": [\n \"file_cabinet\",\n \"filing\",\n \"organizing\"\n ],\n \"🗑️\": [\n \"wastebasket\",\n \"bin\",\n \"trash\",\n \"rubbish\",\n \"garbage\",\n \"toss\",\n \"basket\",\n \"can\",\n \"litter\",\n \"wastepaper\"\n ],\n \"🔒\": [\n \"locked\",\n \"security\",\n \"password\",\n \"padlock\",\n \"closed\",\n \"lock\",\n \"private\",\n \"privacy\"\n ],\n \"🔓\": [\n \"unlocked\",\n \"privacy\",\n \"security\",\n \"lock\",\n \"open\",\n \"padlock\",\n \"unlock\"\n ],\n \"🔏\": [\n \"locked_with_pen\",\n \"security\",\n \"secret\",\n \"fountain\",\n \"ink\",\n \"lock\",\n \"lock with\",\n \"nib\",\n \"privacy\"\n ],\n \"🔐\": [\n \"locked_with_key\",\n \"security\",\n \"privacy\",\n \"closed\",\n \"lock\",\n \"secure\",\n \"secret\"\n ],\n \"🔑\": [\n \"key\",\n \"lock\",\n \"door\",\n \"password\",\n \"gold\"\n ],\n \"🗝️\": [\n \"old_key\",\n \"lock\",\n \"door\",\n \"password\",\n \"clue\"\n ],\n \"🔨\": [\n \"hammer\",\n \"tools\",\n \"build\",\n \"create\",\n \"claw\",\n \"handyman\",\n \"tool\"\n ],\n \"🪓\": [\n \"axe\",\n \"tool\",\n \"chop\",\n \"cut\",\n \"hatchet\",\n \"split\",\n \"wood\"\n ],\n \"⛏️\": [\n \"pick\",\n \"tools\",\n \"dig\",\n \"mining\",\n \"pickaxe\",\n \"tool\"\n ],\n \"⚒️\": [\n \"hammer_and_pick\",\n \"tools\",\n \"build\",\n \"create\",\n \"tool\"\n ],\n \"🛠️\": [\n \"hammer_and_wrench\",\n \"tools\",\n \"build\",\n \"create\",\n \"spanner\",\n \"tool\"\n ],\n \"🗡️\": [\n \"dagger\",\n \"weapon\",\n \"knife\"\n ],\n \"⚔️\": [\n \"crossed_swords\",\n \"weapon\"\n ],\n \"🔫\": [\n \"pistol\",\n \"violence\",\n \"weapon\",\n \"revolver\",\n \"gun\",\n \"handgun\",\n \"shoot\",\n \"squirt\",\n \"tool\",\n \"water\"\n ],\n \"🏹\": [\n \"bow_and_arrow\",\n \"sports\",\n \"archer\",\n \"archery\",\n \"sagittarius\",\n \"tool\",\n \"zodiac\"\n ],\n \"🛡️\": [\n \"shield\",\n \"protection\",\n \"security\",\n \"weapon\"\n ],\n \"🔧\": [\n \"wrench\",\n \"tools\",\n \"diy\",\n \"ikea\",\n \"fix\",\n \"maintainer\",\n \"spanner\",\n \"tool\"\n ],\n \"🔩\": [\n \"nut_and_bolt\",\n \"handy\",\n \"tools\",\n \"fix\",\n \"screw\",\n \"tool\"\n ],\n \"⚙️\": [\n \"gear\",\n \"cog\",\n \"cogwheel\",\n \"tool\"\n ],\n \"🗜️\": [\n \"clamp\",\n \"tool\",\n \"compress\",\n \"compression\",\n \"table\",\n \"vice\",\n \"winzip\"\n ],\n \"⚖️\": [\n \"balance_scale\",\n \"law\",\n \"fairness\",\n \"weight\",\n \"justice\",\n \"libra\",\n \"scales\",\n \"tool\",\n \"zodiac\"\n ],\n \"🦯\": [\n \"probing_cane\",\n \"accessibility\",\n \"blind\",\n \"white\"\n ],\n \"🔗\": [\n \"link\",\n \"rings\",\n \"url\",\n \"chain\",\n \"hyperlink\",\n \"linked\",\n \"symbol\"\n ],\n \"⛓️\": [\n \"chains\",\n \"lock\",\n \"arrest\",\n \"chain\"\n ],\n \"🧰\": [\n \"toolbox\",\n \"tools\",\n \"diy\",\n \"fix\",\n \"maintainer\",\n \"mechanic\",\n \"chest\",\n \"tool\"\n ],\n \"🧲\": [\n \"magnet\",\n \"attraction\",\n \"magnetic\",\n \"horseshoe\"\n ],\n \"⚗️\": [\n \"alembic\",\n \"distilling\",\n \"science\",\n \"experiment\",\n \"chemistry\",\n \"tool\"\n ],\n \"🧪\": [\n \"test_tube\",\n \"chemistry\",\n \"experiment\",\n \"lab\",\n \"science\",\n \"chemist\",\n \"test\"\n ],\n \"🧫\": [\n \"petri_dish\",\n \"bacteria\",\n \"biology\",\n \"culture\",\n \"lab\",\n \"biologist\"\n ],\n \"🧬\": [\n \"dna\",\n \"biologist\",\n \"genetics\",\n \"life\",\n \"double\",\n \"evolution\",\n \"gene\",\n \"helix\"\n ],\n \"🔬\": [\n \"microscope\",\n \"laboratory\",\n \"experiment\",\n \"zoomin\",\n \"science\",\n \"study\",\n \"investigate\",\n \"magnify\",\n \"tool\"\n ],\n \"🔭\": [\n \"telescope\",\n \"stars\",\n \"space\",\n \"zoom\",\n \"science\",\n \"astronomy\",\n \"stargazing\",\n \"tool\"\n ],\n \"📡\": [\n \"satellite_antenna\",\n \"communication\",\n \"future\",\n \"radio\",\n \"space\",\n \"dish\",\n \"signal\"\n ],\n \"💉\": [\n \"syringe\",\n \"health\",\n \"hospital\",\n \"drugs\",\n \"blood\",\n \"medicine\",\n \"needle\",\n \"doctor\",\n \"nurse\",\n \"shot\",\n \"sick\",\n \"tool\",\n \"vaccination\",\n \"vaccine\"\n ],\n \"🩸\": [\n \"drop_of_blood\",\n \"period\",\n \"hurt\",\n \"harm\",\n \"wound\",\n \"bleed\",\n \"doctor\",\n \"donation\",\n \"injury\",\n \"medicine\",\n \"menstruation\"\n ],\n \"💊\": [\n \"pill\",\n \"health\",\n \"medicine\",\n \"doctor\",\n \"pharmacy\",\n \"drug\",\n \"capsule\",\n \"drugs\",\n \"sick\",\n \"tablet\"\n ],\n \"🩹\": [\n \"adhesive_bandage\",\n \"heal\",\n \"aid\",\n \"band\",\n \"doctor\",\n \"medicine\",\n \"plaster\"\n ],\n \"🩺\": [\n \"stethoscope\",\n \"health\",\n \"doctor\",\n \"heart\",\n \"medicine\",\n \"healthcheck\"\n ],\n \"🚪\": [\n \"door\",\n \"house\",\n \"entry\",\n \"exit\",\n \"doorway\",\n \"front\"\n ],\n \"🛏️\": [\n \"bed\",\n \"sleep\",\n \"rest\",\n \"bedroom\",\n \"hotel\"\n ],\n \"🛋️\": [\n \"couch_and_lamp\",\n \"read\",\n \"chill\",\n \"hotel\",\n \"lounge\",\n \"settee\",\n \"sofa\"\n ],\n \"🪑\": [\n \"chair\",\n \"sit\",\n \"furniture\",\n \"seat\"\n ],\n \"🚽\": [\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"washroom\",\n \"bathroom\",\n \"potty\",\n \"loo\"\n ],\n \"🚿\": [\n \"shower\",\n \"clean\",\n \"water\",\n \"bathroom\",\n \"bath\",\n \"head\"\n ],\n \"🛁\": [\n \"bathtub\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bath\",\n \"bubble\"\n ],\n \"🪒\": [\n \"razor\",\n \"cut\",\n \"sharp\",\n \"shave\"\n ],\n \"🧴\": [\n \"lotion_bottle\",\n \"moisturizer\",\n \"sunscreen\",\n \"shampoo\"\n ],\n \"🧷\": [\n \"safety_pin\",\n \"diaper\",\n \"punk\",\n \"rock\"\n ],\n \"🧹\": [\n \"broom\",\n \"cleaning\",\n \"sweeping\",\n \"witch\",\n \"brush\",\n \"sweep\"\n ],\n \"🧺\": [\n \"basket\",\n \"laundry\",\n \"farming\",\n \"picnic\"\n ],\n \"🧻\": [\n \"roll_of_paper\",\n \"roll\",\n \"toilet\",\n \"towels\"\n ],\n \"🧼\": [\n \"soap\",\n \"bar\",\n \"bathing\",\n \"cleaning\",\n \"lather\",\n \"soapdish\"\n ],\n \"🧽\": [\n \"sponge\",\n \"absorbing\",\n \"cleaning\",\n \"porous\"\n ],\n \"🧯\": [\n \"fire_extinguisher\",\n \"quench\",\n \"extinguish\"\n ],\n \"🛒\": [\n \"shopping_cart\",\n \"trolley\"\n ],\n \"🚬\": [\n \"cigarette\",\n \"kills\",\n \"tobacco\",\n \"joint\",\n \"smoke\",\n \"activity\",\n \"smoking\",\n \"symbol\"\n ],\n \"⚰️\": [\n \"coffin\",\n \"vampire\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"graveyard\",\n \"cemetery\",\n \"casket\",\n \"funeral\",\n \"box\",\n \"remove\"\n ],\n \"⚱️\": [\n \"funeral_urn\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"ashes\",\n \"vase\"\n ],\n \"🗿\": [\n \"moai\",\n \"rock\",\n \"easter island\",\n \"carving\",\n \"face\",\n \"human\",\n \"moyai\",\n \"statue\",\n \"stone\"\n ],\n \"🏧\": [\n \"atm_sign\",\n \"money\",\n \"sales\",\n \"cash\",\n \"blue-square\",\n \"payment\",\n \"bank\",\n \"automated\",\n \"machine\",\n \"teller\"\n ],\n \"🚮\": [\n \"litter_in_bin_sign\",\n \"blue-square\",\n \"sign\",\n \"human\",\n \"info\",\n \"its\",\n \"litterbox\",\n \"person\",\n \"place\",\n \"put\",\n \"symbol\",\n \"trash\"\n ],\n \"🚰\": [\n \"potable_water\",\n \"blue-square\",\n \"liquid\",\n \"restroom\",\n \"cleaning\",\n \"faucet\",\n \"drink\",\n \"drinking\",\n \"symbol\",\n \"tap\",\n \"thirst\",\n \"thirsty\"\n ],\n \"♿\": [\n \"wheelchair_symbol\",\n \"blue-square\",\n \"disabled\",\n \"accessibility\",\n \"access\",\n \"accessible\",\n \"bathroom\"\n ],\n \"🚹\": [\n \"men_s_room\",\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"blue-square\",\n \"gender\",\n \"male\",\n \"lavatory\",\n \"man\",\n \"mens\",\n \"men’s\",\n \"symbol\"\n ],\n \"🚺\": [\n \"women_s_room\",\n \"purple-square\",\n \"woman\",\n \"female\",\n \"toilet\",\n \"loo\",\n \"restroom\",\n \"gender\",\n \"lavatory\",\n \"symbol\",\n \"wc\",\n \"womens\",\n \"womens toilet\",\n \"women’s\"\n ],\n \"🚻\": [\n \"restroom\",\n \"blue-square\",\n \"toilet\",\n \"refresh\",\n \"wc\",\n \"gender\",\n \"bathroom\",\n \"lavatory\",\n \"sign\"\n ],\n \"🚼\": [\n \"baby_symbol\",\n \"orange-square\",\n \"child\",\n \"change\",\n \"changing\",\n \"nursery\",\n \"station\"\n ],\n \"🚾\": [\n \"water_closet\",\n \"toilet\",\n \"restroom\",\n \"blue-square\",\n \"lavatory\",\n \"wc\"\n ],\n \"🛂\": [\n \"passport_control\",\n \"custom\",\n \"blue-square\",\n \"border\",\n \"permissions\",\n \"authorization\",\n \"roles\"\n ],\n \"🛃\": [\n \"customs\",\n \"passport\",\n \"border\",\n \"blue-square\"\n ],\n \"🛄\": [\n \"baggage_claim\",\n \"blue-square\",\n \"airport\",\n \"transport\"\n ],\n \"🛅\": [\n \"left_luggage\",\n \"blue-square\",\n \"travel\",\n \"baggage\",\n \"bag with\",\n \"key\",\n \"locked\",\n \"locker\",\n \"suitcase\"\n ],\n \"⚠️\": [\n \"warning\",\n \"exclamation\",\n \"wip\",\n \"alert\",\n \"error\",\n \"problem\",\n \"issue\",\n \"sign\",\n \"symbol\"\n ],\n \"🚸\": [\n \"children_crossing\",\n \"school\",\n \"warning\",\n \"danger\",\n \"sign\",\n \"driving\",\n \"yellow-diamond\",\n \"child\",\n \"kids\",\n \"pedestrian\",\n \"traffic\",\n \"experience\",\n \"usability\"\n ],\n \"⛔\": [\n \"no_entry\",\n \"limit\",\n \"security\",\n \"privacy\",\n \"bad\",\n \"denied\",\n \"stop\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"traffic\"\n ],\n \"🚫\": [\n \"prohibited\",\n \"forbid\",\n \"stop\",\n \"limit\",\n \"denied\",\n \"disallow\",\n \"circle\",\n \"backslash\",\n \"banned\",\n \"block\",\n \"crossed\",\n \"entry\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"red\",\n \"restricted\",\n \"sign\"\n ],\n \"🚳\": [\n \"no_bicycles\",\n \"no_bikes\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"prohibited\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"sign\",\n \"vehicle\"\n ],\n \"🚭\": [\n \"no_smoking\",\n \"cigarette\",\n \"blue-square\",\n \"smell\",\n \"smoke\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"sign\",\n \"symbol\"\n ],\n \"🚯\": [\n \"no_littering\",\n \"trash\",\n \"bin\",\n \"garbage\",\n \"circle\",\n \"do\",\n \"forbidden\",\n \"litter\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚱\": [\n \"non_potable_water\",\n \"drink\",\n \"faucet\",\n \"tap\",\n \"circle\",\n \"drinking\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚷\": [\n \"no_pedestrians\",\n \"rules\",\n \"crossing\",\n \"walking\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"pedestrian\",\n \"people\",\n \"prohibited\"\n ],\n \"📵\": [\n \"no_mobile_phones\",\n \"iphone\",\n \"mute\",\n \"circle\",\n \"cell\",\n \"communication\",\n \"forbidden\",\n \"not\",\n \"phone\",\n \"prohibited\",\n \"smartphones\",\n \"telephone\"\n ],\n \"🔞\": [\n \"no_one_under_eighteen\",\n \"18\",\n \"drink\",\n \"pub\",\n \"night\",\n \"minor\",\n \"circle\",\n \"age\",\n \"forbidden\",\n \"not\",\n \"nsfw\",\n \"prohibited\",\n \"restriction\",\n \"symbol\",\n \"underage\"\n ],\n \"☢️\": [\n \"radioactive\",\n \"nuclear\",\n \"danger\",\n \"international\",\n \"radiation\",\n \"sign\",\n \"symbol\"\n ],\n \"☣️\": [\n \"biohazard\",\n \"danger\",\n \"sign\"\n ],\n \"⬆️\": [\n \"up_arrow\",\n \"blue-square\",\n \"continue\",\n \"top\",\n \"direction\",\n \"black\",\n \"cardinal\",\n \"north\",\n \"pointing\",\n \"upwards\",\n \"upgrade\"\n ],\n \"↗️\": [\n \"up_right_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northeast\",\n \"east\",\n \"intercardinal\",\n \"north\",\n \"upper\"\n ],\n \"➡️\": [\n \"right_arrow\",\n \"blue-square\",\n \"next\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"east\",\n \"pointing\",\n \"rightwards\",\n \"right arrow\"\n ],\n \"↘️\": [\n \"down_right_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southeast\",\n \"east\",\n \"intercardinal\",\n \"lower\",\n \"right arrow\",\n \"south\"\n ],\n \"⬇️\": [\n \"down_arrow\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"black\",\n \"cardinal\",\n \"downwards\",\n \"down arrow\",\n \"pointing\",\n \"south\",\n \"downgrade\"\n ],\n \"↙️\": [\n \"down_left_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southwest\",\n \"intercardinal\",\n \"left arrow\",\n \"lower\",\n \"south\",\n \"west\"\n ],\n \"⬅️\": [\n \"left_arrow\",\n \"blue-square\",\n \"previous\",\n \"back\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"leftwards\",\n \"left arrow\",\n \"pointing\",\n \"west\"\n ],\n \"↖️\": [\n \"up_left_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northwest\",\n \"intercardinal\",\n \"left arrow\",\n \"north\",\n \"upper\",\n \"west\"\n ],\n \"↕️\": [\n \"up_down_arrow\",\n \"blue-square\",\n \"direction\",\n \"way\",\n \"vertical\",\n \"arrows\",\n \"intercardinal\",\n \"northwest\"\n ],\n \"↔️\": [\n \"left_right_arrow\",\n \"shape\",\n \"direction\",\n \"horizontal\",\n \"sideways\",\n \"arrows\",\n \"horizontal arrows\"\n ],\n \"↩️\": [\n \"right_arrow_curving_left\",\n \"back\",\n \"return\",\n \"blue-square\",\n \"undo\",\n \"enter\",\n \"curved\",\n \"email\",\n \"hook\",\n \"leftwards\",\n \"reply\"\n ],\n \"↪️\": [\n \"left_arrow_curving_right\",\n \"blue-square\",\n \"return\",\n \"rotate\",\n \"direction\",\n \"email\",\n \"forward\",\n \"hook\",\n \"rightwards\",\n \"right curved\"\n ],\n \"⤴️\": [\n \"right_arrow_curving_up\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\",\n \"upwards\"\n ],\n \"⤵️\": [\n \"right_arrow_curving_down\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"curved\",\n \"downwards\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\"\n ],\n \"🔃\": [\n \"clockwise_vertical_arrows\",\n \"sync\",\n \"cycle\",\n \"round\",\n \"repeat\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"reload\",\n \"upwards\"\n ],\n \"🔄\": [\n \"counterclockwise_arrows_button\",\n \"blue-square\",\n \"sync\",\n \"cycle\",\n \"anticlockwise\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"refresh\",\n \"rotate\",\n \"switch\",\n \"upwards\",\n \"withershins\"\n ],\n \"🔙\": [\n \"back_arrow\",\n \"arrow\",\n \"words\",\n \"return\",\n \"above\",\n \"leftwards\"\n ],\n \"🔚\": [\n \"end_arrow\",\n \"words\",\n \"arrow\",\n \"above\",\n \"leftwards\"\n ],\n \"🔛\": [\n \"on_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"exclamation\",\n \"left\",\n \"mark\",\n \"on!\",\n \"right\"\n ],\n \"🔜\": [\n \"soon_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"rightwards\"\n ],\n \"🔝\": [\n \"top_arrow\",\n \"words\",\n \"blue-square\",\n \"above\",\n \"up\",\n \"upwards\"\n ],\n \"🛐\": [\n \"place_of_worship\",\n \"religion\",\n \"church\",\n \"temple\",\n \"prayer\",\n \"building\",\n \"religious\"\n ],\n \"⚛️\": [\n \"atom_symbol\",\n \"science\",\n \"physics\",\n \"chemistry\",\n \"atheist\"\n ],\n \"🕉️\": [\n \"om\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"aumkara\",\n \"hindu\",\n \"omkara\",\n \"pranava\",\n \"religion\",\n \"symbol\"\n ],\n \"✡️\": [\n \"star_of_david\",\n \"judaism\",\n \"jew\",\n \"jewish\",\n \"magen\",\n \"religion\"\n ],\n \"☸️\": [\n \"wheel_of_dharma\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"buddhist\",\n \"helm\",\n \"religion\"\n ],\n \"☯️\": [\n \"yin_yang\",\n \"balance\",\n \"religion\",\n \"tao\",\n \"taoist\"\n ],\n \"✝️\": [\n \"latin_cross\",\n \"christianity\",\n \"christian\",\n \"religion\"\n ],\n \"☦️\": [\n \"orthodox_cross\",\n \"suppedaneum\",\n \"religion\",\n \"christian\"\n ],\n \"☪️\": [\n \"star_and_crescent\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"☮️\": [\n \"peace_symbol\",\n \"hippie\",\n \"sign\"\n ],\n \"🕎\": [\n \"menorah\",\n \"hanukkah\",\n \"candles\",\n \"jewish\",\n \"branches\",\n \"candelabrum\",\n \"candlestick\",\n \"chanukiah\",\n \"nine\",\n \"religion\"\n ],\n \"🔯\": [\n \"dotted_six_pointed_star\",\n \"purple-square\",\n \"religion\",\n \"jewish\",\n \"hexagram\",\n \"dot\",\n \"fortune\",\n \"middle\"\n ],\n \"♈\": [\n \"aries\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"ram\"\n ],\n \"♉\": [\n \"taurus\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"bull\",\n \"ox\"\n ],\n \"♊\": [\n \"gemini\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"twins\"\n ],\n \"♋\": [\n \"cancer\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"crab\"\n ],\n \"♌\": [\n \"leo\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"lion\"\n ],\n \"♍\": [\n \"virgo\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"maiden\",\n \"virgin\"\n ],\n \"♎\": [\n \"libra\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"balance\",\n \"justice\",\n \"scales\"\n ],\n \"♏\": [\n \"scorpio\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"scorpion\",\n \"scorpius\"\n ],\n \"♐\": [\n \"sagittarius\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"archer\"\n ],\n \"♑\": [\n \"capricorn\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"goat\"\n ],\n \"♒\": [\n \"aquarius\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"bearer\",\n \"water\"\n ],\n \"♓\": [\n \"pisces\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"fish\"\n ],\n \"⛎\": [\n \"ophiuchus\",\n \"sign\",\n \"purple-square\",\n \"constellation\",\n \"astrology\",\n \"bearer\",\n \"serpent\",\n \"snake\",\n \"zodiac\"\n ],\n \"🔀\": [\n \"shuffle_tracks_button\",\n \"blue-square\",\n \"shuffle\",\n \"music\",\n \"random\",\n \"arrow\",\n \"arrows\",\n \"crossed\",\n \"rightwards\",\n \"symbol\",\n \"twisted\",\n \"merge\"\n ],\n \"🔁\": [\n \"repeat_button\",\n \"loop\",\n \"record\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"clockwise\",\n \"leftwards\",\n \"open\",\n \"retweet\",\n \"rightwards\",\n \"symbol\"\n ],\n \"🔂\": [\n \"repeat_single_button\",\n \"blue-square\",\n \"loop\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"circled\",\n \"clockwise\",\n \"leftwards\",\n \"number\",\n \"once\",\n \"one\",\n \"open\",\n \"overlay\",\n \"rightwards\",\n \"symbol\",\n \"track\"\n ],\n \"▶️\": [\n \"play_button\",\n \"blue-square\",\n \"right\",\n \"direction\",\n \"play\",\n \"arrow\",\n \"black\",\n \"forward\",\n \"pointing\",\n \"right triangle\",\n \"triangle\"\n ],\n \"⏩\": [\n \"fast_forward_button\",\n \"blue-square\",\n \"play\",\n \"speed\",\n \"continue\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\"\n ],\n \"⏭️\": [\n \"next_track_button\",\n \"forward\",\n \"next\",\n \"blue-square\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"⏯️\": [\n \"play_or_pause_button\",\n \"blue-square\",\n \"play\",\n \"pause\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"play/pause\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"◀️\": [\n \"reverse_button\",\n \"blue-square\",\n \"left\",\n \"direction\",\n \"arrow\",\n \"backward\",\n \"black\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏪\": [\n \"fast_reverse_button\",\n \"play\",\n \"blue-square\",\n \"arrow\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"rewind\",\n \"symbol\",\n \"triangle\",\n \"revert\"\n ],\n \"⏮️\": [\n \"last_track_button\",\n \"backward\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"previous\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"🔼\": [\n \"upwards_button\",\n \"blue-square\",\n \"triangle\",\n \"direction\",\n \"point\",\n \"forward\",\n \"top\",\n \"arrow\",\n \"pointing\",\n \"red\",\n \"small\",\n \"up\"\n ],\n \"⏫\": [\n \"fast_up_button\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"🔽\": [\n \"downwards_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"down\",\n \"pointing\",\n \"red\",\n \"small\",\n \"triangle\"\n ],\n \"⏬\": [\n \"fast_down_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏸️\": [\n \"pause_button\",\n \"pause\",\n \"blue-square\",\n \"bar\",\n \"double\",\n \"symbol\",\n \"vertical\"\n ],\n \"⏹️\": [\n \"stop_button\",\n \"blue-square\",\n \"black\",\n \"for\",\n \"square\",\n \"symbol\"\n ],\n \"⏺️\": [\n \"record_button\",\n \"blue-square\",\n \"black\",\n \"circle\",\n \"for\",\n \"symbol\"\n ],\n \"⏏️\": [\n \"eject_button\",\n \"blue-square\",\n \"symbol\"\n ],\n \"🎦\": [\n \"cinema\",\n \"blue-square\",\n \"record\",\n \"film\",\n \"movie\",\n \"curtain\",\n \"stage\",\n \"theater\",\n \"activity\",\n \"camera\",\n \"entertainment\",\n \"movies\",\n \"screen\",\n \"symbol\"\n ],\n \"🔅\": [\n \"dim_button\",\n \"sun\",\n \"afternoon\",\n \"warm\",\n \"summer\",\n \"brightness\",\n \"decrease\",\n \"low\",\n \"symbol\"\n ],\n \"🔆\": [\n \"bright_button\",\n \"sun\",\n \"light\",\n \"brightness\",\n \"high\",\n \"increase\",\n \"symbol\"\n ],\n \"📶\": [\n \"antenna_bars\",\n \"blue-square\",\n \"reception\",\n \"phone\",\n \"internet\",\n \"connection\",\n \"wifi\",\n \"bluetooth\",\n \"bars\",\n \"bar\",\n \"cell\",\n \"cellular\",\n \"communication\",\n \"mobile\",\n \"signal\",\n \"stairs\",\n \"strength\",\n \"telephone\"\n ],\n \"📳\": [\n \"vibration_mode\",\n \"orange-square\",\n \"phone\",\n \"cell\",\n \"communication\",\n \"heart\",\n \"mobile\",\n \"silent\",\n \"telephone\"\n ],\n \"📴\": [\n \"mobile_phone_off\",\n \"mute\",\n \"orange-square\",\n \"silence\",\n \"quiet\",\n \"cell\",\n \"communication\",\n \"telephone\"\n ],\n \"♀️\": [\n \"female_sign\",\n \"woman\",\n \"women\",\n \"lady\",\n \"girl\",\n \"symbol\",\n \"venus\"\n ],\n \"♂️\": [\n \"male_sign\",\n \"man\",\n \"boy\",\n \"men\",\n \"mars\",\n \"symbol\"\n ],\n \"⚕️\": [\n \"medical_symbol\",\n \"health\",\n \"hospital\",\n \"aesculapius\",\n \"asclepius\",\n \"asklepios\",\n \"care\",\n \"doctor\",\n \"medicine\",\n \"rod\",\n \"snake\",\n \"staff\"\n ],\n \"♾️\": [\n \"infinity\",\n \"forever\",\n \"paper\",\n \"permanent\",\n \"sign\",\n \"unbounded\",\n \"universal\"\n ],\n \"♻️\": [\n \"recycling_symbol\",\n \"arrow\",\n \"environment\",\n \"garbage\",\n \"trash\",\n \"black\",\n \"green\",\n \"logo\",\n \"recycle\",\n \"universal\",\n \"reuse\"\n ],\n \"⚜️\": [\n \"fleur_de_lis\",\n \"decorative\",\n \"scout\",\n \"new\",\n \"orleans\",\n \"saints\",\n \"scouts\"\n ],\n \"🔱\": [\n \"trident_emblem\",\n \"weapon\",\n \"spear\",\n \"anchor\",\n \"pitchfork\",\n \"ship\",\n \"tool\"\n ],\n \"📛\": [\n \"name_badge\",\n \"fire\",\n \"forbid\",\n \"tag\",\n \"tofu\"\n ],\n \"🔰\": [\n \"japanese_symbol_for_beginner\",\n \"badge\",\n \"shield\",\n \"chevron\",\n \"green\",\n \"leaf\",\n \"mark\",\n \"shoshinsha\",\n \"tool\",\n \"yellow\"\n ],\n \"⭕\": [\n \"hollow_red_circle\",\n \"circle\",\n \"round\",\n \"correct\",\n \"heavy\",\n \"large\",\n \"mark\",\n \"o\"\n ],\n \"✅\": [\n \"check_mark_button\",\n \"green-square\",\n \"ok\",\n \"agree\",\n \"vote\",\n \"election\",\n \"answer\",\n \"tick\",\n \"green\",\n \"heavy\",\n \"symbol\",\n \"white\",\n \"pass_tests\"\n ],\n \"☑️\": [\n \"check_box_with_check\",\n \"ok\",\n \"agree\",\n \"confirm\",\n \"black-square\",\n \"vote\",\n \"election\",\n \"yes\",\n \"tick\",\n \"ballot\",\n \"checkbox\",\n \"mark\"\n ],\n \"✔️\": [\n \"check_mark\",\n \"ok\",\n \"nike\",\n \"answer\",\n \"yes\",\n \"tick\",\n \"heavy\"\n ],\n \"✖️\": [\n \"multiplication_sign\",\n \"math\",\n \"calculation\",\n \"cancel\",\n \"heavy\",\n \"multiply\",\n \"symbol\",\n \"x\"\n ],\n \"❌\": [\n \"cross_mark\",\n \"no\",\n \"delete\",\n \"remove\",\n \"cancel\",\n \"red\",\n \"multiplication\",\n \"multiply\",\n \"x\"\n ],\n \"❎\": [\n \"cross_mark_button\",\n \"x\",\n \"green-square\",\n \"no\",\n \"deny\",\n \"negative\",\n \"square\",\n \"squared\"\n ],\n \"➕\": [\n \"plus_sign\",\n \"math\",\n \"calculation\",\n \"addition\",\n \"more\",\n \"increase\",\n \"heavy\",\n \"symbol\",\n \"add\"\n ],\n \"➖\": [\n \"minus_sign\",\n \"math\",\n \"calculation\",\n \"subtract\",\n \"less\",\n \"heavy\",\n \"symbol\",\n \"remove\"\n ],\n \"➗\": [\n \"division_sign\",\n \"divide\",\n \"math\",\n \"calculation\",\n \"heavy\",\n \"symbol\"\n ],\n \"➰\": [\n \"curly_loop\",\n \"scribble\",\n \"draw\",\n \"shape\",\n \"squiggle\",\n \"curl\",\n \"curling\"\n ],\n \"➿\": [\n \"double_curly_loop\",\n \"tape\",\n \"cassette\",\n \"curl\",\n \"curling\",\n \"voicemail\"\n ],\n \"〽️\": [\n \"part_alternation_mark\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"business\",\n \"economics\",\n \"bad\",\n \"m\",\n \"mcdonald’s\"\n ],\n \"✳️\": [\n \"eight_spoked_asterisk\",\n \"star\",\n \"sparkle\",\n \"green-square\"\n ],\n \"✴️\": [\n \"eight_pointed_star\",\n \"orange-square\",\n \"shape\",\n \"polygon\",\n \"black\",\n \"orange\"\n ],\n \"❇️\": [\n \"sparkle\",\n \"stars\",\n \"green-square\",\n \"awesome\",\n \"good\",\n \"fireworks\"\n ],\n \"‼️\": [\n \"double_exclamation_mark\",\n \"exclamation\",\n \"surprise\",\n \"bangbang\",\n \"punctuation\",\n \"red\"\n ],\n \"⁉️\": [\n \"exclamation_question_mark\",\n \"wat\",\n \"punctuation\",\n \"surprise\",\n \"interrobang\",\n \"red\"\n ],\n \"❓\": [\n \"question_mark\",\n \"doubt\",\n \"confused\",\n \"black\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"❔\": [\n \"white_question_mark\",\n \"doubts\",\n \"gray\",\n \"huh\",\n \"confused\",\n \"grey\",\n \"ornament\",\n \"outlined\",\n \"punctuation\"\n ],\n \"❕\": [\n \"white_exclamation_mark\",\n \"surprise\",\n \"punctuation\",\n \"gray\",\n \"wow\",\n \"warning\",\n \"grey\",\n \"ornament\",\n \"outlined\"\n ],\n \"❗\": [\n \"exclamation_mark\",\n \"heavy_exclamation_mark\",\n \"danger\",\n \"surprise\",\n \"punctuation\",\n \"wow\",\n \"warning\",\n \"bang\",\n \"red\",\n \"symbol\"\n ],\n \"〰️\": [\n \"wavy_dash\",\n \"draw\",\n \"line\",\n \"moustache\",\n \"mustache\",\n \"squiggle\",\n \"scribble\",\n \"punctuation\",\n \"wave\"\n ],\n \"©️\": [\n \"copyright\",\n \"ip\",\n \"license\",\n \"circle\",\n \"law\",\n \"legal\",\n \"c\",\n \"sign\"\n ],\n \"®️\": [\n \"registered\",\n \"alphabet\",\n \"circle\",\n \"r\",\n \"sign\"\n ],\n \"™️\": [\n \"trade_mark\",\n \"trademark\",\n \"brand\",\n \"law\",\n \"legal\",\n \"sign\",\n \"tm\"\n ],\n \"#️⃣\": [\n \"keycap_\",\n \"symbol\",\n \"blue-square\",\n \"twitter\",\n \"hash\",\n \"hashtag\",\n \"key\",\n \"number\",\n \"octothorpe\",\n \"pound\",\n \"sign\"\n ],\n \"*️⃣\": [\n \"keycap_\",\n \"star\",\n \"keycap\",\n \"asterisk\"\n ],\n \"0️⃣\": [\n \"keycap_0\",\n \"0\",\n \"numbers\",\n \"blue-square\",\n \"null\",\n \"zero\",\n \"digit\"\n ],\n \"1️⃣\": [\n \"keycap_1\",\n \"blue-square\",\n \"numbers\",\n \"1\",\n \"one\",\n \"digit\"\n ],\n \"2️⃣\": [\n \"keycap_2\",\n \"numbers\",\n \"2\",\n \"prime\",\n \"blue-square\",\n \"two\",\n \"digit\"\n ],\n \"3️⃣\": [\n \"keycap_3\",\n \"3\",\n \"numbers\",\n \"prime\",\n \"blue-square\",\n \"three\",\n \"digit\"\n ],\n \"4️⃣\": [\n \"keycap_4\",\n \"4\",\n \"numbers\",\n \"blue-square\",\n \"four\",\n \"digit\"\n ],\n \"5️⃣\": [\n \"keycap_5\",\n \"5\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"five\",\n \"digit\"\n ],\n \"6️⃣\": [\n \"keycap_6\",\n \"6\",\n \"numbers\",\n \"blue-square\",\n \"six\",\n \"digit\"\n ],\n \"7️⃣\": [\n \"keycap_7\",\n \"7\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"seven\",\n \"digit\"\n ],\n \"8️⃣\": [\n \"keycap_8\",\n \"8\",\n \"blue-square\",\n \"numbers\",\n \"eight\",\n \"digit\"\n ],\n \"9️⃣\": [\n \"keycap_9\",\n \"blue-square\",\n \"numbers\",\n \"9\",\n \"nine\",\n \"digit\"\n ],\n \"🔟\": [\n \"keycap_10\",\n \"numbers\",\n \"10\",\n \"blue-square\",\n \"ten\",\n \"number\"\n ],\n \"🔠\": [\n \"input_latin_uppercase\",\n \"alphabet\",\n \"words\",\n \"letters\",\n \"uppercase\",\n \"blue-square\",\n \"abcd\",\n \"capital\",\n \"for\",\n \"symbol\"\n ],\n \"🔡\": [\n \"input_latin_lowercase\",\n \"blue-square\",\n \"letters\",\n \"lowercase\",\n \"alphabet\",\n \"abcd\",\n \"for\",\n \"small\",\n \"symbol\"\n ],\n \"🔢\": [\n \"input_numbers\",\n \"numbers\",\n \"blue-square\",\n \"1234\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"for\",\n \"numeric\",\n \"symbol\"\n ],\n \"🔣\": [\n \"input_symbols\",\n \"blue-square\",\n \"music\",\n \"note\",\n \"ampersand\",\n \"percent\",\n \"glyphs\",\n \"characters\",\n \"for\",\n \"symbol\",\n \"symbol input\"\n ],\n \"🔤\": [\n \"input_latin_letters\",\n \"blue-square\",\n \"alphabet\",\n \"abc\",\n \"for\",\n \"symbol\"\n ],\n \"🅰️\": [\n \"a_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆎\": [\n \"ab_button\",\n \"red-square\",\n \"alphabet\",\n \"blood\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🅱️\": [\n \"b_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆑\": [\n \"cl_button\",\n \"alphabet\",\n \"words\",\n \"red-square\",\n \"clear\",\n \"sign\",\n \"squared\"\n ],\n \"🆒\": [\n \"cool_button\",\n \"words\",\n \"blue-square\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🆓\": [\n \"free_button\",\n \"blue-square\",\n \"words\",\n \"sign\",\n \"squared\"\n ],\n \"ℹ️\": [\n \"information\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"i\",\n \"info\",\n \"lowercase\",\n \"source\",\n \"tourist\"\n ],\n \"🆔\": [\n \"id_button\",\n \"purple-square\",\n \"words\",\n \"identification\",\n \"identity\",\n \"sign\",\n \"squared\"\n ],\n \"Ⓜ️\": [\n \"circled_m\",\n \"alphabet\",\n \"blue-circle\",\n \"letter\",\n \"capital\",\n \"circle\",\n \"latin\",\n \"metro\"\n ],\n \"🆕\": [\n \"new_button\",\n \"blue-square\",\n \"words\",\n \"start\",\n \"fresh\",\n \"sign\",\n \"squared\"\n ],\n \"🆖\": [\n \"ng_button\",\n \"blue-square\",\n \"words\",\n \"shape\",\n \"icon\",\n \"blooper\",\n \"good\",\n \"no\",\n \"sign\",\n \"squared\"\n ],\n \"🅾️\": [\n \"o_button\",\n \"alphabet\",\n \"red-square\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"o2\",\n \"squared\",\n \"type\"\n ],\n \"🆗\": [\n \"ok_button\",\n \"good\",\n \"agree\",\n \"yes\",\n \"blue-square\",\n \"okay\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🅿️\": [\n \"p_button\",\n \"cars\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"parking\",\n \"sign\",\n \"squared\"\n ],\n \"🆘\": [\n \"sos_button\",\n \"help\",\n \"red-square\",\n \"words\",\n \"emergency\",\n \"911\",\n \"distress\",\n \"sign\",\n \"signal\",\n \"squared\"\n ],\n \"🆙\": [\n \"up_button\",\n \"blue-square\",\n \"above\",\n \"high\",\n \"exclamation\",\n \"level\",\n \"mark\",\n \"sign\",\n \"squared\",\n \"up!\"\n ],\n \"🆚\": [\n \"vs_button\",\n \"words\",\n \"orange-square\",\n \"squared\",\n \"versus\"\n ],\n \"🈁\": [\n \"japanese_here_button\",\n \"blue-square\",\n \"here\",\n \"katakana\",\n \"japanese\",\n \"destination\",\n \"koko\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"word\",\n \"“here”\"\n ],\n \"🈂️\": [\n \"japanese_service_charge_button\",\n \"japanese\",\n \"blue-square\",\n \"katakana\",\n \"charge”\",\n \"meaning\",\n \"or\",\n \"sa\",\n \"sign\",\n \"squared\",\n \"“service\",\n \"“service”\"\n ],\n \"🈷️\": [\n \"japanese_monthly_amount_button\",\n \"chinese\",\n \"month\",\n \"moon\",\n \"japanese\",\n \"orange-square\",\n \"kanji\",\n \"amount”\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"radical\",\n \"sign\",\n \"squared\",\n \"u6708\",\n \"unified\",\n \"“monthly\"\n ],\n \"🈶\": [\n \"japanese_not_free_of_charge_button\",\n \"orange-square\",\n \"chinese\",\n \"have\",\n \"kanji\",\n \"charge”\",\n \"cjk\",\n \"exist\",\n \"ideograph\",\n \"meaning\",\n \"own\",\n \"sign\",\n \"squared\",\n \"u6709\",\n \"unified\",\n \"“not\"\n ],\n \"🈯\": [\n \"japanese_reserved_button\",\n \"chinese\",\n \"point\",\n \"green-square\",\n \"kanji\",\n \"cjk\",\n \"finger\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6307\",\n \"unified\",\n \"“reserved”\"\n ],\n \"🉐\": [\n \"japanese_bargain_button\",\n \"chinese\",\n \"kanji\",\n \"obtain\",\n \"get\",\n \"circle\",\n \"acquire\",\n \"advantage\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“bargain”\"\n ],\n \"🈹\": [\n \"japanese_discount_button\",\n \"cut\",\n \"divide\",\n \"chinese\",\n \"kanji\",\n \"pink-square\",\n \"bargain\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sale\",\n \"sign\",\n \"squared\",\n \"u5272\",\n \"unified\",\n \"“discount”\"\n ],\n \"🈚\": [\n \"japanese_free_of_charge_button\",\n \"nothing\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"orange-square\",\n \"charge”\",\n \"cjk\",\n \"ideograph\",\n \"lacking\",\n \"meaning\",\n \"negation\",\n \"sign\",\n \"squared\",\n \"u7121\",\n \"unified\",\n \"“free\"\n ],\n \"🈲\": [\n \"japanese_prohibited_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"forbidden\",\n \"limit\",\n \"restricted\",\n \"red-square\",\n \"cjk\",\n \"forbid\",\n \"ideograph\",\n \"meaning\",\n \"prohibit\",\n \"sign\",\n \"squared\",\n \"u7981\",\n \"unified\",\n \"“prohibited”\"\n ],\n \"🉑\": [\n \"japanese_acceptable_button\",\n \"ok\",\n \"good\",\n \"chinese\",\n \"kanji\",\n \"agree\",\n \"yes\",\n \"orange-circle\",\n \"accept\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“acceptable”\"\n ],\n \"🈸\": [\n \"japanese_application_button\",\n \"chinese\",\n \"japanese\",\n \"kanji\",\n \"orange-square\",\n \"apply\",\n \"cjk\",\n \"form\",\n \"ideograph\",\n \"meaning\",\n \"monkey\",\n \"request\",\n \"sign\",\n \"squared\",\n \"u7533\",\n \"unified\",\n \"“application”\"\n ],\n \"🈴\": [\n \"japanese_passing_grade_button\",\n \"japanese\",\n \"chinese\",\n \"join\",\n \"kanji\",\n \"red-square\",\n \"agreement\",\n \"cjk\",\n \"grade”\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"together\",\n \"u5408\",\n \"unified\",\n \"“passing\"\n ],\n \"🈳\": [\n \"japanese_vacancy_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"empty\",\n \"sky\",\n \"blue-square\",\n \"7a7a\",\n \"available\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u7a7a\",\n \"unified\",\n \"“vacancy”\"\n ],\n \"㊗️\": [\n \"japanese_congratulations_button\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"red-circle\",\n \"circled\",\n \"congratulate\",\n \"congratulation\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“congratulations”\"\n ],\n \"㊙️\": [\n \"japanese_secret_button\",\n \"privacy\",\n \"chinese\",\n \"sshh\",\n \"kanji\",\n \"red-circle\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“secret”\"\n ],\n \"🈺\": [\n \"japanese_open_for_business_button\",\n \"japanese\",\n \"opening hours\",\n \"orange-square\",\n \"55b6\",\n \"business”\",\n \"chinese\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"operating\",\n \"sign\",\n \"squared\",\n \"u55b6\",\n \"unified\",\n \"work\",\n \"“open\"\n ],\n \"🈵\": [\n \"japanese_no_vacancy_button\",\n \"full\",\n \"chinese\",\n \"japanese\",\n \"red-square\",\n \"kanji\",\n \"6e80\",\n \"cjk\",\n \"fullness\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6e80\",\n \"unified\",\n \"vacancy”\",\n \"“full;\",\n \"“no\"\n ],\n \"🔴\": [\n \"red_circle\",\n \"shape\",\n \"error\",\n \"danger\",\n \"geometric\",\n \"large\"\n ],\n \"🟠\": [\n \"orange_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟡\": [\n \"yellow_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟢\": [\n \"green_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🔵\": [\n \"blue_circle\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\",\n \"large\"\n ],\n \"🟣\": [\n \"purple_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟤\": [\n \"brown_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"⚫\": [\n \"black_circle\",\n \"shape\",\n \"button\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"⚪\": [\n \"white_circle\",\n \"shape\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"🟥\": [\n \"red_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟧\": [\n \"orange_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟨\": [\n \"yellow_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟩\": [\n \"green_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟦\": [\n \"blue_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟪\": [\n \"purple_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟫\": [\n \"brown_square\",\n \"geometric\",\n \"large\"\n ],\n \"⬛\": [\n \"black_large_square\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"⬜\": [\n \"white_large_square\",\n \"shape\",\n \"icon\",\n \"stone\",\n \"button\",\n \"geometric\"\n ],\n \"◼️\": [\n \"black_medium_square\",\n \"shape\",\n \"button\",\n \"icon\",\n \"geometric\"\n ],\n \"◻️\": [\n \"white_medium_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"geometric\"\n ],\n \"◾\": [\n \"black_medium_small_square\",\n \"icon\",\n \"shape\",\n \"button\",\n \"geometric\"\n ],\n \"◽\": [\n \"white_medium_small_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"▪️\": [\n \"black_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"▫️\": [\n \"white_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"🔶\": [\n \"large_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔷\": [\n \"large_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔸\": [\n \"small_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔹\": [\n \"small_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔺\": [\n \"red_triangle_pointed_up\",\n \"shape\",\n \"direction\",\n \"up\",\n \"top\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"🔻\": [\n \"red_triangle_pointed_down\",\n \"shape\",\n \"direction\",\n \"bottom\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"💠\": [\n \"diamond_with_a_dot\",\n \"jewel\",\n \"blue\",\n \"gem\",\n \"crystal\",\n \"fancy\",\n \"comic\",\n \"cuteness\",\n \"flower\",\n \"geometric\",\n \"inside\",\n \"kawaii\",\n \"shape\"\n ],\n \"🔘\": [\n \"radio_button\",\n \"input\",\n \"old\",\n \"music\",\n \"circle\",\n \"geometric\"\n ],\n \"🔳\": [\n \"white_square_button\",\n \"shape\",\n \"input\",\n \"geometric\",\n \"outlined\"\n ],\n \"🔲\": [\n \"black_square_button\",\n \"shape\",\n \"input\",\n \"frame\",\n \"geometric\"\n ],\n \"🏁\": [\n \"chequered_flag\",\n \"contest\",\n \"finishline\",\n \"race\",\n \"gokart\",\n \"checkered\",\n \"finish\",\n \"girl\",\n \"grid\",\n \"milestone\",\n \"racing\"\n ],\n \"🚩\": [\n \"triangular_flag\",\n \"mark\",\n \"milestone\",\n \"place\",\n \"pole\",\n \"post\",\n \"red\",\n \"flag\"\n ],\n \"🎌\": [\n \"crossed_flags\",\n \"japanese\",\n \"nation\",\n \"country\",\n \"border\",\n \"activity\",\n \"celebration\",\n \"cross\",\n \"flag\",\n \"two\"\n ],\n \"🏴\": [\n \"black_flag\",\n \"pirate\",\n \"waving\"\n ],\n \"🏳️\": [\n \"white_flag\",\n \"losing\",\n \"loser\",\n \"lost\",\n \"surrender\",\n \"give up\",\n \"fail\",\n \"waving\"\n ],\n \"🏳️🌈\": [\n \"rainbow_flag\",\n \"flag\",\n \"rainbow\",\n \"pride\",\n \"gay\",\n \"lgbt\",\n \"queer\",\n \"homosexual\",\n \"lesbian\",\n \"bisexual\"\n ],\n \"🏴☠️\": [\n \"pirate_flag\",\n \"skull\",\n \"crossbones\",\n \"flag\",\n \"banner\",\n \"jolly\",\n \"plunder\",\n \"roger\",\n \"treasure\"\n ],\n \"🇦🇨\": [\n \"flag_ascension_island\"\n ],\n \"🇦🇩\": [\n \"flag_andorra\",\n \"ad\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"andorra\",\n \"andorran\"\n ],\n \"🇦🇪\": [\n \"flag_united_arab_emirates\",\n \"united\",\n \"arab\",\n \"emirates\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_arab_emirates\",\n \"emirati\",\n \"uae\"\n ],\n \"🇦🇫\": [\n \"flag_afghanistan\",\n \"af\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"afghanistan\",\n \"afghan\"\n ],\n \"🇦🇬\": [\n \"flag_antigua_barbuda\",\n \"antigua\",\n \"barbuda\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antigua_barbuda\"\n ],\n \"🇦🇮\": [\n \"flag_anguilla\",\n \"ai\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"anguilla\",\n \"anguillan\"\n ],\n \"🇦🇱\": [\n \"flag_albania\",\n \"al\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"albania\",\n \"albanian\"\n ],\n \"🇦🇲\": [\n \"flag_armenia\",\n \"am\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"armenia\",\n \"armenian\"\n ],\n \"🇦🇴\": [\n \"flag_angola\",\n \"ao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"angola\",\n \"angolan\"\n ],\n \"🇦🇶\": [\n \"flag_antarctica\",\n \"aq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antarctica\",\n \"antarctic\"\n ],\n \"🇦🇷\": [\n \"flag_argentina\",\n \"ar\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"argentina\",\n \"argentinian\"\n ],\n \"🇦🇸\": [\n \"flag_american_samoa\",\n \"american\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"american_samoa\",\n \"samoan\"\n ],\n \"🇦🇹\": [\n \"flag_austria\",\n \"at\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"austria\",\n \"austrian\"\n ],\n \"🇦🇺\": [\n \"flag_australia\",\n \"au\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"australia\",\n \"aussie\",\n \"australian\",\n \"heard\",\n \"mcdonald\"\n ],\n \"🇦🇼\": [\n \"flag_aruba\",\n \"aw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aruba\",\n \"aruban\"\n ],\n \"🇦🇽\": [\n \"flag_aland_islands\",\n \"Åland\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aland_islands\"\n ],\n \"🇦🇿\": [\n \"flag_azerbaijan\",\n \"az\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"azerbaijan\",\n \"azerbaijani\"\n ],\n \"🇧🇦\": [\n \"flag_bosnia_herzegovina\",\n \"bosnia\",\n \"herzegovina\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bosnia_herzegovina\"\n ],\n \"🇧🇧\": [\n \"flag_barbados\",\n \"bb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"barbados\",\n \"bajan\",\n \"barbadian\"\n ],\n \"🇧🇩\": [\n \"flag_bangladesh\",\n \"bd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bangladesh\",\n \"bangladeshi\"\n ],\n \"🇧🇪\": [\n \"flag_belgium\",\n \"be\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belgium\",\n \"belgian\"\n ],\n \"🇧🇫\": [\n \"flag_burkina_faso\",\n \"burkina\",\n \"faso\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burkina_faso\",\n \"burkinabe\"\n ],\n \"🇧🇬\": [\n \"flag_bulgaria\",\n \"bg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bulgaria\",\n \"bulgarian\"\n ],\n \"🇧🇭\": [\n \"flag_bahrain\",\n \"bh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahrain\",\n \"bahrainian\",\n \"bahrani\"\n ],\n \"🇧🇮\": [\n \"flag_burundi\",\n \"bi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burundi\",\n \"burundian\"\n ],\n \"🇧🇯\": [\n \"flag_benin\",\n \"bj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"benin\",\n \"beninese\"\n ],\n \"🇧🇱\": [\n \"flag_st_barthelemy\",\n \"saint\",\n \"barthélemy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_barthelemy\",\n \"st.\"\n ],\n \"🇧🇲\": [\n \"flag_bermuda\",\n \"bm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bermuda\",\n \"bermudan flag\"\n ],\n \"🇧🇳\": [\n \"flag_brunei\",\n \"bn\",\n \"darussalam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brunei\",\n \"bruneian\"\n ],\n \"🇧🇴\": [\n \"flag_bolivia\",\n \"bo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bolivia\",\n \"bolivian\"\n ],\n \"🇧🇶\": [\n \"flag_caribbean_netherlands\",\n \"bonaire\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"caribbean_netherlands\",\n \"eustatius\",\n \"saba\",\n \"sint\"\n ],\n \"🇧🇷\": [\n \"flag_brazil\",\n \"br\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brazil\",\n \"brasil\",\n \"brazilian\",\n \"for\"\n ],\n \"🇧🇸\": [\n \"flag_bahamas\",\n \"bs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahamas\",\n \"bahamian\"\n ],\n \"🇧🇹\": [\n \"flag_bhutan\",\n \"bt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bhutan\",\n \"bhutanese\"\n ],\n \"🇧🇻\": [\n \"flag_bouvet_island\",\n \"norway\"\n ],\n \"🇧🇼\": [\n \"flag_botswana\",\n \"bw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"botswana\",\n \"batswana\"\n ],\n \"🇧🇾\": [\n \"flag_belarus\",\n \"by\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belarus\",\n \"belarusian\"\n ],\n \"🇧🇿\": [\n \"flag_belize\",\n \"bz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belize\",\n \"belizean\"\n ],\n \"🇨🇦\": [\n \"flag_canada\",\n \"ca\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canada\",\n \"canadian\"\n ],\n \"🇨🇨\": [\n \"flag_cocos_islands\",\n \"cocos\",\n \"keeling\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cocos_islands\",\n \"island\"\n ],\n \"🇨🇩\": [\n \"flag_congo_kinshasa\",\n \"congo\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_kinshasa\",\n \"drc\"\n ],\n \"🇨🇫\": [\n \"flag_central_african_republic\",\n \"central\",\n \"african\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"central_african_republic\"\n ],\n \"🇨🇬\": [\n \"flag_congo_brazzaville\",\n \"congo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_brazzaville\",\n \"republic\"\n ],\n \"🇨🇭\": [\n \"flag_switzerland\",\n \"ch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"switzerland\",\n \"cross\",\n \"red\",\n \"swiss\"\n ],\n \"🇨🇮\": [\n \"flag_cote_d_ivoire\",\n \"ivory\",\n \"coast\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cote_d_ivoire\",\n \"côte\",\n \"divoire\",\n \"d’ivoire\"\n ],\n \"🇨🇰\": [\n \"flag_cook_islands\",\n \"cook\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cook_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇨🇱\": [\n \"flag_chile\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chile\",\n \"chilean\"\n ],\n \"🇨🇲\": [\n \"flag_cameroon\",\n \"cm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cameroon\",\n \"cameroonian\"\n ],\n \"🇨🇳\": [\n \"flag_china\",\n \"china\",\n \"chinese\",\n \"prc\",\n \"flag\",\n \"country\",\n \"nation\",\n \"banner\",\n \"cn\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇨🇴\": [\n \"flag_colombia\",\n \"co\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"colombia\",\n \"colombian\"\n ],\n \"🇨🇵\": [\n \"flag_clipperton_island\"\n ],\n \"🇨🇷\": [\n \"flag_costa_rica\",\n \"costa\",\n \"rica\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"costa_rica\",\n \"rican\"\n ],\n \"🇨🇺\": [\n \"flag_cuba\",\n \"cu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cuba\",\n \"cuban\"\n ],\n \"🇨🇻\": [\n \"flag_cape_verde\",\n \"cabo\",\n \"verde\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cape_verde\",\n \"verdian\"\n ],\n \"🇨🇼\": [\n \"flag_curacao\",\n \"curaçao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"curacao\",\n \"antilles\",\n \"curaçaoan\"\n ],\n \"🇨🇽\": [\n \"flag_christmas_island\",\n \"christmas\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"christmas_island\"\n ],\n \"🇨🇾\": [\n \"flag_cyprus\",\n \"cy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cyprus\",\n \"cypriot\"\n ],\n \"🇨🇿\": [\n \"flag_czechia\",\n \"cz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"czechia\",\n \"czech\",\n \"republic\"\n ],\n \"🇩🇪\": [\n \"flag_germany\",\n \"german\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"germany\",\n \"de\",\n \"deutsch\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇩🇬\": [\n \"flag_diego_garcia\"\n ],\n \"🇩🇯\": [\n \"flag_djibouti\",\n \"dj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"djibouti\",\n \"djiboutian\"\n ],\n \"🇩🇰\": [\n \"flag_denmark\",\n \"dk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"denmark\",\n \"danish\"\n ],\n \"🇩🇲\": [\n \"flag_dominica\",\n \"dm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominica\"\n ],\n \"🇩🇴\": [\n \"flag_dominican_republic\",\n \"dominican\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominican_republic\",\n \"dom\",\n \"rep\"\n ],\n \"🇩🇿\": [\n \"flag_algeria\",\n \"dz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"algeria\",\n \"algerian\"\n ],\n \"🇪🇦\": [\n \"flag_ceuta_melilla\"\n ],\n \"🇪🇨\": [\n \"flag_ecuador\",\n \"ec\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ecuador\",\n \"ecuadorian\"\n ],\n \"🇪🇪\": [\n \"flag_estonia\",\n \"ee\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"estonia\",\n \"estonian\"\n ],\n \"🇪🇬\": [\n \"flag_egypt\",\n \"eg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"egypt\",\n \"egyptian\"\n ],\n \"🇪🇭\": [\n \"flag_western_sahara\",\n \"western\",\n \"sahara\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"western_sahara\",\n \"saharan\",\n \"west\"\n ],\n \"🇪🇷\": [\n \"flag_eritrea\",\n \"er\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eritrea\",\n \"eritrean\"\n ],\n \"🇪🇸\": [\n \"flag_spain\",\n \"spain\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ceuta\",\n \"es\",\n \"indicator\",\n \"letters\",\n \"melilla\",\n \"regional\",\n \"spanish\",\n \"symbol\"\n ],\n \"🇪🇹\": [\n \"flag_ethiopia\",\n \"et\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ethiopia\",\n \"ethiopian\"\n ],\n \"🇪🇺\": [\n \"flag_european_union\",\n \"european\",\n \"union\",\n \"flag\",\n \"banner\",\n \"eu\"\n ],\n \"🇫🇮\": [\n \"flag_finland\",\n \"fi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"finland\",\n \"finnish\"\n ],\n \"🇫🇯\": [\n \"flag_fiji\",\n \"fj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"fiji\",\n \"fijian\"\n ],\n \"🇫🇰\": [\n \"flag_falkland_islands\",\n \"falkland\",\n \"islands\",\n \"malvinas\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"falkland_islands\",\n \"falklander\",\n \"falklands\",\n \"island\",\n \"islas\"\n ],\n \"🇫🇲\": [\n \"flag_micronesia\",\n \"micronesia\",\n \"federated\",\n \"states\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"micronesian\"\n ],\n \"🇫🇴\": [\n \"flag_faroe_islands\",\n \"faroe\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"faroe_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇫🇷\": [\n \"flag_france\",\n \"banner\",\n \"flag\",\n \"nation\",\n \"france\",\n \"french\",\n \"country\",\n \"clipperton\",\n \"fr\",\n \"indicator\",\n \"island\",\n \"letters\",\n \"martin\",\n \"regional\",\n \"saint\",\n \"st.\",\n \"symbol\"\n ],\n \"🇬🇦\": [\n \"flag_gabon\",\n \"ga\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gabon\",\n \"gabonese\"\n ],\n \"🇬🇧\": [\n \"flag_united_kingdom\",\n \"united\",\n \"kingdom\",\n \"great\",\n \"britain\",\n \"northern\",\n \"ireland\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british\",\n \"UK\",\n \"english\",\n \"england\",\n \"union jack\",\n \"united_kingdom\",\n \"cornwall\",\n \"gb\",\n \"scotland\",\n \"wales\"\n ],\n \"🇬🇩\": [\n \"flag_grenada\",\n \"gd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"grenada\",\n \"grenadian\"\n ],\n \"🇬🇪\": [\n \"flag_georgia\",\n \"ge\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"georgia\",\n \"georgian\"\n ],\n \"🇬🇫\": [\n \"flag_french_guiana\",\n \"french\",\n \"guiana\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_guiana\",\n \"guinean\"\n ],\n \"🇬🇬\": [\n \"flag_guernsey\",\n \"gg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guernsey\"\n ],\n \"🇬🇭\": [\n \"flag_ghana\",\n \"gh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ghana\",\n \"ghanaian\"\n ],\n \"🇬🇮\": [\n \"flag_gibraltar\",\n \"gi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gibraltar\",\n \"gibraltarian\"\n ],\n \"🇬🇱\": [\n \"flag_greenland\",\n \"gl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greenland\",\n \"greenlandic\"\n ],\n \"🇬🇲\": [\n \"flag_gambia\",\n \"gm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gambia\",\n \"gambian flag\"\n ],\n \"🇬🇳\": [\n \"flag_guinea\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea\",\n \"guinean\"\n ],\n \"🇬🇵\": [\n \"flag_guadeloupe\",\n \"gp\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guadeloupe\",\n \"guadeloupean\"\n ],\n \"🇬🇶\": [\n \"flag_equatorial_guinea\",\n \"equatorial\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"equatorial_guinea\",\n \"equatoguinean\",\n \"guinean\"\n ],\n \"🇬🇷\": [\n \"flag_greece\",\n \"gr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greece\",\n \"greek\"\n ],\n \"🇬🇸\": [\n \"flag_south_georgia_south_sandwich_islands\",\n \"south\",\n \"georgia\",\n \"sandwich\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_georgia_south_sandwich_islands\",\n \"island\"\n ],\n \"🇬🇹\": [\n \"flag_guatemala\",\n \"gt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guatemala\",\n \"guatemalan\"\n ],\n \"🇬🇺\": [\n \"flag_guam\",\n \"gu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guam\",\n \"chamorro\",\n \"guamanian\"\n ],\n \"🇬🇼\": [\n \"flag_guinea_bissau\",\n \"gw\",\n \"bissau\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea_bissau\"\n ],\n \"🇬🇾\": [\n \"flag_guyana\",\n \"gy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guyana\",\n \"guyanese\"\n ],\n \"🇭🇰\": [\n \"flag_hong_kong_sar_china\",\n \"hong\",\n \"kong\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hong_kong_sar_china\"\n ],\n \"🇭🇲\": [\n \"flag_heard_mcdonald_islands\"\n ],\n \"🇭🇳\": [\n \"flag_honduras\",\n \"hn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"honduras\",\n \"honduran\"\n ],\n \"🇭🇷\": [\n \"flag_croatia\",\n \"hr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"croatia\",\n \"croatian\"\n ],\n \"🇭🇹\": [\n \"flag_haiti\",\n \"ht\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"haiti\",\n \"haitian\"\n ],\n \"🇭🇺\": [\n \"flag_hungary\",\n \"hu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hungary\",\n \"hungarian\"\n ],\n \"🇮🇨\": [\n \"flag_canary_islands\",\n \"canary\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canary_islands\",\n \"island\"\n ],\n \"🇮🇩\": [\n \"flag_indonesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indonesia\",\n \"indonesian\"\n ],\n \"🇮🇪\": [\n \"flag_ireland\",\n \"ie\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ireland\",\n \"irish flag\"\n ],\n \"🇮🇱\": [\n \"flag_israel\",\n \"il\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"israel\",\n \"israeli\"\n ],\n \"🇮🇲\": [\n \"flag_isle_of_man\",\n \"isle\",\n \"man\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"isle_of_man\",\n \"manx\"\n ],\n \"🇮🇳\": [\n \"flag_india\",\n \"in\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"india\",\n \"indian\"\n ],\n \"🇮🇴\": [\n \"flag_british_indian_ocean_territory\",\n \"british\",\n \"indian\",\n \"ocean\",\n \"territory\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_indian_ocean_territory\",\n \"chagos\",\n \"diego\",\n \"garcia\",\n \"island\"\n ],\n \"🇮🇶\": [\n \"flag_iraq\",\n \"iq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iraq\",\n \"iraqi\"\n ],\n \"🇮🇷\": [\n \"flag_iran\",\n \"iran\",\n \"islamic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iranian flag\"\n ],\n \"🇮🇸\": [\n \"flag_iceland\",\n \"is\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iceland\",\n \"icelandic\"\n ],\n \"🇮🇹\": [\n \"flag_italy\",\n \"italy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indicator\",\n \"italian\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇯🇪\": [\n \"flag_jersey\",\n \"je\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jersey\"\n ],\n \"🇯🇲\": [\n \"flag_jamaica\",\n \"jm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jamaica\",\n \"jamaican flag\"\n ],\n \"🇯🇴\": [\n \"flag_jordan\",\n \"jo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jordan\",\n \"jordanian\"\n ],\n \"🇯🇵\": [\n \"flag_japan\",\n \"japanese\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"japan\",\n \"jp\",\n \"ja\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇪\": [\n \"flag_kenya\",\n \"ke\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kenya\",\n \"kenyan\"\n ],\n \"🇰🇬\": [\n \"flag_kyrgyzstan\",\n \"kg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kyrgyzstan\",\n \"kyrgyzstani\"\n ],\n \"🇰🇭\": [\n \"flag_cambodia\",\n \"kh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cambodia\",\n \"cambodian\"\n ],\n \"🇰🇮\": [\n \"flag_kiribati\",\n \"ki\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kiribati\",\n \"i\"\n ],\n \"🇰🇲\": [\n \"flag_comoros\",\n \"km\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"comoros\",\n \"comoran\"\n ],\n \"🇰🇳\": [\n \"flag_st_kitts_nevis\",\n \"saint\",\n \"kitts\",\n \"nevis\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_kitts_nevis\",\n \"st.\"\n ],\n \"🇰🇵\": [\n \"flag_north_korea\",\n \"north\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"north_korea\",\n \"korean\"\n ],\n \"🇰🇷\": [\n \"flag_south_korea\",\n \"south\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"south_korea\",\n \"indicator\",\n \"korean\",\n \"kr\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇼\": [\n \"flag_kuwait\",\n \"kw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kuwait\",\n \"kuwaiti\"\n ],\n \"🇰🇾\": [\n \"flag_cayman_islands\",\n \"cayman\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cayman_islands\",\n \"caymanian\",\n \"island\"\n ],\n \"🇰🇿\": [\n \"flag_kazakhstan\",\n \"kz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kazakhstan\",\n \"kazakh\",\n \"kazakhstani\"\n ],\n \"🇱🇦\": [\n \"flag_laos\",\n \"lao\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"laos\",\n \"laotian\"\n ],\n \"🇱🇧\": [\n \"flag_lebanon\",\n \"lb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lebanon\",\n \"lebanese\"\n ],\n \"🇱🇨\": [\n \"flag_st_lucia\",\n \"saint\",\n \"lucia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_lucia\",\n \"st.\"\n ],\n \"🇱🇮\": [\n \"flag_liechtenstein\",\n \"li\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liechtenstein\",\n \"liechtensteiner\"\n ],\n \"🇱🇰\": [\n \"flag_sri_lanka\",\n \"sri\",\n \"lanka\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sri_lanka\",\n \"lankan\"\n ],\n \"🇱🇷\": [\n \"flag_liberia\",\n \"lr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liberia\",\n \"liberian\"\n ],\n \"🇱🇸\": [\n \"flag_lesotho\",\n \"ls\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lesotho\",\n \"basotho\"\n ],\n \"🇱🇹\": [\n \"flag_lithuania\",\n \"lt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lithuania\",\n \"lithuanian\"\n ],\n \"🇱🇺\": [\n \"flag_luxembourg\",\n \"lu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"luxembourg\",\n \"luxembourger\"\n ],\n \"🇱🇻\": [\n \"flag_latvia\",\n \"lv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"latvia\",\n \"latvian\"\n ],\n \"🇱🇾\": [\n \"flag_libya\",\n \"ly\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"libya\",\n \"libyan\"\n ],\n \"🇲🇦\": [\n \"flag_morocco\",\n \"ma\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"morocco\",\n \"moroccan\"\n ],\n \"🇲🇨\": [\n \"flag_monaco\",\n \"mc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"monaco\",\n \"monégasque\"\n ],\n \"🇲🇩\": [\n \"flag_moldova\",\n \"moldova\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"moldovan\"\n ],\n \"🇲🇪\": [\n \"flag_montenegro\",\n \"me\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montenegro\",\n \"montenegrin\"\n ],\n \"🇲🇫\": [\n \"flag_st_martin\",\n \"st.\"\n ],\n \"🇲🇬\": [\n \"flag_madagascar\",\n \"mg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"madagascar\",\n \"madagascan\"\n ],\n \"🇲🇭\": [\n \"flag_marshall_islands\",\n \"marshall\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"marshall_islands\",\n \"island\",\n \"marshallese\"\n ],\n \"🇲🇰\": [\n \"flag_north_macedonia\",\n \"macedonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"north_macedonia\",\n \"macedonian\"\n ],\n \"🇲🇱\": [\n \"flag_mali\",\n \"ml\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mali\",\n \"malian\"\n ],\n \"🇲🇲\": [\n \"flag_myanmar\",\n \"mm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"myanmar\",\n \"burma\",\n \"burmese\",\n \"for\",\n \"myanmarese flag\"\n ],\n \"🇲🇳\": [\n \"flag_mongolia\",\n \"mn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mongolia\",\n \"mongolian\"\n ],\n \"🇲🇴\": [\n \"flag_macao_sar_china\",\n \"macao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"macao_sar_china\",\n \"macanese flag\",\n \"macau\"\n ],\n \"🇲🇵\": [\n \"flag_northern_mariana_islands\",\n \"northern\",\n \"mariana\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"northern_mariana_islands\",\n \"island\",\n \"micronesian\",\n \"north\"\n ],\n \"🇲🇶\": [\n \"flag_martinique\",\n \"mq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"martinique\",\n \"martiniquais flag\",\n \"of martinique\",\n \"snake\"\n ],\n \"🇲🇷\": [\n \"flag_mauritania\",\n \"mr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritania\",\n \"mauritanian\"\n ],\n \"🇲🇸\": [\n \"flag_montserrat\",\n \"ms\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montserrat\",\n \"montserratian\"\n ],\n \"🇲🇹\": [\n \"flag_malta\",\n \"mt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malta\",\n \"maltese\"\n ],\n \"🇲🇺\": [\n \"flag_mauritius\",\n \"mu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritius\",\n \"mauritian\"\n ],\n \"🇲🇻\": [\n \"flag_maldives\",\n \"mv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"maldives\",\n \"maldivian\"\n ],\n \"🇲🇼\": [\n \"flag_malawi\",\n \"mw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malawi\",\n \"malawian flag\"\n ],\n \"🇲🇽\": [\n \"flag_mexico\",\n \"mx\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mexico\",\n \"mexican\"\n ],\n \"🇲🇾\": [\n \"flag_malaysia\",\n \"my\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malaysia\",\n \"malaysian\"\n ],\n \"🇲🇿\": [\n \"flag_mozambique\",\n \"mz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mozambique\",\n \"mozambican\"\n ],\n \"🇳🇦\": [\n \"flag_namibia\",\n \"na\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"namibia\",\n \"namibian\"\n ],\n \"🇳🇨\": [\n \"flag_new_caledonia\",\n \"new\",\n \"caledonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_caledonia\",\n \"caledonian\"\n ],\n \"🇳🇪\": [\n \"flag_niger\",\n \"ne\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niger\",\n \"nigerien flag\"\n ],\n \"🇳🇫\": [\n \"flag_norfolk_island\",\n \"norfolk\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norfolk_island\"\n ],\n \"🇳🇬\": [\n \"flag_nigeria\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nigeria\",\n \"nigerian\"\n ],\n \"🇳🇮\": [\n \"flag_nicaragua\",\n \"ni\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nicaragua\",\n \"nicaraguan\"\n ],\n \"🇳🇱\": [\n \"flag_netherlands\",\n \"nl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"netherlands\",\n \"dutch\"\n ],\n \"🇳🇴\": [\n \"flag_norway\",\n \"no\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norway\",\n \"bouvet\",\n \"jan\",\n \"mayen\",\n \"norwegian\",\n \"svalbard\"\n ],\n \"🇳🇵\": [\n \"flag_nepal\",\n \"np\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nepal\",\n \"nepalese\"\n ],\n \"🇳🇷\": [\n \"flag_nauru\",\n \"nr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nauru\",\n \"nauruan\"\n ],\n \"🇳🇺\": [\n \"flag_niue\",\n \"nu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niue\",\n \"niuean\"\n ],\n \"🇳🇿\": [\n \"flag_new_zealand\",\n \"new\",\n \"zealand\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_zealand\",\n \"kiwi\"\n ],\n \"🇴🇲\": [\n \"flag_oman\",\n \"om_symbol\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"oman\",\n \"omani\"\n ],\n \"🇵🇦\": [\n \"flag_panama\",\n \"pa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"panama\",\n \"panamanian\"\n ],\n \"🇵🇪\": [\n \"flag_peru\",\n \"pe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"peru\",\n \"peruvian\"\n ],\n \"🇵🇫\": [\n \"flag_french_polynesia\",\n \"french\",\n \"polynesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_polynesia\",\n \"polynesian\"\n ],\n \"🇵🇬\": [\n \"flag_papua_new_guinea\",\n \"papua\",\n \"new\",\n \"guinea\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"papua_new_guinea\",\n \"guinean\",\n \"png\"\n ],\n \"🇵🇭\": [\n \"flag_philippines\",\n \"ph\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"philippines\"\n ],\n \"🇵🇰\": [\n \"flag_pakistan\",\n \"pk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pakistan\",\n \"pakistani\"\n ],\n \"🇵🇱\": [\n \"flag_poland\",\n \"pl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"poland\",\n \"polish\"\n ],\n \"🇵🇲\": [\n \"flag_st_pierre_miquelon\",\n \"saint\",\n \"pierre\",\n \"miquelon\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_pierre_miquelon\",\n \"st.\"\n ],\n \"🇵🇳\": [\n \"flag_pitcairn_islands\",\n \"pitcairn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pitcairn_islands\",\n \"island\"\n ],\n \"🇵🇷\": [\n \"flag_puerto_rico\",\n \"puerto\",\n \"rico\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"puerto_rico\",\n \"rican\"\n ],\n \"🇵🇸\": [\n \"flag_palestinian_territories\",\n \"palestine\",\n \"palestinian\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palestinian_territories\"\n ],\n \"🇵🇹\": [\n \"flag_portugal\",\n \"pt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"portugal\",\n \"portugese\"\n ],\n \"🇵🇼\": [\n \"flag_palau\",\n \"pw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palau\",\n \"palauan\"\n ],\n \"🇵🇾\": [\n \"flag_paraguay\",\n \"py\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"paraguay\",\n \"paraguayan\"\n ],\n \"🇶🇦\": [\n \"flag_qatar\",\n \"qa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"qatar\",\n \"qatari\"\n ],\n \"🇷🇪\": [\n \"flag_reunion\",\n \"réunion\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"reunion\",\n \"réunionnais\"\n ],\n \"🇷🇴\": [\n \"flag_romania\",\n \"ro\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"romania\",\n \"romanian\"\n ],\n \"🇨🇶\": [\n \"flag_sark\",\n \"cq\",\n \"flag\",\n \"banner\"\n ],\n \"🇷🇸\": [\n \"flag_serbia\",\n \"rs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"serbia\",\n \"serbian flag\"\n ],\n \"🇷🇺\": [\n \"flag_russia\",\n \"russian\",\n \"federation\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"russia\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"ru\",\n \"symbol\"\n ],\n \"🇷🇼\": [\n \"flag_rwanda\",\n \"rw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"rwanda\",\n \"rwandan\"\n ],\n \"🇸🇦\": [\n \"flag_saudi_arabia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"saudi_arabia\",\n \"arabian flag\"\n ],\n \"🇸🇧\": [\n \"flag_solomon_islands\",\n \"solomon\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"solomon_islands\",\n \"island\",\n \"islander flag\"\n ],\n \"🇸🇨\": [\n \"flag_seychelles\",\n \"sc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"seychelles\",\n \"seychellois flag\"\n ],\n \"🇸🇩\": [\n \"flag_sudan\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sudan\",\n \"sudanese\"\n ],\n \"🇸🇪\": [\n \"flag_sweden\",\n \"se\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sweden\",\n \"swedish\"\n ],\n \"🇸🇬\": [\n \"flag_singapore\",\n \"sg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"singapore\",\n \"singaporean\"\n ],\n \"🇸🇭\": [\n \"flag_st_helena\",\n \"saint\",\n \"helena\",\n \"ascension\",\n \"tristan\",\n \"cunha\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_helena\",\n \"st.\"\n ],\n \"🇸🇮\": [\n \"flag_slovenia\",\n \"si\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovenia\",\n \"slovenian\"\n ],\n \"🇸🇯\": [\n \"flag_svalbard_jan_mayen\"\n ],\n \"🇸🇰\": [\n \"flag_slovakia\",\n \"sk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovakia\",\n \"slovakian\",\n \"slovak flag\"\n ],\n \"🇸🇱\": [\n \"flag_sierra_leone\",\n \"sierra\",\n \"leone\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sierra_leone\",\n \"leonean\"\n ],\n \"🇸🇲\": [\n \"flag_san_marino\",\n \"san\",\n \"marino\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"san_marino\",\n \"sammarinese\"\n ],\n \"🇸🇳\": [\n \"flag_senegal\",\n \"sn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"senegal\",\n \"sengalese\"\n ],\n \"🇸🇴\": [\n \"flag_somalia\",\n \"so\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"somalia\",\n \"somalian flag\"\n ],\n \"🇸🇷\": [\n \"flag_suriname\",\n \"sr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"suriname\",\n \"surinamer\"\n ],\n \"🇸🇸\": [\n \"flag_south_sudan\",\n \"south\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_sudan\",\n \"sudanese flag\"\n ],\n \"🇸🇹\": [\n \"flag_sao_tome_principe\",\n \"sao\",\n \"tome\",\n \"principe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sao_tome_principe\",\n \"príncipe\",\n \"são\",\n \"tomé\"\n ],\n \"🇸🇻\": [\n \"flag_el_salvador\",\n \"el\",\n \"salvador\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"el_salvador\",\n \"salvadoran\"\n ],\n \"🇸🇽\": [\n \"flag_sint_maarten\",\n \"sint\",\n \"maarten\",\n \"dutch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sint_maarten\"\n ],\n \"🇸🇾\": [\n \"flag_syria\",\n \"syrian\",\n \"arab\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"syria\"\n ],\n \"🇸🇿\": [\n \"flag_eswatini\",\n \"sz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eswatini\",\n \"swaziland\"\n ],\n \"🇹🇦\": [\n \"flag_tristan_da_cunha\"\n ],\n \"🇹🇨\": [\n \"flag_turks_caicos_islands\",\n \"turks\",\n \"caicos\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turks_caicos_islands\",\n \"island\"\n ],\n \"🇹🇩\": [\n \"flag_chad\",\n \"td\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chad\",\n \"chadian\"\n ],\n \"🇹🇫\": [\n \"flag_french_southern_territories\",\n \"french\",\n \"southern\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_southern_territories\",\n \"antarctic\",\n \"lands\"\n ],\n \"🇹🇬\": [\n \"flag_togo\",\n \"tg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"togo\",\n \"togolese\"\n ],\n \"🇹🇭\": [\n \"flag_thailand\",\n \"th\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"thailand\",\n \"thai\"\n ],\n \"🇹🇯\": [\n \"flag_tajikistan\",\n \"tj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tajikistan\",\n \"tajik\"\n ],\n \"🇹🇰\": [\n \"flag_tokelau\",\n \"tk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tokelau\",\n \"tokelauan\"\n ],\n \"🇹🇱\": [\n \"flag_timor_leste\",\n \"timor\",\n \"leste\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"timor_leste\",\n \"east\",\n \"leste flag\",\n \"timorese\"\n ],\n \"🇹🇲\": [\n \"flag_turkmenistan\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turkmenistan\",\n \"turkmen\"\n ],\n \"🇹🇳\": [\n \"flag_tunisia\",\n \"tn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tunisia\",\n \"tunisian\"\n ],\n \"🇹🇴\": [\n \"flag_tonga\",\n \"to\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tonga\",\n \"tongan flag\"\n ],\n \"🇹🇷\": [\n \"flag_turkey\",\n \"turkey\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tr\",\n \"turkish flag\",\n \"türkiye\"\n ],\n \"🇹🇹\": [\n \"flag_trinidad_tobago\",\n \"trinidad\",\n \"tobago\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"trinidad_tobago\"\n ],\n \"🇹🇻\": [\n \"flag_tuvalu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tuvalu\",\n \"tuvaluan\"\n ],\n \"🇹🇼\": [\n \"flag_taiwan\",\n \"tw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"taiwan\",\n \"china\",\n \"taiwanese\"\n ],\n \"🇹🇿\": [\n \"flag_tanzania\",\n \"tanzania\",\n \"united\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tanzanian\"\n ],\n \"🇺🇦\": [\n \"flag_ukraine\",\n \"ua\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ukraine\",\n \"ukrainian\"\n ],\n \"🇺🇬\": [\n \"flag_uganda\",\n \"ug\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uganda\",\n \"ugandan flag\"\n ],\n \"🇺🇲\": [\n \"flag_u_s_outlying_islands\",\n \"u.s.\",\n \"us\"\n ],\n \"🇺🇳\": [\n \"flag_united_nations\",\n \"un\",\n \"flag\",\n \"banner\"\n ],\n \"🇺🇸\": [\n \"flag_united_states\",\n \"united\",\n \"states\",\n \"america\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_states\",\n \"american\",\n \"indicator\",\n \"islands\",\n \"letters\",\n \"outlying\",\n \"regional\",\n \"symbol\",\n \"us\",\n \"usa\"\n ],\n \"🇺🇾\": [\n \"flag_uruguay\",\n \"uy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uruguay\",\n \"uruguayan\"\n ],\n \"🇺🇿\": [\n \"flag_uzbekistan\",\n \"uz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uzbekistan\",\n \"uzbek\",\n \"uzbekistani\"\n ],\n \"🇻🇦\": [\n \"flag_vatican_city\",\n \"vatican\",\n \"city\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vatican_city\",\n \"vanticanien\"\n ],\n \"🇻🇨\": [\n \"flag_st_vincent_grenadines\",\n \"saint\",\n \"vincent\",\n \"grenadines\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_vincent_grenadines\",\n \"st.\"\n ],\n \"🇻🇪\": [\n \"flag_venezuela\",\n \"ve\",\n \"bolivarian\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"venezuela\",\n \"venezuelan\"\n ],\n \"🇻🇬\": [\n \"flag_british_virgin_islands\",\n \"british\",\n \"virgin\",\n \"islands\",\n \"bvi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_virgin_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇻🇮\": [\n \"flag_u_s_virgin_islands\",\n \"virgin\",\n \"islands\",\n \"us\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"u_s_virgin_islands\",\n \"america\",\n \"island\",\n \"islander\",\n \"states\",\n \"u.s.\",\n \"united\",\n \"usa\"\n ],\n \"🇻🇳\": [\n \"flag_vietnam\",\n \"viet\",\n \"nam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vietnam\",\n \"vietnamese\"\n ],\n \"🇻🇺\": [\n \"flag_vanuatu\",\n \"vu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vanuatu\",\n \"ni\",\n \"vanuatu flag\"\n ],\n \"🇼🇫\": [\n \"flag_wallis_futuna\",\n \"wallis\",\n \"futuna\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"wallis_futuna\"\n ],\n \"🇼🇸\": [\n \"flag_samoa\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"samoa\",\n \"samoan flag\"\n ],\n \"🇽🇰\": [\n \"flag_kosovo\",\n \"xk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kosovo\",\n \"kosovar\"\n ],\n \"🇾🇪\": [\n \"flag_yemen\",\n \"ye\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"yemen\",\n \"yemeni flag\"\n ],\n \"🇾🇹\": [\n \"flag_mayotte\",\n \"yt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mayotte\"\n ],\n \"🇿🇦\": [\n \"flag_south_africa\",\n \"south\",\n \"africa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_africa\",\n \"african flag\"\n ],\n \"🇿🇲\": [\n \"flag_zambia\",\n \"zm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zambia\",\n \"zambian\"\n ],\n \"🇿🇼\": [\n \"flag_zimbabwe\",\n \"zw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zimbabwe\",\n \"zim\",\n \"zimbabwean flag\"\n ],\n \"🏴\": [\n \"flag_england\",\n \"flag\",\n \"english\",\n \"cross\",\n \"george's\",\n \"st\"\n ],\n \"🏴\": [\n \"flag_scotland\",\n \"flag\",\n \"scottish\",\n \"andrew's\",\n \"cross\",\n \"saltire\",\n \"st\"\n ],\n \"🏴\": [\n \"flag_wales\",\n \"flag\",\n \"welsh\",\n \"baner\",\n \"cymru\",\n \"ddraig\",\n \"dragon\",\n \"goch\",\n \"red\",\n \"y\"\n ],\n \"🥲\": [\n \"smiling face with tear\",\n \"sad\",\n \"cry\",\n \"pretend\",\n \"grateful\",\n \"happy\",\n \"proud\",\n \"relieved\",\n \"smile\",\n \"touched\"\n ],\n \"🥸\": [\n \"disguised face\",\n \"pretent\",\n \"brows\",\n \"glasses\",\n \"moustache\",\n \"disguise\",\n \"incognito\",\n \"nose\"\n ],\n \"🤌\": [\n \"pinched fingers\",\n \"size\",\n \"tiny\",\n \"small\",\n \"che\",\n \"finger\",\n \"gesture\",\n \"hand\",\n \"interrogation\",\n \"ma\",\n \"purse\",\n \"sarcastic\",\n \"vuoi\"\n ],\n \"🫀\": [\n \"anatomical heart\",\n \"health\",\n \"heartbeat\",\n \"cardiology\",\n \"organ\",\n \"pulse\"\n ],\n \"🫁\": [\n \"lungs\",\n \"breathe\",\n \"breath\",\n \"exhalation\",\n \"inhalation\",\n \"organ\",\n \"respiration\"\n ],\n \"🥷\": [\n \"ninja\",\n \"ninjutsu\",\n \"skills\",\n \"japanese\",\n \"fighter\",\n \"hidden\",\n \"stealth\"\n ],\n \"🤵♂️\": [\n \"man in tuxedo\",\n \"formal\",\n \"fashion\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\",\n \"wedding\"\n ],\n \"🤵♀️\": [\n \"woman in tuxedo\",\n \"formal\",\n \"fashion\",\n \"female\",\n \"wedding\",\n \"women\"\n ],\n \"👰♂️\": [\n \"man with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"male\",\n \"men\"\n ],\n \"👰♀️\": [\n \"woman with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"female\",\n \"women\"\n ],\n \"👩🍼\": [\n \"woman feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"nursing\",\n \"women\"\n ],\n \"👨🍼\": [\n \"man feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"male\",\n \"men\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑🍼\": [\n \"person feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑🎄\": [\n \"mx claus\",\n \"christmas\",\n \"activity\",\n \"celebration\",\n \"mx.\",\n \"santa\"\n ],\n \"🫂\": [\n \"people hugging\",\n \"care\",\n \"goodbye\",\n \"hello\",\n \"hug\",\n \"thanks\"\n ],\n \"🐈⬛\": [\n \"black cat\",\n \"superstition\",\n \"luck\",\n \"halloween\",\n \"pet\",\n \"unlucky\"\n ],\n \"🦬\": [\n \"bison\",\n \"ox\",\n \"buffalo\",\n \"herd\",\n \"wisent\"\n ],\n \"🦣\": [\n \"mammoth\",\n \"elephant\",\n \"tusks\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"tusk\",\n \"woolly\"\n ],\n \"🦫\": [\n \"beaver\",\n \"animal\",\n \"rodent\",\n \"dam\"\n ],\n \"🐻❄️\": [\n \"polar bear\",\n \"animal\",\n \"arctic\",\n \"face\",\n \"white\"\n ],\n \"🦤\": [\n \"dodo\",\n \"animal\",\n \"bird\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"mauritius\",\n \"obsolete\"\n ],\n \"🪶\": [\n \"feather\",\n \"bird\",\n \"fly\",\n \"flight\",\n \"light\",\n \"plumage\"\n ],\n \"🦭\": [\n \"seal\",\n \"animal\",\n \"creature\",\n \"sea\",\n \"lion\"\n ],\n \"🪲\": [\n \"beetle\",\n \"insect\",\n \"bug\"\n ],\n \"🪳\": [\n \"cockroach\",\n \"insect\",\n \"pests\",\n \"pest\",\n \"roach\"\n ],\n \"🪰\": [\n \"fly\",\n \"insect\",\n \"disease\",\n \"maggot\",\n \"pest\",\n \"rotting\"\n ],\n \"🪱\": [\n \"worm\",\n \"animal\",\n \"annelid\",\n \"earthworm\",\n \"parasite\"\n ],\n \"🪴\": [\n \"potted plant\",\n \"greenery\",\n \"house\",\n \"boring\",\n \"grow\",\n \"houseplant\",\n \"nurturing\",\n \"useless\"\n ],\n \"🫐\": [\n \"blueberries\",\n \"fruit\",\n \"berry\",\n \"bilberry\",\n \"blue\",\n \"blueberry\"\n ],\n \"🫒\": [\n \"olive\",\n \"fruit\",\n \"food\",\n \"olives\"\n ],\n \"🫑\": [\n \"bell pepper\",\n \"fruit\",\n \"plant\",\n \"capsicum\",\n \"vegetable\"\n ],\n \"🫓\": [\n \"flatbread\",\n \"flour\",\n \"food\",\n \"bakery\",\n \"arepa\",\n \"bread\",\n \"flat\",\n \"lavash\",\n \"naan\",\n \"pita\"\n ],\n \"🫔\": [\n \"tamale\",\n \"food\",\n \"masa\",\n \"mexican\",\n \"tamal\",\n \"wrapped\"\n ],\n \"🫕\": [\n \"fondue\",\n \"cheese\",\n \"pot\",\n \"food\",\n \"chocolate\",\n \"melted\",\n \"swiss\"\n ],\n \"🫖\": [\n \"teapot\",\n \"drink\",\n \"hot\",\n \"kettle\",\n \"pot\",\n \"tea\"\n ],\n \"🧋\": [\n \"bubble tea\",\n \"taiwan\",\n \"boba\",\n \"milk tea\",\n \"straw\",\n \"momi\",\n \"pearl\",\n \"tapioca\"\n ],\n \"🪨\": [\n \"rock\",\n \"stone\",\n \"boulder\",\n \"construction\",\n \"heavy\",\n \"solid\"\n ],\n \"🪵\": [\n \"wood\",\n \"nature\",\n \"timber\",\n \"trunk\",\n \"construction\",\n \"log\",\n \"lumber\"\n ],\n \"🛖\": [\n \"hut\",\n \"house\",\n \"structure\",\n \"roundhouse\",\n \"yurt\"\n ],\n \"🛻\": [\n \"pickup truck\",\n \"car\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🛼\": [\n \"roller skate\",\n \"footwear\",\n \"sports\",\n \"derby\",\n \"inline\"\n ],\n \"🪄\": [\n \"magic wand\",\n \"supernature\",\n \"power\",\n \"witch\",\n \"wizard\"\n ],\n \"🪅\": [\n \"pinata\",\n \"mexico\",\n \"candy\",\n \"celebration\",\n \"party\",\n \"piñata\"\n ],\n \"🪆\": [\n \"nesting dolls\",\n \"matryoshka\",\n \"toy\",\n \"doll\",\n \"russia\",\n \"russian\"\n ],\n \"🪡\": [\n \"sewing needle\",\n \"stitches\",\n \"embroidery\",\n \"sutures\",\n \"tailoring\"\n ],\n \"🪢\": [\n \"knot\",\n \"rope\",\n \"scout\",\n \"tangled\",\n \"tie\",\n \"twine\",\n \"twist\"\n ],\n \"🩴\": [\n \"thong sandal\",\n \"footwear\",\n \"summer\",\n \"beach\",\n \"flip\",\n \"flops\",\n \"jandals\",\n \"sandals\",\n \"thongs\",\n \"zōri\"\n ],\n \"🪖\": [\n \"military helmet\",\n \"army\",\n \"protection\",\n \"soldier\",\n \"warrior\"\n ],\n \"🪗\": [\n \"accordion\",\n \"music\",\n \"accordian\",\n \"box\",\n \"concertina\",\n \"squeeze\"\n ],\n \"🪘\": [\n \"long drum\",\n \"music\",\n \"beat\",\n \"conga\",\n \"djembe\",\n \"rhythm\"\n ],\n \"🪙\": [\n \"coin\",\n \"money\",\n \"currency\",\n \"gold\",\n \"metal\",\n \"silver\",\n \"treasure\"\n ],\n \"🪃\": [\n \"boomerang\",\n \"weapon\",\n \"australia\",\n \"rebound\",\n \"repercussion\"\n ],\n \"🪚\": [\n \"carpentry saw\",\n \"cut\",\n \"chop\",\n \"carpenter\",\n \"hand\",\n \"lumber\",\n \"tool\"\n ],\n \"🪛\": [\n \"screwdriver\",\n \"tools\",\n \"screw\",\n \"tool\"\n ],\n \"🪝\": [\n \"hook\",\n \"tools\",\n \"catch\",\n \"crook\",\n \"curve\",\n \"ensnare\",\n \"fishing\",\n \"point\",\n \"selling\",\n \"tool\"\n ],\n \"🪜\": [\n \"ladder\",\n \"tools\",\n \"climb\",\n \"rung\",\n \"step\",\n \"tool\"\n ],\n \"🛗\": [\n \"elevator\",\n \"lift\",\n \"accessibility\",\n \"hoist\"\n ],\n \"🪞\": [\n \"mirror\",\n \"reflection\",\n \"reflector\",\n \"speculum\"\n ],\n \"🪟\": [\n \"window\",\n \"scenery\",\n \"air\",\n \"frame\",\n \"fresh\",\n \"glass\",\n \"opening\",\n \"transparent\",\n \"view\"\n ],\n \"🪠\": [\n \"plunger\",\n \"toilet\",\n \"cup\",\n \"force\",\n \"plumber\",\n \"suction\"\n ],\n \"🪤\": [\n \"mouse trap\",\n \"cheese\",\n \"bait\",\n \"mousetrap\",\n \"rodent\",\n \"snare\"\n ],\n \"🪣\": [\n \"bucket\",\n \"water\",\n \"container\",\n \"cask\",\n \"pail\",\n \"vat\"\n ],\n \"🪥\": [\n \"toothbrush\",\n \"hygiene\",\n \"dental\",\n \"bathroom\",\n \"brush\",\n \"clean\",\n \"teeth\"\n ],\n \"🪦\": [\n \"headstone\",\n \"death\",\n \"rip\",\n \"grave\",\n \"cemetery\",\n \"graveyard\",\n \"halloween\",\n \"tombstone\"\n ],\n \"🪧\": [\n \"placard\",\n \"announcement\",\n \"demonstration\",\n \"lawn\",\n \"picket\",\n \"post\",\n \"protest\",\n \"sign\"\n ],\n \"⚧️\": [\n \"transgender symbol\",\n \"transgender\",\n \"lgbtq\",\n \"female\",\n \"lgbt\",\n \"male\",\n \"pride\",\n \"sign\",\n \"stroke\"\n ],\n \"🏳️⚧️\": [\n \"transgender flag\",\n \"transgender\",\n \"flag\",\n \"pride\",\n \"lgbtq\",\n \"blue\",\n \"lgbt\",\n \"light\",\n \"pink\",\n \"trans\",\n \"white\"\n ],\n \"😶🌫️\": [\n \"face in clouds\",\n \"shower\",\n \"steam\",\n \"dream\",\n \"absentminded\",\n \"brain\",\n \"fog\",\n \"forgetful\",\n \"haze\",\n \"head\",\n \"impractical\",\n \"unrealistic\"\n ],\n \"😮💨\": [\n \"face exhaling\",\n \"relieve\",\n \"relief\",\n \"tired\",\n \"sigh\",\n \"exhale\",\n \"gasp\",\n \"groan\",\n \"whisper\",\n \"whistle\"\n ],\n \"😵💫\": [\n \"face with spiral eyes\",\n \"sick\",\n \"ill\",\n \"confused\",\n \"nauseous\",\n \"nausea\",\n \"dizzy\",\n \"hypnotized\",\n \"trouble\",\n \"whoa\"\n ],\n \"❤️🔥\": [\n \"heart on fire\",\n \"passionate\",\n \"enthusiastic\",\n \"burn\",\n \"love\",\n \"lust\",\n \"sacred\"\n ],\n \"❤️🩹\": [\n \"mending heart\",\n \"broken heart\",\n \"bandage\",\n \"wounded\",\n \"bandaged\",\n \"healing\",\n \"healthier\",\n \"improving\",\n \"recovering\",\n \"recuperating\",\n \"unbroken\",\n \"well\"\n ],\n \"🧔♂️\": [\n \"man beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"male\",\n \"men\"\n ],\n \"🧔♀️\": [\n \"woman beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"female\",\n \"women\"\n ],\n \"🫠\": [\n \"melting face\",\n \"hot\",\n \"heat\",\n \"disappear\",\n \"dissolve\",\n \"dread\",\n \"liquid\",\n \"melt\",\n \"sarcasm\"\n ],\n \"🫢\": [\n \"face with open eyes and hand over mouth\",\n \"silence\",\n \"secret\",\n \"shock\",\n \"surprise\",\n \"amazement\",\n \"awe\",\n \"disbelief\",\n \"embarrass\",\n \"gasp\",\n \"scared\"\n ],\n \"🫣\": [\n \"face with peeking eye\",\n \"scared\",\n \"frightening\",\n \"embarrassing\",\n \"shy\",\n \"captivated\",\n \"peep\",\n \"stare\"\n ],\n \"🫡\": [\n \"saluting face\",\n \"respect\",\n \"salute\",\n \"ok\",\n \"sunny\",\n \"troops\",\n \"yes\"\n ],\n \"🫥\": [\n \"dotted line face\",\n \"invisible\",\n \"lonely\",\n \"isolation\",\n \"depression\",\n \"depressed\",\n \"disappear\",\n \"hide\",\n \"introvert\"\n ],\n \"🫤\": [\n \"face with diagonal mouth\",\n \"skeptic\",\n \"confuse\",\n \"frustrated\",\n \"indifferent\",\n \"confused\",\n \"disappointed\",\n \"meh\",\n \"skeptical\",\n \"unsure\"\n ],\n \"🥹\": [\n \"face holding back tears\",\n \"touched\",\n \"gratitude\",\n \"cry\",\n \"angry\",\n \"proud\",\n \"resist\",\n \"sad\"\n ],\n \"🫱\": [\n \"rightwards hand\",\n \"palm\",\n \"offer\",\n \"right\",\n \"rightward\"\n ],\n \"🫲\": [\n \"leftwards hand\",\n \"palm\",\n \"offer\",\n \"left\",\n \"leftward\"\n ],\n \"🫳\": [\n \"palm down hand\",\n \"palm\",\n \"drop\",\n \"dismiss\",\n \"shoo\"\n ],\n \"🫴\": [\n \"palm up hand\",\n \"lift\",\n \"offer\",\n \"demand\",\n \"beckon\",\n \"catch\",\n \"come\"\n ],\n \"🫰\": [\n \"hand with index finger and thumb crossed\",\n \"heart\",\n \"love\",\n \"money\",\n \"expensive\",\n \"snap\"\n ],\n \"🫵\": [\n \"index pointing at the viewer\",\n \"you\",\n \"recruit\",\n \"point\"\n ],\n \"🫶\": [\n \"heart hands\",\n \"love\",\n \"appreciation\",\n \"support\"\n ],\n \"🫦\": [\n \"biting lip\",\n \"flirt\",\n \"sexy\",\n \"pain\",\n \"worry\",\n \"anxious\",\n \"fear\",\n \"flirting\",\n \"nervous\",\n \"uncomfortable\",\n \"worried\"\n ],\n \"🫅\": [\n \"person with crown\",\n \"royalty\",\n \"power\",\n \"monarch\",\n \"noble\",\n \"regal\"\n ],\n \"🫃\": [\n \"pregnant man\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🫄\": [\n \"pregnant person\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🧌\": [\n \"troll\",\n \"mystical\",\n \"monster\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"shrek\"\n ],\n \"🪸\": [\n \"coral\",\n \"ocean\",\n \"sea\",\n \"reef\"\n ],\n \"🪷\": [\n \"lotus\",\n \"flower\",\n \"calm\",\n \"meditation\",\n \"buddhism\",\n \"hinduism\",\n \"india\",\n \"purity\",\n \"vietnam\"\n ],\n \"🪹\": [\n \"empty nest\",\n \"bird\",\n \"nesting\"\n ],\n \"🪺\": [\n \"nest with eggs\",\n \"bird\",\n \"nesting\"\n ],\n \"🫘\": [\n \"beans\",\n \"food\",\n \"kidney\",\n \"legume\"\n ],\n \"🫗\": [\n \"pouring liquid\",\n \"cup\",\n \"water\",\n \"drink\",\n \"empty\",\n \"glass\",\n \"spill\"\n ],\n \"🫙\": [\n \"jar\",\n \"container\",\n \"sauce\",\n \"condiment\",\n \"empty\",\n \"store\"\n ],\n \"🛝\": [\n \"playground slide\",\n \"fun\",\n \"park\",\n \"amusement\",\n \"play\"\n ],\n \"🛞\": [\n \"wheel\",\n \"car\",\n \"transport\",\n \"circle\",\n \"tire\",\n \"turn\"\n ],\n \"🛟\": [\n \"ring buoy\",\n \"life saver\",\n \"life preserver\",\n \"float\",\n \"rescue\",\n \"safety\"\n ],\n \"🪬\": [\n \"hamsa\",\n \"religion\",\n \"protection\",\n \"amulet\",\n \"fatima\",\n \"hand\",\n \"mary\",\n \"miriam\"\n ],\n \"🪩\": [\n \"mirror ball\",\n \"disco\",\n \"dance\",\n \"party\",\n \"glitter\"\n ],\n \"🪫\": [\n \"low battery\",\n \"drained\",\n \"dead\",\n \"electronic\",\n \"energy\",\n \"no\",\n \"red\"\n ],\n \"🩼\": [\n \"crutch\",\n \"accessibility\",\n \"assist\",\n \"aid\",\n \"cane\",\n \"disability\",\n \"hurt\",\n \"mobility\",\n \"stick\"\n ],\n \"🩻\": [\n \"x-ray\",\n \"skeleton\",\n \"medicine\",\n \"bones\",\n \"doctor\",\n \"medical\",\n \"ray\",\n \"x\"\n ],\n \"🫧\": [\n \"bubbles\",\n \"soap\",\n \"fun\",\n \"carbonation\",\n \"sparkling\",\n \"burp\",\n \"clean\",\n \"underwater\"\n ],\n \"🪪\": [\n \"identification card\",\n \"document\",\n \"credentials\",\n \"id\",\n \"license\",\n \"security\"\n ],\n \"🟰\": [\n \"heavy equals sign\",\n \"math\",\n \"equality\"\n ],\n \"🫨\": [\n \"shaking face\",\n \"dizzy\",\n \"shock\",\n \"blurry\",\n \"earthquake\"\n ],\n \"🩷\": [\n \"pink heart\",\n \"valentines\"\n ],\n \"🩵\": [\n \"light blue heart\",\n \"ice\",\n \"baby blue\"\n ],\n \"🩶\": [\n \"grey heart\",\n \"silver\",\n \"monochrome\"\n ],\n \"🫷\": [\n \"leftwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫸\": [\n \"rightwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫎\": [\n \"moose\",\n \"canada\",\n \"sweden\",\n \"sven\",\n \"cool\"\n ],\n \"🫏\": [\n \"donkey\",\n \"eeyore\",\n \"mule\"\n ],\n \"🪽\": [\n \"wing\",\n \"angel\",\n \"birds\",\n \"flying\",\n \"fly\"\n ],\n \"🐦⬛\": [\n \"black bird\",\n \"crow\"\n ],\n \"🪿\": [\n \"goose\",\n \"silly\",\n \"jemima\",\n \"goosebumps\",\n \"honk\"\n ],\n \"🪼\": [\n \"jellyfish\",\n \"sting\",\n \"tentacles\"\n ],\n \"🪻\": [\n \"hyacinth\",\n \"flower\",\n \"lavender\"\n ],\n \"🫚\": [\n \"ginger root\",\n \"spice\",\n \"yellow\",\n \"cooking\",\n \"gingerbread\"\n ],\n \"🫛\": [\n \"pea pod\",\n \"cozy\",\n \"green\"\n ],\n \"🪭\": [\n \"folding hand fan\",\n \"flamenco\",\n \"hot\",\n \"sensu\"\n ],\n \"🪮\": [\n \"hair pick\",\n \"afro\",\n \"comb\"\n ],\n \"🪇\": [\n \"maracas\",\n \"music\",\n \"instrument\",\n \"percussion\",\n \"shaker\"\n ],\n \"🪈\": [\n \"flute\",\n \"bamboo\",\n \"music\",\n \"instrument\",\n \"pied piper\",\n \"recorder\"\n ],\n \"🪯\": [\n \"khanda\",\n \"Sikhism\",\n \"religion\"\n ],\n \"🛜\": [\n \"wireless\",\n \"wifi\",\n \"internet\",\n \"contactless\",\n \"signal\"\n ],\n \"🙂↔️\": [\n \"head shaking horizontally\",\n \"disapprove\",\n \"indiffernt\",\n \"left\"\n ],\n \"🙂↕️\": [\n \"head shaking vertically\",\n \"down\",\n \"nod\"\n ],\n \"🚶➡️\": [\n \"person walking facing right\",\n \"peerson\",\n \"exercise\"\n ],\n \"🚶♀️➡️\": [\n \"woman walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🚶♂️➡️\": [\n \"man walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🧎➡️\": [\n \"person kneeling facing right\",\n \"pray\"\n ],\n \"🧎♀️➡️\": [\n \"woman kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧎♂️➡️\": [\n \"man kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧑🦯➡️\": [\n \"person with white cane facing right\",\n \"walk\",\n \"walk\",\n \"visually impaired\",\n \"blind\"\n ],\n \"👨🦯➡️\": [\n \"man with white cane facing right\",\n \"visually impaired\",\n \"blind\",\n \"walk\",\n \"stick\"\n ],\n \"👩🦯➡️\": [\n \"woman with white cane facing right\",\n \"stick\",\n \"visually impaired\",\n \"blind\"\n ],\n \"🧑🦼➡️\": [\n \"person in motorized wheelchair facing right\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨🦼➡️\": [\n \"man in motorized wheelchair facing right\",\n \"disability\",\n \"accessibility\",\n \"mobility\"\n ],\n \"👩🦼➡️\": [\n \"woman in motorized wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"🧑🦽➡️\": [\n \"person in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨🦽➡️\": [\n \"man in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👩🦽➡️\": [\n \"woman in manual wheelchair facing right\",\n \"disability\",\n \"mobility\",\n \"accessibility\"\n ],\n \"🏃➡️\": [\n \"person running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃♀️➡️\": [\n \"woman running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃♂️➡️\": [\n \"man running facing right\",\n \"jog\",\n \"exercise\"\n ],\n \"🧑🧑🧒\": [\n \"family adult, adult, child\",\n \"kid\",\n \"parents\"\n ],\n \"🧑🧑🧒🧒\": [\n \"family adult, adult, child, child\",\n \"children\",\n \"parents\"\n ],\n \"🧑🧒\": [\n \"family adult, child\",\n \"parent\",\n \"kid\"\n ],\n \"🧑🧒🧒\": [\n \"family adult, child, child\",\n \"parent\",\n \"children\"\n ],\n \"🐦🔥\": [\n \"phoenix\",\n \"immortal\",\n \"bird\",\n \"mythtical\",\n \"reborn\"\n ],\n \"🍋🟩\": [\n \"lime\",\n \"fruit\",\n \"acidic\",\n \"citric\"\n ],\n \"🍄🟫\": [\n \"brown mushroom\",\n \"toadstool\",\n \"fungus\"\n ],\n \"⛓️💥\": [\n \"broken chain\",\n \"constraint\",\n \"break\"\n ],\n \"\": [\n \"face with bags under eyes\",\n \"tired\",\n \"sleepy\",\n \"exhausted\"\n ],\n \"\": [\n \"fingerprint\"\n ],\n \"\": [\n \"leafless tree\"\n ],\n \"\": [\n \"root vegetable\",\n \"radish\"\n ],\n \"\": [\n \"harp\",\n \"music\",\n \"instrument\"\n ],\n \"\": [\n \"shovel\",\n \"tool\",\n \"dig\"\n ],\n \"\": [\n \"splatter\"\n ]\n}\n","/**\n * marked v17.0.1 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function Z(u){T=u}var C={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var me=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Te=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,N=/(?:[*+-]|\\d{1,9}[.)])/,re=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,se=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Oe=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),Q=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,ye=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,N).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",j=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",j).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ie=k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ie).getRegex(),U={blockquote:$e,code:be,def:ye,fences:Re,heading:Te,hr:I,html:Se,lheading:se,list:Pe,newline:xe,paragraph:ie,table:C,text:we},te=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...U,lheading:Oe,table:te,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",te).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...U,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",j).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:C,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",se).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,oe=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,K=/[\\s\\p{P}\\p{S}]/u,ae=/[^\\s\\p{P}\\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,K).getRegex(),le=/(?!~)[\\p{P}\\p{S}]/u,Ie=/(?!~)[\\s\\p{P}\\p{S}]/u,Ee=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=k(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",me?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=k(ue,\"u\").replace(/punct/g,D).getRegex(),ve=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=k(pe,\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),He=k(pe,\"gu\").replace(/notPunctSpace/g,Ee).replace(/punctSpace/g,Ie).replace(/punct/g,le).getRegex(),Ze=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),Ge=k(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=k(j).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=k(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ue=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),ne=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,W={_backpedal:C,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:oe,code:ze,del:C,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ue,tag:Fe,text:Ae,url:C},Ke={...W,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},G={...W,emStrongRDelimAst:He,emStrongLDelim:ve,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",ne).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",ne).getRegex()},We={...G,br:k(oe).replace(\"{2,}\",\"*\").getRegex(),text:k(G.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},E={normal:U,gfm:_e,pedantic:Le},M={normal:W,gfm:G,breaks:We,pedantic:Ke};var Xe={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},ke=u=>Xe[u];function w(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function X(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function J(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Je(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,O=>\" \".repeat(3*O.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let O=this.rules.other.nextBulletRegex(f),V=this.rules.other.hrRegex(f),Y=this.rules.other.fencesBeginRegex(f),ee=this.rules.other.headingBeginRegex(f),fe=this.rules.other.htmlBeginRegex(f);for(;e;){let H=e.split(`\n`,1)[0],A;if(h=H,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),Y.test(h)||ee.test(h)||fe.test(h)||O.test(h)||V.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||Y.test(g)||ee.test(g)||V.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),p+=H+`\n`,e=e.substring(H.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(g=>g.type===\"space\"),c=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=J(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(J(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),ge(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return ge(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:E.normal,inline:M.normal};this.options.pedantic?(t.block=E.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=E.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:E,inline:M}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(p=Math.min(p,g))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=X(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=X(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){let t=\"\";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(s.type)){t+=a||\"\";continue}}let i=r;switch(i.type){case\"space\":{t+=this.renderer.space(i);break}case\"hr\":{t+=this.renderer.hr(i);break}case\"heading\":{t+=this.renderer.heading(i);break}case\"code\":{t+=this.renderer.code(i);break}case\"table\":{t+=this.renderer.table(i);break}case\"blockquote\":{t+=this.renderer.blockquote(i);break}case\"list\":{t+=this.renderer.list(i);break}case\"checkbox\":{t+=this.renderer.checkbox(i);break}case\"html\":{t+=this.renderer.html(i);break}case\"def\":{t+=this.renderer.def(i);break}case\"paragraph\":{t+=this.renderer.paragraph(i);break}case\"text\":{t+=this.renderer.text(i);break}default:{let s='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"checkbox\":{n+=t.checkbox(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];S.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,p);return l.call(i,g)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,p);return g===!1&&(g=await l.apply(i,p)),g})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(u,e){return _.parse(u,e)}d.options=d.setOptions=function(u){return _.setOptions(u),d.defaults=_.defaults,Z(d.defaults),d};d.getDefaults=L;d.defaults=T;d.use=function(...u){return _.use(...u),d.defaults=_.defaults,Z(d.defaults),d};d.walkTokens=function(u,e){return _.walkTokens(u,e)};d.parseInline=_.parseInline;d.Parser=b;d.parser=b.parse;d.Renderer=P;d.TextRenderer=$;d.Lexer=x;d.lexer=x.lex;d.Tokenizer=y;d.Hooks=S;d.parse=d;var Dt=d.options,Ht=d.setOptions,Zt=d.use,Gt=d.walkTokens,Nt=d.parseInline,Qt=d,Ft=b.parse,jt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,jt as lexer,d as marked,Dt as options,Qt as parse,Nt as parseInline,Ft as parser,Ht as setOptions,Zt as use,Gt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","import DOMPurify from \"dompurify\";\nimport emojilib from \"emojilib\";\nimport { marked } from \"marked\";\n\nconst emojiMap = new Map<string, string>();\nfor (const [emoji, keywords] of Object.entries(emojilib)) {\n if (Array.isArray(keywords)) {\n for (const keyword of keywords) {\n const normalized = keyword.toLowerCase();\n if (!emojiMap.has(normalized)) {\n emojiMap.set(normalized, emoji);\n }\n }\n }\n}\n\nfunction detectContentType(content: string): \"html\" | \"markdown\" | \"text\" {\n const trimmed = content.trim();\n const htmlTagPattern = /<[a-z][\\s\\S]*>/i;\n if (htmlTagPattern.test(trimmed)) {\n return \"html\";\n }\n const markdownPatterns = [\n /^#{1,6}\\s+/m,\n /^\\s*[-*+]\\s+/m,\n /^\\s*\\d+\\.\\s+/m,\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/,\n /\\*\\*[^*]+\\*\\*/,\n /\\*[^*]+\\*/,\n /`[^`]+`/,\n ];\n if (markdownPatterns.some((pattern) => pattern.test(trimmed))) {\n return \"markdown\";\n }\n return \"text\";\n}\n\nfunction processEmojis(text: string): string {\n return text.replace(/:([a-z0-9_+-]+):/gi, (match, name) => {\n const normalized = name.toLowerCase();\n const emoji = emojiMap.get(normalized);\n return emoji || match;\n });\n}\n\nfunction textToHtml(text: string): string {\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\n/g, \"<br>\");\n}\n\nfunction normalizeInvisibleChars(text: string): string {\n return (\n text\n // Unify Windows/Mac line endings\n .replace(/\\r\\n?|\\u2028|\\u2029/g, \"\\n\")\n // Remove invisible Unicode format chars\n .replace(/\\p{Cf}/gu, \"\")\n // Convert all Unicode whitespace to normal spaces\n .replace(/\\p{Zs}/gu, \" \")\n // Remove control characters except \\n and \\t\n .replace(/[^\\S\\n\\t]+/g, \" \")\n // Remove trailing spaces before newline\n .replace(/[ \\t]+\\n/g, \"\\n\")\n // Collapse any combination of empty lines into max 2 line breaks\n .replace(/(\\n\\s*){2,}/g, \"\\n\\n\")\n .trim()\n );\n}\n\nexport function normalizeContent(content: string): string {\n if (!content) {\n return \"\";\n }\n\n const cleaned = normalizeInvisibleChars(content);\n\n const contentType = detectContentType(cleaned);\n let html: string;\n switch (contentType) {\n case \"html\":\n html = processEmojis(cleaned);\n break;\n case \"markdown\":\n html = marked.parse(cleaned, {\n breaks: true,\n gfm: true,\n }) as string;\n html = processEmojis(html);\n break;\n case \"text\":\n default: {\n const textWithEmojis = processEmojis(cleaned);\n html = textToHtml(textWithEmojis);\n break;\n }\n }\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n \"p\",\n \"br\",\n \"strong\",\n \"em\",\n \"u\",\n \"s\",\n \"a\",\n \"ul\",\n \"ol\",\n \"li\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"blockquote\",\n \"code\",\n \"pre\",\n \"img\",\n \"div\",\n \"span\",\n ],\n ALLOWED_ATTR: [\"href\", \"src\", \"alt\", \"title\", \"target\", \"rel\"],\n ALLOWED_URI_REGEXP:\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i,\n });\n}\n","type DateFormatOptions = {\n todayAsText?: boolean;\n showWeekday?: boolean;\n longMonth?: boolean;\n longYear?: boolean;\n withOrdinal?: boolean;\n includeTime?: boolean;\n};\n\nconst TIME_FORMAT_OPTIONS: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n};\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction formatTime(date: Date): string {\n return date.toLocaleTimeString([], TIME_FORMAT_OPTIONS);\n}\n\nfunction getYesterday(now: Date): Date {\n const yesterday = new Date(now);\n yesterday.setDate(now.getDate() - 1);\n return yesterday;\n}\n\nfunction formatYear(date: Date, longYear: boolean): string {\n return longYear\n ? date.getFullYear().toString()\n : `'${date.getFullYear().toString().slice(-2)}`;\n}\n\nfunction formatDay(day: number, withOrdinal: boolean): string {\n return withOrdinal ? `${day}${getOrdinal(day)}` : `${day}`;\n}\n\nfunction formatOlderDate(\n date: Date,\n now: Date,\n options: Required<DateFormatOptions>\n): string {\n const { longMonth, longYear, withOrdinal, showWeekday, includeTime } =\n options;\n\n const day = date.getDate();\n const monthFormat = longMonth ? \"long\" : \"short\";\n const month = date.toLocaleDateString([], { month: monthFormat });\n const dayFormatted = formatDay(day, withOrdinal);\n\n let result = `${month} ${dayFormatted}`;\n\n const isDifferentYear = date.getFullYear() !== now.getFullYear();\n if (isDifferentYear) {\n result += `, ${formatYear(date, longYear)}`;\n }\n\n if (showWeekday) {\n const weekday = date.toLocaleDateString([], { weekday: \"long\" });\n result = `${weekday}, ${result}`;\n }\n\n if (includeTime) {\n result += `, ${formatTime(date)}`;\n }\n\n return result;\n}\n\nexport function formatTimestamp(\n iso: string,\n options: DateFormatOptions = {}\n): string {\n const {\n todayAsText = false,\n showWeekday = false,\n longMonth = false,\n longYear = true,\n withOrdinal = false,\n includeTime = true,\n } = options;\n\n const date = new Date(iso);\n const now = new Date();\n\n if (isSameDay(date, now)) {\n if (todayAsText) return \"Today\";\n return formatTime(date);\n }\n\n const yesterday = getYesterday(now);\n if (isSameDay(date, yesterday)) {\n if (!includeTime) return \"Yesterday\";\n return `Yesterday, ${formatTime(date)}`;\n }\n\n return formatOlderDate(date, now, {\n todayAsText,\n showWeekday,\n longMonth,\n longYear,\n withOrdinal,\n includeTime,\n });\n}\n\nfunction getOrdinal(n: number): string {\n if (n % 100 >= 11 && n % 100 <= 13) return \"th\";\n\n switch (n % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n onKeyDown,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n onKeyDown?.(e);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type ComponentPropsWithoutRef,\n type ElementType,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableOwnProps = {\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\ntype PressableProps<T extends ElementType = \"div\"> = PressableOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof PressableOwnProps | \"as\">;\n\nexport function Pressable<T extends ElementType = \"div\">({\n as,\n disabled = false,\n onPress,\n className,\n children,\n ...props\n}: PressableProps<T>) {\n const Component = as || \"div\";\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionState = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n};\n\nexport type AccordionProps = {\n children: ReactNode | ((state: AccordionState) => ReactNode);\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n\n if (type === \"single\") {\n return new Set([defaultValue as string]);\n }\n\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n if (type === \"single\") {\n return prev.has(value) ? new Set() : new Set([value]);\n }\n\n const next = new Set(prev);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className} data-type={type}>\n {typeof children === \"function\"\n ? children({ openItems, toggleItem })\n : children}\n </div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLDivElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid h-full grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { normalizeContent } from \"@utils/rich-content\";\n\nexport type RichContentProps = {\n content: string;\n className?: string;\n};\n\nexport function RichContent({ content, className }: RichContentProps) {\n const sanitizedHtml = normalizeContent(content);\n\n return (\n <div\n className={cn(\n \"normalized-content text-sm leading-[1.3] font-normal text-neutral-900\",\n className\n )}\n dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\n />\n );\n}\n","import { cn } from \"@utils/classnames\";\n\ntype SkeletonProps = {\n className?: string;\n};\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"skeleton rounded-md\", className)} />;\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\n/** Reason for toast dismissal */\nexport type DismissReason = \"manual\" | \"timeout\";\n\n/** Render function signature for dynamic toast content */\nexport type ToastRenderFn = (\n close: () => void,\n remainingTime: number\n) => ReactNode;\n\n/** Lifecycle callbacks */\nexport type ToastCallbacks = {\n /** Called when the toast appears */\n onOpen?: () => void;\n /** Called when the user manually dismisses the toast */\n onClose?: () => void;\n /** Called when the toast disappears due to timeout */\n onAutoClose?: () => void;\n /** Called when the toast is removed for any reason */\n onDismiss?: (reason: DismissReason) => void;\n};\n\nexport type ToastItem = {\n id: string;\n content: ReactNode | ToastRenderFn;\n position: ToastPosition;\n duration: number;\n /** If true, the toast will not auto-dismiss and must be closed manually */\n persistent?: boolean;\n callbacks?: ToastCallbacks;\n /** Optional key for deduplication - only one toast with this key can be active */\n key?: string;\n /** Internal: timestamp used to signal timer restart on refresh */\n _refreshedAt?: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\n/** Maps dedupe key -> toast id for active toasts (visible or exiting) */\nconst activeKeys = new Map<string, string>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n // Register key if provided\n if (toast.key) {\n activeKeys.set(toast.key, toast.id);\n }\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n // Note: key is NOT removed here - it stays active during exit animation\n // The key is removed in cleanup() after exit animation completes\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n\n /**\n * Called after exit animation completes to clean up key mapping.\n * This ensures the key stays \"active\" during exit animation to prevent duplicates.\n */\n cleanup(id: string) {\n for (const [key, toastId] of activeKeys) {\n if (toastId === id) {\n activeKeys.delete(key);\n break;\n }\n }\n },\n\n /**\n * Check if a dedupe key is currently active (toast visible or exiting)\n */\n getActiveToastIdByKey(key: string): string | undefined {\n return activeKeys.get(key);\n },\n\n /**\n * Update an existing toast's content and/or duration.\n * Used for refresh behavior when a duplicate key is called.\n */\n update(\n id: string,\n updates: { content?: ReactNode | ToastRenderFn; duration?: number }\n ) {\n const toast = toasts.find((t) => t.id === id);\n if (!toast) return false;\n\n toasts = toasts.map((t) =>\n t.id === id ? { ...t, ...updates, _refreshedAt: Date.now() } : t\n );\n notify();\n return true;\n },\n};\n","import {\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport {\n toastStore,\n type DismissReason,\n type ToastItem,\n type ToastPosition,\n type ToastRenderFn,\n} from \"./toast-store\";\n\nconst ANIMATION_DURATION_MS = 200;\nconst COUNTDOWN_INTERVAL_MS = 100;\n\nconst POSITION_CLASSES: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\nconst ANIMATION_TRANSFORMS: Record<ToastPosition, string> = {\n \"top-left\": \"-translate-x-full\",\n \"top-center\": \"-translate-y-full\",\n \"top-right\": \"translate-x-full\",\n \"bottom-left\": \"-translate-x-full\",\n \"bottom-center\": \"translate-y-full\",\n \"bottom-right\": \"translate-x-full\",\n};\n\ntype AnimationState = \"entering\" | \"visible\" | \"exiting\";\n\ntype AnimatedToast = ToastItem & {\n animationState: AnimationState;\n};\n\ntype TimerState = {\n timeoutId: number | null;\n startedAt: number;\n remainingTime: number;\n isPaused: boolean;\n /** Tracks _refreshedAt to detect refresh calls */\n refreshedAt?: number;\n};\n\ntype ToastWrapperProps = {\n toast: AnimatedToast;\n remainingTime: number;\n onExitComplete: (id: string) => void;\n onClose: (id: string) => void;\n onHoverStart: () => void;\n onHoverEnd: () => void;\n};\n\nfunction isRenderFn(content: unknown): content is ToastRenderFn {\n return typeof content === \"function\";\n}\n\n// SSR-safe client detection using useSyncExternalStore\nconst subscribeNoop = () => () => {};\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nfunction groupByPosition(\n toasts: AnimatedToast[]\n): Partial<Record<ToastPosition, AnimatedToast[]>> {\n return toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Partial<Record<ToastPosition, AnimatedToast[]>>\n );\n}\n\nfunction computeAnimationClasses(\n isVisible: boolean,\n position: ToastPosition\n): string {\n const baseClasses =\n \"transition-all duration-200 ease-out motion-reduce:transition-none motion-reduce:transform-none\";\n const transformClass = ANIMATION_TRANSFORMS[position];\n\n return cn(\n baseClasses,\n isVisible\n ? \"translate-x-0 translate-y-0 opacity-100\"\n : `opacity-0 ${transformClass}`\n );\n}\n\nfunction updateAnimationState(toast: AnimatedToast): AnimatedToast {\n if (toast.animationState === \"entering\") {\n return { ...toast, animationState: \"visible\" };\n }\n return toast;\n}\n\nfunction markAsExiting(\n toast: AnimatedToast,\n shouldExit: boolean\n): AnimatedToast {\n if (shouldExit && toast.animationState !== \"exiting\") {\n return { ...toast, animationState: \"exiting\" };\n }\n return toast;\n}\n\nfunction ToastWrapper({\n toast,\n remainingTime,\n onExitComplete,\n onClose,\n onHoverStart,\n onHoverEnd,\n}: ToastWrapperProps) {\n const [hasEntered, setHasEntered] = useState(false);\n\n // Trigger enter animation on mount\n useEffect(() => {\n const frame = requestAnimationFrame(() => setHasEntered(true));\n return () => cancelAnimationFrame(frame);\n }, []);\n\n // Handle exit animation completion\n useEffect(() => {\n if (toast.animationState !== \"exiting\") return;\n\n const timer = setTimeout(\n () => onExitComplete(toast.id),\n ANIMATION_DURATION_MS\n );\n return () => clearTimeout(timer);\n }, [toast.animationState, toast.id, onExitComplete]);\n\n const handleClose = useCallback(() => onClose(toast.id), [onClose, toast.id]);\n\n const isVisible = hasEntered && toast.animationState !== \"exiting\";\n const content = isRenderFn(toast.content)\n ? toast.content(handleClose, remainingTime)\n : toast.content;\n\n return (\n <div\n className={cn(\n \"pointer-events-auto\",\n computeAnimationClasses(isVisible, toast.position)\n )}\n onMouseEnter={onHoverStart}\n onMouseLeave={onHoverEnd}\n >\n {content}\n </div>\n );\n}\n\nfunction useToastTimers(\n storeToasts: ToastItem[],\n dismissReasons: React.MutableRefObject<Map<string, DismissReason>>\n) {\n const [remainingTimes, setRemainingTimes] = useState<Map<string, number>>(\n () => new Map()\n );\n const timerStates = useRef<Map<string, TimerState>>(new Map());\n const countdownInterval = useRef<number | null>(null);\n const isPausedRef = useRef(false);\n\n const clearTimer = useCallback((id: string) => {\n const state = timerStates.current.get(id);\n if (state?.timeoutId) {\n clearTimeout(state.timeoutId);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem, initialRemaining?: number) => {\n clearTimer(toast.id);\n\n const remaining = initialRemaining ?? toast.duration;\n const now = Date.now();\n\n const timeoutId = window.setTimeout(() => {\n dismissReasons.current.set(toast.id, \"timeout\");\n toastStore.remove(toast.id);\n }, remaining);\n\n timerStates.current.set(toast.id, {\n timeoutId,\n startedAt: now,\n remainingTime: remaining,\n isPaused: false,\n refreshedAt: toast._refreshedAt,\n });\n\n setRemainingTimes((prev) => new Map(prev).set(toast.id, remaining));\n },\n [clearTimer, dismissReasons]\n );\n\n const startCountdownInterval = useCallback(() => {\n if (countdownInterval.current) return;\n\n countdownInterval.current = window.setInterval(() => {\n const now = Date.now();\n setRemainingTimes((prev) => {\n const next = new Map(prev);\n timerStates.current.forEach((state, id) => {\n if (!state.isPaused && state.timeoutId) {\n const elapsed = now - state.startedAt;\n next.set(id, Math.max(0, state.remainingTime - elapsed));\n }\n });\n return next;\n });\n }, COUNTDOWN_INTERVAL_MS);\n }, []);\n\n const pauseAll = useCallback(() => {\n if (isPausedRef.current) return;\n isPausedRef.current = true;\n\n const now = Date.now();\n\n timerStates.current.forEach((state, id) => {\n if (state.timeoutId) {\n clearTimeout(state.timeoutId);\n }\n\n const elapsed = now - state.startedAt;\n timerStates.current.set(id, {\n ...state,\n timeoutId: null,\n remainingTime: Math.max(0, state.remainingTime - elapsed),\n isPaused: true,\n });\n });\n\n if (countdownInterval.current) {\n clearInterval(countdownInterval.current);\n countdownInterval.current = null;\n }\n }, []);\n\n const resumeAll = useCallback(() => {\n if (!isPausedRef.current) return;\n isPausedRef.current = false;\n\n timerStates.current.forEach((state, id) => {\n if (state.isPaused && state.remainingTime > 0) {\n const toast = storeToasts.find((t) => t.id === id);\n if (toast) {\n startTimer(toast, state.remainingTime);\n }\n }\n });\n\n startCountdownInterval();\n }, [storeToasts, startTimer, startCountdownInterval]);\n\n const cleanupTimer = useCallback((id: string) => {\n timerStates.current.delete(id);\n setRemainingTimes((prev) => {\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // Start timers when new toasts appear (skip persistent toasts)\n // Also restart timer when _refreshedAt changes (refresh behavior)\n useEffect(() => {\n storeToasts.forEach((toast) => {\n if (toast.persistent) return;\n\n const existingState = timerStates.current.get(toast.id);\n\n if (!existingState) {\n // New toast - start timer\n startTimer(toast);\n } else if (existingState.refreshedAt !== toast._refreshedAt) {\n // Refresh triggered - restart timer with full duration\n startTimer(toast);\n }\n });\n\n const hasNonPersistent = storeToasts.some((t) => !t.persistent);\n if (hasNonPersistent) {\n startCountdownInterval();\n }\n }, [storeToasts, startTimer, startCountdownInterval]);\n\n // Cleanup countdown interval on unmount\n useEffect(() => {\n return () => {\n if (countdownInterval.current) {\n clearInterval(countdownInterval.current);\n }\n };\n }, []);\n\n return {\n remainingTimes,\n pauseAll,\n resumeAll,\n cleanupTimer,\n };\n}\n\nexport function Toaster() {\n const [storeToasts, setStoreToasts] = useState<ToastItem[]>([]);\n const [animatedToasts, setAnimatedToasts] = useState<AnimatedToast[]>([]);\n\n const prevToastIds = useRef<Set<string>>(new Set());\n const dismissReasons = useRef<Map<string, DismissReason>>(new Map());\n const animatedToastsRef = useRef<AnimatedToast[]>([]);\n\n const { remainingTimes, pauseAll, resumeAll, cleanupTimer } = useToastTimers(\n storeToasts,\n dismissReasons\n );\n\n // Subscribe to store\n useEffect(() => toastStore.subscribe(setStoreToasts), []);\n\n // SSR-safe client detection\n const mounted = useSyncExternalStore(\n subscribeNoop,\n getClientSnapshot,\n getServerSnapshot\n );\n\n const callOnOpen = useCallback((toast: ToastItem) => {\n toast.callbacks?.onOpen?.();\n }, []);\n\n const callDismissCallbacks = useCallback(\n (toast: ToastItem, reason: DismissReason) => {\n if (reason === \"manual\") {\n toast.callbacks?.onClose?.();\n } else {\n toast.callbacks?.onAutoClose?.();\n }\n toast.callbacks?.onDismiss?.(reason);\n },\n []\n );\n\n // Sync store toasts with animated toasts\n useEffect(() => {\n const currentIds = new Set(storeToasts.map((t) => t.id));\n const storeToastMap = new Map(storeToasts.map((t) => [t.id, t]));\n const prevIds = prevToastIds.current;\n\n // Call dismiss callbacks for removed toasts\n animatedToastsRef.current\n .filter((t) => !currentIds.has(t.id) && t.animationState !== \"exiting\")\n .forEach((toast) => {\n const reason = dismissReasons.current.get(toast.id) ?? \"timeout\";\n callDismissCallbacks(toast, reason);\n dismissReasons.current.delete(toast.id);\n });\n\n setAnimatedToasts((prev) => {\n const updated = prev\n .map((toast) => {\n // Update content/duration if the toast was refreshed\n const storeToast = storeToastMap.get(toast.id);\n if (storeToast) {\n return {\n ...toast,\n content: storeToast.content,\n duration: storeToast.duration,\n };\n }\n return toast;\n })\n .map((toast) => markAsExiting(toast, !currentIds.has(toast.id)))\n .map(updateAnimationState);\n\n const newToasts: AnimatedToast[] = storeToasts\n .filter((t) => !prevIds.has(t.id))\n .map((t) => {\n callOnOpen(t);\n return { ...t, animationState: \"entering\" as const };\n });\n\n const result = [...newToasts, ...updated];\n animatedToastsRef.current = result;\n return result;\n });\n\n prevToastIds.current = currentIds;\n }, [storeToasts, callOnOpen, callDismissCallbacks]);\n\n const handleExitComplete = useCallback(\n (id: string) => {\n setAnimatedToasts((prev) => {\n const result = prev.filter((t) => t.id !== id);\n animatedToastsRef.current = result;\n return result;\n });\n cleanupTimer(id);\n // Clean up dedupe key mapping after exit animation completes\n toastStore.cleanup(id);\n },\n [cleanupTimer]\n );\n\n const handleManualClose = useCallback((id: string) => {\n dismissReasons.current.set(id, \"manual\");\n toastStore.remove(id);\n }, []);\n\n if (!mounted) {\n return null;\n }\n\n const grouped = groupByPosition(animatedToasts);\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, AnimatedToast[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"pointer-events-none fixed z-1000 flex flex-col items-end gap-2 p-4\",\n POSITION_CLASSES[position]\n )}\n >\n {items.map((toast) => (\n <ToastWrapper\n key={toast.id}\n toast={toast}\n remainingTime={remainingTimes.get(toast.id) ?? toast.duration}\n onExitComplete={handleExitComplete}\n onClose={handleManualClose}\n onHoverStart={pauseAll}\n onHoverEnd={resumeAll}\n />\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype AccountInfoProps = {\n title: string;\n value: string | ReactNode;\n};\n\nexport function AccountInfo({ title, value }: AccountInfoProps) {\n return (\n <div className=\"flex flex-col\">\n <div className=\"mb-1 text-sm font-semibold text-neutral-900\">{title}</div>\n <div className=\"text-sm font-normal text-neutral-900\">{value}</div>\n </div>\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[32px] w-[32px] text-[0.875em]\",\n xl: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type BulkActionsSkeletonProps = {\n className?: string;\n};\n\nexport function BulkActionsSkeleton({ className }: BulkActionsSkeletonProps) {\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n <Skeleton className=\"h-4 w-30\" />\n </div>\n\n {/* Bulk actions skeleton */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\" />\n\n {/* Density skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={<MinusIcon size={12} className=\"text-neutral-900\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\ntype IconCountButtonOrientation = \"vertical\" | \"horizontal\";\n\nexport type IconCountButtonSkeletonProps = {\n orientation?: IconCountButtonOrientation;\n className?: string;\n};\n\nexport function IconCountButtonSkeleton({\n orientation = \"vertical\",\n className,\n}: IconCountButtonSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n className={cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\",\n className\n )}\n >\n <Skeleton className=\"size-8 rounded-full\" />\n\n <div\n className={cn(\"flex items-center gap-1\", isVertical && \"text-[9px]\")}\n >\n <Skeleton className={cn(\"h-3\", isVertical ? \"w-10\" : \"w-14\")} />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n function formatCount(count: number, max = 99): string {\n return count > max ? `${max}+` : String(count);\n }\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({formatCount(count)})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\nexport type DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","export const EVENT_CARD_HEIGHT_SIZE = {\n normal: { style: \"h-[165px]\", value: 165 },\n compact: { style: \"h-[60px]\", value: 60 },\n};\n","import type { CSSProperties } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventCardSkeletonProps = {\n density?: Density;\n className?: string;\n style?: CSSProperties;\n};\n\nexport function EventCardSkeleton({\n density = \"normal\",\n className,\n style,\n}: EventCardSkeletonProps) {\n return (\n <Card\n className={cn(\n \"w-full rounded-lg bg-white-variant-5 p-4\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n\n <CardTitle className=\"flex h-5 items-center\">\n <Skeleton className=\"h-4 w-48\" />\n </CardTitle>\n\n <CardContent>\n <Skeleton className=\"my-1 h-4 w-full\" />\n <Skeleton className=\"my-1 h-4 w-3/4\" />\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-23 rounded-full\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n </div>\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n\n <div className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n\n <div className=\"flex-1\" />\n\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type EventStatusBadgeType = \"fire\" | \"insight\" | \"done\";\nexport type EventActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusBadgeConfig = {\n label?: string;\n onClick?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type EventStatusBadges = Partial<\n Record<EventStatusBadgeType, StatusBadgeConfig>\n>;\nexport type EventActions = Partial<Record<EventActionType, ActionConfig>>;\n\nexport type EventCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n timestampTooltip?: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statusBadges?: EventStatusBadges;\n actions?: EventActions;\n\n // Density\n density?: Density;\n\n // Styles\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst EVENT_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction EventCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction EventStatusesList({\n statusBadges,\n density,\n}: {\n statusBadges: EventStatusBadges;\n density?: Density;\n}) {\n if (Object.keys(statusBadges).length === 0) return null;\n\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statusBadges) as EventStatusBadgeType[]).map((status) => {\n const config = statusBadges[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onClick}\n density={density}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nfunction EventActionsList({\n actions,\n className,\n}: {\n actions: EventActions;\n className?: string;\n}) {\n if (Object.keys(actions).length === 0) return null;\n\n return (\n <div className={cn(\"flex gap-2\", className)}>\n <StopPropagation>\n {(Object.keys(actions) as EventActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...EVENT_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function EventCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n timestampTooltip,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statusBadges = {},\n actions = {},\n density = \"normal\",\n className,\n style,\n}: EventCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"line-clamp-1 text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <EventStatusesList statusBadges={statusBadges} />\n\n <EventActionsList\n actions={actions}\n className=\"col-start-2 justify-self-end\"\n />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n {icon}\n\n <EventStatusesList statusBadges={statusBadges} density={density} />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n <span className=\"truncate\">{sender}</span>\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <div className=\"flex-1\" />\n\n <EventActionsList actions={actions} />\n\n <InfoTooltip content={timestampTooltip}>\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n </InfoTooltip>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { FireIcon } from \"@icons/index\";\n\nexport type EventDetailPriorityProps = {\n priorityText: string;\n};\n\nexport function EventDetailPriority({\n priorityText,\n}: EventDetailPriorityProps) {\n return (\n <div className=\"sticky top-14 z-5 flex min-h-14 shrink-0 items-center gap-4 bg-tertiary-50 p-4\">\n <FireIcon size={32} className=\"text-tertiary-500-variant-2\" />\n <div className=\"py-1 text-xs leading-[1.2] font-normal text-neutral-800\">\n <span className=\"font-bold\">High Urgency: </span>\n {priorityText}\n </div>\n </div>\n );\n}\n","import { SummaryIcon } from \"@icons/index\";\n\nexport type EventDetailSummaryProps = {\n summary: string;\n};\n\nexport function EventDetailSummary({ summary }: EventDetailSummaryProps) {\n return (\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <SummaryIcon size={24} />\n <p className=\"text-sm leading-[1.3] font-normal text-neutral-800\">\n <span className=\"font-bold\">Summary: </span>\n {summary}\n </p>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { EventDetailPriority } from \"./event-detail-priority\";\nimport { EventDetailSummary } from \"./event-detail-summary\";\n\nexport type EventDetailContentHeaderProps = {\n summary?: string;\n priorityText?: string;\n className?: string;\n children: ReactNode;\n};\n\nexport function EventDetailContentHeader({\n summary,\n priorityText,\n children,\n className,\n}: EventDetailContentHeaderProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {priorityText != null && (\n <EventDetailPriority priorityText={priorityText} />\n )}\n <div className=\"flex flex-col gap-4 p-4\">\n {summary != null && <EventDetailSummary summary={summary} />}\n {children}\n </div>\n </div>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentCalendarProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentCalendar({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentCalendarProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentEmailProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentEmail({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentEmailProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { useCallback, useRef, type ReactNode } from \"react\";\n\nimport { Button } from \"@primitives/button\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n useAccordion,\n} from \"@components/accordion\";\nimport { RichContent } from \"@components/rich-content\";\nimport { Avatar } from \"@patterns/avatar\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, ExternalLinkIcon, FireIcon } from \"@icons/index\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type {\n Message,\n MessageDetail,\n MessageGroup,\n MessageReply,\n} from \"./types/event-detail.types\";\n\nexport type EventDetailContentMessageProps = {\n detail: MessageDetail;\n className?: string;\n};\n\ntype MessageGroupWithPriority = MessageGroup & {\n totalPriorityGroups?: number;\n priorityIndex?: number;\n};\n\nfunction DateSeparator({ timestamp }: { timestamp: string }) {\n return (\n <div className=\"flex items-center gap-4\">\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n <span className=\"rounded-full border border-neutral-300-variant-2 px-3 py-1 text-xs font-semibold text-neutral-600\">\n {timestamp}\n </span>\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n </div>\n );\n}\n\nfunction MessageActions({\n isPriority,\n onExternalLinkClick,\n onMarkAsFireClick,\n}: {\n isPriority?: boolean;\n onExternalLinkClick?: () => void;\n onMarkAsFireClick?: () => void;\n}) {\n return (\n <>\n {onExternalLinkClick && (\n <IconButton\n icon={<ExternalLinkIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-primary-500\"\n title=\"Open in Slack\"\n aria-label=\"Open in Slack\"\n onClick={onExternalLinkClick}\n />\n )}\n {onMarkAsFireClick && !isPriority && (\n <IconButton\n icon={<FireIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-tertiary-500\"\n title=\"Mark as Fire\"\n aria-label=\"Mark as Fire\"\n onClick={onMarkAsFireClick}\n />\n )}\n </>\n );\n}\n\nfunction MessageContent({ content }: { content: string }) {\n return (\n <div className=\"text-sm leading-relaxed text-neutral-900\">\n <RichContent className=\"max-w-[1260px]\" content={content} />\n </div>\n );\n}\n\nfunction RepliesTrigger({\n replyId,\n replyCount,\n}: {\n replyId: string;\n replyCount: number;\n}) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(`replies-${replyId}`);\n\n return (\n <div className=\"flex items-center gap-2 p-1.5 px-2 text-xs font-medium text-neutral-600\">\n <ArrowIcon\n direction={isOpen ? \"up\" : \"down\"}\n size={12}\n className=\"transition-transform\"\n />\n <span>\n {replyCount} {replyCount === 1 ? \"reply\" : \"replies\"}\n </span>\n </div>\n );\n}\n\nfunction MessageReplies({ replies }: { replies: MessageReply[] }) {\n if (!replies || replies.length === 0) return null;\n\n const replyId = replies[0]?.id;\n if (!replyId) return null;\n\n return (\n <Accordion\n className=\"w-full\"\n type=\"multiple\"\n defaultValue={[`replies-${replyId}`]}\n >\n <AccordionItem\n value={`replies-${replyId}`}\n className=\"flex flex-col gap-2\"\n >\n <AccordionTrigger\n value={`replies-${replyId}`}\n className=\"flex items-center justify-between rounded transition-colors hover:bg-neutral-50\"\n >\n <RepliesTrigger replyId={replyId} replyCount={replies.length} />\n </AccordionTrigger>\n <AccordionContent\n value={`replies-${replyId}`}\n className=\"ml-3 flex flex-col gap-4 border-l-2 border-neutral-500 pl-4\"\n >\n {replies.map((reply) => (\n <div key={reply.id} className=\"flex gap-3\">\n <Avatar name={reply.author} size=\"lg\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {reply.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {reply.timestamp}\n </div>\n </div>\n <MessageContent content={reply.body} />\n </div>\n </div>\n ))}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n}\n\nfunction MessageItem({\n message,\n isPriority = false,\n}: {\n message: Message;\n isPriority?: boolean;\n}) {\n return (\n <div className=\"transition-colors\">\n <div className=\"flex gap-3\">\n <Avatar name={message.author} size={isPriority ? \"xl\" : \"lg\"} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {message.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {message.timestamp}\n </div>\n <MessageActions\n isPriority={isPriority}\n onExternalLinkClick={message.onExternalLinkClick}\n onMarkAsFireClick={message.onMarkAsFireClick}\n />\n </div>\n <MessageContent content={message.body} />\n </div>\n {message.replies && message.replies.length > 0 && (\n <MessageReplies replies={message.replies} />\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityNavigation({\n priorityIndex,\n priorityTotal,\n onPreviousPriority,\n onNextPriority,\n}: {\n priorityIndex?: number;\n priorityTotal?: number;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n if (!priorityIndex || !priorityTotal || priorityTotal <= 1) return null;\n\n const showNext = priorityIndex > 1;\n const showPrevious = priorityIndex < priorityTotal;\n\n if (!showPrevious && !showNext) return null;\n\n return (\n <div className=\"mb-3 flex justify-center px-2\">\n <div className=\"flex w-full items-center justify-center gap-4\">\n <div className=\"flex flex-1 justify-end\">\n {showPrevious && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Previous Fire\"\n onClick={onPreviousPriority}\n >\n <ArrowIcon direction=\"left\" size={14} />\n <span>Previous Fire</span>\n </Button>\n )}\n </div>\n <span className=\"text-xs font-medium text-neutral-700\">\n {priorityIndex} / {priorityTotal}\n </span>\n <div className=\"flex-1\">\n {showNext && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Next Fire\"\n onClick={onNextPriority}\n >\n <span>Next Fire</span>\n <ArrowIcon direction=\"right\" size={14} />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroupHeader({\n title,\n onMarkAsNotFireClick,\n}: {\n title?: string;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!title) return null;\n\n return (\n <div className=\"border-b border-neutral-200 pb-3\">\n <div className=\"flex items-center gap-2\">\n <IconButton\n icon={<FireIcon size={16} className=\"text-tertiary-500\" />}\n className=\"relative flex h-6 w-6 shrink-0 items-center justify-center rounded-full border border-tertiary-400 bg-tertiary-50 transition-opacity hover:opacity-70\"\n aria-label=\"Priority\"\n onClick={onMarkAsNotFireClick}\n />\n <h4 className=\"text-tertiary-700 text-xs font-semibold tracking-wide uppercase\">\n {title}\n </h4>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroup({\n group,\n children,\n onPreviousPriority,\n onNextPriority,\n onMarkAsNotFireClick,\n}: {\n group: MessageGroupWithPriority;\n children: ReactNode;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!group.isPriority) {\n return <>{children}</>;\n }\n\n return (\n <div className=\"relative scroll-mt-[180px]\" data-group-id={group.id}>\n <PriorityNavigation\n priorityIndex={group.priorityIndex}\n priorityTotal={group.totalPriorityGroups}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n />\n <div className=\"relative flex flex-col gap-4 rounded-r-lg border-l-[3px] border-tertiary-500 bg-tertiary-50-alpha-50 p-4\">\n <PriorityGroupHeader\n title={group.priorityText}\n onMarkAsNotFireClick={onMarkAsNotFireClick}\n />\n {children}\n </div>\n </div>\n );\n}\n\nfunction MessageGroup({\n group,\n onPreviousPriority,\n onNextPriority,\n}: {\n group: MessageGroupWithPriority;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n return (\n <div className=\"flex flex-col gap-4\">\n <DateSeparator timestamp={group.timestamp} />\n <PriorityGroup\n group={group}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n onMarkAsNotFireClick={group.messages[0]?.onMarkAsFireClick}\n >\n {group.messages.map((message) => (\n <MessageItem\n key={message.id}\n message={message}\n isPriority={group.isPriority}\n />\n ))}\n </PriorityGroup>\n </div>\n );\n}\n\nexport function EventDetailContentMessage({\n detail: { groups, summary, priorityText },\n className,\n}: EventDetailContentMessageProps) {\n const totalPriorityGroups = groups.filter((g) => g.isPriority).length;\n const containerRef = useRef<HTMLDivElement>(null);\n\n let counter = totalPriorityGroups;\n\n const scrollToPriorityGroup = useCallback(\n (targetIndex: number) => {\n if (!containerRef.current) return;\n\n const priorityGroups = Array.from(\n containerRef.current.querySelectorAll<HTMLElement>(\n '[data-group-id][class*=\"scroll-mt\"]'\n )\n );\n\n // Filter to only priority groups (those with data-group-id)\n const validPriorityGroups = priorityGroups.filter((el) => {\n const groupId = el.getAttribute(\"data-group-id\");\n if (!groupId) return false;\n // Find the corresponding group to check if it's priority\n const group = groups.find((g) => g.id === groupId);\n return group?.isPriority;\n });\n\n if (\n targetIndex >= 1 &&\n targetIndex <= totalPriorityGroups &&\n validPriorityGroups.length === totalPriorityGroups\n ) {\n // Convert priorityIndex to array index\n // priorityIndex: totalPriorityGroups (first) -> 1 (last)\n // arrayIndex: 0 (first) -> totalPriorityGroups - 1 (last)\n const arrayIndex = totalPriorityGroups - targetIndex;\n const targetGroup = validPriorityGroups[arrayIndex];\n if (targetGroup) {\n targetGroup.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n }\n },\n [groups, totalPriorityGroups]\n );\n\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <div ref={containerRef} className=\"flex flex-col gap-4\">\n {groups.map((group) => {\n const priorityIndex = group.isPriority ? counter-- : 0;\n\n const handlePreviousPriority = priorityIndex\n ? () => {\n // Previous Fire = go to earlier fire (higher index number)\n const prevIndex = priorityIndex + 1;\n if (prevIndex <= totalPriorityGroups) {\n scrollToPriorityGroup(prevIndex);\n }\n }\n : undefined;\n\n const handleNextPriority = priorityIndex\n ? () => {\n // Next Fire = go to later fire (lower index number)\n const nextIndex = priorityIndex - 1;\n if (nextIndex >= 1) {\n scrollToPriorityGroup(nextIndex);\n }\n }\n : undefined;\n\n return (\n <MessageGroup\n key={group.id}\n group={{ ...group, priorityIndex, totalPriorityGroups }}\n onPreviousPriority={handlePreviousPriority}\n onNextPriority={handleNextPriority}\n />\n );\n })}\n </div>\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentTicketProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentTicket({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentTicketProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent className=\"max-w-[1260px]\" content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, FireIcon, MoreIcon, type IconProps } from \"@icons/index\";\n\nexport type EventDetailHeaderProps = {\n icon: ReactElement<IconProps>;\n subject: string;\n from: string;\n prefixTimestamp?: string;\n timestamp: string;\n isPriority: boolean;\n isOpen: boolean;\n isFirstEvent: boolean;\n isSingleEvent: boolean;\n className?: string;\n};\n\nexport function EventDetailHeader({\n icon,\n subject,\n from,\n prefixTimestamp,\n timestamp,\n isPriority,\n isOpen,\n isFirstEvent,\n isSingleEvent,\n className,\n}: EventDetailHeaderProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n data-priority={isPriority}\n >\n <div className=\"flex w-full items-center gap-4\">\n {isFirstEvent && (\n <IconButton\n icon={\n <ArrowIcon\n direction=\"left\"\n size={24}\n className=\"text-neutral-700\"\n />\n }\n aria-label=\"Go back\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n <div className=\"relative shrink-0\">\n <div className=\"relative flex items-center justify-center\">\n {cloneElement(icon, { size: 36 })}\n {!isOpen && isPriority && (\n <FireIcon\n size={16}\n className=\"absolute right-[-12px] bottom-0 text-tertiary-500-variant-2\"\n />\n )}\n </div>\n </div>\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"line-clamp-1 truncate text-sm leading-[1.3] font-bold text-neutral-900\">\n {from}\n </h3>\n <div className=\"line-clamp-1 text-sm leading-[1.3] font-normal text-neutral-900\">\n {subject}\n </div>\n </div>\n <div className=\"leading-[1.2]tracking-[0.12px] flex items-center gap-1 text-right text-xs whitespace-nowrap\">\n {prefixTimestamp != null && (\n <span className=\"font-normal text-neutral-600\">\n {prefixTimestamp}\n </span>\n )}\n <span className=\"font-semibold text-neutral-800\">{timestamp}</span>\n </div>\n <div className=\"flex items-center gap-2\">\n {!isSingleEvent && (\n <IconButton\n icon={\n <ArrowIcon\n size={24}\n className=\"text-neutral-700\"\n direction={isOpen ? \"up\" : \"down\"}\n />\n }\n aria-label=\"Toggle event\"\n className=\"rounded p-1 hover:bg-neutral-100\"\n />\n )}\n {isFirstEvent && (\n <IconButton\n icon={<MoreIcon size={24} className=\"text-neutral-700\" />}\n aria-label=\"Close\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventDetailSkeletonProps = {\n className?: string;\n};\n\nexport function EventDetailSkeleton({ className }: EventDetailSkeletonProps) {\n return (\n <div className={cn(\"w-full\", className)}>\n <EventDetailHeaderSkeleton />\n <EventDetailContentSkeleton />\n </div>\n );\n}\n\ntype EventDetailHeaderSkeletonProps = {\n className?: string;\n};\n\nfunction EventDetailHeaderSkeleton({\n className,\n}: EventDetailHeaderSkeletonProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n >\n <div className=\"flex w-full items-center gap-4\">\n <Skeleton className=\"h-9 w-9 rounded-full\" />\n <div className=\"min-w-0 flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n </div>\n <Skeleton className=\"h-3 w-14\" />\n </div>\n </div>\n );\n}\n\nfunction EventDetailContentSkeleton() {\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex flex-col gap-4 p-4\">\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n </div>\n </div>\n <div className=\"space-y-3\">\n <Skeleton className=\"h-3 w-2/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n <Skeleton className=\"h-3 w-8/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-5/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@components/accordion\";\n\nimport { EventDetailContentCalendar } from \"./event-detail-content-calendar\";\nimport { EventDetailContentEmail } from \"./event-detail-content-email\";\nimport { EventDetailContentMessage } from \"./event-detail-content-message\";\nimport { EventDetailContentTicket } from \"./event-detail-content-ticket\";\nimport { EventDetailHeader } from \"./event-detail-header\";\nimport type { EventDetailItem } from \"./types/event-detail.types\";\n\nexport type EventDetailProps = {\n events: EventDetailItem[];\n expandedEventIndex?: number;\n};\n\nconst eventContentRenderers = {\n email: (event: Extract<EventDetailItem, { type: \"email\" }>) => (\n <EventDetailContentEmail detail={event.detail} />\n ),\n message: (event: Extract<EventDetailItem, { type: \"message\" }>) => (\n <EventDetailContentMessage detail={event.detail} />\n ),\n ticket: (event: Extract<EventDetailItem, { type: \"ticket\" }>) => (\n <EventDetailContentTicket detail={event.detail} />\n ),\n calendar: (event: Extract<EventDetailItem, { type: \"calendar\" }>) => (\n <EventDetailContentCalendar detail={event.detail} />\n ),\n};\n\nfunction renderEventContent<T extends EventDetailItem[\"type\"]>(\n event: Extract<EventDetailItem, { type: T }>\n) {\n return eventContentRenderers[event.type](event as never);\n}\n\nfunction getEventValue(event: EventDetailItem, index: number) {\n return event.id ?? `${event.type}-${event.timestamp}-${index}`;\n}\n\nexport function EventDetail({ events, expandedEventIndex }: EventDetailProps) {\n if (events.length === 0) return null;\n\n if (events.length === 1) {\n const event = events[0];\n\n return (\n <div className=\"min-h-0 w-full overflow-y-auto\">\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n prefixTimestamp={event.prefixTimestamp}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isOpen\n isFirstEvent\n isSingleEvent\n className=\"sticky top-0 z-10 border-b border-neutral-400\"\n />\n {renderEventContent(event)}\n </div>\n );\n }\n\n const defaultValue =\n expandedEventIndex === undefined\n ? getEventValue(events[0], 0)\n : getEventValue(events[expandedEventIndex], expandedEventIndex);\n\n return (\n <Accordion className=\"w-full\" defaultValue={defaultValue}>\n {({ openItems }) => (\n <>\n {events.map((event, index) => {\n const value = getEventValue(event, index);\n const isOpen = openItems.has(value);\n\n return (\n <AccordionItem key={value} value={value}>\n <AccordionTrigger value={value} className=\"sticky top-0 z-10\">\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n prefixTimestamp={event.prefixTimestamp}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isFirstEvent={index === 0}\n isSingleEvent={false}\n isOpen={isOpen}\n className=\"border-b border-neutral-400\"\n />\n </AccordionTrigger>\n\n <AccordionContent\n value={value}\n className={cn(\n index < events.length - 1 &&\n isOpen &&\n \"border-b border-neutral-400\"\n )}\n >\n {renderEventContent(event)}\n </AccordionContent>\n </AccordionItem>\n );\n })}\n </>\n )}\n </Accordion>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type FilterBarSkeletonProps = {\n itemCount?: number;\n className?: string;\n};\n\nexport function FilterBarSkeleton({\n itemCount = 3,\n className,\n}: FilterBarSkeletonProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <FilterChipSkeleton key={index} />\n ))}\n </div>\n );\n}\n\nfunction FilterChipSkeleton() {\n return (\n <div className=\"flex items-center gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1\">\n <Skeleton className=\"m-0.5 size-4 rounded-full\" />\n <Skeleton className=\"h-3 w-15\" />\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child, index) => cloneElement(child, { key: index }))}\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\nimport { Divider } from \"@patterns/layout/divider\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\nexport type IntegrationBarSkeletonProps = {\n orientation?: IntegrationBarOrientation;\n itemCount?: number;\n className?: string;\n};\n\nexport function IntegrationBarSkeleton({\n orientation = \"vertical\",\n itemCount = 3,\n className,\n}: IntegrationBarSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n const containerClasses = cn(\n \"size-full\",\n isVertical ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n );\n\n const gridClasses = cn(\n \"grid h-full w-full place-items-center gap-4\",\n isVertical ? \"grid-cols-1\" : \"auto-cols-max grid-flow-col\",\n className\n );\n\n const itemClasses = cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\"\n );\n\n const labelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-12 text-[9px]\" : \"w-16 text-xs\"\n );\n\n const addLabelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-8 text-[9px]\" : \"w-10 text-xs\"\n );\n\n return (\n <div className={containerClasses}>\n <div className={gridClasses}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <div key={index} className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={labelSkeletonClasses} />\n </div>\n ))}\n\n <Divider orientation={isVertical ? \"horizontal\" : \"vertical\"} />\n\n <div className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={addLabelSkeletonClasses} />\n </div>\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","import { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport function IntegrationItemSkeleton() {\n return (\n <div className=\"flex w-full items-center justify-center\">\n <div className=\"flex w-full flex-col gap-2 rounded-lg bg-neutral-100-variant-3 px-3 py-3\">\n <div className=\"flex items-center justify-between gap-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"h-4 w-1/8\" />\n </div>\n </div>\n </div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport type { IconProps } from \"@icons/index\";\n\nimport type { IntegrationItemProps } from \"./integration-item\";\nimport { IntegrationItemSkeleton } from \"./integration-item-skeleton\";\n\ntype IntegrationsCardProps = {\n icon: ReactElement<IconProps>;\n name: string;\n maxConnectionsPerService: number;\n connectLabel: string;\n onConnect: () => void;\n isLoading?: boolean;\n children?:\n | ReactElement<IntegrationItemProps>[]\n | ReactElement<IntegrationItemProps>;\n};\n\nexport function IntegrationsCard({\n icon,\n name,\n maxConnectionsPerService,\n connectLabel,\n onConnect,\n isLoading,\n children,\n}: IntegrationsCardProps) {\n const items = Children.toArray(children) as ReactElement[];\n const count = items.length;\n\n return (\n <div className=\"flex flex-col gap-4 rounded-lg border border-neutral-400 bg-white p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n <div className=\"flex h-11 w-11 shrink-0 items-center justify-center\">\n <div className=\"flex items-center justify-center\">\n {cloneElement(icon, {\n size: 36,\n className: cn({ grayscale: !count && isLoading }),\n })}\n </div>\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"truncate text-xs font-bold text-neutral-800\">\n {name}\n </div>\n <div className=\"text-xs font-normal text-neutral-800\">\n {`${count} of ${maxConnectionsPerService} accounts`}\n </div>\n </div>\n </div>\n\n {count < maxConnectionsPerService && !isLoading && (\n <Button\n className=\"flex shrink-0 items-center gap-1 rounded-lg border border-brand-primary bg-white px-2 py-1 text-xs font-bold text-brand-primary transition-opacity hover:opacity-70\"\n onClick={onConnect}\n >\n {connectLabel}\n </Button>\n )}\n </div>\n\n {isLoading && <IntegrationItemSkeleton />}\n\n {count > 0 && children && (\n <div className=\"flex flex-col gap-2\">{children}</div>\n )}\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\n\nexport type IntegrationItemProps = {\n account: string;\n valid: boolean;\n disconnectLabel: string;\n onDisconnect: () => void;\n invalidLabel?: string;\n invalidDescription?: string;\n};\n\nexport function IntegrationItem({\n account,\n valid,\n disconnectLabel,\n onDisconnect,\n invalidLabel,\n invalidDescription,\n}: IntegrationItemProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 rounded-lg border px-3 py-3\",\n valid === false\n ? \"border-error-base bg-error-base/5\"\n : \"border-brand-primary bg-neutral-100-variant-3\"\n )}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex-1 truncate text-xs font-bold text-neutral-800\">\n {account}\n </div>\n <Button\n className=\"shrink-0 text-xs font-medium text-error-base underline transition-opacity hover:opacity-70\"\n onClick={onDisconnect}\n >\n {disconnectLabel}\n </Button>\n </div>\n\n {valid === false && (\n <div className=\"flex gap-2\">\n <div className=\"text-xs font-semibold text-error-base\">\n {invalidLabel}\n </div>\n <div className=\"text-xs text-neutral-500\">{invalidDescription}</div>\n </div>\n )}\n </div>\n );\n}\n","import { useState, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onKeyDown,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n onKeyDown={onKeyDown}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport {\n toastStore,\n type ToastCallbacks,\n type ToastPosition,\n type ToastRenderFn,\n} from \"./toast-store\";\n\nexport type ShowToastOptions = {\n /**\n * Toast content - can be a ReactNode or a render function.\n * Render function receives (close, remainingTime) for custom close buttons and countdowns.\n */\n content: ReactNode | ToastRenderFn;\n /** Duration in ms before auto-dismiss (default: 4000) */\n duration?: number;\n /** Position on screen (default: \"bottom-right\") */\n position?: ToastPosition;\n /** If true, the toast will not auto-dismiss and must be closed manually */\n persistent?: boolean;\n /** Called when the toast appears */\n onOpen?: ToastCallbacks[\"onOpen\"];\n /** Called when the user manually dismisses the toast */\n onClose?: ToastCallbacks[\"onClose\"];\n /** Called when the toast disappears due to timeout */\n onAutoClose?: ToastCallbacks[\"onAutoClose\"];\n /** Called when the toast is removed for any reason */\n onDismiss?: ToastCallbacks[\"onDismiss\"];\n /**\n * Unique key for deduplication.\n * If a toast with this key is already active (visible or exiting),\n * a new toast will NOT be created.\n */\n key?: string;\n /**\n * When true and a toast with the same key already exists,\n * update its content and restart its timer instead of ignoring the call.\n * Only applies when `key` is provided.\n * @default false\n */\n refresh?: boolean;\n};\n\nconst DEFAULT_DURATION = 4000;\nconst DEFAULT_POSITION: ToastPosition = \"bottom-right\";\n\nfunction buildCallbacks({\n onOpen,\n onClose,\n onAutoClose,\n onDismiss,\n}: Pick<ShowToastOptions, \"onOpen\" | \"onClose\" | \"onAutoClose\" | \"onDismiss\">):\n | ToastCallbacks\n | undefined {\n const hasCallbacks = onOpen || onClose || onAutoClose || onDismiss;\n return hasCallbacks ? { onOpen, onClose, onAutoClose, onDismiss } : undefined;\n}\n\nfunction showToast({\n content,\n duration = DEFAULT_DURATION,\n position = DEFAULT_POSITION,\n persistent,\n onOpen,\n onClose,\n onAutoClose,\n onDismiss,\n key,\n refresh = false,\n}: ShowToastOptions) {\n // Handle deduplication by key\n if (key) {\n const existingId = toastStore.getActiveToastIdByKey(key);\n if (existingId) {\n if (refresh) {\n // Update existing toast content and trigger timer restart\n toastStore.update(existingId, { content, duration });\n }\n // Return existing toast info (whether refreshed or not)\n return {\n id: existingId,\n dismiss: () => toastStore.remove(existingId),\n /** True if the toast already existed and was not created */\n deduplicated: true,\n };\n }\n }\n\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n persistent,\n callbacks: buildCallbacks({ onOpen, onClose, onAutoClose, onDismiss }),\n key,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n deduplicated: false,\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ToastRenderFn | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({ content, ...options });\n}\n","import { Button } from \"@primitives/button\";\nimport { toast, type ShowToastOptions } from \"@components/toast/toast\";\n\nexport type ConfirmationToastProps = ConfirmationTemplateProps & {\n options?: Omit<ShowToastOptions, \"content\">;\n};\n\nexport function ConfirmationToast({\n title,\n description,\n cancelLabel,\n acceptLabel,\n onCancel,\n onAccept,\n options = {},\n}: ConfirmationToastProps) {\n return toast(\n (close) => (\n <ConfirmationTemplate\n title={title}\n description={description}\n cancelLabel={cancelLabel}\n acceptLabel={acceptLabel}\n onCancel={() => onCancel(close)}\n onAccept={() => onAccept(close)}\n />\n ),\n {\n ...options,\n }\n );\n}\n\ntype ConfirmationTemplateProps = {\n title: string;\n description: string;\n cancelLabel: string;\n acceptLabel: string;\n onCancel: (close: () => void) => void;\n onAccept: (close: () => void) => void;\n};\n\nfunction ConfirmationTemplate({\n title,\n description,\n cancelLabel,\n acceptLabel,\n onCancel,\n onAccept,\n}: ConfirmationTemplateProps) {\n return (\n <div className=\"flex w-full max-w-md flex-col justify-center gap-6 rounded-lg bg-white p-6 shadow-xl\">\n <div className=\"flex flex-col justify-center gap-3\">\n <h3 className=\"text-base font-medium text-neutral-900\">{title}</h3>\n <p className=\"text-sm text-neutral-600\">{description}</p>\n </div>\n <div className=\"flex items-center justify-end gap-3\">\n <Button\n className=\"rounded-lg border border-neutral-300 px-4 py-2 text-sm font-medium text-neutral-900 transition-opacity hover:opacity-70\"\n onClick={() => onCancel(close)}\n >\n {cancelLabel}\n </Button>\n <Button\n className=\"rounded-lg bg-error-base px-4 py-2 text-sm font-medium text-white transition-opacity hover:opacity-90\"\n onClick={() => onAccept(close)}\n >\n {acceptLabel}\n </Button>\n </div>\n </div>\n );\n}\n","import { Button } from \"@primitives/button\";\nimport { toast, type ShowToastOptions } from \"@components/toast/toast\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon } from \"@icons/index\";\n\nexport type UndoToastProps = UndoToastTemplateProps & {\n options?: Omit<ShowToastOptions, \"content\">;\n};\n\nexport function UndoToast({\n title,\n subtitle,\n description,\n onUndo,\n onClose,\n options = {},\n}: UndoToastProps) {\n return toast(\n (close) => (\n <UndoToastTemplate\n title={title}\n subtitle={subtitle}\n description={description}\n onUndo={() => onUndo(close)}\n onClose={() => onClose(close)}\n />\n ),\n {\n ...options,\n }\n );\n}\n\ntype UndoToastTemplateProps = {\n title: string;\n subtitle?: string;\n description?: string;\n onUndo: (close: () => void) => void;\n onClose: (close: () => void) => void;\n};\n\nexport function UndoToastTemplate({\n title,\n subtitle,\n description,\n onUndo,\n onClose,\n}: UndoToastTemplateProps) {\n return (\n <div className=\"grid max-w-[400px] min-w-[280px] grid-cols-[auto_1fr] gap-3 rounded-lg bg-success-base p-4\">\n <div className=\"flex flex-col justify-center gap-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-medium text-white\">{title}</span>\n <Button\n className=\"text-xs font-semibold text-white underline transition-colors hover:text-neutral-200\"\n onClick={() => onUndo(close)}\n >\n Undo\n </Button>\n </div>\n {subtitle && (\n <div className=\"line-clamp-2 text-xs font-semibold text-white-alpha-90\">\n {subtitle}\n </div>\n )}\n {description && (\n <div className=\"line-clamp-2 text-xs text-white-alpha-80\">\n {description}\n </div>\n )}\n </div>\n <div className=\"flex items-center justify-center\">\n <IconButton\n icon={\n <CloseIcon\n size={20}\n className=\"text-white\"\n onClick={() => onClose(close)}\n />\n }\n />\n </div>\n </div>\n );\n}\n","import { toast as baseToast } from \"@components/toast/toast\";\n\nimport {\n ConfirmationToast,\n type ConfirmationToastProps,\n} from \"./confimation-toast\";\nimport { UndoToast, type UndoToastProps } from \"./undo-toast\";\n\nexport const toast = Object.assign(baseToast, {\n confirm: (options: ConfirmationToastProps) => {\n return ConfirmationToast(options);\n },\n undo: (options: UndoToastProps) => {\n return UndoToast(options);\n },\n});\n","import type { SVGProps } from \"react\";\n\ntype QtaloImageProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function QtaloImage({\n size = 40,\n className,\n ...props\n}: QtaloImageProps) {\n return (\n <svg\n width={(144 / 40) * size}\n height={size}\n viewBox=\"0 0 144 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n {...props}\n >\n <g clipPath=\"url(#clip0_5796_4580)\">\n <path\n d=\"M65.1904 0.776112C66.9609 0.776112 68.4651 2.20751 68.4651 4.08969C68.4651 5.97188 66.9749 7.34751 65.1904 7.34751H57.3189V35.8778C57.3189 38.0342 55.6045 39.7909 53.6098 39.7909C51.6151 39.7909 49.8305 38.0295 49.8305 35.8778V7.34751H42.0105C40.24 7.34751 38.6797 5.91611 38.6797 4.08969C38.6797 2.26327 40.24 0.776112 42.0105 0.776112H65.2091H65.1904ZM88.0387 10.5403C89.982 10.5403 91.7479 12.1947 91.7479 14.128V36.152C91.7479 38.1364 89.9774 39.7397 88.0387 39.7397C86.1 39.7397 84.3809 38.1364 84.3809 36.152V35.1017C83.9324 36.8072 80.9987 39.7909 76.1637 39.7909C70.0628 39.7909 62.7425 35.1017 62.7425 25.0633C62.7425 15.025 70.1282 10.3869 76.1637 10.3869C80.0971 10.3869 83.2738 12.4922 84.3809 15.0761V14.1466C84.3809 12.2133 86.044 10.5588 88.0387 10.5588V10.5403ZM77.4998 33.5494C80.6017 33.5494 84.7126 31.2908 84.7126 25.0447C84.7126 18.7987 80.6017 16.54 77.4998 16.54C73.842 16.54 70.0114 19.4028 70.0114 25.0447C70.0114 30.6866 73.842 33.5494 77.4998 33.5494ZM105.309 36.0823C105.309 38.0667 103.646 39.67 101.703 39.67C99.7595 39.67 98.045 38.0667 98.045 36.0823V3.58778C98.045 1.65447 99.7081 0 101.703 0C103.698 0 105.309 1.65447 105.309 3.58778V36.1008V36.0823Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M125.262 10.0894C117.129 10.0894 110.523 16.6608 110.523 24.7518C110.523 32.8429 117.129 39.4143 125.262 39.4143C133.395 39.4143 140.001 32.8429 140.001 24.7518C140.001 16.6608 133.395 10.0894 125.262 10.0894ZM130.415 32.2341L130.405 32.2248C128.952 33.2194 127.168 33.8049 125.267 33.8049C120.24 33.8049 116.167 29.7524 116.167 24.7518C116.167 20.3368 119.339 16.6608 123.534 15.8707V24.0966C123.534 24.5288 123.688 24.9424 123.982 25.2677L130.405 32.2248C130.405 32.2248 130.415 32.2248 130.415 32.2202V32.2388V32.2341Z\"\n fill=\"white\"\n />\n <path\n d=\"M33.3918 33.5632C36.6152 30.1473 38.6613 25.5092 38.6613 20.0904C38.6613 8.45336 29.0754 0.380859 19.312 0.380859C9.54853 0.380859 0 8.45336 0 20.095C0 31.7367 9.60459 39.7906 19.312 39.7906C22.5353 39.7906 25.6932 38.9123 28.5195 37.3601L30.2339 39.1214C30.7898 39.6745 31.57 39.9998 32.4015 39.9998C34.1159 39.9998 35.5034 38.6195 35.5034 36.9139C35.5034 36.1378 35.1717 35.4314 34.6718 34.8087L33.3872 33.5306V33.5632H33.3918ZM28.1738 28.3209L24.5674 24.6309C24.0629 24.0267 23.2313 23.7014 22.3998 23.7014C20.6854 23.7014 19.2979 25.1328 19.2979 26.7873C19.2979 27.6145 19.681 28.3395 20.2322 28.8925L23.2827 32.0295C21.9981 32.4757 20.6807 32.7545 19.2933 32.7545C13.1923 32.7545 7.81541 27.6842 7.81541 20.1136C7.81541 12.5431 13.1923 7.47276 19.2933 7.47276C25.3942 7.47276 30.8412 12.5431 30.8412 20.1136C30.8412 23.3714 29.8368 26.1831 28.1691 28.3395V28.3209H28.1738Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M130.428 32.2433L130.418 32.234C128.966 33.2286 127.181 33.8141 125.28 33.8141C120.253 33.8141 116.18 29.7616 116.18 24.761C116.18 20.346 119.352 16.6699 123.547 15.8799V24.1057C123.547 24.538 123.701 24.9516 123.995 25.2769L130.418 32.234C130.418 32.234 130.428 32.234 130.428 32.2294V32.248V32.2433Z\"\n fill=\"#6663FF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_5796_4580\">\n <rect width=\"140\" height=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n"],"x_google_ignoreList":[6,7,8],"mappings":"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"}
|