text-editor-studio-ts
Version:
A powerful mobile-responsive rich text editor built with Lexical and React
1 lines • 1.42 MB
Source Map (JSON)
{"version":3,"file":"index-BLOj1UA2.cjs","sources":["../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalComposerContext.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalComposer.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalOnChangePlugin.prod.mjs","../src/components/editor/context/floating-link-context.tsx","../src/components/editor/context/shared-autocomplete-context.tsx","../src/lib/utils.ts","../src/components/ui/tooltip.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalNodeSelection.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHorizontalRuleNode.prod.mjs","../src/components/editor/utils/swipe.ts","../src/components/editor/plugins/autocomplete-plugin.tsx","../src/components/editor/nodes/autocomplete-node.tsx","../src/components/editor/shared/can-use-dom.ts","../src/components/editor/shared/environment.ts","../src/components/editor/shared/invariant.ts","../src/components/editor/utils/collapsible.ts","../src/components/editor/nodes/collapsible-container-node.ts","../src/components/editor/nodes/collapsible-content-node.ts","../src/components/editor/nodes/collapsible-title-node.ts","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalDecoratorBlockNode.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalBlockWithAlignableContents.prod.mjs","../src/components/editor/nodes/embeds/figma-node.tsx","../src/components/editor/nodes/embeds/tweet-node.tsx","../src/components/editor/nodes/embeds/youtube-node.tsx","../src/components/editor/nodes/emoji-node.tsx","../src/components/editor/nodes/equation-node.tsx","../src/components/editor/nodes/excalidraw-node.tsx","../src/components/editor/nodes/image-node.tsx","../src/components/editor/nodes/inline-image-node.tsx","../src/components/editor/nodes/keyword-node.tsx","../src/components/editor/nodes/layout-container-node.tsx","../src/components/editor/nodes/layout-item-node.tsx","../src/components/editor/nodes/mention-node.ts","../src/components/editor/nodes/page-break-node.tsx","../src/components/editor/nodes/poll-node.tsx","../src/components/blocks/editor-x/nodes.ts","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoFocusPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalCheckListPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalClickableLinkPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalErrorBoundary.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalTextEntity.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHashtagPlugin.prod.mjs","../node_modules/.pnpm/@lexical+history@0.30.0/node_modules/@lexical/history/LexicalHistory.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHistoryPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHorizontalRulePlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalListPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalMarkdownShortcutPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalEditable.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalRichTextPlugin.prod.mjs","../node_modules/.pnpm/@lexical+dragon@0.30.0/node_modules/@lexical/dragon/LexicalDragon.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTabIndentationPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTablePlugin.prod.mjs","../src/components/ui/separator.tsx","../src/components/editor/context/toolbar-context.tsx","../src/components/editor/editor-hooks/use-update-toolbar.ts","../src/components/editor/plugins/toolbar/block-format/block-format-data.tsx","../utils/cn.ts","../components/Button.tsx","../components/Tooltip.tsx","../components/Select.tsx","../src/components/editor/plugins/toolbar/block-format-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/block-format/format-bulleted-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-check-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-code-block.tsx","../src/components/editor/plugins/toolbar/block-format/format-heading.tsx","../src/components/editor/plugins/toolbar/block-format/format-numbered-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-paragraph.tsx","../src/components/editor/plugins/toolbar/block-format/format-quote.tsx","../components/Dialog.tsx","../src/components/editor/editor-hooks/use-modal.tsx","../src/components/editor/plugins/toolbar/block-insert-plugin.tsx","../src/components/editor/plugins/collapsible-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-collapsible-container.tsx","../src/components/ui/select.tsx","../src/components/editor/plugins/layout-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-columns-layout.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalNodeMenuPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoEmbedPlugin.prod.mjs","../src/components/ui/command.tsx","../src/components/ui/input.tsx","../src/components/ui/popover.tsx","../src/components/editor/plugins/embeds/figma-plugin.tsx","../src/components/editor/plugins/embeds/twitter-plugin.tsx","../src/components/editor/plugins/embeds/youtube-plugin.tsx","../src/components/editor/plugins/embeds/auto-embed-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-embeds.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-horizontal-rule.tsx","../src/components/ui/label.tsx","../src/components/ui/tabs.tsx","../src/components/editor/plugins/images-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-image.tsx","../src/components/ui/checkbox.tsx","../src/components/editor/plugins/inline-image-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-inline-image.tsx","../src/components/editor/plugins/page-break-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-page-break.tsx","../src/components/editor/plugins/poll-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-poll.tsx","../src/components/editor/plugins/table-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-table.tsx","../src/components/editor/plugins/toolbar/clear-formatting-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/code-language-toolbar-plugin.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/editor/utils/get-selected-node.ts","../src/components/editor/plugins/toolbar/element-format-toolbar-plugin.tsx","../src/components/editor/editor-ui/colorpicker.tsx","../src/components/editor/plugins/toolbar/font-background-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-color-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-family-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-format-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-size-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/history-toolbar-plugin.tsx","../src/components/editor/utils/url.ts","../src/components/editor/plugins/toolbar/link-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/subsuper-toolbar-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoLinkPlugin.prod.mjs","../src/components/editor/plugins/auto-link-plugin.tsx","../src/components/editor/editor-hooks/use-debounce.ts","../src/components/editor/editor-ui/code-button.tsx","../src/components/editor/plugins/code-action-menu-plugin.tsx","../src/components/editor/plugins/code-highlight-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTypeaheadMenuPlugin.prod.mjs","../src/components/editor/plugins/component-picker-menu-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalContextMenuPlugin.prod.mjs","../src/components/editor/plugins/context-menu-plugin.tsx","../src/components/editor/plugins/drag-drop-paste-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalDraggableBlockPlugin.prod.mjs","../src/components/editor/plugins/draggable-block-plugin.tsx","../src/components/editor/plugins/emoji-picker-plugin.tsx","../src/components/editor/plugins/emojis-plugin.tsx","../src/components/ui/button.tsx","../src/components/ui/textarea.tsx","../src/components/editor/editor-ui/katex-renderer.tsx","../src/components/editor/editor-ui/katex-equation-alterer.tsx","../src/components/editor/plugins/equations-plugin.tsx","../src/components/editor/editor-ui/excalidraw-modal.tsx","../src/components/editor/plugins/excalidraw-plugin.tsx","../src/components/editor/utils/set-floating-elem-position-for-link-editor.ts","../src/components/editor/plugins/floating-link-editor-plugin.tsx","../src/components/editor/plugins/floating-text-format-plugin.tsx","../src/components/editor/utils/get-dom-range-rect.ts","../src/components/editor/utils/set-floating-elem-position.ts","../src/components/editor/plugins/keywords-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalLinkPlugin.prod.mjs","../src/components/editor/plugins/link-plugin.tsx","../src/components/editor/plugins/list-max-indent-level-plugin.tsx","../src/components/editor/plugins/mentions-plugin.tsx","../src/components/editor/plugins/tab-focus-plugin.tsx","../src/components/editor/plugins/table-action-menu-plugin.tsx","../src/components/editor/plugins/table-cell-resizer-plugin.tsx","../src/components/editor/plugins/table-hover-actions-plugin.tsx","../src/components/editor/plugins/toolbar/toolbar-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalContentEditable.prod.mjs","../src/components/editor/editor-ui/content-editable.tsx","../src/components/editor/plugins/picker/component-picker-option.tsx","../src/components/editor/plugins/picker/alignment-picker-plugin.tsx","../src/components/editor/plugins/picker/heading-picker-plugin.tsx","../src/components/editor/plugins/picker/table-picker-plugin.tsx","../src/components/editor/plugins/picker/embeds-picker-plugin.tsx","../src/components/editor/utils/emoji-list.ts","../src/components/editor/transformers/markdown-emoji-transformer.ts","../src/components/editor/transformers/markdown-equation-transofrmer.ts","../src/components/editor/transformers/markdown-hr-transformer.ts","../src/components/editor/transformers/markdown-image-transformer.ts","../src/components/editor/transformers/markdown-tweet-transformer.ts","../src/components/editor/transformers/markdown-table-transformer.ts","../src/components/blocks/editor-x/plugins.tsx","../src/components/editor/plugins/picker/paragraph-picker-plugin.tsx","../src/components/editor/plugins/picker/check-list-picker-plugin.tsx","../src/components/editor/plugins/picker/numbered-list-picker-plugin.tsx","../src/components/editor/plugins/picker/bulleted-list-picker-plugin.tsx","../src/components/editor/plugins/picker/quote-picker-plugin.tsx","../src/components/editor/plugins/picker/code-picker-plugin.tsx","../src/components/editor/plugins/picker/divider-picker-plugin.tsx","../src/components/editor/plugins/picker/page-break-picker-plugin.tsx","../src/components/editor/plugins/picker/poll-picker-plugin.tsx","../src/components/editor/plugins/picker/equation-picker-plugin.tsx","../src/components/editor/plugins/picker/image-picker-plugin.tsx","../src/components/editor/plugins/picker/collapsible-picker-plugin.tsx","../src/components/editor/plugins/picker/columns-layout-picker-plugin.tsx","../src/components/blocks/editor-x/editor.tsx","../src/components/editor/themes/editor-theme.ts","../src/components/blocks/editor-x/editor-client.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createContext as n,useContext as e}from\"react\";const r=n(null);function t(n,e){let r=null;return null!=n&&(r=n[1]),{getTheme:function(){return null!=e?e:null!=r?r.getTheme():null}}}function o(){const n=e(r);return null==n&&function(n,...e){const r=new URL(\"https://lexical.dev/docs/error\"),t=new URLSearchParams;t.append(\"code\",n);for(const n of e)t.append(\"v\",n);throw r.search=t.toString(),Error(`Minified Lexical error #${n}; visit ${r.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(8),n}export{r as LexicalComposerContext,t as createLexicalComposerContext,o as useLexicalComposerContext};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createLexicalComposerContext as e,LexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEditor as o,$getRoot as n,$createParagraphNode as i,$getSelection as r}from\"lexical\";import{useLayoutEffect as a,useEffect as c,useMemo as l}from\"react\";import{jsx as d}from\"react/jsx-runtime\";const s=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,m=s?a:c,u={tag:\"history-merge\"};function p({initialConfig:a,children:c}){const p=l((()=>{const{theme:t,namespace:c,nodes:l,onError:d,editorState:m,html:p}=a,f=e(null,t),E=o({editable:a.editable,html:p,namespace:c,nodes:l,onError:e=>d(e,E),theme:t});return function(e,t){if(null===t)return;if(void 0===t)e.update((()=>{const t=n();if(t.isEmpty()){const o=i();t.append(o);const n=s?document.activeElement:null;(null!==r()||null!==n&&n===e.getRootElement())&&o.select()}}),u);else if(null!==t)switch(typeof t){case\"string\":{const o=e.parseEditorState(t);e.setEditorState(o,u);break}case\"object\":e.setEditorState(t,u);break;case\"function\":e.update((()=>{n().isEmpty()&&t(e)}),u)}}(E,m),[E,f]}),[]);return m((()=>{const e=a.editable,[t]=p;t.setEditable(void 0===e||e)}),[]),d(t.Provider,{value:p,children:c})}export{p as LexicalComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as o}from\"react\";const r=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:o;function i({ignoreHistoryMergeTagChange:t=!0,ignoreSelectionChange:o=!1,onChange:i}){const[n]=e();return r((()=>{if(i)return n.registerUpdateListener((({editorState:e,dirtyElements:r,dirtyLeaves:a,prevEditorState:d,tags:s})=>{o&&0===r.size&&0===a.size||t&&s.has(\"history-merge\")||d.isEmpty()||i(e,n,s)}))}),[n,t,o,i]),null}export{i as OnChangePlugin};\n","import { createContext, useContext, useState } from 'react'\n\nconst Context = createContext<{\n isLinkEditMode: boolean\n setIsLinkEditMode: (isLinkEditMode: boolean) => void\n}>({\n isLinkEditMode: false,\n setIsLinkEditMode: () => {},\n})\n\nexport function FloatingLinkContext({\n children,\n}: {\n children: React.ReactNode\n}) {\n const [isLinkEditMode, setIsLinkEditMode] = useState<boolean>(false)\n\n return (\n <Context.Provider value={{ isLinkEditMode, setIsLinkEditMode }}>\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFloatingLinkContext() {\n if (!Context) {\n throw new Error(\n 'useFloatingLinkContext must be used within a FloatingLinkContext'\n )\n }\n return useContext(Context)\n}\n","import {\n ReactNode,\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\ntype Suggestion = null | string;\ntype CallbackFn = (newSuggestion: Suggestion) => void;\ntype SubscribeFn = (callbackFn: CallbackFn) => () => void;\ntype PublishFn = (newSuggestion: Suggestion) => void;\ntype ContextShape = [SubscribeFn, PublishFn];\ntype HookShape = [suggestion: Suggestion, setSuggestion: PublishFn];\n\nconst Context: React.Context<ContextShape> = createContext([\n (_cb) => () => {\n return;\n },\n (_newSuggestion: Suggestion) => {\n return;\n },\n]);\n\nexport function SharedAutocompleteContext({\n children,\n}: {\n children: ReactNode;\n}) {\n const context: ContextShape = useMemo(() => {\n let suggestion: Suggestion | null = null;\n const listeners: Set<CallbackFn> = new Set();\n return [\n (cb: (newSuggestion: Suggestion) => void) => {\n cb(suggestion);\n listeners.add(cb);\n return () => {\n listeners.delete(cb);\n };\n },\n (newSuggestion: Suggestion) => {\n suggestion = newSuggestion;\n for (const listener of Array.from(listeners)) {\n listener(newSuggestion);\n }\n },\n ];\n }, []);\n return <Context.Provider value={context}>{children}</Context.Provider>;\n}\n\nexport const useSharedAutocompleteContext = (): HookShape => {\n const [subscribe, publish]: ContextShape = useContext(Context);\n const [suggestion, setSuggestion] = useState<Suggestion>(null);\n useEffect(() => {\n return subscribe((newSuggestion: Suggestion) => {\n setSuggestion(newSuggestion);\n });\n }, [subscribe]);\n return [suggestion, publish];\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","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-background-system-body-tertiary text-content-system-global-primary animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-background-system-body-tertiary fill-background-system-body-tertiary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$getSelection as t,$isNodeSelection as r,$createNodeSelection as o,$setSelection as n,$getNodeByKey as c}from\"lexical\";import{useState as a,useEffect as i,useCallback as l}from\"react\";function d(e,t){return e.getEditorState().read((()=>{const e=c(t);return null!==e&&e.isSelected()}))}function u(c){const[u]=e(),[p,s]=a((()=>d(u,c)));i((()=>{let e=!0;const t=u.registerUpdateListener((()=>{e&&s(d(u,c))}));return()=>{e=!1,t()}}),[u,c]);return[p,l((e=>{u.update((()=>{let a=t();r(a)||(a=o(),n(a)),r(a)&&(e?a.add(c):a.delete(c))}))}),[u,c]),l((()=>{u.update((()=>{const e=t();r(e)&&e.clear()}))}),[u])]}export{u as useLexicalNodeSelection};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLexicalNodeSelection as t}from\"@lexical/react/useLexicalNodeSelection\";import{addClassNamesToElement as r,mergeRegister as n,removeClassNamesFromElement as o}from\"@lexical/utils\";import{createCommand as c,DecoratorNode as i,$applyNodeReplacement as u,CLICK_COMMAND as l,COMMAND_PRIORITY_LOW as m}from\"lexical\";import{useEffect as a}from\"react\";import{jsx as s}from\"react/jsx-runtime\";const p=c(\"INSERT_HORIZONTAL_RULE_COMMAND\");function d({nodeKey:c}){const[i]=e(),[u,s,p]=t(c);return a((()=>n(i.registerCommand(l,(e=>{const t=i.getElementByKey(c);return e.target===t&&(e.shiftKey||p(),s(!u),!0)}),m))),[p,i,u,c,s]),a((()=>{const e=i.getElementByKey(c),t=i._config.theme.hrSelected??\"selected\";null!==e&&(u?r(e,t):o(e,t))}),[i,u,c]),null}class f extends i{static getType(){return\"horizontalrule\"}static clone(e){return new f(e.__key)}static importJSON(e){return y().updateFromJSON(e)}static importDOM(){return{hr:()=>({conversion:x,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(e){const t=document.createElement(\"hr\");return r(t,e.theme.hr),t}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}decorate(){return s(d,{nodeKey:this.__key})}}function x(){return{node:y()}}function y(){return u(new f)}function h(e){return e instanceof f}export{y as $createHorizontalRuleNode,h as $isHorizontalRuleNode,f as HorizontalRuleNode,p as INSERT_HORIZONTAL_RULE_COMMAND};\n","type Force = [number, number]\ntype Listener = (force: Force, e: TouchEvent) => void\ntype ElementValues = {\n start: null | Force\n listeners: Set<Listener>\n handleTouchstart: (e: TouchEvent) => void\n handleTouchend: (e: TouchEvent) => void\n}\n\nconst elements = new WeakMap<HTMLElement, ElementValues>()\n\nfunction readTouch(e: TouchEvent): [number, number] | null {\n const touch = e.changedTouches[0]\n if (touch === undefined) {\n return null\n }\n return [touch.clientX, touch.clientY]\n}\n\nfunction addListener(element: HTMLElement, cb: Listener): () => void {\n let elementValues = elements.get(element)\n if (elementValues === undefined) {\n const listeners = new Set<Listener>()\n const handleTouchstart = (e: TouchEvent) => {\n if (elementValues !== undefined) {\n elementValues.start = readTouch(e)\n }\n }\n const handleTouchend = (e: TouchEvent) => {\n if (elementValues === undefined) {\n return\n }\n const start = elementValues.start\n if (start === null) {\n return\n }\n const end = readTouch(e)\n for (const listener of Array.from(listeners)) {\n if (end !== null) {\n listener([end[0] - start[0], end[1] - start[1]], e)\n }\n }\n }\n element.addEventListener('touchstart', handleTouchstart)\n element.addEventListener('touchend', handleTouchend)\n\n elementValues = {\n handleTouchend,\n handleTouchstart,\n listeners,\n start: null,\n }\n elements.set(element, elementValues)\n }\n elementValues.listeners.add(cb)\n return () => deleteListener(element, cb)\n}\n\nfunction deleteListener(element: HTMLElement, cb: Listener): void {\n const elementValues = elements.get(element)\n if (elementValues === undefined) {\n return\n }\n const listeners = elementValues.listeners\n listeners.delete(cb)\n if (listeners.size === 0) {\n elements.delete(element)\n element.removeEventListener('touchstart', elementValues.handleTouchstart)\n element.removeEventListener('touchend', elementValues.handleTouchend)\n }\n}\n\nexport function addSwipeLeftListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x < 0 && -x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeRightListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x > 0 && x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeUpListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y < 0 && -y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeDownListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y > 0 && y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport type { BaseSelection, NodeKey } from \"lexical\";\nimport {\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n $setSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_RIGHT_COMMAND,\n KEY_TAB_COMMAND,\n} from \"lexical\";\n\nimport { useSharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport {\n $createAutocompleteNode,\n AutocompleteNode,\n} from \"@/components/editor/nodes/autocomplete-node\";\n\nimport { addSwipeRightListener } from \"@/components/editor/utils/swipe\";\n\ntype SearchPromise = {\n dismiss: () => void;\n promise: Promise<null | string>;\n};\n\nexport const uuid = Math.random()\n .toString(36)\n .replace(/[^a-z]+/g, \"\")\n .substr(0, 5);\n\n// TODO lookup should be custom\nfunction $search(selection: null | BaseSelection): [boolean, string] {\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return [false, \"\"];\n }\n const node = selection.getNodes()[0];\n const anchor = selection.anchor;\n // Check siblings?\n if (!$isTextNode(node) || !node.isSimpleText() || !$isAtNodeEnd(anchor)) {\n return [false, \"\"];\n }\n const word = [];\n const text = node.getTextContent();\n let i = node.getTextContentSize();\n let c;\n while (i-- && i >= 0 && (c = text[i]) !== \" \") {\n word.push(c);\n }\n if (word.length === 0) {\n return [false, \"\"];\n }\n return [true, word.reverse().join(\"\")];\n}\n\n// TODO query should be custom\nfunction useQuery(): (searchText: string) => SearchPromise {\n return useCallback((searchText: string) => {\n const server = new AutocompleteServer();\n console.time(\"query\");\n const response = server.query(searchText);\n console.timeEnd(\"query\");\n return response;\n }, []);\n}\n\nexport function AutocompletePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const [, setSuggestion] = useSharedAutocompleteContext();\n const query = useQuery();\n\n useEffect(() => {\n let autocompleteNodeKey: null | NodeKey = null;\n let lastMatch: null | string = null;\n let lastSuggestion: null | string = null;\n let searchPromise: null | SearchPromise = null;\n function $clearSuggestion() {\n const autocompleteNode =\n autocompleteNodeKey !== null\n ? $getNodeByKey(autocompleteNodeKey)\n : null;\n if (autocompleteNode !== null && autocompleteNode.isAttached()) {\n autocompleteNode.remove();\n autocompleteNodeKey = null;\n }\n if (searchPromise !== null) {\n searchPromise.dismiss();\n searchPromise = null;\n }\n lastMatch = null;\n lastSuggestion = null;\n setSuggestion(null);\n }\n function updateAsyncSuggestion(\n refSearchPromise: SearchPromise,\n newSuggestion: null | string\n ) {\n if (searchPromise !== refSearchPromise || newSuggestion === null) {\n // Outdated or no suggestion\n return;\n }\n editor.update(\n () => {\n const selection = $getSelection();\n const [hasMatch, match] = $search(selection);\n if (\n !hasMatch ||\n match !== lastMatch ||\n !$isRangeSelection(selection)\n ) {\n // Outdated\n return;\n }\n const selectionCopy = selection.clone();\n const node = $createAutocompleteNode(uuid);\n autocompleteNodeKey = node.getKey();\n selection.insertNodes([node]);\n $setSelection(selectionCopy);\n lastSuggestion = newSuggestion;\n setSuggestion(newSuggestion);\n },\n { tag: \"history-merge\" }\n );\n }\n\n function $handleAutocompleteNodeTransform(node: AutocompleteNode) {\n const key = node.getKey();\n if (node.__uuid === uuid && key !== autocompleteNodeKey) {\n // Max one Autocomplete node per session\n $clearSuggestion();\n }\n }\n function handleUpdate() {\n editor.update(() => {\n const selection = $getSelection();\n const [hasMatch, match] = $search(selection);\n if (!hasMatch) {\n $clearSuggestion();\n return;\n }\n if (match === lastMatch) {\n return;\n }\n $clearSuggestion();\n searchPromise = query(match);\n searchPromise.promise\n .then((newSuggestion) => {\n if (searchPromise !== null) {\n updateAsyncSuggestion(searchPromise, newSuggestion);\n }\n })\n .catch(() => {\n // console.error(e)\n });\n lastMatch = match;\n });\n }\n function $handleAutocompleteIntent(): boolean {\n if (lastSuggestion === null || autocompleteNodeKey === null) {\n return false;\n }\n const autocompleteNode = $getNodeByKey(autocompleteNodeKey);\n if (autocompleteNode === null) {\n return false;\n }\n const textNode = $createTextNode(lastSuggestion);\n autocompleteNode.replace(textNode);\n textNode.selectNext();\n $clearSuggestion();\n return true;\n }\n function $handleKeypressCommand(e: Event) {\n if ($handleAutocompleteIntent()) {\n e.preventDefault();\n return true;\n }\n return false;\n }\n function handleSwipeRight(_force: number, e: TouchEvent) {\n editor.update(() => {\n if ($handleAutocompleteIntent()) {\n e.preventDefault();\n }\n });\n }\n function unmountSuggestion() {\n editor.update(() => {\n $clearSuggestion();\n });\n }\n\n const rootElem = editor.getRootElement();\n\n return mergeRegister(\n editor.registerNodeTransform(\n AutocompleteNode,\n $handleAutocompleteNodeTransform\n ),\n editor.registerUpdateListener(handleUpdate),\n editor.registerCommand(\n KEY_TAB_COMMAND,\n $handleKeypressCommand,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_RIGHT_COMMAND,\n $handleKeypressCommand,\n COMMAND_PRIORITY_LOW\n ),\n ...(rootElem !== null\n ? [addSwipeRightListener(rootElem, handleSwipeRight)]\n : []),\n unmountSuggestion\n );\n }, [editor, query, setSuggestion]);\n\n return null;\n}\n\n/*\n * Simulate an asynchronous autocomplete server (typical in more common use cases like GMail where\n * the data is not static).\n */\nclass AutocompleteServer {\n DATABASE = DICTIONARY;\n LATENCY = 200;\n\n query = (searchText: string): SearchPromise => {\n let isDismissed = false;\n\n const dismiss = () => {\n isDismissed = true;\n };\n const promise: Promise<null | string> = new Promise((resolve, reject) => {\n setTimeout(() => {\n if (isDismissed) {\n // TODO cache result\n return reject(\"Dismissed\");\n }\n const searchTextLength = searchText.length;\n if (searchText === \"\" || searchTextLength < 4) {\n return resolve(null);\n }\n const char0 = searchText.charCodeAt(0);\n const isCapitalized = char0 >= 65 && char0 <= 90;\n const caseInsensitiveSearchText = isCapitalized\n ? String.fromCharCode(char0 + 32) + searchText.substring(1)\n : searchText;\n const match = this.DATABASE.find(\n (dictionaryWord) =>\n dictionaryWord.startsWith(caseInsensitiveSearchText) ?? null\n );\n if (match === undefined) {\n return resolve(null);\n }\n const matchCapitalized = isCapitalized\n ? String.fromCharCode(match.charCodeAt(0) - 32) + match.substring(1)\n : match;\n const autocompleteChunk = matchCapitalized.substring(searchTextLength);\n if (autocompleteChunk === \"\") {\n return resolve(null);\n }\n return resolve(autocompleteChunk);\n }, this.LATENCY);\n });\n\n return {\n dismiss,\n promise,\n };\n };\n}\n\n// https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-usa-no-swears-long.txt\nconst DICTIONARY = [\n \"information\",\n \"available\",\n \"copyright\",\n \"university\",\n \"management\",\n \"international\",\n \"development\",\n \"education\",\n \"community\",\n \"technology\",\n \"following\",\n \"resources\",\n \"including\",\n \"directory\",\n \"government\",\n \"department\",\n \"description\",\n \"insurance\",\n \"different\",\n \"categories\",\n \"conditions\",\n \"accessories\",\n \"september\",\n \"questions\",\n \"application\",\n \"financial\",\n \"equipment\",\n \"performance\",\n \"experience\",\n \"important\",\n \"activities\",\n \"additional\",\n \"something\",\n \"professional\",\n \"committee\",\n \"washington\",\n \"california\",\n \"reference\",\n \"companies\",\n \"computers\",\n \"president\",\n \"australia\",\n \"discussion\",\n \"entertainment\",\n \"agreement\",\n \"marketing\",\n \"association\",\n \"collection\",\n \"solutions\",\n \"electronics\",\n \"technical\",\n \"microsoft\",\n \"conference\",\n \"environment\",\n \"statement\",\n \"downloads\",\n \"applications\",\n \"requirements\",\n \"individual\",\n \"subscribe\",\n \"everything\",\n \"production\",\n \"commercial\",\n \"advertising\",\n \"treatment\",\n \"newsletter\",\n \"knowledge\",\n \"currently\",\n \"construction\",\n \"registered\",\n \"protection\",\n \"engineering\",\n \"published\",\n \"corporate\",\n \"customers\",\n \"materials\",\n \"countries\",\n \"standards\",\n \"political\",\n \"advertise\",\n \"environmental\",\n \"availability\",\n \"employment\",\n \"commission\",\n \"administration\",\n \"institute\",\n \"sponsored\",\n \"electronic\",\n \"condition\",\n \"effective\",\n \"organization\",\n \"selection\",\n \"corporation\",\n \"executive\",\n \"necessary\",\n \"according\",\n \"particular\",\n \"facilities\",\n \"opportunities\",\n \"appropriate\",\n \"statistics\",\n \"investment\",\n \"christmas\",\n \"registration\",\n \"furniture\",\n \"wednesday\",\n \"structure\",\n \"distribution\",\n \"industrial\",\n \"potential\",\n \"responsible\",\n \"communications\",\n \"associated\",\n \"foundation\",\n \"documents\",\n \"communication\",\n \"independent\",\n \"operating\",\n \"developed\",\n \"telephone\",\n \"population\",\n \"navigation\",\n \"operations\",\n \"therefore\",\n \"christian\",\n \"understand\",\n \"publications\",\n \"worldwide\",\n \"connection\",\n \"publisher\",\n \"introduction\",\n \"properties\",\n \"accommodation\",\n \"excellent\",\n \"opportunity\",\n \"assessment\",\n \"especially\",\n \"interface\",\n \"operation\",\n \"restaurants\",\n \"beautiful\",\n \"locations\",\n \"significant\",\n \"technologies\",\n \"manufacturer\",\n \"providing\",\n \"authority\",\n \"considered\",\n \"programme\",\n \"enterprise\",\n \"educational\",\n \"employees\",\n \"alternative\",\n \"processing\",\n \"responsibility\",\n \"resolution\",\n \"publication\",\n \"relations\",\n \"photography\",\n \"components\",\n \"assistance\",\n \"completed\",\n \"organizations\",\n \"otherwise\",\n \"transportation\",\n \"disclaimer\",\n \"membership\",\n \"recommended\",\n \"background\",\n \"character\",\n \"maintenance\",\n \"functions\",\n \"trademarks\",\n \"phentermine\",\n \"submitted\",\n \"television\",\n \"interested\",\n \"throughout\",\n \"established\",\n \"programming\",\n \"regarding\",\n \"instructions\",\n \"increased\",\n \"understanding\",\n \"beginning\",\n \"associates\",\n \"instruments\",\n \"businesses\",\n \"specified\",\n \"restaurant\",\n \"procedures\",\n \"relationship\",\n \"traditional\",\n \"sometimes\",\n \"themselves\",\n \"transport\",\n \"interesting\",\n \"evaluation\",\n \"implementation\",\n \"galleries\",\n \"references\",\n \"presented\",\n \"literature\",\n \"respective\",\n \"definition\",\n \"secretary\",\n \"networking\",\n \"australian\",\n \"magazines\",\n \"francisco\",\n \"individuals\",\n \"guidelines\",\n \"installation\",\n \"described\",\n \"attention\",\n \"difference\",\n \"regulations\",\n \"certificate\",\n \"directions\",\n \"documentation\",\n \"automotive\",\n \"successful\",\n \"communities\",\n \"situation\",\n \"publishing\",\n \"emergency\",\n \"developing\",\n \"determine\",\n \"temperature\",\n \"announcements\",\n \"historical\",\n \"ringtones\",\n \"difficult\",\n \"scientific\",\n \"satellite\",\n \"particularly\",\n \"functional\",\n \"monitoring\",\n \"architecture\",\n \"recommend\",\n \"dictionary\",\n \"accounting\",\n \"manufacturing\",\n \"professor\",\n \"generally\",\n \"continued\",\n \"techniques\",\n \"permission\",\n \"generation\",\n \"component\",\n \"guarantee\",\n \"processes\",\n \"interests\",\n \"paperback\",\n \"classifieds\",\n \"supported\",\n \"competition\",\n \"providers\",\n \"characters\",\n \"thousands\",\n \"apartments\",\n \"generated\",\n \"administrative\",\n \"practices\",\n \"reporting\",\n \"essential\",\n \"affiliate\",\n \"immediately\",\n \"designated\",\n \"integrated\",\n \"configuration\",\n \"comprehensive\",\n \"universal\",\n \"presentation\",\n \"languages\",\n \"compliance\",\n \"improvement\",\n \"pennsylvania\",\n \"challenge\",\n \"acceptance\",\n \"strategies\",\n \"affiliates\",\n \"multimedia\",\n \"certified\",\n \"computing\",\n \"interactive\",\n \"procedure\",\n \"leadership\",\n \"religious\",\n \"breakfast\",\n \"developer\",\n \"approximately\",\n \"recommendations\",\n \"comparison\",\n \"automatically\",\n \"minnesota\",\n \"adventure\",\n \"institutions\",\n \"assistant\",\n \"advertisement\",\n \"headlines\",\n \"yesterday\",\n \"determined\",\n \"wholesale\",\n \"extension\",\n \"statements\",\n \"completely\",\n \"electrical\",\n \"applicable\",\n \"manufacturers\",\n \"classical\",\n \"dedicated\",\n \"direction\",\n \"basketball\",\n \"wisconsin\",\n \"personnel\",\n \"identified\",\n \"professionals\",\n \"advantage\",\n \"newsletters\",\n \"estimated\",\n \"anonymous\",\n \"miscellaneous\",\n \"integration\",\n \"interview\",\n \"framework\",\n \"installed\",\n \"massachusetts\",\n \"associate\",\n \"frequently\",\n \"discussions\",\n \"laboratory\",\n \"destination\",\n \"intelligence\",\n \"specifications\",\n \"tripadvisor\",\n \"residential\",\n \"decisions\",\n \"industries\",\n \"partnership\",\n \"editorial\",\n \"expression\",\n \"provisions\",\n \"principles\",\n \"suggestions\",\n \"replacement\",\n \"strategic\",\n \"economics\",\n \"compatible\",\n \"apartment\",\n \"netherlands\",\n \"consulting\",\n \"recreation\",\n \"participants\",\n \"favorites\",\n \"translation\",\n \"estimates\",\n \"protected\",\n \"philadelphia\",\n \"officials\",\n \"contained\",\n \"legislation\",\n \"parameters\",\n \"relationships\",\n \"tennessee\",\n \"representative\",\n \"frequency\",\n \"introduced\",\n \"departments\",\n \"residents\",\n \"displayed\",\n \"performed\",\n \"administrator\",\n \"addresses\",\n \"permanent\",\n \"agriculture\",\n \"constitutes\",\n \"portfolio\",\n \"practical\",\n \"delivered\",\n \"collectibles\",\n \"infrastructure\",\n \"exclusive\",\n \"originally\",\n \"utilities\",\n \"philosophy\",\n \"regulation\",\n \"reduction\",\n \"nutrition\",\n \"recording\",\n \"secondary\",\n \"wonderful\",\n \"announced\",\n \"prevention\",\n \"mentioned\",\n \"automatic\",\n \"healthcare\",\n \"maintained\",\n \"increasing\",\n \"connected\",\n \"directors\",\n \"participation\",\n \"containing\",\n \"combination\",\n \"amendment\",\n \"guaranteed\",\n \"libraries\",\n \"distributed\",\n \"singapore\",\n \"enterprises\",\n \"convention\",\n \"principal\",\n \"certification\",\n \"previously\",\n \"buildings\",\n \"household\",\n \"batteries\",\n \"positions\",\n \"subscription\",\n \"contemporary\",\n \"panasonic\",\n \"permalink\",\n \"signature\",\n \"provision\",\n \"certainly\",\n \"newspaper\",\n \"liability\",\n \"trademark\",\n \"trackback\",\n \"americans\",\n \"promotion\",\n \"conversion\",\n \"reasonable\",\n \"broadband\",\n \"influence\",\n \"importance\",\n \"webmaster\",\n \"prescription\",\n \"specifically\",\n \"represent\",\n \"conservation\",\n \"louisiana\",\n \"javascript\",\n \"marketplace\",\n \"evolution\",\n \"certificates\",\n \"objectives\",\n \"suggested\",\n \"concerned\",\n \"structures\",\n \"encyclopedia\",\n \"continuing\",\n \"interracial\",\n \"competitive\",\n \"suppliers\",\n \"preparation\",\n \"receiving\",\n \"accordance\",\n \"discussed\",\n \"elizabeth\",\n \"reservations\",\n \"playstation\",\n \"instruction\",\n \"annotation\",\n \"differences\",\n \"establish\",\n \"expressed\",\n \"paragraph\",\n \"mathematics\",\n \"compensation\",\n \"conducted\",\n \"percentage\",\n \"mississippi\",\n \"requested\",\n \"connecticut\",\n \"personals\",\n \"immediate\",\n \"agricultural\",\n \"supporting\",\n \"collections\",\n \"participate\",\n \"specialist\",\n \"experienced\",\n \"investigation\",\n \"institution\",\n \"searching\",\n \"proceedings\",\n \"transmission\",\n \"characteristics\",\n \"experiences\",\n \"extremely\",\n \"verzeichnis\",\n \"contracts\",\n \"concerning\",\n \"developers\",\n \"equivalent\",\n \"chemistry\",\n \"neighborhood\",\n \"variables\",\n \"continues\",\n \"curriculum\",\n \"psychology\",\n \"responses\",\n \"circumstances\",\n \"identification\",\n \"appliances\",\n \"elementary\",\n \"unlimited\",\n \"printable\",\n \"enforcement\",\n \"hardcover\",\n \"celebrity\",\n \"chocolate\",\n \"hampshire\",\n \"bluetooth\",\n \"controlled\",\n \"requirement\",\n \"authorities\",\n \"representatives\",\n \"pregnancy\",\n \"biography\",\n \"attractions\",\n \"transactions\",\n \"authorized\",\n \"retirement\",\n \"financing\",\n \"efficiency\",\n \"efficient\",\n \"commitment\",\n \"specialty\",\n \"interviews\",\n \"qualified\",\n \"discovery\",\n \"classified\",\n \"confidence\",\n \"lifestyle\",\n \"consistent\",\n \"clearance\",\n \"connections\",\n \"inventory\",\n \"converter\",\n \"organisation\",\n \"objective\",\n \"indicated\",\n \"securities\",\n \"volunteer\",\n \"democratic\",\n \"switzerland\",\n \"parameter\",\n \"processor\",\n \"dimensions\",\n \"contribute\",\n \"challenges\",\n \"recognition\",\n \"submission\",\n \"encourage\",\n \"regulatory\",\n \"inspection\",\n \"consumers\",\n \"territory\",\n \"transaction\",\n \"manchester\",\n \"contributions\",\n \"continuous\",\n \"resulting\",\n \"cambridge\",\n \"initiative\",\n \"execution\",\n \"disability\",\n \"increases\",\n \"contractor\",\n \"examination\",\n \"indicates\",\n \"committed\",\n \"extensive\",\n \"affordable\",\n \"candidate\",\n \"databases\",\n \"outstanding\",\n \"perspective\",\n \"messenger\",\n \"tournament\",\n \"consideration\",\n \"discounts\",\n \"catalogue\",\n \"publishers\",\n \"caribbean\",\n \"reservation\",\n \"remaining\",\n \"depending\",\n \"expansion\",\n \"purchased\",\n \"performing\",\n \"collected\",\n \"absolutely\",\n \"featuring\",\n \"implement\",\n \"scheduled\",\n \"calculator\",\n \"significantly\",\n \"temporary\",\n \"sufficient\",\n \"awareness\",\n \"vancouver\",\n \"contribution\",\n \"measurement\",\n \"constitution\",\n \"packaging\",\n \"consultation\",\n \"northwest\",\n \"classroom\",\n \"democracy\",\n \"wallpaper\",\n \"merchandise\",\n \"resistance\",\n \"baltimore\",\n \"candidates\",\n \"charlotte\",\n \"biological\",\n \"transition\",\n \"preferences\",\n \"instrument\",\n \"classification\",\n \"physician\",\n \"hollywood\",\n \"wikipedia\",\n \"spiritual\",\n \"photographs\",\n \"relatively\",\n \"satisfaction\",\n \"represents\",\n \"pittsburgh\",\n \"preferred\",\n \"intellectual\",\n \"comfortable\",\n \"interaction\",\n \"listening\",\n \"effectively\",\n \"experimental\",\n \"revolution\",\n \"consolidation\",\n \"landscape\",\n \"dependent\",\n \"mechanical\",\n \"consultants\",\n \"applicant\",\n \"cooperation\",\n \"acquisition\",\n \"implemented\",\n \"directories\",\n \"recognized\",\n \"notification\",\n \"licensing\",\n \"textbooks\",\n \"diversity\",\n \"cleveland\",\n \"investments\",\n \"accessibility\",\n \"sensitive\",\n \"templates\",\n \"completion\",\n \"universities\",\n \"technique\",\n \"contractors\",\n \"subscriptions\",\n \"calculate\",\n \"alexander\",\n \"broadcast\",\n \"converted\",\n \"anniversary\",\n \"improvements\",\n \"specification\",\n \"accessible\",\n \"accessory\",\n \"typically\",\n \"representation\",\n \"arrangements\",\n \"conferences\",\n \"uniprotkb\",\n \"consumption\",\n \"birmingham\",\n \"afternoon\",\n \"consultant\",\n \"controller\",\n \"ownership\",\n \"committees\",\n \"legislative\",\n \"researchers\",\n \"unsubscribe\",\n \"molecular\",\n \"residence\",\n \"attorneys\",\n \"operators\",\n \"sustainable\",\n \"philippines\",\n \"statistical\",\n \"innovation\",\n \"employers\",\n \"definitions\",\n \"elections\",\n \"stainless\",\n \"newspapers\",\n \"hospitals\",\n \"exception\",\n \"successfully\",\n \"indonesia\",\n \"primarily\",\n \"capabilities\",\n \"recommendation\",\n \"recruitment\",\n \"organized\",\n \"improving\",\n \"expensive\",\n \"organisations\",\n \"explained\",\n \"programmes\",\n \"expertise\",\n \"mechanism\",\n \"jewellery\",\n \"eventually\",\n \"agreements\",\n \"considering\",\n \"innovative\",\n \"conclusion\",\n \"disorders\",\n \"collaboration\",\n \"detection\",\n \"formation\",\n \"engineers\",\n \"proposals\",\n \"moderator\",\n \"tutorials\",\n \"settlement\",\n \"collectables\",\n \"fantastic\",\n \"governments\",\n \"purchasing\",\n \"appointed\",\n \"operational\",\n \"corresponding\",\n \"descriptions\",\n \"determination\",\n \"animation\",\n \"productions\",\n \"telecommunications\",\n \"instructor\",\n \"approaches\",\n \"highlights\",\n \"designers\",\n \"melbourne\",\n \"scientists\",\n \"blackjack\",\n \"argentina\",\n \"possibility\",\n \"commissioner\",\n \"dangerous\",\n \"reliability\",\n \"unfortunately\",\n \"respectively\",\n \"volunteers\",\n \"attachment\",\n \"appointment\",\n \"workshops\",\n \"hurricane\",\n \"represented\",\n \"mortgages\",\n \"responsibilities\",\n \"carefully\",\n \"productivity\",\n \"investors\",\n \"underground\",\n \"diagnosis\",\n \"principle\",\n \"vacations\",\n \"calculated\",\n \"appearance\",\n \"incorporated\",\n \"notebooks\",\n \"algorithm\",\n \"valentine\",\n \"involving\",\n \"investing\",\n \"christopher\",\n \"admission\",\n \"terrorism\",\n \"parliament\",\n \"situations\",\n \"allocated\",\n \"corrections\",\n \"structural\",\n \"municipal\",\n \"describes\",\n \"disabilities\",\n \"substance\",\n \"prohibited\",\n \"addressed\",\n \"simulation\",\n \"initiatives\",\n \"concentration\",\n \"interpretation\",\n \"bankruptcy\",\n \"optimization\",\n \"substances\",\n \"discovered\",\n \"restrictions\",\n \"participating\",\n \"exhibition\",\n \"composition\",\n \"nationwide\",\n \"definitely\",\n \"existence\",\n \"commentary\",\n \"limousines\",\n \"developments\",\n \"immigration\",\n \"destinations\",\n \"necessarily\",\n \"attribute\",\n \"apparently\",\n \"surrounding\",\n \"mountains\",\n \"popularity\",\n \"postposted\",\n \"coordinator\",\n \"obviously\",\n \"fundamental\",\n \"substantial\",\n \"progressive\",\n \"championship\",\n \"sacramento\",\n \"impossible\",\n \"depression\",\n \"testimonials\",\n \"memorabilia\",\n \"cartridge\",\n \"explanation\",\n \"cincinnati\",\n \"subsection\",\n \"electricity\",\n \"permitted\",\n \"workplace\",\n \"confirmed\",\n \"wallpapers\",\n \"infection\",\n \"eligibility\",\n \"involvement\",\n \"placement\",\n \"observations\",\n \"vbulletin\",\n \"subsequent\",\n \"motorcycle\",\n \"disclosure\",\n \"establishment\",\n \"presentations\",\n \"undergraduate\",\n \"occupation\",\n \"donations\",\n \"associations\",\n \"citysearch\",\n \"radiation\",\n \"seriously\",\n \"elsewhere\",\n \"pollution\",\n \"conservative\",\n \"guestbook\",\n \"effectiveness\",\n \"demonstrate\",\n \"atmosphere\",\n \"experiment\",\n \"purchases\",\n \"federation\",\n \"assignment\",\n \"chemicals\",\n \"everybody\",\n \"nashville\",\n \"counseling\",\n \"acceptable\",\n \"satisfied\",\n \"measurements\",\n \"milwaukee\",\n \"medication\",\n \"warehouse\",\n \"shareware\",\n \"violation\",\n \"configure\",\n \"stability\",\n \"southwest\",\n \"institutional\",\n \"expectations\",\n \"independence\",\n \"metabolism\",\n \"personally\",\n \"excellence\",\n \"somewhere\",\n \"attributes\",\n \"recognize\",\n \"screening\",\n \"thumbnail\",\n \"forgotten\",\n \"intelligent\",\n \"edinburgh\",\n \"obligation\",\n \"regardless\",\n \"restricted\",\n \"republican\",\n \"merchants\",\n \"attendance\",\n \"arguments\",\n \"amsterdam\",\n \"adventures\",\n \"announcement\",\n \"appreciate\",\n \"regularly\",\n \"mechanisms\",\n \"customize\",\n \"tradition\",\n \"indicators\",\n \"emissions\",\n \"physicians\",\n \"complaint\",\n \"experiments\",\n \"afghanistan\",\n \"scholarship\",\n \"governance\",\n \"supplements\",\n \"camcorder\",\n \"implementing\",\n \"ourselves\",\n \"conversation\",\n \"capability\",\n \"producing\",\n \"precision\",\n \"contributed\",\n \"reproduction\",\n \"ingredients\",\n \"franchise\",\n \"complaints\",\n \"promotions\",\n \"rehabilitation\",\n \"maintaining\",\n \"environments\",\n \"reception\",\n \"correctly\",\n \"consequences\",\n \"geography\",\n \"appearing\",\n \"integrity\",\n \"discrimination\",\n \"processed\",\n \"implications\",\n \"functionality\",\n \"intermediate\",\n \"emotional\",\n \"platforms\",\n \"overnight\",\n \"geographic\",\n \"preliminary\",\n \"districts\",\n \"introduce\",\n \"promotional\",\n \"chevrolet\",\n \"specialists\",\n \"generator\",\n \"suspension\",\n \"correction\",\n \"authentication\",\n \"communicate\",\n \"supplement\",\n \"showtimes\",\n \"promoting\",\n \"machinery\",\n \"bandwidth\",\n \"probability\",\n \"dimension\",\n \"schedules\",\n \"admissions\",\n \"quarterly\",\n \"illustrated\",\n \"continental\",\n \"alternate\",\n \"achievement\",\n \"limitations\",\n \"automated\",\n \"passenger\",\n \"convenient\",\n \"orientation\",\n \"childhood\",\n \"flexibility\",\n \"jurisdiction\",\n \"displaying\",\n \"encouraged\",\n \"cartridges\",\n \"declaration\",\n \"automation\",\n \"advantages\",\n \"preparing\",\n \"recipient\",\n \"extensions\",\n \"athletics\",\n \"southeast\",\n \"alternatives\",\n \"determining\",\n \"personalized\",\n \"conditioning\",\n \"partnerships\",\n \"destruction\",\n \"increasingly\",\n \"migration\",\n \"basically\",\n \"conventional\",\n \"applicants\",\n \"occupational\",\n \"adjustment\",\n \"treatments\",\n \"camcorders\",\n \"difficulty\",\n \"collective\",\n \"coalition\",\n \"enrollment\",\n \"producers\",\n \"collector\",\n \"interfaces\",\n \"advertisers\",\n \"representing\",\n \"observation\",\n \"restoration\",\n \"convenience\",\n \"returning\",\n \"opposition\",\n \"container\",\n \"defendant\",\n \"confirmation\",\n \"supervisor\",\n \"peripherals\",\n \"bestsellers\",\n \"departure\",\n \"minneapolis\",\n \"interactions\",\n \"intervention\",\n \"attraction\",\n \"modification\",\n \"customized\",\n \"understood\",\n \"assurance\",\n \"happening\",\n \"amendments\",\n \"metropolitan\",\n \"compilation\",\n \"verification\",\n \"attractive\",\n \"recordings\",\n \"jefferson\",\n \"gardening\",\n \"obligations\",\n \"orchestra\",\n \"polyphonic\",\n \"outsourcing\",\n \"adjustable\",\n \"allocation\",\n \"discipline\",\n \"demonstrated\",\n \"identifying\",\n \"alphabetical\",\n \"dispatched\",\n \"installing\",\n \"voluntary\",\n \"photographer\",\n \"messaging\",\n \"constructed\",\n \"additions\",\n \"requiring\",\n \"engagement\",\n \"refinance\",\n \"calendars\",\n \"arrangement\",\n \"conclusions\",\n \"bibliography\",\n \"compatibility\",\n \"furthermore\",\n \"cooperative\",\n \"measuring\",\n \"jacksonville\",\n \"headquarters\",\n \"transfers\",\n \"transformation\",\n \"attachments\",\n \"administrators\",\n \"personality\",\n \"facilitate\",\n \"subscriber\",\n \"priorities\",\n \"bookstore\",\n \"parenting\",\n \"incredible\",\n \"commonwealth\",\n \"pharmaceutical\",\n \"manhattan\",\n \"workforce\",\n \"organizational\",\n \"portuguese\",\n \"everywhere\",\n \"discharge\",\n \"halloween\",\n \"hazardous\",\n \"methodology\",\n \"housewares\",\n \"reputation\",\n \"resistant\",\n \"democrats\",\n \"recycling\",\n \"qualifications\",\n \"slideshow\",\n \"variation\",\n \"transferred\",\n \"photograph\",\n \"distributor\",\n \"underlying\",\n \"wrestling\",\n \"photoshop\",\n \"gathering\",\n \"projection\",\n \"mathematical\",\n \"specialized\",\n \"diagnostic\",\n \"indianapolis\",\n \"corporations\",\n \"criticism\",\n \"automobile\",\n \"confidential\",\n \"statutory\",\n \"accommodations\",\n \"northeast\",\n \"downloaded\",\n \"paintings\",\n \"injection\",\n \"yorkshire\",\n \"populations\",\n \"protective\",\n \"initially\",\n \"indicator\",\n \"eliminate\",\n \"sunglasses\",\n \"preference\",\n \"threshold\",\n \"venezuela\",\n \"exploration\",\n \"sequences\",\n \"astronomy\",\n \"translate\",\n \"announces\",\n \"compression\",\n \"establishing\",\n \"constitutional\",\n \"perfectly\",\n \"instantly\",\n \"litigation\",\n \"submissions\",\n \"broadcasting\",\n \"horizontal\",\n \"terrorist\",\n \"informational\",\n \"ecommerce\",\n \"suffering\",\n \"prospective\",\n \"ultimately\",\n \"artificial\",\n \"spectacular\",\n \"coordination\",\n \"connector\",\n \"affiliated\",\n \"activation\",\n \"naturally\",\n \"subscribers\",\n \"mitsubishi\",\n \"underwear\",\n \"potentially\",\n \"constraints\",\n \"inclusive\",\n \"dimensional\",\n \"considerable\",\n \"selecting\",\n \"processors\",\n \"pantyhose\",\n \"difficulties\",\n \"complexity\",\n \"constantly\",\n \"barcelona\",\n \"presidential\",\n \"documentary\",\n \"territories\",\n \"palestinian\",\n \"legislature\",\n \"hospitality\",\n \"procurement\",\n \"theoretical\",\n \"exercises\",\n \"surveillance\",\n \"protocols\",\n \"highlight\",\n \"substitute\",\n \"inclusion\",\n \"hopefully\",\n \"brilliant\",\n \"evaluated\",\n \"assignments\",\n \"termination\",\n \"households\",\n \"authentic\",\n \"montgomery\",\n \"architectural\",\n \"louisville\",\n \"macintosh\",\n \"movements\",\n \"amenities\",\n \"virtually\",\n \"authorization\",\n \"projector\",\n \"comparative\",\n \"psychological\",\n \"surprised\",\n \"genealogy\",\n \"expenditure\",\n \"liverpool\",\n \"connectivity\",\n \"algorithms\",\n \"similarly\",\n \"collaborative\",\n \"excluding\",\n \"commander\",\n \"suggestion\",\n \"spotlight\",\n \"investigate\",\n \"connecting\",\n \"logistics\",\n \"proportion\",\n \"significance\",\n \"symposium\",\n \"essentials\",\n \"protecting\",\n \"transmitted\",\n \"screenshots\",\n \"intensive\",\n \"switching\",\n \"correspondence\",\n \"supervision\",\n \"expenditures\",\n \"separation\",\n \"testimony\",\n \"celebrities\",\n \"mandatory\",\n \"boundaries\",\n \"syndication\",\n \"celebration\",\n \"filtering\",\n \"luxembourg\",\n \"offensive\",\n \"deployment\",\n \"colleagues\",\n \"separated\",\n \"directive\",\n \"governing\",\n \"retailers\",\n \"occasionally\",\n \"attending\",\n \"recruiting\",\n \"instructional\",\n \"traveling\",\n \"permissions\",\n \"biotechnology\",\n \"prescribed\",\n \"catherine\",\n \"reproduced\",\n \"calculation\",\n \"consolidated\",\n \"occasions\",\n \"equations\",\n \"exceptional\",\n \"respondents\",\n \"considerations\",\n \"queensland\",\n \"musicians\",\n \"composite\",\n \"unavailable\",\n \"essentially\",\n \"designing\",\n \"assessments\",\n \"brunswick\",\n \"sensitivity\",\n \"preservation\",\n \"streaming\",\n \"intensity\",\n \"technological\",\n \"syndicate\",\n \"antivirus\",\n \"addressing\",\n \"discounted\",\n \"bangladesh\",\n \"constitute\",\n \"concluded\",\n \"desperate\",\n \"demonstration\",\n \"governmental\",\n \"manufactured\",\n \"graduation\",\n \"variations\",\n \"addiction\",\n \"springfield\",\n \"synthesis\",\n \"undefined\",\n \"unemployment\",\n \"enhancement\",\n \"newcastle\",\n \"performances\",\n \"societies\",\n \"brazilian\",\n \"identical\",\n \"petroleum\",\n \"norwegian\",\n \"retention\",\n \"exchanges\",\n \"soundtrack\",\n \"wondering\",\n \"profession\",\n \"separately\",\n \"physiology\",\n \"collecting\",\n \"participant\",\n \"scholarships\",\n \"recreational\",\n \"dominican\",\n \"friendship\",\n \"expanding\",\n \"provincial\",\n \"investigations\",\n \"medications\",\n \"rochester\",\n \"advertiser\",\n \"encryption\",\n \"downloadable\",\n \"sophisticated\",\n \"possession\",\n \"laboratories\",\n \"vegetables\",\n \"thumbnails\",\n \"stockings\",\n \"respondent\",\n \"destroyed\",\n \"manufacture\",\n \"wordpress\",\n \"vulnerability\",\n \"accountability\",\n \"celebrate\",\n \"accredited\",\n \"appliance\",\n \"compressed\",\n \"scheduling\",\n \"perspectives\",\n \"mortality\",\n \"christians\",\n \"therapeutic\",\n \"impressive\",\n \"accordingly\",\n \"architect\",\n \"challenging\",\n \"microwave\",\n \"accidents\",\n \"relocation\",\n \"contributors\",\n \"violations\",\n \"temperatures\",\n \"competitions\",\n \"discretion\",\n \"cosmetics\",\n \"repository\",\n \"concentrations\",\n \"christianity\",\n \"negotiations\",\n \"realistic\",\n \"generating\",\n \"christina\",\n \"congressional\",\n \"photographic\",\n \"modifications\",\n \"millennium\",\n \"achieving\",\n \"fisheries\",\n \"exceptions\",\n \"reactions\",\n \"macromedia\",\n \"companion\",\n \"divisions\",\n \"additionally\",\n \"fellowship\",\n \"victorian\",\n \"copyrights\",\n \"lithuania\",\n \"mastercard\",\n \"chronicles\",\n \"obtaining\",\n \"distribute\",\n \"decorative\",\n \"enlargement\",\n \"campaigns\",\n \"conjunction\",\n \"instances\",\n \"indigenous\",\n \"validation\",\n \"corruption\",\n \"incentives\",\n \"cholesterol\",\n \"differential\",\n \"scientist\",\n \"starsmerchant\",\n \"arthritis\",\n \"nevertheless\",\n \"practitioners\",\n \"transcript\",\n \"inflation\",\n \"compounds\",\n \"contracting\",\n \"structured\",\n \"reasonably\",\n \"graduates\",\n \"recommends\",\n \"controlling\",\n \"distributors\",\n \"arlington\",\n \"particles\",\n \"extraordinary\",\n \"indicating\",\n \"coordinate\",\n \"exclusively\",\n \"limitation\",\n \"widescreen\",\n \"illustration\",\n \"construct\",\n \"inquiries\",\n \"inspiration\",\n \"affecting\",\n \"downloading\",\n \"aggregate\",\n \"forecasts\",\n \"complicated\",\n \"shopzilla\",\n \"decorating\",\n \"expressions\",\n \"shakespeare\",\n \"connectors\",\n \"conflicts\",\n \"travelers\",\n \"offerings\",\n \"incorrect\",\n \"furnishings\",\n \"guatemala\",\n \"perception\",\n \"renaissance\",\n \"pathology\",\n \"ordinance\",\n \"photographers\",\n \"infections\",\n \"configured\",\n \"festivals\",\n \"possibilities\",\n \"contributing\",\n \"analytical\",\n \"circulation\",\n \"assumption\",\n \"jerusalem\",\n \"transexuales\",\n \"invention\",\n \"technician\",\n \"executives\",\n \"enquiries\",\n \"cognitive\",\n \"exploring\",\n \"registrar\",\n \"supporters\",\n \"withdrawal\",\n \"predicted\",\n \"saskatchewan\",\n \"cancellation\",\n \"ministers\",\n \"veterinary\",\n \"prostores\",\n \"relevance\",\n \"incentive\",\n \"butterfly\",\n \"mechanics\",\n \"numerical\",\n \"reflection\",\n \"accompanied\",\n \"invitation\",\n \"princeton\",\n \"spirituality\",\n \"meanwhile\",\n \"proprietary\",\n \"childrens\",\n \"thumbzilla\",\n \"porcelain\",\n \"pichunter\",\n \"translated\",\n \"columnists\",\n \"consensus\",\n \"delivering\",\n \"journalism\",\n \"intention\",\n \"undertaken\",\n \"statewide\",\n \"semiconductor\",\n \"illustrations\",\n \"happiness\",\n \"substantially\",\n \"identifier\",\n \"calculations\",\n \"conducting\",\n \"accomplished\",\n \"calculators\",\n \"impression\",\n \"correlation\",\n \"fragrance\",\n \"neighbors\",\n \"transparent\",\n \"charleston\",\n \"champions\",\n \"selections\",\n \"projectors\",\n \"inappropriate\",\n \"comparing\",\n \"vocational\",\n \"pharmacies\",\n \"introducing\",\n \"appreciated\",\n \"albuquerque\",\n \"distinguished\",\n \"projected\",\n \"assumptions\",\n \"shareholders\",\n \"developmental\",\n \"regulated\",\n \"anticipated\",\n \"completing\",\n \"comparable\",\n \"confusion\",\n \"copyrighted\",\n \"warranties\",\n \"documented\",\n \"paperbacks\",\n \"keyboards\",\n \"vulnerable\",\n \"reflected\",\n \"respiratory\",\n \"notifications\",\n \"transexual\",\n \"mainstream\",\n \"evaluating\",\n \"subcommittee\",\n \"maternity\",\n \"journalists\",\n \"foundations\",\n \"volleyball\",\n \"liabilities\",\n \"decreased\",\n \"tolerance\",\n \"creativity\",\n \"describing\",\n \"lightning\",\n \"quotations\",\n \"inspector\",\n \"bookmarks\",\n \"behavioral\",\n \"riverside\",\n \"bathrooms\",\n \"abilities\",\n \"initiated\",\n \"nonprofit\",\n \"lancaster\",\n \"suspended\",\n \"containers\",\n \"attitudes\",\n \"simultaneously\",\n \"integrate\",\n \"sociology\",\n \"screenshot\",\n \"exhibitions\",\n \"confident\",\n \"retrieved\",\n \"officially\",\n \"consortium\",\n \"recipients\",\n \"delicious\",\n \"traditions\",\n \"periodically\",\n \"hungarian\",\n \"referring\",\n \"transform\",\n \"educators\",\n \"vegetable\",\n \"humanities\",\n \"independently\",\n \"alignment\",\n \"henderson\",\n \"britannica\",\n \"competitors\",\n \"visibility\",\n \"consciousness\",\n \"encounter\",\n \"resolutions\",\n \"accessing\",\n \"attempted\",\n \"witnesses\",\n \"administered\",\n \"strengthen\",\n \"frederick\",\n \"aggressive\",\n \"advertisements\",\n \"sublimedirectory\",\n \"disturbed\",\n \"determines\",\n \"sculpture\",\n \"motivation\",\n \"pharmacology\",\n \"passengers\",\n \"quantities\",\n \"petersburg\",\n \"consistently\",\n \"powerpoint\",\n \"obituaries\",\n \"punishment\",\n \"appreciation\",\n \"subsequently\",\n \"providence\",\n \"restriction\",\n \"incorporate\",\n \"backgrounds\",\n \"treasurer\",\n \"lightweight\",\n \"transcription\",\n \"complications\",\n \"scripting\",\n \"remembered\",\n \"synthetic\",\n \"testament\",\n \"specifics\",\n \"partially\",\n \"wilderness\",\n \"generations\",\n \"tournaments\",\n \"sponsorship\",\n \"headphones\",\n \"proceeding\",\n \"volkswagen\",\n \"uncertainty\",\n \"breakdown\",\n \"reconstruction\",\n \"subsidiary\",\n \"strengths\",\n \"encouraging\",\n \"furnished\",\n \"terrorists\",\n \"comparisons\",\n \"beneficial\",\n \"distributions\",\n \"viewpicture\",\n \"threatened\",\n \"republicans\",\n \"discusses\",\n \"responded\",\n \"abstracts\",\n \"prediction\",\n \"pharmaceuticals\",\n \"thesaurus\",\n \"individually\",\n \"battlefield\",\n \"literally\",\n \"ecological\",\n \"appraisal\",\n \"consisting\",\n \"submitting\",\n \"citations\",\n \"geographical\",\n \"mozambique\",\n \"disclaimers\",\n \"championships\",\n \"sheffield\",\n \"finishing\",\n \"wellington\",\n \"prospects\",\n \"bulgarian\",\n \"aboriginal\",\n \"remarkable\",\n \"preventing\",\n \"productive\",\n \"boulevard\",\n \"compliant\",\n \"penalties\",\n \"imagination\",\n \"refurbished\",\n \"activated\",\n \"conferencing\",\n \"armstrong\",\n \"politicians\",\n \"trackbacks\",\n \"accommodate\",\n \"christine\",\n \"accepting\",\n \"precipitation\",\n \"isolation\",\n \"sustained\",\n \"approximate\",\n \"programmer\",\n \"greetings\",\n \"inherited\",\n \"incomplete\",\n \"chronicle\",\n \"legitimate\",\n \"biographies\",\n \"investigator\",\n \"plaintiff\",\n \"prisoners\",\n \"mediterranean\",\n \"nightlife\",\n \"architects\",\n \"entrepreneur\",\n \"freelance\",\n \"excessive\",\n \"screensaver\",\n \"valuation\",\n \"unexpected\",\n \"cigarette\",\n \"characteristic\",\n \"metallica\",\n \"consequently\",\n \"appointments\",\n \"narrative\",\n \"academics\",\n \"quantitative\",\n \"screensavers\",\n \"subdivision\",\n \"distinction\",\n \"livestock\",\n \"exemption\",\n \"sustainability\",\n \"formatting\",\n \"nutritional\",\n \"nicaragua\",\n \"affiliation\",\n \"relatives\",\n \"satisfactory\",\n \"revolutionary\",\n \"bracelets\",\n \"telephony\",\n \"breathing\",\n \"thickness\",\n \"adjustments\",\n \"graphical\",\n \"discussing\",\n \"aerospace\",\n \"meaningful\",\n \"maintains\",\n \"shortcuts\",\n \"voyeurweb\",\n \"extending\",\n \"specifies\",\n \"accreditation\",\n \"blackberry\",\n \"meditation\",\n \"microphone\",\n \"macedonia\",\n \"combining\",\n \"instrumental\",\n \"organizing\",\n \"moderators\",\n \"kazakhstan\",\n \"standings\",\n \"partition\",\n \"invisible\",\n \"translations\",\n \"commodity\",\n \"kilometers\",\n \"thanksgiving\",\n \"guarantees\",\n \"indication\",\n \"congratulations\",\n \"cigarettes\",\n \"controllers\",\n \"consultancy\",\n \"conventions\",\n \"coordinates\",\n \"responding\",\n \"physically\",\n \"stakeholders\",\n \"hydrocodone\",\n \"consecutive\",\n \"attempting\",\n \"representations\",\n \"competing\",\n \"peninsula\",\n \"accurately\",\n \"considers\",\n \"ministries\",\n \"vacancies\",\n \"parliamentary\",\n \"acknowledge\",\n \"thoroughly\",\n \"nottingham\",\n \"identifies\",\n \"questionnaire\",\n \"qualification\",\n \"modelling\",\n \"miniature\",\n \"interstate\",\n \"consequence\",\n \"systematic\",\n \"perceived\",\n \"madagascar\",\n \"presenting\",\n \"troubleshooting\",\n \"uzbekistan\",\n \"centuries\",\n \"magnitude\",\n \"richardson\",\n \"fragrances\",\n \"vocabulary\",\n \"earthquake\",\n \"fundraising\",\n \"geological\",\n \"assessing\",\n \"introduces\",\n \"webmasters\",\n \"computational\",\n \"acdbentity\",\n \"participated\",\n \"handhelds\",\n \"answering\",\n \"impressed\",\n \"conspiracy\",\n \"organizer\",\n \"combinations\",\n \"preceding\",\n \"cumulative\",\n \"amplifier\",\n \"arbitrary\",\n \"prominent\",\n \"lexington\",\n \"contacted\",\n \"recorders\",\n \"occasional\",\n \"innovations\",\n \"postcards\",\n \"reviewing\",\n \"explicitly\",\n \"transsexual\",\n \"citizenship\",\n \"informative\",\n \"girlfriend\",\n \"bloomberg\",\n \"hierarchy\",\n \"influenced\",\n \"abandoned\",\n \"complement\",\n \"mauritius\",\n \"checklist\",\n \"requesting\",\n \"lauderdale\",\n \"scenarios\",\n \"extraction\",\n \"elevation\",\n \"utilization\",\n \"beverages\",\n \"calibration\",\n \"efficiently\",\n \"entertaining\",\n \"prerequisite\",\n \"hypothesis\",\n \"medicines\",\n \"regression\",\n \"enhancements\",\n \"renewable\",\n \"intersection\",\n \"passwords\",\n \"consistency\",\n \"collectors\",\n \"azerbaijan\",\n \"astrology\",\n \"occurring\",\n \"supplemental\",\n \"travelling\",\n \"induction\",\n \"precisely\",\n \"spreading\",\n \"provinces\",\n \"widespread\",\n \"incidence\",\n \"incidents\",\n \"enhancing\",\n \"interference\",\n \"palestine\",\n \"listprice\",\n \"atmospheric\",\n \"knowledgestorm\",\n \"referenced\",\n \"publicity\",\n \"proposition\",\n \"allowance\",\n \"designation\",\n \"duplicate\",\n \"criterion\",\n \"civilization\",\n \"vietnamese\",\n \"tremendous\",\n \"corrected\",\n \"encountered\",\n \"internationally\",\n \"surrounded\",\n \"creatures\",\n \"commented\",\n \"accomplish\",\n \"vegetarian\",\n \"newfoundland\",\n \"investigated\",\n \"ambassador\",\n \"stephanie\",\n \"contacting\",\n \"vegetation\",\n \"findarticles\",\n \"specially\",\n \"infectious\",\n \"continuity\",\n \"phenomenon\",\n \"conscious\",\n \"referrals\",\n \"differently\",\n \"integrating\",\n \"revisions\",\n \"reasoning\",\n \"charitable\",\n \"annotated\",\n \"convinced\",\n \"burlington\",\n \"replacing\",\n \"researcher\",\n \"watershed\",\n \"occupations\",\n \"acknowledged\",\n \"equilibrium\",\n \"characterized\",\n \"privilege\",\n \"qualifying\",\n \"estimation\",\n \"pediatric\",\n \"techrepublic\",\n \"institutes\",\n \"brochures\",\n \"traveller\",\n \"appropriations\",\n \"suspected\",\n \"benchmark\",\n \"beginners\",\n \"instructors\",\n \"highlighted\",\n \"stationery\",\n \"unauthorized\",\n \"competent\",\n \"contributor\",\n \"demonstrates\",\n \"gradually\",\n \"desirable\",\n \"journalist\",\n \"afterwards\",\n \"religions\",\n \"explosion\",\n \"signatures\",\n \"disciplines\",\n \"daughters\",\n \"conversations\",\n \"simplified\",\n \"motherboard\",\n \"bibliographic\",\n \"champagne\",\n \"deviation\",\n \"superintendent\",\n \"housewives\",\n \"influences\",\n \"inspections\",\n \"irrigation\",\n \"hydraulic\",\n \"robertson\",\n \"penetration\",\n \"conviction\",\n \"omissions\",\n \"retrieval\",\n \"qualities\",\n \"prototype\",\n \"importantly\",\n \"apparatus\",\n \"explaining\",\n \"nomination\",\n \"empirical\",\n \"dependence\",\n \"sexuality\",\n \"polyester\",\n \"commitments\",\n \"suggesting\",\n \"remainder\",\n \"privileges\",\n \"televisions\",\n \"specializing\",\n \"commodities\",\n \"motorcycles\",\n \"concentrate\",\n \"reproductive\",\n \"molecules\",\n \"refrigerator\",\n \"intervals\",\n \"sentences\",\n \"exclusion\",\n \"workstation\",\n \"holocaust\",\n \"receivers\",\n \"disposition\",\n \"navigator\",\n \"investigators\",\n \"marijuana\",\n \"cathedral\",\n \"fairfield\",\n \"fascinating\",\n \"landscapes\",\n \"lafayette\",\n \"computation\",\n \"cardiovascular\",\n \"salvation\",\n \"predictions\",\n \"accompanying\",\n \"selective\",\n \"arbitration\",\n \"configuring\",\n \"editorials\",\n \"sacrifice\",\n \"removable\",\n \"convergence\",\n \"gibraltar\",\n \"anthropology\",\n \"malpractice\",\n \"reporters\",\n \"necessity\",\n \"rendering\",\n \"hepatitis\",\n \"nationally\",\n \"waterproof\",\n \"specialties\",\n \"humanitarian\",\n \"invitations\",\n \"functioning\",\n \"economies\",\n \"alexandria\",\n \"bacterial\",\n \"undertake\",\n \"continuously\",\n \"achievements\",\n \"convertible\",\n \"secretariat\",\n \"paragraphs\",\n \"adolescent\",\n \"nominations\",\n \"cancelled\",\n \"introductory\",\n \"reservoir\",\n \"occurrence\",\n \"worcester\",\n \"demographic\",\n \"disciplinary\",\n \"respected\",\n \"portraits\",\n \"interpreted\",\n \"evaluations\",\n \"elimination\",\n \"hypothetical\",\n \"immigrants\",\n \"complimentary\",\n \"helicopter\",\n \"performer\",\n \"commissions\",\n \"powerseller\",\n \"graduated\",\n \"surprising\",\n \"unnecessary\",\n \"dramatically\",\n \"yugoslavia\",\n \"characterization\",\n \"likelihood\",\n \"fundamentals\",\n \"contamination\",\n \"endangered\",\n \"compromise\",\n \"expiration\",\n \"namespace\",\n \"peripheral\",\n \"negotiation\",\n \"opponents\",\n \"nominated\",\n \"confidentiality\",\n \"electoral\",\n \"changelog\",\n \"alternatively\",\n \"greensboro\",\n \"controversial\",\n \"recovered\",\n \"upgrading\",\n \"frontpage\",\n \"demanding\",\n \"defensive\",\n \"forbidden\",\n \"programmers\",\n \"monitored\",\n \"installations\",\n \"deutschland\",\n \"practitioner\",\n \"motivated\",\n \"smithsonian\",\n \"examining\",\n \"revelation\",\n \"delegation\",\n \"dictionaries\",\n \"greenhouse\",\n \"transparency\",\n \"currencies\",\n \"survivors\",\n \"positioning\",\n \"descending\",\n \"temporarily\",\n \"frequencies\",\n \"reflections\",\n \"municipality\",\n \"detective\",\n \"experiencing\",\n \"fireplace\",\n \"endorsement\",\n \"psychiatry\",\n \"persistent\",\n \"summaries\",\n \"looksmart\",\n \"magnificent\",\n \"colleague\",\n \"adaptation\",\n \"paintball\",\n \"enclosure\",\n \"supervisors\",\n \"westminster\",\n \"distances\",\n \"absorption\",\n \"treasures\",\n \"transcripts\",\n \"disappointed\",\n \"continually\",\n \"communist\",\n \"collectible\",\n \"entrepreneurs\",\n \"creations\",\n \"acquisitions\",\n \"biodiversity\",\n \"excitement\",\n \"presently\",\n \"mysterious\",\n \"librarian\",\n \"subsidiaries\",\n \"stockholm\",\n \"indonesian\",\n \"therapist\",\n \"promising\",\n \"relaxation\",\n \"thereafter\",\n \"commissioners\",\n \"forwarding\",\n \"nightmare\",\n \"reductions\",\n \"southampton\",\n \"organisms\",\n \"telescope\",\n \"portsmouth\",\n \"advancement\",\n \"harassment\",\n \"generators\",\n \"generates\",\n \"replication\",\n \"inexpensive\",\n \"receptors\",\n \"interventions\",\n \"huntington\",\n \"internship\",\n \"aluminium\",\n \"snowboard\",\n \"beastality\",\n \"evanescence\",\n \"coordinated\",\n \"shipments\",\n \"antarctica\",\n \"chancellor\",\n \"controversy\",\n \"legendary\",\n \"beautifully\",\n \"antibodies\",\n \"examinations\",\n \"immunology\",\n \"departmental\",\n \"terminology\",\n \"gentleman\",\n \"reproduce\",\n \"convicted\",\n \"roommates\",\n \"threatening\",\n \"spokesman\",\n \"activists\",\n \"frankfurt\",\n \"encourages\",\n \"assembled\",\n \"restructuring\",\n \"terminals\",\n \"simulations\",\n \"sufficiently\",\n \"conditional\",\n \"crossword\",\n \"conceptual\",\n \"liechtenstein\",\n \"translator\",\n \"automobiles\",\n \"continent\",\n \"longitude\",\n \"challenged\",\n \"telecharger\",\n \"insertion\",\n \"instrumentation\",\n \"constraint\",\n \"groundwater\",\n \"strengthening\",\n \"insulation\",\n \"infringement\",\n \"subjective\",\n \"swaziland\",\n \"varieties\",\n \"mediawiki\",\n \"configurations\",\n];\n","import { JSX } from \"react\";\n\nimport type {\n EditorConfig,\n EditorThemeClassName,\n LexicalEditor,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\nimport { useSharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport { uuid as UUID } from \"@/components/editor/plugins/autocomplete-plugin\";\n\ndeclare global {\n interface Navigator {\n userAgentData?: {\n mobile: boolean;\n };\n }\n}\n\nexport type SerializedAutocompleteNode = Spread<\n {\n uuid: string;\n },\n SerializedLexicalNode\n>;\n\nexport class AutocompleteNode extends DecoratorNode<JSX.Element | null> {\n /**\n * A unique uuid is generated for each session and assigned to the instance.\n * This helps to:\n * - Ensures max one Autocomplete node per session.\n * - Ensure that when collaboration is enabled, this node is not shown in\n * other sessions.\n * See https://github.com/facebook/lexical/blob/master/packages/lexical-playground/src/plugins/AutocompletePlugin/index.tsx#L39\n */\n __uuid: string;\n\n static clone(node: AutocompleteNode): AutocompleteNode {\n return new AutocompleteNode(node.__uuid, node.__key);\n }\n\n static getType(): \"autocomplete\" {\n return \"autocomplete\";\n }\n\n static importJSON(\n serializedNode: SerializedAutocompleteNode\n ): AutocompleteNode {\n const node = $createAutocompleteNode(serializedNode.uuid);\n return node;\n }\n\n exportJSON(): SerializedAutocompleteNode {\n return {\n ...super.exportJSON(),\n type: \"autocomplete\",\n uuid: this.__uuid,\n version: 1,\n };\n }\n\n constructor(uuid: string, key?: NodeKey) {\n super(key);\n this.__uuid = uuid;\n }\n // @ts-ignore\n\n updateDOM(\n // @ts-ignore\n prevNode: unknown,\n // @ts-ignore\n dom: HTMLElement,\n // @ts-ignore\n config: EditorConfig\n ): boolean {\n return false;\n }\n // @ts-ignore\n\n createDOM(config: EditorConfig): HTMLElement {\n return document.createElement(\"span\");\n }\n // @ts-ignore\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element | null {\n if (this.__uuid !== UUID) {\n return null;\n }\n return <AutocompleteComponent className={config.theme.autocomplete} />;\n }\n}\n\nexport function $createAutocompleteNode(uuid: string): AutocompleteNode {\n return new AutocompleteNode(uuid);\n}\n\nfunction AutocompleteComponent({\n className,\n}: {\n className: EditorThemeClassName;\n}): JSX.Element {\n const [suggestion] = useSharedAutocompleteContext();\n const userAgentData = window.navigator.userAgentData;\n const isMobile =\n userAgentData !== undefined\n ? userAgentData.mobile\n : window.innerWidth <= 800 && window.innerHeight <= 600;\n return (\n <span className={className} spellCheck=\"false\">\n {suggestion} {isMobile ? \"(SWIPE \\u2B95)\" : \"(TAB)\"}\n </span>\n );\n}\n","export const CAN_USE_DOM: boolean =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n","import { CAN_USE_DOM } from '@/components/editor/shared/can-use-dom'\n\ndeclare global {\n interface Document {\n documentMode?: unknown\n }\n\n interface Window {\n MSStream?: unknown\n }\n}\n\nconst documentMode =\n CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null\n\nexport const IS_APPLE: boolean =\n CAN_USE_DOM && /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n\nexport const IS_FIREFOX: boolean =\n CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const CAN_USE_BEFORE_INPUT: boolean =\n CAN_USE_DOM && 'InputEvent' in window && !documentMode\n ? 'getTargetRanges' in new window.InputEvent('input')\n : false\n\nexport const IS_SAFARI: boolean =\n CAN_USE_DOM && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)\n\nexport const IS_IOS: boolean =\n CAN_USE_DOM &&\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !window.MSStream\n\nexport const IS_ANDROID: boolean =\n CAN_USE_DOM && /Android/.test(navigator.userAgent)\n\n// Keep these in case we need to use them in the future.\n// export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);\nexport const IS_CHROME: boolean =\n CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent)\n// export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;\n\nexport const IS_ANDROID_CHROME: boolean = CAN_USE_DOM && IS_ANDROID && IS_CHROME\n\nexport const IS_APPLE_WEBKIT =\n CAN_USE_DOM && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME\n","export function invariant(cond?: boolean, message?: string): asserts cond {\n if (cond) {\n return;\n }\n\n throw new Error(\n \"Internal Lexical error: invariant() is meant to be replaced at compile \" +\n \"time. There is no runtime version. Error: \" +\n message\n );\n}\n","export function setDomHiddenUntilFound(dom: HTMLElement): void {\n // @ts-expect-error\n dom.hidden = 'until-found'\n}\n\nexport function domOnBeforeMatch(dom: HTMLElement, callback: () => void): void {\n // @ts-expect-error\n dom.onbeforematch = callback\n}\n","import {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread,\n isHTMLElement,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport { setDomHiddenUntilFound } from \"@/components/editor/utils/collapsible\";\n\ntype SerializedCollapsibleContainerNode = Spread<\n {\n open: boolean;\n },\n SerializedElementNode\n>;\n\nexport function $convertDetailsElement(\n domNode: HTMLDetailsElement\n): DOMConversionOutput | null {\n const isOpen = domNode.open !== undefined ? domNode.open : true;\n const node = $createCollapsibleContainerNode(isOpen);\n return {\n node,\n };\n}\n\nexport class CollapsibleContainerNode extends ElementNode {\n __open: boolean;\n\n constructor(open: boolean, key?: NodeKey) {\n super(key);\n this.__open = open;\n }\n\n static getType(): string {\n return \"collapsible-container\";\n }\n\n static clone(node: CollapsibleContainerNode): CollapsibleContainerNode {\n return new CollapsibleContainerNode(node.__open, node.__key);\n }\n // @ts-ignore\n\n createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n // details is not well supported in Chrome #5582\n let dom: HTMLElement;\n if (IS_CHROME) {\n dom = document.createElement(\"div\");\n dom.setAttribute(\"open\", \"\");\n } else {\n const detailsDom = document.createElement(\"details\");\n detailsDom.open = this.__open;\n detailsDom.addEventListener(\"toggle\", () => {\n const open = editor.getEditorState().read(() => this.getOpen());\n if (open !== detailsDom.open) {\n editor.update(() => this.toggleOpen());\n }\n });\n dom = detailsDom;\n }\n dom.className = 'bg-background-system-body-primary border border-border-system-global-secondary rounded-lg mb-2';\n\n return dom;\n }\n\n updateDOM(\n prevNode: CollapsibleContainerNode,\n dom: HTMLDetailsElement\n ): boolean {\n const currentOpen = this.__open;\n if (prevNode.__open !== currentOpen) {\n // details is not well supported in Chrome #5582\n if (IS_CHROME) {\n const contentDom = dom.children[1];\n invariant(\n isHTMLElement(contentDom),\n \"Expected contentDom to be an HTMLElement\"\n );\n if (currentOpen) {\n dom.setAttribute(\"open\", \"\");\n contentDom.hidden = false;\n } else {\n dom.removeAttribute(\"open\");\n setDomHiddenUntilFound(contentDom);\n }\n } else {\n dom.open = this.__open;\n }\n }\n\n return false;\n }\n\n static importDOM(): DOMConversionMap<HTMLDetailsElement> | null {\n return {\n // @ts-ignore\n\n details: (domNode: HTMLDetailsElement) => {\n return {\n conversion: $convertDetailsElement,\n priority: 1,\n };\n },\n };\n }\n\n static importJSON(\n serializedNode: SerializedCollapsibleContainerNode\n ): CollapsibleContainerNode {\n const node = $createCollapsibleContainerNode(serializedNode.open);\n return node;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"details\");\n element.className = 'bg-background-system-body-primary border border-border-system-global-secondary rounded-lg mb-2';\n element.setAttribute(\"open\", this.__open.toString());\n return { element };\n }\n\n exportJSON(): SerializedCollapsibleContainerNode {\n return {\n ...super.exportJSON(),\n open: this.__open,\n type: \"collapsible-container\",\n version: 1,\n };\n }\n\n setOpen(open: boolean): void {\n const writable = this.getWritable();\n writable.__open = open;\n }\n\n getOpen(): boolean {\n return this.getLatest().__open;\n }\n\n toggleOpen(): void {\n this.setOpen(!this.getOpen());\n }\n}\n\nexport function $createCollapsibleContainerNode(\n isOpen: boolean\n): CollapsibleContainerNode {\n return new CollapsibleContainerNode(isOpen);\n}\n\nexport function $isCollapsibleContainerNode(\n node: LexicalNode | null | undefined\n): node is CollapsibleContainerNode {\n return node instanceof CollapsibleContainerNode;\n}\n","import {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n SerializedElementNode,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport {\n domOnBeforeMatch,\n setDomHiddenUntilFound,\n} from \"@/components/editor/utils/collapsible\";\nimport { $isCollapsibleContainerNode } from \"@/components/editor/nodes/collapsible-container-node\";\n\ntype SerializedCollapsibleContentNode = SerializedElementNode;\n\nexport function $convertCollapsibleContentElement(\n // @ts-ignore\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const node = $createCollapsibleContentNode();\n return {\n node,\n };\n}\n\nexport class CollapsibleContentNode extends ElementNode {\n static getType(): string {\n return \"collapsible-content\";\n }\n\n static clone(node: CollapsibleContentNode): CollapsibleContentNode {\n return new CollapsibleContentNode(node.__key);\n }\n // @ts-ignore\n createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n const dom = document.createElement(\"div\");\n dom.classList.add(\"pt-0\", \"pr-1\", \"pb-1\", \"pl-4\");\n if (IS_CHROME) {\n editor.getEditorState().read(() => {\n const containerNode = this.getParentOrThrow();\n invariant(\n $isCollapsibleContainerNode(containerNode),\n \"Expected parent node to be a CollapsibleContainerNode\"\n );\n if (!containerNode.__open) {\n setDomHiddenUntilFound(dom);\n }\n });\n domOnBeforeMatch(dom, () => {\n editor.update(() => {\n const containerNode = this.getParentOrThrow().getLatest();\n invariant(\n $isCollapsibleContainerNode(containerNode),\n \"Expected parent node to be a CollapsibleContainerNode\"\n );\n if (!containerNode.__open) {\n containerNode.toggleOpen();\n }\n });\n });\n }\n return dom;\n }\n // @ts-ignore\n\n updateDOM(prevNode: CollapsibleContentNode, dom: HTMLElement): boolean {\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-collapsible-content\")) {\n return null;\n }\n return {\n conversion: $convertCollapsibleContentElement,\n priority: 2,\n };\n },\n };\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"div\");\n element.classList.add(\"pt-0\", \"pr-1\", \"pb-1\", \"pl-4\");\n element.setAttribute(\"data-lexical-collapsible-content\", \"true\");\n return { element };\n }\n\n static importJSON(\n // @ts-ignore\n\n serializedNode: SerializedCollapsibleContentNode\n ): CollapsibleContentNode {\n return $createCollapsibleContentNode();\n }\n\n isShadowRoot(): boolean {\n return true;\n }\n\n exportJSON(): SerializedCollapsibleContentNode {\n return {\n ...super.exportJSON(),\n type: \"collapsible-content\",\n version: 1,\n };\n }\n}\n\nexport function $createCollapsibleContentNode(): CollapsibleContentNode {\n return new CollapsibleContentNode();\n}\n\nexport function $isCollapsibleContentNode(\n node: LexicalNode | null | undefined\n): node is CollapsibleContentNode {\n return node instanceof CollapsibleContentNode;\n}\n","import {\n $createParagraphNode,\n $isElementNode,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n SerializedElementNode,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport { $isCollapsibleContainerNode } from \"@/components/editor/nodes/collapsible-container-node\";\nimport { $isCollapsibleContentNode } from \"@/components/editor/nodes/collapsible-content-node\";\n\ntype SerializedCollapsibleTitleNode = SerializedElementNode;\n\nexport function $convertSummaryElement(\n // @ts-ignore\n\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const node = $createCollapsibleTitleNode();\n return {\n node,\n };\n}\n\nexport class CollapsibleTitleNode extends ElementNode {\n static getType(): string {\n return \"collapsible-title\";\n }\n\n static clone(node: CollapsibleTitleNode): CollapsibleTitleNode {\n return new CollapsibleTitleNode(node.__key);\n }\n // @ts-ignore\n\n createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n const dom = document.createElement(\"summary\");\n dom.classList.add(\"Collapsible__title\");\n if (IS_CHROME) {\n dom.addEventListener(\"click\", () => {\n editor.update(() => {\n const collapsibleContainer = this.getLatest().getParentOrThrow();\n invariant(\n $isCollapsibleContainerNode(collapsibleContainer),\n \"Expected parent node to be a CollapsibleContainerNode\"\n );\n collapsibleContainer.toggleOpen();\n });\n });\n }\n return dom;\n }\n // @ts-ignore\n\n updateDOM(prevNode: CollapsibleTitleNode, dom: HTMLElement): boolean {\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n // @ts-ignore\n summary: (domNode: HTMLElement) => {\n return {\n conversion: $convertSummaryElement,\n priority: 1,\n };\n },\n };\n }\n\n static importJSON(\n // @ts-ignore\n serializedNode: SerializedCollapsibleTitleNode\n ): CollapsibleTitleNode {\n return $createCollapsibleTitleNode();\n }\n\n exportJSON(): SerializedCollapsibleTitleNode {\n return {\n ...super.exportJSON(),\n type: \"collapsible-title\",\n version: 1,\n };\n }\n\n collapseAtStart(_selection: RangeSelection): boolean {\n this.getParentOrThrow().insertBefore(this);\n return true;\n }\n\n static transform(): (node: LexicalNode) => void {\n return (node: LexicalNode) => {\n invariant(\n $isCollapsibleTitleNode(node),\n \"node is not a CollapsibleTitleNode\"\n );\n if (node.isEmpty()) {\n node.remove();\n }\n };\n }\n\n insertNewAfter(_: RangeSelection, restoreSelection = true): ElementNode {\n const containerNode = this.getParentOrThrow();\n\n if (!$isCollapsibleContainerNode(containerNode)) {\n throw new Error(\n \"CollapsibleTitleNode expects to be child of CollapsibleContainerNode\"\n );\n }\n\n if (containerNode.getOpen()) {\n const contentNode = this.getNextSibling();\n if (!$isCollapsibleContentNode(contentNode)) {\n throw new Error(\n \"CollapsibleTitleNode expects to have CollapsibleContentNode sibling\"\n );\n }\n\n const firstChild = contentNode.getFirstChild();\n if ($isElementNode(firstChild)) {\n return firstChild;\n } else {\n const paragraph = $createParagraphNode();\n contentNode.append(paragraph);\n return paragraph;\n }\n } else {\n const paragraph = $createParagraphNode();\n containerNode.insertAfter(paragraph, restoreSelection);\n return paragraph;\n }\n }\n}\n\nexport function $createCollapsibleTitleNode(): CollapsibleTitleNode {\n return new CollapsibleTitleNode();\n}\n\nexport function $isCollapsibleTitleNode(\n node: LexicalNode | null | undefined\n): node is CollapsibleTitleNode {\n return node instanceof CollapsibleTitleNode;\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{DecoratorNode as t}from\"lexical\";class r extends t{constructor(t,r){super(r),this.__format=t||\"\"}exportJSON(){return{...super.exportJSON(),format:this.__format||\"\"}}updateFromJSON(t){return super.updateFromJSON(t).setFormat(t.format||\"\")}canIndent(){return!1}createDOM(){return document.createElement(\"div\")}updateDOM(){return!1}setFormat(t){const r=this.getWritable();return r.__format=t,r}isInline(){return!1}}function e(t){return t instanceof r}export{e as $isDecoratorBlockNode,r as DecoratorBlockNode};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$isDecoratorBlockNode as t}from\"@lexical/react/LexicalDecoratorBlockNode\";import{useLexicalNodeSelection as r}from\"@lexical/react/useLexicalNodeSelection\";import{mergeRegister as o,$getNearestBlockElementAncestorOrThrow as i}from\"@lexical/utils\";import{FORMAT_ELEMENT_COMMAND as l,$getSelection as a,$isNodeSelection as c,$getNodeByKey as m,$isRangeSelection as n,COMMAND_PRIORITY_LOW as s,CLICK_COMMAND as f}from\"lexical\";import{useRef as u,useEffect as x}from\"react\";import{jsx as d}from\"react/jsx-runtime\";function p({children:p,format:g,nodeKey:N,className:C}){const[h]=e(),[v,y,F]=r(N),L=u(null);return x((()=>o(h.registerCommand(l,(e=>{if(v){const r=a();if(c(r)){const r=m(N);t(r)&&r.setFormat(e)}else if(n(r)){const o=r.getNodes();for(const r of o)if(t(r))r.setFormat(e);else{i(r).setFormat(e)}}return!0}return!1}),s),h.registerCommand(f,(e=>e.target===L.current&&(e.preventDefault(),e.shiftKey||F(),y(!v),!0)),s))),[F,h,v,N,y]),d(\"div\",{className:[C.base,v?C.focus:null].filter(Boolean).join(\" \"),ref:L,style:{textAlign:g||void 0},children:p})}export{p as BlockWithAlignableContents};\n","import { JSX } from \"react\";\n\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\";\nimport {\n DecoratorBlockNode,\n SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\";\nimport type {\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from \"lexical\";\n\ntype FigmaComponentProps = Readonly<{\n className: Readonly<{\n base: string;\n focus: string;\n }>;\n format: ElementFormatType | null;\n nodeKey: NodeKey;\n documentID: string;\n}>;\n\nfunction FigmaComponent({\n className,\n format,\n nodeKey,\n documentID,\n}: FigmaComponentProps) {\n return (\n <BlockWithAlignableContents\n className={className}\n format={format}\n nodeKey={nodeKey}\n >\n <iframe\n width=\"560\"\n height=\"315\"\n src={`https://www.figma.com/embed?embed_host=lexical&url=\\\n https://www.figma.com/file/${documentID}`}\n allowFullScreen={true}\n />\n </BlockWithAlignableContents>\n );\n}\n\nexport type SerializedFigmaNode = Spread<\n {\n documentID: string;\n },\n SerializedDecoratorBlockNode\n>;\n\nexport class FigmaNode extends DecoratorBlockNode {\n __id: string;\n\n static getType(): string {\n return \"figma\";\n }\n\n static clone(node: FigmaNode): FigmaNode {\n return new FigmaNode(node.__id, node.__format, node.__key);\n }\n\n static importJSON(serializedNode: SerializedFigmaNode): FigmaNode {\n const node = $createFigmaNode(serializedNode.documentID);\n node.setFormat(serializedNode.format);\n return node;\n }\n\n exportJSON(): SerializedFigmaNode {\n return {\n ...super.exportJSON(),\n documentID: this.__id,\n type: \"figma\",\n version: 1,\n };\n }\n\n constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n super(format, key);\n this.__id = id;\n }\n\n updateDOM(): false {\n return false;\n }\n\n getId(): string {\n return this.__id;\n }\n\n getTextContent(\n _includeInert?: boolean | undefined,\n _includeDirectionless?: false | undefined\n ): string {\n return `https://www.figma.com/file/${this.__id}`;\n }\n\n decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element {\n const embedBlockTheme = config.theme.embedBlock || {};\n const className = {\n base: embedBlockTheme.base || \"\",\n focus: embedBlockTheme.focus || \"\",\n };\n return (\n <FigmaComponent\n className={className}\n format={this.__format}\n nodeKey={this.getKey()}\n documentID={this.__id}\n />\n );\n }\n}\n\nexport function $createFigmaNode(documentID: string): FigmaNode {\n return new FigmaNode(documentID);\n}\n\nexport function $isFigmaNode(\n node: FigmaNode | LexicalNode | null | undefined\n): node is FigmaNode {\n return node instanceof FigmaNode;\n}\n","import { useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\";\nimport {\n DecoratorBlockNode,\n SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from \"lexical\";\n\nconst WIDGET_SCRIPT_URL = \"https://platform.twitter.com/widgets.js\";\n\ntype TweetComponentProps = Readonly<{\n className: Readonly<{\n base: string;\n focus: string;\n }>;\n format: ElementFormatType | null;\n loadingComponent?: JSX.Element | string;\n nodeKey: NodeKey;\n onError?: (error: string) => void;\n onLoad?: () => void;\n tweetID: string;\n}>;\n\nfunction $convertTweetElement(\n domNode: HTMLDivElement\n): DOMConversionOutput | null {\n const id = domNode.getAttribute(\"data-lexical-tweet-id\");\n if (id) {\n const node = $createTweetNode(id);\n return { node };\n }\n return null;\n}\n\nlet isTwitterScriptLoading = true;\n\nfunction TweetComponent({\n className,\n format,\n loadingComponent,\n nodeKey,\n onError,\n onLoad,\n tweetID,\n}: TweetComponentProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const previousTweetIDRef = useRef<string>(\"\");\n const [isTweetLoading, setIsTweetLoading] = useState(false);\n\n const createTweet = useCallback(async () => {\n try {\n // @ts-expect-error Twitter is attached to the window.\n await window.twttr.widgets.createTweet(tweetID, containerRef.current);\n\n setIsTweetLoading(false);\n isTwitterScriptLoading = false;\n\n if (onLoad) {\n onLoad();\n }\n } catch (error) {\n if (onError) {\n onError(String(error));\n }\n }\n }, [onError, onLoad, tweetID]);\n\n useEffect(() => {\n if (tweetID !== previousTweetIDRef.current) {\n setIsTweetLoading(true);\n\n if (isTwitterScriptLoading) {\n const script = document.createElement(\"script\");\n script.src = WIDGET_SCRIPT_URL;\n script.async = true;\n document.body?.appendChild(script);\n script.onload = createTweet;\n if (onError) {\n script.onerror = onError as OnErrorEventHandler;\n }\n } else {\n createTweet();\n }\n\n if (previousTweetIDRef) {\n previousTweetIDRef.current = tweetID;\n }\n }\n }, [createTweet, onError, tweetID]);\n\n return (\n <BlockWithAlignableContents\n className={className}\n format={format}\n nodeKey={nodeKey}\n >\n {isTweetLoading ? loadingComponent : null}\n <div\n style={{ display: \"inline-block\", width: \"550px\" }}\n ref={containerRef}\n />\n </BlockWithAlignableContents>\n );\n}\n\nexport type SerializedTweetNode = Spread<\n {\n id: string;\n },\n SerializedDecoratorBlockNode\n>;\n\nexport class TweetNode extends DecoratorBlockNode {\n __id: string;\n\n static getType(): string {\n return \"tweet\";\n }\n\n static clone(node: TweetNode): TweetNode {\n return new TweetNode(node.__id, node.__format, node.__key);\n }\n\n static importJSON(serializedNode: SerializedTweetNode): TweetNode {\n const node = $createTweetNode(serializedNode.id);\n node.setFormat(serializedNode.format);\n return node;\n }\n\n exportJSON(): SerializedTweetNode {\n return {\n ...super.exportJSON(),\n id: this.getId(),\n type: \"tweet\",\n version: 1,\n };\n }\n\n static importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {\n div: (domNode: HTMLDivElement) => {\n if (!domNode.hasAttribute(\"data-lexical-tweet-id\")) {\n return null;\n }\n return {\n conversion: $convertTweetElement,\n priority: 2,\n };\n },\n };\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"div\");\n element.setAttribute(\"data-lexical-tweet-id\", this.__id);\n const text = document.createTextNode(this.getTextContent());\n element.append(text);\n return { element };\n }\n\n constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n super(format, key);\n this.__id = id;\n }\n\n getId(): string {\n return this.__id;\n }\n\n getTextContent(\n _includeInert?: boolean | undefined,\n _includeDirectionless?: false | undefined\n ): string {\n return `https://x.com/i/web/status/${this.__id}`;\n }\n // @ts-ignore\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n const embedBlockTheme = config.theme.embedBlock || {};\n const className = {\n base: embedBlockTheme.base || \"\",\n focus: embedBlockTheme.focus || \"\",\n };\n return (\n <TweetComponent\n className={className}\n format={this.__format}\n loadingComponent=\"Loading...\"\n nodeKey={this.getKey()}\n tweetID={this.__id}\n />\n );\n }\n}\n\nexport function $createTweetNode(tweetID: string): TweetNode {\n return new TweetNode(tweetID);\n}\n\nexport function $isTweetNode(\n node: TweetNode | LexicalNode | null | undefined\n): node is TweetNode {\n return node instanceof TweetNode;\n}\n","import { JSX } from \"react\";\n\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\";\nimport {\n DecoratorBlockNode,\n SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from \"lexical\";\n\ntype YouTubeComponentProps = Readonly<{\n className: Readonly<{\n base: string;\n focus: string;\n }>;\n format: ElementFormatType | null;\n nodeKey: NodeKey;\n videoID: string;\n}>;\n\nfunction YouTubeComponent({\n className,\n format,\n nodeKey,\n videoID,\n}: YouTubeComponentProps) {\n return (\n <BlockWithAlignableContents\n className={className}\n format={format}\n nodeKey={nodeKey}\n >\n <iframe\n width=\"560\"\n height=\"315\"\n src={`https://www.youtube-nocookie.com/embed/${videoID}`}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen={true}\n title=\"YouTube video\"\n />\n </BlockWithAlignableContents>\n );\n}\n\nexport type SerializedYouTubeNode = Spread<\n {\n videoID: string;\n },\n SerializedDecoratorBlockNode\n>;\n\nfunction $convertYoutubeElement(\n domNode: HTMLElement\n): null | DOMConversionOutput {\n const videoID = domNode.getAttribute(\"data-lexical-youtube\");\n if (videoID) {\n const node = $createYouTubeNode(videoID);\n return { node };\n }\n return null;\n}\n\nexport class YouTubeNode extends DecoratorBlockNode {\n __id: string;\n\n static getType(): string {\n return \"youtube\";\n }\n\n static clone(node: YouTubeNode): YouTubeNode {\n return new YouTubeNode(node.__id, node.__format, node.__key);\n }\n\n static importJSON(serializedNode: SerializedYouTubeNode): YouTubeNode {\n const node = $createYouTubeNode(serializedNode.videoID);\n node.setFormat(serializedNode.format);\n return node;\n }\n\n exportJSON(): SerializedYouTubeNode {\n return {\n ...super.exportJSON(),\n type: \"youtube\",\n version: 1,\n videoID: this.__id,\n };\n }\n\n constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n super(format, key);\n this.__id = id;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"iframe\");\n element.setAttribute(\"data-lexical-youtube\", this.__id);\n element.setAttribute(\"width\", \"560\");\n element.setAttribute(\"height\", \"315\");\n element.setAttribute(\n \"src\",\n `https://www.youtube-nocookie.com/embed/${this.__id}`\n );\n element.setAttribute(\"frameborder\", \"0\");\n element.setAttribute(\n \"allow\",\n \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n );\n element.setAttribute(\"allowfullscreen\", \"true\");\n element.setAttribute(\"title\", \"YouTube video\");\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n iframe: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-youtube\")) {\n return null;\n }\n return {\n conversion: $convertYoutubeElement,\n priority: 1,\n };\n },\n };\n }\n\n updateDOM(): false {\n return false;\n }\n\n getId(): string {\n return this.__id;\n }\n\n getTextContent(\n _includeInert?: boolean | undefined,\n _includeDirectionless?: false | undefined\n ): string {\n return `https://www.youtube.com/watch?v=${this.__id}`;\n }\n\n decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element {\n const embedBlockTheme = config.theme.embedBlock || {};\n const className = {\n base: embedBlockTheme.base || \"\",\n focus: embedBlockTheme.focus || \"\",\n };\n return (\n <YouTubeComponent\n className={className}\n format={this.__format}\n nodeKey={this.getKey()}\n videoID={this.__id}\n />\n );\n }\n}\n\nexport function $createYouTubeNode(videoID: string): YouTubeNode {\n return new YouTubeNode(videoID);\n}\n\nexport function $isYouTubeNode(\n node: YouTubeNode | LexicalNode | null | undefined\n): node is YouTubeNode {\n return node instanceof YouTubeNode;\n}\n","import type {\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedTextNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, TextNode } from \"lexical\";\n\nexport type SerializedEmojiNode = Spread<\n {\n className: string;\n },\n SerializedTextNode\n>;\n\nexport class EmojiNode extends TextNode {\n __className: string;\n\n static getType(): string {\n return \"emoji\";\n }\n\n static clone(node: EmojiNode): EmojiNode {\n return new EmojiNode(node.__className, node.__text, node.__key);\n }\n\n constructor(className: string, text: string, key?: NodeKey) {\n super(text, key);\n this.__className = className;\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement(\"span\");\n const inner = super.createDOM(config);\n dom.className = this.__className;\n inner.className = \"emoji-inner\";\n dom.appendChild(inner);\n return dom;\n }\n\n updateDOM(\n prevNode: EmojiNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const inner = dom.firstChild;\n if (inner === null) {\n return true;\n }\n // @ts-ignore - The TextNode.updateDOM method is compatible with our implementation\n super.updateDOM(prevNode, inner as HTMLElement, config);\n return false;\n }\n\n static importJSON(serializedNode: SerializedEmojiNode): EmojiNode {\n const node = $createEmojiNode(\n serializedNode.className,\n serializedNode.text\n );\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n exportJSON(): SerializedEmojiNode {\n return {\n ...super.exportJSON(),\n className: this.getClassName(),\n type: \"emoji\",\n };\n }\n\n getClassName(): string {\n const self = this.getLatest();\n return self.__className;\n }\n}\n\nexport function $isEmojiNode(\n node: LexicalNode | null | undefined\n): node is EmojiNode {\n return node instanceof EmojiNode;\n}\n\nexport function $createEmojiNode(\n className: string,\n emojiText: string\n): EmojiNode {\n const node = new EmojiNode(className, emojiText).setMode(\"token\");\n return $applyNodeReplacement(node);\n}\n","import { Suspense, JSX } from \"react\";\nimport React from \"react\";\nimport katex from \"katex\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DOMExportOutput, DecoratorNode } from \"lexical\";\n\nconst EquationComponent = React.lazy(\n () => import(\"../editor-ui/equation-component\")\n);\n\nexport type SerializedEquationNode = Spread<\n {\n equation: string;\n inline: boolean;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertEquationElement(\n domNode: HTMLElement\n): null | DOMConversionOutput {\n let equation = domNode.getAttribute(\"data-lexical-equation\");\n const inline = domNode.getAttribute(\"data-lexical-inline\") === \"true\";\n // Decode the equation from base64\n equation = atob(equation || \"\");\n if (equation) {\n const node = $createEquationNode(equation, inline);\n return { node };\n }\n\n return null;\n}\n\nexport class EquationNode extends DecoratorNode<JSX.Element> {\n __equation: string;\n __inline: boolean;\n\n static getType(): string {\n return \"equation\";\n }\n\n static clone(node: EquationNode): EquationNode {\n return new EquationNode(node.__equation, node.__inline, node.__key);\n }\n\n constructor(equation: string, inline?: boolean, key?: NodeKey) {\n super(key);\n this.__equation = equation;\n this.__inline = inline ?? false;\n }\n\n static importJSON(serializedNode: SerializedEquationNode): EquationNode {\n const node = $createEquationNode(\n serializedNode.equation,\n serializedNode.inline\n );\n return node;\n }\n\n exportJSON(): SerializedEquationNode {\n return {\n equation: this.getEquation(),\n inline: this.__inline,\n type: \"equation\",\n version: 1,\n };\n }\n\n createDOM(_config: EditorConfig): HTMLElement {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n // EquationNodes should implement `user-action:none` in their CSS to avoid issues with deletion on Android.\n element.className =\n \"editor-equation user-action-none cursor-default focus:ring-2 focus:ring-primary focus:ring-offset-2 inline-block\";\n return element;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n // Encode the equation as base64 to avoid issues with special characters\n const equation = btoa(this.__equation);\n element.setAttribute(\"data-lexical-equation\", equation);\n element.setAttribute(\"data-lexical-inline\", `${this.__inline}`);\n katex.render(this.__equation, element, {\n displayMode: !this.__inline, // true === block display //\n errorColor: \"var(--content-presentation-state-negative-primary)\",\n output: \"html\",\n strict: \"warn\",\n throwOnError: false,\n trust: false,\n });\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n return {\n conversion: $convertEquationElement,\n priority: 2,\n };\n },\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n return {\n conversion: $convertEquationElement,\n priority: 1,\n };\n },\n };\n }\n\n updateDOM(prevNode: EquationNode): boolean {\n // If the inline property changes, replace the element\n return this.__inline !== prevNode.__inline;\n }\n\n getTextContent(): string {\n return this.__equation;\n }\n\n getEquation(): string {\n return this.__equation;\n }\n\n setEquation(equation: string): void {\n const writable = this.getWritable();\n writable.__equation = equation;\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <EquationComponent\n equation={this.__equation}\n inline={this.__inline}\n nodeKey={this.__key}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createEquationNode(\n equation = \"\",\n inline = false\n): EquationNode {\n const equationNode = new EquationNode(equation, inline);\n return $applyNodeReplacement(equationNode);\n}\n\nexport function $isEquationNode(\n node: LexicalNode | null | undefined\n): node is EquationNode {\n return node instanceof EquationNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\ntype Dimension = number | \"inherit\";\n\nconst ExcalidrawComponent = React.lazy(\n () => import(\"../editor-ui/excalidraw-component\")\n);\n\nexport type SerializedExcalidrawNode = Spread<\n {\n data: string;\n width?: Dimension;\n height?: Dimension;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertExcalidrawElement(\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const excalidrawData = domNode.getAttribute(\"data-lexical-excalidraw-json\");\n const styleAttributes = window.getComputedStyle(domNode);\n const heightStr = styleAttributes.getPropertyValue(\"height\");\n const widthStr = styleAttributes.getPropertyValue(\"width\");\n const height =\n !heightStr || heightStr === \"inherit\" ? \"inherit\" : parseInt(heightStr, 10);\n const width =\n !widthStr || widthStr === \"inherit\" ? \"inherit\" : parseInt(widthStr, 10);\n\n if (excalidrawData) {\n const node = $createExcalidrawNode(excalidrawData, width, height);\n return {\n node,\n };\n }\n return null;\n}\n\nexport class ExcalidrawNode extends DecoratorNode<JSX.Element> {\n __data: string;\n __width: Dimension;\n __height: Dimension;\n\n static getType(): string {\n return \"excalidraw\";\n }\n\n static clone(node: ExcalidrawNode): ExcalidrawNode {\n return new ExcalidrawNode(\n node.__data,\n node.__width,\n node.__height,\n node.__key\n );\n }\n\n static importJSON(serializedNode: SerializedExcalidrawNode): ExcalidrawNode {\n return new ExcalidrawNode(\n serializedNode.data,\n serializedNode.width ?? \"inherit\",\n serializedNode.height ?? \"inherit\"\n );\n }\n\n exportJSON(): SerializedExcalidrawNode {\n return {\n data: this.__data,\n height: this.__height === \"inherit\" ? undefined : this.__height,\n type: \"excalidraw\",\n version: 1,\n width: this.__width === \"inherit\" ? undefined : this.__width,\n };\n }\n\n constructor(\n data = \"[]\",\n width: Dimension = \"inherit\",\n height: Dimension = \"inherit\",\n key?: NodeKey\n ) {\n super(key);\n this.__data = data;\n this.__width = width;\n this.__height = height;\n }\n\n // View\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n updateDOM(): false {\n return false;\n }\n\n static importDOM(): DOMConversionMap<HTMLSpanElement> | null {\n return {\n span: (domNode: HTMLSpanElement) => {\n if (!domNode.hasAttribute(\"data-lexical-excalidraw-json\")) {\n return null;\n }\n return {\n conversion: $convertExcalidrawElement,\n priority: 1,\n };\n },\n };\n }\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n const element = document.createElement(\"span\");\n\n element.style.display = \"inline-block\";\n\n const content = editor.getElementByKey(this.getKey());\n if (content !== null) {\n const svg = content.querySelector(\"svg\");\n if (svg !== null) {\n element.innerHTML = svg.outerHTML;\n }\n }\n\n element.style.width =\n this.__width === \"inherit\" ? \"inherit\" : `${this.__width}px`;\n element.style.height =\n this.__height === \"inherit\" ? \"inherit\" : `${this.__height}px`;\n\n element.setAttribute(\"data-lexical-excalidraw-json\", this.__data);\n return { element };\n }\n\n setData(data: string): void {\n const self = this.getWritable();\n self.__data = data;\n }\n\n getWidth(): Dimension {\n return this.getLatest().__width;\n }\n\n setWidth(width: Dimension): void {\n const self = this.getWritable();\n self.__width = width;\n }\n\n getHeight(): Dimension {\n return this.getLatest().__height;\n }\n\n setHeight(height: Dimension): void {\n const self = this.getWritable();\n self.__height = height;\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ExcalidrawComponent\n nodeKey={this.getKey()}\n data={this.__data}\n width={this.__width}\n height={this.__height}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createExcalidrawNode(\n data: string = \"[]\",\n width: Dimension = \"inherit\",\n height: Dimension = \"inherit\"\n): ExcalidrawNode {\n return new ExcalidrawNode(data, width, height);\n}\n\nexport function $isExcalidrawNode(\n node: LexicalNode | null | undefined\n): node is ExcalidrawNode {\n return node instanceof ExcalidrawNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, createEditor } from \"lexical\";\n\nconst ImageComponent = React.lazy(() => import(\"../editor-ui/image-component\"));\n\nexport interface ImagePayload {\n altText: string;\n caption?: LexicalEditor;\n height?: number;\n key?: NodeKey;\n maxWidth?: number;\n showCaption?: boolean;\n src: string;\n width?: number;\n captionsEnabled?: boolean;\n}\n\nfunction isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === \"LI\" &&\n img.previousSibling === null &&\n img.getAttribute(\"aria-roledescription\") === \"checkbox\"\n );\n}\n\nfunction $convertImageElement(domNode: Node): null | DOMConversionOutput {\n const img = domNode as HTMLImageElement;\n if (img.src.startsWith(\"file:///\") || isGoogleDocCheckboxImg(img)) {\n return null;\n }\n const { alt: altText, src, width, height } = img;\n const node = $createImageNode({ altText, height, src, width });\n return { node };\n}\n\nexport type SerializedImageNode = Spread<\n {\n altText: string;\n caption: SerializedEditor;\n height?: number;\n maxWidth: number;\n showCaption: boolean;\n src: string;\n width?: number;\n },\n SerializedLexicalNode\n>;\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __maxWidth: number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean;\n\n static getType(): string {\n return \"image\";\n }\n\n static clone(node: ImageNode): ImageNode {\n return new ImageNode(\n node.__src,\n node.__altText,\n node.__maxWidth,\n node.__width,\n node.__height,\n node.__showCaption,\n node.__caption,\n node.__captionsEnabled,\n node.__key\n );\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { altText, height, width, maxWidth, caption, src, showCaption } =\n serializedNode;\n const node = $createImageNode({\n altText,\n height,\n maxWidth,\n showCaption,\n src,\n width,\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: () => ({\n conversion: $convertImageElement,\n priority: 0,\n }),\n };\n }\n\n constructor(\n src: string,\n altText: string,\n maxWidth: number,\n width?: \"inherit\" | number,\n height?: \"inherit\" | number,\n showCaption?: boolean,\n caption?: LexicalEditor,\n captionsEnabled?: boolean,\n key?: NodeKey\n ) {\n super(key);\n this.__src = src;\n this.__altText = altText;\n this.__maxWidth = maxWidth;\n this.__width = width || \"inherit\";\n this.__height = height || \"inherit\";\n this.__showCaption = showCaption || false;\n this.__caption =\n caption ||\n createEditor({\n nodes: [],\n });\n this.__captionsEnabled = captionsEnabled || captionsEnabled === undefined;\n }\n\n exportJSON(): SerializedImageNode {\n return {\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width,\n };\n }\n\n setWidthAndHeight(\n width: \"inherit\" | number,\n height: \"inherit\" | number\n ): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n // View\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n updateDOM(): false {\n return false;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n resizable={true}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createImageNode({\n altText,\n height,\n maxWidth = 500,\n captionsEnabled,\n src,\n width,\n showCaption,\n caption,\n key,\n}: ImagePayload): ImageNode {\n return $applyNodeReplacement(\n new ImageNode(\n src,\n altText,\n maxWidth,\n width,\n height,\n showCaption,\n caption,\n captionsEnabled,\n key\n )\n );\n}\n\nexport function $isImageNode(\n node: LexicalNode | null | undefined\n): node is ImageNode {\n return node instanceof ImageNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, createEditor } from \"lexical\";\n\nconst InlineImageComponent = React.lazy(\n () => import(\"../editor-ui/inline-image-component\")\n);\n\nexport type Position = \"left\" | \"right\" | \"full\" | undefined;\n\nexport interface InlineImagePayload {\n altText: string;\n caption?: LexicalEditor;\n height?: number;\n key?: NodeKey;\n showCaption?: boolean;\n src: string;\n width?: number;\n position?: Position;\n}\n\nexport interface UpdateInlineImagePayload {\n altText?: string;\n showCaption?: boolean;\n position?: Position;\n}\n\nfunction $convertInlineImageElement(domNode: Node): null | DOMConversionOutput {\n if (domNode instanceof HTMLImageElement) {\n const { alt: altText, src, width, height } = domNode;\n const node = $createInlineImageNode({ altText, height, src, width });\n return { node };\n }\n return null;\n}\n\nexport type SerializedInlineImageNode = Spread<\n {\n altText: string;\n caption: SerializedEditor;\n height?: number;\n showCaption: boolean;\n src: string;\n width?: number;\n position?: Position;\n },\n SerializedLexicalNode\n>;\n\nexport class InlineImageNode extends DecoratorNode<JSX.Element> {\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n __position: Position;\n\n static getType(): string {\n return \"inline-image\";\n }\n\n static clone(node: InlineImageNode): InlineImageNode {\n return new InlineImageNode(\n node.__src,\n node.__altText,\n node.__position,\n node.__width,\n node.__height,\n node.__showCaption,\n node.__caption,\n node.__key\n );\n }\n\n static importJSON(\n serializedNode: SerializedInlineImageNode\n ): InlineImageNode {\n const { altText, height, width, caption, src, showCaption, position } =\n serializedNode;\n const node = $createInlineImageNode({\n altText,\n height,\n position,\n showCaption,\n src,\n width,\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: () => ({\n conversion: $convertInlineImageElement,\n priority: 0,\n }),\n };\n }\n\n constructor(\n src: string,\n altText: string,\n position: Position,\n width?: \"inherit\" | number,\n height?: \"inherit\" | number,\n showCaption?: boolean,\n caption?: LexicalEditor,\n key?: NodeKey\n ) {\n super(key);\n this.__src = src;\n this.__altText = altText;\n this.__width = width || \"inherit\";\n this.__height = height || \"inherit\";\n this.__showCaption = showCaption || false;\n this.__caption = caption || createEditor();\n this.__position = position;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n exportJSON(): SerializedInlineImageNode {\n return {\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n position: this.__position,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"inline-image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width,\n };\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n setWidthAndHeight(\n width: \"inherit\" | number,\n height: \"inherit\" | number\n ): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n getShowCaption(): boolean {\n return this.__showCaption;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n getPosition(): Position {\n return this.__position;\n }\n\n setPosition(position: Position): void {\n const writable = this.getWritable();\n writable.__position = position;\n }\n\n update(payload: UpdateInlineImagePayload): void {\n const writable = this.getWritable();\n const { altText, showCaption, position } = payload;\n if (altText !== undefined) {\n writable.__altText = altText;\n }\n if (showCaption !== undefined) {\n writable.__showCaption = showCaption;\n }\n if (position !== undefined) {\n writable.__position = position;\n }\n }\n\n // View\n getPositionClassName(): string {\n switch (this.__position) {\n case \"left\":\n return \"float-left w-1/2\";\n case \"right\":\n return \"float-right w-1/2 \";\n case \"full\":\n return \"w-full\";\n default:\n return \"\";\n }\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const className = `${\n config.theme.inlineImage\n } ${this.getPositionClassName()}`;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n updateDOM(\n prevNode: InlineImageNode,\n dom: HTMLElement,\n config: EditorConfig\n ): false {\n const position = this.__position;\n if (position !== prevNode.__position) {\n const className = `${\n config.theme.inlineImage\n } ${this.getPositionClassName()}`;\n if (className !== undefined) {\n dom.className = className;\n }\n }\n return false;\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <InlineImageComponent\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n position={this.__position}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createInlineImageNode({\n altText,\n position,\n height,\n src,\n width,\n showCaption,\n caption,\n key,\n}: InlineImagePayload): InlineImageNode {\n return $applyNodeReplacement(\n new InlineImageNode(\n src,\n altText,\n position,\n width,\n height,\n showCaption,\n caption,\n key\n )\n );\n}\n\nexport function $isInlineImageNode(\n node: LexicalNode | null | undefined\n): node is InlineImageNode {\n return node instanceof InlineImageNode;\n}\n","import type { EditorConfig, LexicalNode, SerializedTextNode } from \"lexical\";\nimport { TextNode } from \"lexical\";\n\nexport type SerializedKeywordNode = SerializedTextNode;\n\nexport class KeywordNode extends TextNode {\n static getType(): string {\n return \"keyword\";\n }\n\n static clone(node: KeywordNode): KeywordNode {\n return new KeywordNode(node.__text, node.__key);\n }\n\n static importJSON(serializedNode: SerializedKeywordNode): KeywordNode {\n const node = $createKeywordNode(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n exportJSON(): SerializedKeywordNode {\n return {\n ...super.exportJSON(),\n type: \"keyword\",\n version: 1,\n };\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config);\n dom.style.cursor = \"default\";\n dom.className = \"keyword text-purple-900 font-bold\";\n return dom;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n isTextEntity(): true {\n return true;\n }\n}\n\nexport function $createKeywordNode(keyword: string): KeywordNode {\n return new KeywordNode(keyword);\n}\n\nexport function $isKeywordNode(node: LexicalNode | null | undefined): boolean {\n return node instanceof KeywordNode;\n}\n","import { addClassNamesToElement } from '@lexical/utils'\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread,\n} from 'lexical'\nimport { ElementNode } from 'lexical'\n\nexport type SerializedLayoutContainerNode = Spread<\n {\n templateColumns: string\n },\n SerializedElementNode\n>\n\nfunction $convertLayoutContainerElement(\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const styleAttributes = window.getComputedStyle(domNode)\n const templateColumns = styleAttributes.getPropertyValue(\n 'grid-template-columns'\n )\n if (templateColumns) {\n const node = $createLayoutContainerNode(templateColumns)\n return { node }\n }\n return null\n}\n\nexport class LayoutContainerNode extends ElementNode {\n __templateColumns: string\n\n constructor(templateColumns: string, key?: NodeKey) {\n super(key)\n this.__templateColumns = templateColumns\n }\n\n static getType(): string {\n return 'layout-container'\n }\n\n static clone(node: LayoutContainerNode): LayoutContainerNode {\n return new LayoutContainerNode(node.__templateColumns, node.__key)\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement('div')\n dom.style.gridTemplateColumns = this.__templateColumns\n if (typeof config.theme.layoutContainer === 'string') {\n addClassNamesToElement(dom, config.theme.layoutContainer)\n }\n return dom\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('div')\n element.style.gridTemplateColumns = this.__templateColumns\n element.setAttribute('data-lexical-layout-container', 'true')\n return { element }\n }\n\n updateDOM(prevNode: LayoutContainerNode, dom: HTMLElement): boolean {\n if (prevNode.__templateColumns !== this.__templateColumns) {\n dom.style.gridTemplateColumns = this.__templateColumns\n }\n return false\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute('data-lexical-layout-container')) {\n return null\n }\n return {\n conversion: $convertLayoutContainerElement,\n priority: 2,\n }\n },\n }\n }\n\n static importJSON(json: SerializedLayoutContainerNode): LayoutContainerNode {\n return $createLayoutContainerNode(json.templateColumns)\n }\n\n isShadowRoot(): boolean {\n return true\n }\n\n canBeEmpty(): boolean {\n return false\n }\n\n exportJSON(): SerializedLayoutContainerNode {\n return {\n ...super.exportJSON(),\n templateColumns: this.__templateColumns,\n type: 'layout-container',\n version: 1,\n }\n }\n\n getTemplateColumns(): string {\n return this.getLatest().__templateColumns\n }\n\n setTemplateColumns(templateColumns: string) {\n this.getWritable().__templateColumns = templateColumns\n }\n}\n\nexport function $createLayoutContainerNode(\n templateColumns: string\n): LayoutContainerNode {\n return new LayoutContainerNode(templateColumns)\n}\n\nexport function $isLayoutContainerNode(\n node: LexicalNode | null | undefined\n): node is LayoutContainerNode {\n return node instanceof LayoutContainerNode\n}\n","import { addClassNamesToElement } from '@lexical/utils'\nimport type {\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n SerializedElementNode,\n} from 'lexical'\nimport { ElementNode } from 'lexical'\n\nexport type SerializedLayoutItemNode = SerializedElementNode\n\nexport class LayoutItemNode extends ElementNode {\n static getType(): string {\n return 'layout-item'\n }\n\n static clone(node: LayoutItemNode): LayoutItemNode {\n return new LayoutItemNode(node.__key)\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement('div')\n if (typeof config.theme.layoutItem === 'string') {\n addClassNamesToElement(dom, config.theme.layoutItem)\n }\n return dom\n }\n\n updateDOM(): boolean {\n return false\n }\n\n static importDOM(): DOMConversionMap | null {\n return {}\n }\n\n static importJSON(): LayoutItemNode {\n return $createLayoutItemNode()\n }\n\n isShadowRoot(): boolean {\n return true\n }\n\n exportJSON(): SerializedLayoutItemNode {\n return {\n ...super.exportJSON(),\n type: 'layout-item',\n version: 1,\n }\n }\n}\n\nexport function $createLayoutItemNode(): LayoutItemNode {\n return new LayoutItemNode()\n}\n\nexport function $isLayoutItemNode(\n node: LexicalNode | null | undefined\n): node is LayoutItemNode {\n return node instanceof LayoutItemNode\n}\n","import {\n $applyNodeReplacement,\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type LexicalNode,\n type NodeKey,\n type SerializedTextNode,\n type Spread,\n TextNode,\n} from 'lexical'\n\nexport type SerializedMentionNode = Spread<\n {\n mentionName: string\n },\n SerializedTextNode\n>\n\nfunction $convertMentionElement(\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const textContent = domNode.textContent\n\n if (textContent !== null) {\n const node = $createMentionNode(textContent)\n return {\n node,\n }\n }\n\n return null\n}\n\nconst mentionStyle = 'background-color: var(--background-presentation-action-selected)'\nexport class MentionNode extends TextNode {\n __mention: string\n\n static getType(): string {\n return 'mention'\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__mention, node.__text, node.__key)\n }\n static importJSON(serializedNode: SerializedMentionNode): MentionNode {\n const node = $createMentionNode(serializedNode.mentionName)\n node.setTextContent(serializedNode.text)\n node.setFormat(serializedNode.format)\n node.setDetail(serializedNode.detail)\n node.setMode(serializedNode.mode)\n node.setStyle(serializedNode.style)\n return node\n }\n\n constructor(mentionName: string, text?: string, key?: NodeKey) {\n super(text ?? mentionName, key)\n this.__mention = mentionName\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n ...super.exportJSON(),\n mentionName: this.__mention,\n type: 'mention',\n version: 1,\n }\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config)\n dom.style.cssText = mentionStyle\n dom.className = 'mention'\n return dom\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('span')\n element.setAttribute('data-lexical-mention', 'true')\n element.textContent = this.__text\n return { element }\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute('data-lexical-mention')) {\n return null\n }\n return {\n conversion: $convertMentionElement,\n priority: 1,\n }\n },\n }\n }\n\n isTextEntity(): true {\n return true\n }\n\n canInsertTextBefore(): boolean {\n return false\n }\n\n canInsertTextAfter(): boolean {\n return false\n }\n}\n\nexport function $createMentionNode(mentionName: string): MentionNode {\n const mentionNode = new MentionNode(mentionName)\n mentionNode.setMode('segmented').toggleDirectionless()\n return $applyNodeReplacement(mentionNode)\n}\n\nexport function $isMentionNode(\n node: LexicalNode | null | undefined\n): node is MentionNode {\n return node instanceof MentionNode\n}\n","import { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n DOMConversionMap,\n DOMConversionOutput,\n DecoratorNode,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n} from \"lexical\";\n\nexport type SerializedPageBreakNode = SerializedLexicalNode;\n\nfunction PageBreakComponent({ nodeKey }: { nodeKey: NodeKey }) {\n const [editor] = useLexicalComposerContext();\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n event.preventDefault();\n const deleteSelection = $getSelection();\n if (isSelected && $isNodeSelection(deleteSelection)) {\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isPageBreakNode(node)) {\n node.remove();\n }\n });\n });\n }\n return false;\n },\n [editor, isSelected]\n );\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n const pbElem = editor.getElementByKey(nodeKey);\n\n if (event.target === pbElem) {\n if (!event.shiftKey) {\n clearSelection();\n }\n setSelected(!isSelected);\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n $onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n $onDelete,\n COMMAND_PRIORITY_LOW\n )\n );\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected]);\n\n useEffect(() => {\n const pbElem = editor.getElementByKey(nodeKey);\n if (pbElem !== null) {\n if (isSelected) {\n pbElem.classList.add(\"!border-border-presentation-state-focus\");\n pbElem.classList.add(\n \"!after:text-content-presentation-state-focus\"\n );\n pbElem.classList.add(\"!before:opacity-100\");\n } else {\n pbElem.classList.remove(\n \"!border-border-presentation-state-focus\"\n );\n pbElem.classList.remove(\n \"!after:text-content-presentation-state-focus\"\n );\n pbElem.classList.remove(\"!before:opacity-100\");\n }\n }\n }, [editor, isSelected, nodeKey]);\n\n return null;\n}\n\nexport class PageBreakNode extends DecoratorNode<JSX.Element> {\n static getType(): string {\n return \"page-break\";\n }\n\n static clone(node: PageBreakNode): PageBreakNode {\n return new PageBreakNode(node.__key);\n }\n\n static importJSON(): PageBreakNode {\n return $createPageBreakNode();\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n figure: (domNode: HTMLElement) => {\n const tp = domNode.getAttribute(\"type\");\n if (tp !== this.getType()) {\n return null;\n }\n\n return {\n conversion: $convertPageBreakElement,\n priority: COMMAND_PRIORITY_HIGH,\n };\n },\n };\n }\n\n exportJSON(): SerializedLexicalNode {\n return {\n type: this.getType(),\n version: 1,\n };\n }\n\n createDOM(): HTMLElement {\n const el = document.createElement(\"figure\");\n el.setAttribute(\"type\", this.getType());\n el.style.pageBreakAfter = \"always\";\n el.className = `\n relative block w-[calc(100%+56px)] overflow-visible \n -ml-[28px] mt-7 mb-7\n border-0 border-t border-b border-dashed border-border-system-global-secondary\n bg-background-system-body-secondary\n before:content-[''] \n before:absolute before:top-1/2 before:-translate-y-1/2\n before:left-10 before:opacity-50\n before:bg-cover before:w-4 before:h-4\n after:content-['PAGE_BREAK']\n after:absolute after:top-1/2 after:left-1/2 \n after:-translate-x-1/2 after:-translate-y-1/2\n after:block after:py-0.5 after:px-1.5\n after:border after:border-solid after:border-border-system-global-secondary\n after:bg-background-system-body-primary after:text-xs after:text-content-system-global-primary after:font-semibold\n `;\n return el;\n }\n\n getTextContent(): string {\n return \"\\n\";\n }\n\n isInline(): false {\n return false;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n decorate(): JSX.Element {\n return <PageBreakComponent nodeKey={this.__key} />;\n }\n}\n\nfunction $convertPageBreakElement(): DOMConversionOutput {\n return { node: $createPageBreakNode() };\n}\n\nexport function $createPageBreakNode(): PageBreakNode {\n return new PageBreakNode();\n}\n\nexport function $isPageBreakNode(\n node: LexicalNode | null | undefined\n): node is PageBreakNode {\n return node instanceof PageBreakNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n DecoratorNode,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\n\nexport type Options = ReadonlyArray<Option>;\n\nexport type Option = Readonly<{\n text: string;\n uid: string;\n votes: Array<number>;\n}>;\n\nconst PollComponent = React.lazy(() => import(\"../editor-ui/poll-component\"));\n\nfunction createUID(): string {\n return Math.random()\n .toString(36)\n .replace(/[^a-z]+/g, \"\")\n .substr(0, 5);\n}\n\nexport function createPollOption(text = \"\"): Option {\n return {\n text,\n uid: createUID(),\n votes: [],\n };\n}\n\nfunction cloneOption(\n option: Option,\n text: string,\n votes?: Array<number>\n): Option {\n return {\n text,\n uid: option.uid,\n votes: votes || Array.from(option.votes),\n };\n}\n\nexport type SerializedPollNode = Spread<\n {\n question: string;\n options: Options;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertPollElement(domNode: HTMLElement): DOMConversionOutput | null {\n const question = domNode.getAttribute(\"data-lexical-poll-question\");\n const options = domNode.getAttribute(\"data-lexical-poll-options\");\n if (question !== null && options !== null) {\n const node = $createPollNode(question, JSON.parse(options));\n return { node };\n }\n return null;\n}\n\nexport class PollNode extends DecoratorNode<JSX.Element> {\n __question: string;\n __options: Options;\n\n static getType(): string {\n return \"poll\";\n }\n\n static clone(node: PollNode): PollNode {\n return new PollNode(node.__question, node.__options, node.__key);\n }\n\n static importJSON(serializedNode: SerializedPollNode): PollNode {\n const node = $createPollNode(\n serializedNode.question,\n serializedNode.options\n );\n serializedNode.options.forEach(node.addOption);\n return node;\n }\n\n constructor(question: string, options: Options, key?: NodeKey) {\n super(key);\n this.__question = question;\n this.__options = options;\n }\n\n exportJSON(): SerializedPollNode {\n return {\n options: this.__options,\n question: this.__question,\n type: \"poll\",\n version: 1,\n };\n }\n\n addOption(option: Option): void {\n const self = this.getWritable();\n const options = Array.from(self.__options);\n options.push(option);\n self.__options = options;\n }\n\n deleteOption(option: Option): void {\n const self = this.getWritable();\n const options = Array.from(self.__options);\n const index = options.indexOf(option);\n options.splice(index, 1);\n self.__options = options;\n }\n\n setOptionText(option: Option, text: string): void {\n const self = this.getWritable();\n const clonedOption = cloneOption(option, text);\n const options = Array.from(self.__options);\n const index = options.indexOf(option);\n options[index] = clonedOption;\n self.__options = options;\n }\n\n toggleVote(option: Option, clientID: number): void {\n const self = this.getWritable();\n const votes = option.votes;\n const votesClone = Array.from(votes);\n const voteIndex = votes.indexOf(clientID);\n if (voteIndex === -1) {\n votesClone.push(clientID);\n } else {\n votesClone.splice(voteIndex, 1);\n }\n const clonedOption = cloneOption(option, option.text, votesClone);\n const options = Array.from(self.__options);\n const index = options.indexOf(option);\n options[index] = clonedOption;\n self.__options = options;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-poll-question\")) {\n return null;\n }\n return {\n conversion: $convertPollElement,\n priority: 2,\n };\n },\n };\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-lexical-poll-question\", this.__question);\n element.setAttribute(\n \"data-lexical-poll-options\",\n JSON.stringify(this.__options)\n );\n return { element };\n }\n\n createDOM(): HTMLElement {\n const elem = document.createElement(\"span\");\n elem.style.display = \"inline-block\";\n return elem;\n }\n\n updateDOM(): false {\n return false;\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <PollComponent\n question={this.__question}\n options={this.__options}\n nodeKey={this.__key}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createPollNode(question: string, options: Options): PollNode {\n return new PollNode(question, options);\n}\n\nexport function $isPollNode(\n node: LexicalNode | null | undefined\n): node is PollNode {\n return node instanceof PollNode;\n}\n","import { CodeHighlightNode, CodeNode } from '@lexical/code'\nimport { HashtagNode } from '@lexical/hashtag'\nimport { AutoLinkNode, LinkNode } from '@lexical/link'\nimport { ListItemNode, ListNode } from '@lexical/list'\nimport { OverflowNode } from '@lexical/overflow'\nimport { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode'\nimport { HeadingNode, QuoteNode } from '@lexical/rich-text'\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport {\n Klass,\n LexicalNode,\n LexicalNodeReplacement,\n ParagraphNode,\n TextNode,\n} from 'lexical'\n\nimport { AutocompleteNode } from '@/components/editor/nodes/autocomplete-node'\nimport { CollapsibleContainerNode } from '@/components/editor/nodes/collapsible-container-node'\nimport { CollapsibleContentNode } from '@/components/editor/nodes/collapsible-content-node'\nimport { CollapsibleTitleNode } from '@/components/editor/nodes/collapsible-title-node'\nimport { FigmaNode } from '@/components/editor/nodes/embeds/figma-node'\nimport { TweetNode } from '@/components/editor/nodes/embeds/tweet-node'\nimport { YouTubeNode } from '@/components/editor/nodes/embeds/youtube-node'\nimport { EmojiNode } from '@/components/editor/nodes/emoji-node'\nimport { EquationNode } from '@/components/editor/nodes/equation-node'\nimport { ExcalidrawNode } from '@/components/editor/nodes/excalidraw-node'\nimport { ImageNode } from '@/components/editor/nodes/image-node'\nimport { InlineImageNode } from '@/components/editor/nodes/inline-image-node'\nimport { KeywordNode } from '@/components/editor/nodes/keyword-node'\nimport { LayoutContainerNode } from '@/components/editor/nodes/layout-container-node'\nimport { LayoutItemNode } from '@/components/editor/nodes/layout-item-node'\nimport { MentionNode } from '@/components/editor/nodes/mention-node'\nimport { PageBreakNode } from '@/components/editor/nodes/page-break-node'\nimport { PollNode } from '@/components/editor/nodes/poll-node'\n\nexport const nodes: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement> =\n [\n HeadingNode,\n ParagraphNode,\n TextNode,\n QuoteNode,\n ListNode,\n ListItemNode,\n LinkNode,\n OverflowNode,\n HashtagNode,\n TableNode,\n TableCellNode,\n TableRowNode,\n CodeNode,\n CodeHighlightNode,\n HorizontalRuleNode,\n MentionNode,\n PageBreakNode,\n ImageNode,\n InlineImageNode,\n EmojiNode,\n KeywordNode,\n ExcalidrawNode,\n PollNode,\n LayoutContainerNode,\n LayoutItemNode,\n EquationNode,\n CollapsibleContainerNode,\n CollapsibleContentNode,\n CollapsibleTitleNode,\n AutoLinkNode,\n FigmaNode,\n TweetNode,\n YouTubeNode,\n AutocompleteNode,\n ]\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useEffect as t}from\"react\";function o({defaultSelection:o}){const[l]=e();return t((()=>{l.focus((()=>{const e=document.activeElement,t=l.getRootElement();null===t||null!==e&&t.contains(e)||t.focus({preventScroll:!0})}),{defaultSelection:o})}),[o,l]),null}export{o as AutoFocusPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{registerCheckList as o}from\"@lexical/list\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useEffect as t}from\"react\";function e(){const[e]=r();return t((()=>o(e)),[e]),null}export{e as CheckListPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isLinkNode as e}from\"@lexical/link\";import{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{$findMatchingParent as n,isHTMLAnchorElement as r}from\"@lexical/utils\";import{isDOMNode as l,getNearestEditorFromDOMNode as o,$getNearestNodeFromDOMNode as i,$isElementNode as u,$getSelection as a,$isRangeSelection as c}from\"lexical\";import{useEffect as s}from\"react\";function f({newTab:f=!0,disabled:m=!1}){const[p]=t();return s((()=>{const t=t=>{const s=t.target;if(!l(s))return;const d=o(s);if(null===d)return;let v=null,x=null;if(d.update((()=>{const t=i(s);if(null!==t){const l=n(t,u);if(!m)if(e(l))v=l.sanitizeUrl(l.getURL()),x=l.getTarget();else{const e=function(e,t){let n=e;for(;null!=n;){if(t(n))return n;n=n.parentNode}return null}(s,r);null!==e&&(v=e.href,x=e.target)}}})),null===v||\"\"===v)return;const g=p.getEditorState().read(a);if(c(g)&&!g.isCollapsed())return void t.preventDefault();const L=\"auxclick\"===t.type&&1===t.button;window.open(v,f||L||t.metaKey||t.ctrlKey||\"_blank\"===x?\"_blank\":\"_self\"),t.preventDefault()},s=e=>{1===e.button&&t(e)};return p.registerRootListener(((e,n)=>{null!==n&&(n.removeEventListener(\"click\",t),n.removeEventListener(\"mouseup\",s)),null!==e&&(e.addEventListener(\"click\",t),e.addEventListener(\"mouseup\",s))}))}),[p,f,m]),null}export{f as ClickableLinkPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport*as r from\"react\";import{jsx as e}from\"react/jsx-runtime\";function t(r,e){return t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,e){return r.__proto__=e,r},t(r,e)}var o={error:null},n=function(e){var n,a;function s(){for(var r,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return(r=e.call.apply(e,[this].concat(n))||this).state=o,r.resetErrorBoundary=function(){for(var e,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];null==r.props.onReset||(e=r.props).onReset.apply(e,o),r.reset()},r}a=e,(n=s).prototype=Object.create(a.prototype),n.prototype.constructor=n,t(n,a),s.getDerivedStateFromError=function(r){return{error:r}};var i=s.prototype;return i.reset=function(){this.setState(o)},i.componentDidCatch=function(r,e){var t,o;null==(t=(o=this.props).onError)||t.call(o,r,e)},i.componentDidUpdate=function(r,e){var t,o,n,a,s=this.state.error,i=this.props.resetKeys;null!==s&&null!==e.error&&(void 0===(n=r.resetKeys)&&(n=[]),void 0===(a=i)&&(a=[]),n.length!==a.length||n.some((function(r,e){return!Object.is(r,a[e])})))&&(null==(t=(o=this.props).onResetKeysChange)||t.call(o,r.resetKeys,i),this.reset())},i.render=function(){var e=this.state.error,t=this.props,o=t.fallbackRender,n=t.FallbackComponent,a=t.fallback;if(null!==e){var s={error:e,resetErrorBoundary:this.resetErrorBoundary};if(r.isValidElement(a))return a;if(\"function\"==typeof o)return o(s);if(n)return r.createElement(n,s);throw new Error(\"react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop\")}return this.props.children},s}(r.Component);function a({children:r,onError:t}){return e(n,{fallback:e(\"div\",{style:{border:\"1px solid #f00\",color:\"#f00\",padding:\"8px\"},children:\"An error was thrown.\"}),onError:t,children:r})}export{a as LexicalErrorBoundary};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{registerLexicalTextEntity as t}from\"@lexical/text\";import{mergeRegister as r}from\"@lexical/utils\";import{useEffect as e}from\"react\";function i(i,m,c){const[l]=o();e((()=>r(...t(l,i,m,c))),[c,l,i,m])}export{i as useLexicalTextEntity};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{HashtagNode as t,$createHashtagNode as e}from\"@lexical/hashtag\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useLexicalTextEntity as n}from\"@lexical/react/useLexicalTextEntity\";import{useEffect as o,useCallback as a}from\"react\";const i=new RegExp(function(){const{alpha:t,alphanumeric:e,hashChars:r}=function(){const t=String.fromCharCode,e=\"A-Za-zªµºÀ-ÖØ-öø-Ɂɐ-ˁˆ-ˑˠ-ˤˮͺΆΈ-ΊΌΎ-ΡΣ-ώϐ-ϵϷ-ҁҊ-ӎӐ-ӹԀ-ԏԱ-Ֆՙա-ևא-תװ-ײء-غـ-يٮ-ٯٱ-ۓەۥ-ۦۮ-ۯۺ-ۼۿܐܒ-ܯݍ-ݭހ-ޥޱऄ-हऽॐक़-ॡॽঅ-ঌএ-ঐও-নপ-রলশ-হঽৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽૐૠ-ૡଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽଡ଼-ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹఅ-ఌఎ-ఐఒ-నప-ళవ-హౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠ-ೡഅ-ഌഎ-ഐഒ-നപ-ഹൠ-ൡඅ-ඖක-නඳ-රලව-ෆก-ะา-ำเ-ๆກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-ະາ-ຳຽເ-ໄໆໜ-ໝༀཀ-ཇཉ-ཪྈ-ྋက-အဣ-ဧဩ-ဪၐ-ၕႠ-Ⴥა-ჺჼᄀ-ᅙᅟ-ᆢᆨ-ᇹሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙶᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦩᧁ-ᧇᨀ-ᨖᴀ-ᶿḀ-ẛẠ-ỹἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₔℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℱℳ-ℹℼ-ℿⅅ-ⅉⰀ-Ⱞⰰ-ⱞⲀ-ⳤⴀ-ⴥⴰ-ⵥⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄬㄱ-ㆎㆠ-ㆷㇰ-ㇿ㐀-䶵一-龻ꀀ-ꒌꠀ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢ가-힣豈-鶴侮-頻並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵÀ-ÖØ-öø-ÿĀ-ɏɓ-ɔɖ-ɗəɛɣɨɯɲʉʋʻ̀-ͯḀ-ỿЀ-ӿԀ-ԧⷠ-ⷿꙀ-֑ꚟ-ֿׁ-ׂׄ-ׇׅא-תװ-״-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﭏؐ-ؚؠ-ٟٮ-ۓە-ۜ۞-۪ۨ-ۯۺ-ۼۿݐ-ݿࢠࢢ-ࢬࣤ-ࣾﭐ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼ-ก-ฺเ-๎ᄀ-ᇿ-ㆅꥠ-가-ힰ-ᄀ-ᅵァ-ヺー-ヾヲ-゚0-9A-Za-zぁ-ゖ゙-ゞ㐀-䶿一-鿿\"+t(173824)+\"-\"+t(177983)+t(177984)+\"-\"+t(178207)+t(194560)+\"-\"+t(195103)+\"〃々〻\";return{alpha:e,alphanumeric:e+\"̀-ͯ҃-֑҆-ֹֻ-ֽֿׁ-ׂׄ-ׇׅؐ-ًؕ-ٰٞۖ-ۜ۟-ۤۧ-۪ۨ-ܑۭܰ-݊ަ-ްँ-ः़ा-्॑-॔ॢ-ॣঁ-ঃ়া-ৄে-ৈো-্ৗৢ-ৣਁ-ਃ਼ਾ-ੂੇ-ੈੋ-੍ੰ-ੱઁ-ઃ઼ા-ૅે-ૉો-્ૢ-ૣଁ-ଃ଼ା-ୃେ-ୈୋ-୍ୖ-ୗஂா-ூெ-ைொ-்ௗఁ-ఃా-ౄె-ైొ-్ౕ-ౖಂ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕ-ೖം-ഃാ-ൃെ-ൈൊ-്ൗං-ඃ්ා-ුූෘ-ෟෲ-ෳัิ-ฺ็-๎ັິ-ູົ-ຼ່-ໍ༘-༹༙༵༷༾-༿ཱ-྄྆-྇ྐ-ྗྙ-ྼ࿆ာ-ဲံ-္ၖ-ၙ፟ᜒ-᜔ᜲ-᜴ᝒ-ᝓᝲ-ᝳា-៓៝᠋-᠍ᢩᤠ-ᤫᤰ-᤻ᦰ-ᧀᧈ-ᧉᨗ-ᨛ᷀-᷃⃐-⃥⃜⃡-⃫〪-゙〯-゚ꠂ꠆ꠋꠣ-ꠧﬞ︀-️︠-︣0-9٠-٩۰-۹०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉០-៩᠐-᠙᥆-᥏᧐-᧙0-9_\",hashChars:\"#\\\\uFF03\"}}(),n=\"[\"+e+\"]\";return\"(\"+(\"^|$|[^&/\"+e+\"]\")+\")(\"+(\"[\"+r+\"]\")+\")(\"+n+\"*\"+(\"[\"+t+\"]\")+n+\"*)\"}(),\"i\");function c(){const[c]=r();o((()=>{if(!c.hasNodes([t]))throw new Error(\"HashtagPlugin: HashtagNode not registered on editor\")}),[c]);const l=a((t=>e(t.getTextContent())),[]),s=a((t=>{const e=i.exec(t);if(null===e)return null;const r=e[3].length+1,n=e.index+e[1].length;return{end:n+r,start:n}}),[]);return n(s,t,l),null}export{c as HashtagPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{mergeRegister as t}from\"@lexical/utils\";import{UNDO_COMMAND as e,COMMAND_PRIORITY_EDITOR as n,REDO_COMMAND as r,CLEAR_EDITOR_COMMAND as o,CLEAR_HISTORY_COMMAND as i,CAN_REDO_COMMAND as s,CAN_UNDO_COMMAND as c,$isRangeSelection as a,$isTextNode as u,$isRootNode as d}from\"lexical\";const l=0,f=1,p=2,h=0,m=1,g=2,_=3,S=4;function y(t,e,n,r,o){if(null===t||0===n.size&&0===r.size&&!o)return h;const i=e._selection,s=t._selection;if(o)return m;if(!(a(i)&&a(s)&&s.isCollapsed()&&i.isCollapsed()))return h;const c=function(t,e,n){const r=t._nodeMap,o=[];for(const t of e){const e=r.get(t);void 0!==e&&o.push(e)}for(const[t,e]of n){if(!e)continue;const n=r.get(t);void 0===n||d(n)||o.push(n)}return o}(e,n,r);if(0===c.length)return h;if(c.length>1){const n=e._nodeMap,r=n.get(i.anchor.key),o=n.get(s.anchor.key);return r&&o&&!t._nodeMap.has(r.__key)&&u(r)&&1===r.__text.length&&1===i.anchor.offset?g:h}const l=c[0],f=t._nodeMap.get(l.__key);if(!u(f)||!u(l)||f.__mode!==l.__mode)return h;const p=f.__text,y=l.__text;if(p===y)return h;const k=i.anchor,C=s.anchor;if(k.key!==C.key||\"text\"!==k.type)return h;const x=k.offset,M=C.offset,z=y.length-p.length;return 1===z&&M===x-1?g:-1===z&&M===x+1?_:-1===z&&M===x?S:h}function k(t,e){let n=Date.now(),r=h;return(o,i,s,c,d,m)=>{const g=Date.now();if(m.has(\"historic\"))return r=h,n=g,p;const _=y(o,i,c,d,t.isComposing()),S=(()=>{const S=null===s||s.editor===t,y=m.has(\"history-push\");if(!y&&S&&m.has(\"history-merge\"))return l;if(null===o)return f;const k=i._selection;if(!(c.size>0||d.size>0))return null!==k?l:p;if(!1===y&&_!==h&&_===r&&g<n+e&&S)return l;if(1===c.size){if(function(t,e,n){const r=e._nodeMap.get(t),o=n._nodeMap.get(t),i=e._selection,s=n._selection;return!(a(i)&&a(s)&&\"element\"===i.anchor.type&&\"element\"===i.focus.type&&\"text\"===s.anchor.type&&\"text\"===s.focus.type||!u(r)||!u(o)||r.__parent!==o.__parent)&&JSON.stringify(e.read((()=>r.exportJSON())))===JSON.stringify(n.read((()=>o.exportJSON())))}(Array.from(c)[0],o,i))return l}return f})();return n=g,r=_,S}}function C(t){t.undoStack=[],t.redoStack=[],t.current=null}function x(a,u,d){const l=k(a,d),h=t(a.registerCommand(e,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==r.length){const o=e.current,i=r.pop();null!==o&&(n.push(o),t.dispatchCommand(s,!0)),0===r.length&&t.dispatchCommand(c,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(r,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==n.length){const o=e.current;null!==o&&(r.push(o),t.dispatchCommand(c,!0));const i=n.pop();0===n.length&&t.dispatchCommand(s,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(o,(()=>(C(u),!1)),n),a.registerCommand(i,(()=>(C(u),a.dispatchCommand(s,!1),a.dispatchCommand(c,!1),!0)),n),a.registerUpdateListener((({editorState:t,prevEditorState:e,dirtyLeaves:n,dirtyElements:r,tags:o})=>{const i=u.current,d=u.redoStack,h=u.undoStack,m=null===i?null:i.editorState;if(null!==i&&t===m)return;const g=l(e,t,i,n,r,o);if(g===f)0!==d.length&&(u.redoStack=[],a.dispatchCommand(s,!1)),null!==i&&(h.push({...i}),a.dispatchCommand(c,!0));else if(g===p)return;u.current={editor:a,editorState:t}})));return h}function M(){return{current:null,redoStack:[],undoStack:[]}}export{M as createEmptyHistoryState,x as registerHistory};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEmptyHistoryState as o,registerHistory as r}from\"@lexical/history\";export{createEmptyHistoryState}from\"@lexical/history\";import{useMemo as e,useEffect as i}from\"react\";function a({delay:a,externalHistoryState:c}){const[l]=t();return function(t,a,c=1e3){const l=e((()=>a||o()),[a]);i((()=>r(t,l,c)),[c,t,l])}(l,c,a),null}export{a as HistoryPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{INSERT_HORIZONTAL_RULE_COMMAND as r,$createHorizontalRuleNode as t}from\"@lexical/react/LexicalHorizontalRuleNode\";import{$insertNodeToNearestRoot as e}from\"@lexical/utils\";import{$getSelection as i,$isRangeSelection as l,COMMAND_PRIORITY_EDITOR as c}from\"lexical\";import{useEffect as m}from\"react\";function n(){const[n]=o();return m((()=>n.registerCommand(r,(o=>{const r=i();if(!l(r))return!1;if(null!==r.focus.getNode()){const o=t();e(o)}return!0}),c)),[n]),null}export{n as HorizontalRulePlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{registerList as t,ListNode as r,ListItemNode as o,registerListStrictIndentTransform as e}from\"@lexical/list\";import{useLexicalComposerContext as i}from\"@lexical/react/LexicalComposerContext\";import{useEffect as n}from\"react\";function s({hasStrictIndent:s=!1}){const[c]=i();return n((()=>{if(!c.hasNodes([r,o]))throw new Error(\"ListPlugin: ListNode and/or ListItemNode not registered on editor\")}),[c]),n((()=>{if(s)return e(c)}),[c,s]),function(r){n((()=>t(r)),[r])}(c),null}export{s as ListPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{TRANSFORMERS as e,registerMarkdownShortcuts as r}from\"@lexical/markdown\";import{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{HorizontalRuleNode as o,$isHorizontalRuleNode as l,$createHorizontalRuleNode as n}from\"@lexical/react/LexicalHorizontalRuleNode\";import{useEffect as c}from\"react\";const i=[{dependencies:[o],export:e=>l(e)?\"***\":null,regExp:/^(---|\\*\\*\\*|___)\\s?$/,replace:(e,r,t,o)=>{const l=n();o||null!=e.getNextSibling()?e.replace(l):e.insertBefore(l),l.selectNext()},type:\"element\"},...e];function a({transformers:e=i}){const[o]=t();return c((()=>r(o,e)),[o,e]),null}export{i as DEFAULT_TRANSFORMERS,a as MarkdownShortcutPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i((()=>n(t)),[t,n]),[a,l]=r((()=>u.initialValueFn())),d=o(a);return c((()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n((e=>{d.current=e,l(e)}))}),[u,n]),a}(u)}export{a as useLexicalEditable};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{useLexicalEditable as e}from\"@lexical/react/useLexicalEditable\";import{$canShowPlaceholderCurry as r}from\"@lexical/text\";import{mergeRegister as o}from\"@lexical/utils\";import{useLayoutEffect as n,useEffect as i,useState as c,useMemo as l,Suspense as a}from\"react\";import{flushSync as u,createPortal as m}from\"react-dom\";import{jsx as s,jsxs as d,Fragment as f}from\"react/jsx-runtime\";import{registerDragonSupport as p}from\"@lexical/dragon\";import{registerRichText as x}from\"@lexical/rich-text\";const g=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:i;function E(t){return t.getEditorState().read(r(t.isComposing()))}function h({contentEditable:e,placeholder:r=null,ErrorBoundary:n}){const[E]=t(),h=function(t,e){const[r,o]=c((()=>t.getDecorators()));return g((()=>t.registerDecoratorListener((t=>{u((()=>{o(t)}))}))),[t]),i((()=>{o(t.getDecorators())}),[t]),l((()=>{const o=[],n=Object.keys(r);for(let i=0;i<n.length;i++){const c=n[i],l=s(e,{onError:e=>t._onError(e),children:s(a,{fallback:null,children:r[c]})}),u=t.getElementByKey(c);null!==u&&o.push(m(l,u,c))}return o}),[e,r,t])}(E,n);return function(t){g((()=>o(x(t),p(t))),[t])}(E),d(f,{children:[e,s(w,{content:r}),h]})}function w({content:r}){const[n]=t(),i=function(t){const[e,r]=c((()=>E(t)));return g((()=>{function e(){const e=E(t);r(e)}return e(),o(t.registerUpdateListener((()=>{e()})),t.registerEditableListener((()=>{e()})))}),[t]),e}(n),l=e();return i?\"function\"==typeof r?r(l):r:null}export{h as RichTextPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getSelection as e,$isRangeSelection as t,$isTextNode as n}from\"lexical\";function o(o){const i=window.location.origin,a=a=>{if(a.origin!==i)return;const r=o.getRootElement();if(document.activeElement!==r)return;const s=a.data;if(\"string\"==typeof s){let i;try{i=JSON.parse(s)}catch(e){return}if(i&&\"nuanria_messaging\"===i.protocol&&\"request\"===i.type){const r=i.payload;if(r&&\"makeChanges\"===r.functionId){const i=r.args;if(i){const[r,s,c,g,d,f]=i;o.update((()=>{const o=e();if(t(o)){const e=o.anchor;let t=e.getNode(),i=0,f=0;if(n(t)&&r>=0&&s>=0&&(i=r,f=r+s,o.setTextNodeRange(t,i,t,f)),i===f&&\"\"===c||(o.insertRawText(c),t=e.getNode()),n(t)){i=g,f=g+d;const e=t.getTextContentSize();i=i>e?e:i,f=f>e?e:f,o.setTextNodeRange(t,i,t,f)}a.stopImmediatePropagation()}}))}}}}};return window.addEventListener(\"message\",a,!0),()=>{window.removeEventListener(\"message\",a,!0)}}export{o as registerDragonSupport};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as e,$getNearestBlockElementAncestorOrThrow as n,$filter as r}from\"@lexical/utils\";import{KEY_TAB_COMMAND as o,$getSelection as c,$isRangeSelection as i,OUTDENT_CONTENT_COMMAND as s,INDENT_CONTENT_COMMAND as a,INSERT_TAB_COMMAND as m,COMMAND_PRIORITY_EDITOR as u,COMMAND_PRIORITY_CRITICAL as l,$isBlockElementNode as f,$createRangeSelection as d,$normalizeSelection__EXPERIMENTAL as p}from\"lexical\";import{useEffect as g}from\"react\";function x(t,g){return e(t.registerCommand(o,(e=>{const o=c();if(!i(o))return!1;e.preventDefault();const u=function(t){const e=t.getNodes();if(r(e,(t=>f(t)&&t.canIndent()?t:null)).length>0)return!0;const o=t.anchor,c=t.focus,i=c.isBefore(o)?c:o,s=i.getNode(),a=n(s);if(a.canIndent()){const t=a.getKey();let e=d();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=p(e),e.anchor.is(i))return!0}return!1}(o)?e.shiftKey?s:a:m;return t.dispatchCommand(u,void 0)}),u),t.registerCommand(a,(()=>{if(null==g)return!1;const t=c();if(!i(t))return!1;const e=t.getNodes().map((t=>n(t).getIndent()));return Math.max(...e)+1>=g}),l))}function h({maxIndent:e}){const[n]=t();return g((()=>x(n,e)),[n,e]),null}export{h as TabIndentationPlugin,x as registerTabIndentation};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{setScrollableTablesActive as o,registerTablePlugin as l,registerTableSelectionObserver as e,registerTableCellUnmergeTransform as t,TableCellNode as a}from\"@lexical/table\";import{useEffect as n}from\"react\";function c({hasCellMerge:c=!0,hasCellBackgroundColor:i=!0,hasTabHandler:u=!0,hasHorizontalScroll:s=!1}){const[m]=r();return n((()=>{o(m,s)}),[m,s]),n((()=>l(m)),[m]),n((()=>e(m,u)),[m,u]),n((()=>{if(!c)return t(m)}),[m,c]),n((()=>{if(!i)return m.registerNodeTransform(a,(r=>{null!==r.getBackgroundColor()&&r.setBackgroundColor(null)}))}),[m,i,c]),null}export{c as TablePlugin};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-black\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { createContext, useContext, JSX } from 'react'\n\nimport { LexicalEditor } from 'lexical'\n\nconst Context = createContext<{\n activeEditor: LexicalEditor\n $updateToolbar: () => void\n blockType: string\n setBlockType: (blockType: string) => void\n showModal: (title: string, showModal: (onClose: () => void) => JSX.Element) => void\n}>({\n activeEditor: {} as LexicalEditor,\n $updateToolbar: () => {},\n blockType: 'paragraph',\n setBlockType: () => {},\n showModal: () => {},\n})\n\nexport function ToolbarContext({\n activeEditor,\n $updateToolbar,\n blockType,\n setBlockType,\n showModal,\n children,\n}: {\n activeEditor: LexicalEditor\n $updateToolbar: () => void\n blockType: string\n setBlockType: (blockType: string) => void\n showModal: (title: string, showModal: (onClose: () => void) => JSX.Element) => void\n children: React.ReactNode\n}) {\n return (\n <Context.Provider\n value={{ activeEditor, $updateToolbar, blockType, setBlockType, showModal }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport function useToolbarContext() {\n return useContext(Context)\n}\n","import { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n $getSelection,\n BaseSelection,\n COMMAND_PRIORITY_CRITICAL,\n} from 'lexical'\nimport { SELECTION_CHANGE_COMMAND } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\n\nexport function useUpdateToolbarHandler(\n callback: (selection: BaseSelection) => void\n) {\n const [editor] = useLexicalComposerContext()\n const { activeEditor } = useToolbarContext()\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection()\n if (selection) {\n callback(selection)\n }\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n )\n }, [editor, callback])\n\n useEffect(() => {\n activeEditor.getEditorState().read(() => {\n const selection = $getSelection()\n if (selection) {\n callback(selection)\n }\n })\n }, [activeEditor, callback])\n}\n","import {\n CodeIcon,\n Heading1Icon,\n Heading2Icon,\n Heading3Icon,\n ListIcon,\n ListOrderedIcon,\n ListTodoIcon,\n QuoteIcon,\n TextIcon,\n} from 'lucide-react'\n\nexport const blockTypeToBlockName: Record<\n string,\n { label: string; icon: React.ReactNode }\n> = {\n paragraph: {\n label: 'Paragraph',\n icon: <TextIcon className=\"size-4\" />,\n },\n h1: {\n label: 'Heading 1',\n icon: <Heading1Icon className=\"size-4\" />,\n },\n h2: {\n label: 'Heading 2',\n icon: <Heading2Icon className=\"size-4\" />,\n },\n h3: {\n label: 'Heading 3',\n icon: <Heading3Icon className=\"size-4\" />,\n },\n number: {\n label: 'Numbered List',\n icon: <ListOrderedIcon className=\"size-4\" />,\n },\n bullet: {\n label: 'Bulleted List',\n icon: <ListIcon className=\"size-4\" />,\n },\n check: {\n label: 'Check List',\n icon: <ListTodoIcon className=\"size-4\" />,\n },\n code: {\n label: 'Code Block',\n icon: <CodeIcon className=\"size-4\" />,\n },\n quote: {\n label: 'Quote',\n icon: <QuoteIcon className=\"size-4\" />,\n },\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","import React, { ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../utils/cn\";\nimport { ButtonVariant, Themes } from \"../utils/types\";\n\ninterface Props\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n is_loading?: boolean;\n disabled?: boolean;\n asChild?: boolean;\n variant?: ButtonVariant;\n as?: React.ElementType;\n theme?: Themes\n containerClassName?: string\n}\nexport const Button = forwardRef<HTMLButtonElement, Props>(\n (\n {\n is_loading = false,\n variant,\n size,\n asChild,\n as: Tag = \"button\",\n buttonType,\n className,\n disabled,\n theme,\n children,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const Component = asChild ? Slot : Tag;\n\n return (\n <Component\n {...props}\n data-theme={theme}\n disabled={disabled || is_loading}\n ref={ref}\n className={cn(\n buttonVariants({\n variant,\n size,\n is_loading,\n buttonType,\n disabled,\n }),\n className\n )}\n >\n {asChild ? (\n React.cloneElement(\n children as React.ReactElement,\n {},\n <div className={cn(\"px-[3px] flex items-center justify-center gap-[3px] has-[>i]:p-0\", containerClassName)}>\n {(children as React.ReactElement<any>).props.children}\n {is_loading && <LoadingIcon size={size} />}\n </div>\n )\n ) : (\n <div className={cn(\"px-[3px] flex items-center justify-center gap-[3px] has-[>i]:p-0\", containerClassName)}>\n {children}\n {is_loading && <LoadingIcon size={size} />}\n </div>\n )}\n </Component>\n );\n }\n);\n\nButton.displayName = \"Button\"\n\n\n\nexport function LoadingIcon({ size, className }: {\n size?: \"S\" | \"M\" | \"L\" | \"XL\" | null;\n className?: string;\n}) {\n const iconVariants = cva(\"animate-spin \", {\n variants: {\n size: {\n S: \"w-[12px] h-[12px]\",\n M: \"w-[18px] h-[18px]\",\n L: \"w-[20px] h-[20px]\",\n XL: \"w-[20px] h-[20px]\"\n },\n },\n defaultVariants: {\n size: \"M\",\n },\n });\n\n return (\n <svg\n className={cn(iconVariants({ size, className }))}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6ZM2.25 6C2.25 8.07107 3.92893 9.75 6 9.75C8.07107 9.75 9.75 8.07107 9.75 6C9.75 3.92893 8.07107 2.25 6 2.25C3.92893 2.25 2.25 3.92893 2.25 6Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M11 6C11 5.34339 10.8707 4.69321 10.6194 4.08658C10.3681 3.47995 9.99983 2.92876 9.53553 2.46447C9.07124 2.00017 8.52004 1.63188 7.91342 1.3806C7.30679 1.12933 6.65661 1 6 1V2.25C6.49246 2.25 6.98009 2.347 7.43506 2.53545C7.89003 2.72391 8.30343 3.00013 8.65165 3.34835C8.99987 3.69657 9.27609 4.10997 9.46455 4.56494C9.653 5.01991 9.75 5.50754 9.75 6H11Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\n\n\n\nconst buttonVariants = cva(\n \"flex items-center whitespace-nowrap justify-center transition-[background,color] duration-200 ease-in-out border border-transparent outline-none leading-none [&-i]:!leading-none\",\n {\n variants: {\n variant: {\n // fucus styles for medium screens and above\n PrimeStyle: [\n \"bg-background-presentation-action-secondary\",\n \"text-content-presentation-action-light-primary\",\n \"hover:bg-background-presentation-action-hover\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:lg:focus:md:border lg:focus:md:border-border-presentation-state-focus\", // Focus style only for medium screens and above\n \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n ],\n BlueSecStyle: [\n \"bg-background-presentation-action-secondary\",\n \"text-content-presentation-action-light-primary\",\n \"hover:bg-background-presentation-state-information-primary\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"active:bg-background-presentation-state-information-primary active:text-content-presentation-action-hover\",\n ],\n YelSecStyle: [\n \"bg-background-presentation-action-secondary\",\n \"text-content-presentation-action-light-primary\",\n \"hover:bg-background-presentation-state-warning-primary\",\n \"hover:text-content-presentation-action-light-primary\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"active:bg-background-presentation-state-warning-primary active:text-content-presentation-action-light-primary\",\n ],\n RedSecStyle: [\n \"bg-background-presentation-action-secondary\",\n \"text-content-presentation-action-light-primary\",\n \"hover:bg-background-presentation-state-negative-primary\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"active:bg-background-presentation-state-negative-primary active:text-content-presentation-action-hover\",\n ],\n BorderStyle: [\n \"text-content-presentation-action-light-primary\",\n \"border border-border-presentation-action-disabled\",\n \"bg-background-presentation-action-borderstyle\",\n \"hover:bg-background-presentation-action-hover\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"focus:lg:text-content-presentation-action-light-primary\",\n \"focus:hover:lg:text-content-presentation-action-hover\",\n \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n ],\n PrimeContStyle: [\n \"text-content-presentation-action-light-primary\",\n \"border-transparent bg-transparent\",\n \"hover:bg-background-presentation-action-contstyle-hover\",\n \"hover:text-content-presentation-action-light-primary\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"focus:lg:bg-background-presentation-action-borderstyle\",\n \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-light-primary\",\n ],\n BlueContStyle: [\n \"text-content-presentation-action-light-primary\",\n \"border-transparent bg-transparent\",\n \"hover:bg-background-presentation-action-contstyle-hover\",\n \"hover:text-content-presentation-action-information-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"focus:lg:bg-background-presentation-action-borderstyle\",\n \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-information-hover\",\n ],\n RedContStyle: [\n \"text-content-presentation-action-light-primary\",\n \"border-transparent bg-transparent\",\n \"hover:bg-background-presentation-action-contstyle-hover\",\n \"hover:text-content-presentation-action-negative-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"focus:lg:bg-background-presentation-action-borderstyle\",\n \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-negative-hover\",\n ],\n },\n size: {\n S: \"h-[22px] px-[6px] typography-body-small-medium rounded-[4px] [&_i]:text-[12px]\",\n M: \"h-[28px] px-[14px] typography-body-large-medium rounded-[4px] [&_i]:text-[18px]\",\n L: \"h-[34px] px-[22px] typography-body-large-medium rounded-[6px] [&_i]:text-[20px]\",\n XL: \"h-[40px] px-[30px] typography-headers-medium-medium rounded-[6px] [&_i]:text-[22px]\",\n },\n is_loading: {\n true: \"[&_i]:hidden\",\n },\n disabled: {\n true: \"cursor-not-allowed\",\n },\n buttonType: {\n button: \"\",\n icon: \"\",\n },\n },\n defaultVariants: {\n size: \"M\",\n variant: \"PrimeStyle\",\n buttonType: \"button\",\n },\n compoundVariants: [\n {\n is_loading: true,\n className: [\n \"cursor-wait\",\n \"bg-background-presentation-action-hover\",\n \"text-content-presentation-action-hover\",\n \"hover:bg-background-presentation-action-hover\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:lg:border focus:lg:border-transparent\",\n \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n ],\n },\n {\n disabled: true,\n className: [\n \"cursor-not-allowed\",\n \"pointer-events-none\",\n \"bg-background-presentation-action-disabled\",\n \"text-content-presentation-state-disabled\",\n \"border-transparent\",\n ],\n },\n {\n buttonType: \"icon\",\n size: \"S\",\n className: \"w-[22px] h-[22px] p-0 leading-[0]\",\n },\n {\n buttonType: \"icon\",\n size: \"M\",\n className: \"w-[28px] h-[28px] p-0 leading-[0]\",\n },\n {\n buttonType: \"icon\",\n size: \"L\",\n className: \"w-[34px] h-[34px] p-0 leading-[0]\",\n },\n {\n buttonType: \"icon\",\n size: \"XL\",\n className: \"w-[40px] h-[40px] p-0 leading-[0]\",\n },\n ],\n }\n);\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Themes } from \"../utils/types\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport React from \"react\";\n\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst ToolTipRoot = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-background-system-body-tertiary px-3 py-1.5 text-xs text-content-system-global-primary animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nconst TooltipArrow = TooltipPrimitive.Arrow\nexport type ToolTipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport enum ContentAlign {\n START = \"start\",\n CENTER = \"center\",\n END = \"end\",\n}\n\nconst tooltipStyles = cva(\"typography-body-medium-regular rounded-[4px] p-1\", {\n variants: {\n variant: {\n primary: \"bg-background-system-body-tertiary text-content-system-global-primary\",\n highlight: \"bg-background-presentation-state-information-primary text-content-system-global-primary\"\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\ninterface TooltipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tooltipStyles> {\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n toolTipSide?: ToolTipSide;\n contentAlign?: ContentAlign;\n avoidCollisions?: boolean;\n tip?: boolean;\n delay?: number;\n disabled?: boolean;\n text: ReactNode;\n theme?: Themes\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n children,\n open,\n text,\n theme = \"dark\",\n onOpenChange,\n toolTipSide,\n contentAlign = ContentAlign.CENTER,\n avoidCollisions = true,\n delay = 400,\n tip = true,\n variant,\n className,\n ...props\n}) => {\n return (\n <TooltipProvider>\n <ToolTipRoot delayDuration={delay} {...(typeof open !== \"undefined\" && { open })} {...(onOpenChange && { onOpenChange })}>\n <TooltipTrigger aria-label=\"Open tooltip\" asChild>\n {children}\n </TooltipTrigger>\n\n <TooltipContent\n data-theme={theme}\n sideOffset={2}\n side={toolTipSide}\n align={contentAlign}\n avoidCollisions={avoidCollisions}\n className={cn(tooltipStyles({ variant, className }))}\n {...props}\n >\n {text}\n {tip && <TooltipArrow className={cn(\"fill-background-system-body-tertiary\", {\n \"fill-wavy-navy-900\": variant === \"highlight\"\n })} />}\n </TooltipContent>\n </ToolTipRoot>\n </TooltipProvider>\n );\n};\n\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipArrow, ToolTipRoot }\n","\"use client\";\nimport React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"../utils/cn\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Button } from \"./Button\";\nimport { Tooltip } from \"./Tooltip\";\nimport { Themes } from \"../utils/types\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> &\n VariantProps<typeof PopoverTriggerStyles> & {\n errors?: string;\n icon?: string\n theme?: Themes\n }\n>(\n (\n {\n className,\n children,\n size = \"M\",\n variant = \"PresentationStyle\",\n errors,\n theme,\n icon,\n ...props\n },\n ref\n ) => {\n return (\n <Tooltip toolTipSide={\"top\"} open={errors !== undefined} text={errors}>\n <SelectPrimitive.Trigger\n data-theme={theme}\n ref={ref}\n className={cn(\n PopoverTriggerStyles({\n size,\n variant,\n error: errors !== undefined,\n }),\n className\n )}\n {...props}\n >\n <p className={cn({\n \"[&_span]:text-content-system-global-secondary\": !props.value\n })}>{children}</p>\n\n <Button\n as={\"span\"}\n buttonType=\"icon\"\n className={cn(\n [\n \"group-aria-expanded:bg-background-presentation-action-hover\",\n \"group-aria-expanded:text-content-system-global-primary\",\n ]\n )}\n >\n <i\n className={cn(\n \"ri-arrow-down-s-line transition-all duration-100 ease-in-out group-aria-expanded:rotate-180\",\n { \"!text-[12px]\": size === \"S\" },\n { \"!text-[16px]\": size === \"M\" },\n { \"!text-[18px]\": size === \"L\" },\n { \"!text-[26px]\": size === \"XL\" },\n { icon: icon }\n )}\n />\n </Button>\n </SelectPrimitive.Trigger>\n </Tooltip>\n );\n }\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 \",\n className\n )}\n {...props}\n >\n <i\n className=\"h-4 w-4 ri-arrow-up-s-line\"\n color={\"var(--content-presentation-action-light-primary)\"}\n />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = \"SelectScrollUpButton\";\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <i\n color={\"var(--content-presentation-action-light-primary)\"}\n className=\"h-4 w-4 ri-arrow-down-s-line\"\n />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = \"SelectScrollDownButton\";\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> &\n VariantProps<typeof SelectContentStyles> & {\n theme?: Themes\n }\n>(\n (\n {\n className,\n children,\n variant = \"PresentationStyle\",\n position = \"popper\",\n theme,\n ...props\n },\n ref\n ) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-theme={theme}\n ref={ref}\n className={cn(SelectContentStyles({ variant }), className)}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n);\nSelectContent.displayName = \"SelectContent\";\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = \"SelectLabel\";\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> &\n VariantProps<typeof SelectItemStyles>\n>(\n (\n { className, children, size = \"M\", variant = \"Default\", active, ...props },\n ref\n ) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n SelectItemStyles({\n variant,\n active,\n size,\n }),\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n);\n\nSelectItem.displayName = \"SelectItem\";\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-background-system-body-secondary\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n\n\n// NOTE: radix select as DropDownButton\n\nconst SelectContentStyles = cva(\n [\n \"p-1\",\n \"rounded-[8px]\",\n \"min-w-[240px]\",\n \"border\",\n \"outline-none\",\n \"overflow-scroll\",\n \"data-[state=open]:animate-in\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=open]:fade-in-0\",\n \"overflow-x-hidden\",\n \"scrollbar-hide\",\n \"z-[1000]\",\n ],\n {\n variants: {\n variant: {\n SystemStyle: [\n \"border-border-system-global-secondary\",\n \"bg-background-system-body-primary\",\n \"shadow-xl\",\n ],\n PresentationStyle: [\n \"border-border-presentation-global-primary\",\n \"bg-background-presentation-form-base\",\n \"shadow-lg\",\n ],\n },\n defaultVariants: {\n variant: \"PresentationStyle\",\n },\n },\n }\n);\n\nconst SelectItemStyles = cva(\n [\n \"text-content-presentation-action-light-primary\",\n \"outline-none\",\n \"border\",\n \"border-transparent\",\n \"flex\",\n \"gap-[8px]\",\n \"items-center\",\n \"justify-start\",\n \"text-overflow\",\n \"overflow-hidden\",\n \"px-[12px]\",\n \"rounded-[4px]\",\n \"transition-all\",\n \"ease-in-out\",\n \"duration-300\",\n\n ],\n {\n variants: {\n variant: {\n Default: [\n \"text-content-presentation-action-light-primary\",\n \"bg-background-presentation-action-dropdown-primary\",\n \"hover:bg-background-presentation-action-hover\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:bg-background-presentation-action-hover\",\n \"focus:text-content-presentation-action-hover\",\n \"disabled:text-content-presentation-state-disabled\",\n \"disabled:bg-white-00\",\n ],\n Warning: [\n \"text-content-presentation-state-information\",\n \"hover:bg-background-presentation-state-information-primary\",\n \"focus:bg-background-presentation-state-information-primary\",\n \"focus:text-content-presentation-action-hover\",\n \"hover:text-content-presentation-action-hover\",\n ],\n Negative: [\n \"text-content-presentation-state-negative\",\n \"hover:bg-background-presentation-state-negative-primary\",\n \"hover:text-content-presentation-action-hover\",\n \"focus:bg-background-presentation-state-negative-primary\",\n \"focus:text-content-presentation-action-hover\",\n \"active:text-content-presentation-state-negative\",\n ],\n SystemStyle: [\n \"bg-background-system-body-primary\",\n \"text-content-system-global-primary\",\n \"hover:bg-background-system-action-secondary-hover\",\n \"hover:text-content-system-action-primary-hover\",\n \"hover:border-border-system-action-primary-hover\",\n \"focus:bg-background-system-action-secondary-hover\",\n \"focus:text-content-system-action-primary-hover\",\n \"focus:border-border-system-action-primary-hover\",\n \"disabled:bg-background-system-body-secondary\",\n \"disabled:text-content-system-global-disabled\",\n ],\n },\n size: {\n S: [\"typography-body-small-regular\", \"h-[24px]\"],\n M: [\"typography-body-medium-regular\", \"h-[32px]\"],\n },\n\n disabled: {\n true: [\n \"text-content-presentation-state-disabled\",\n \"bg-white-00\",\n ],\n },\n\n active: {\n true: [\n \"bg-background-presentation-action-selected\",\n \"text-content-presentation-action-light-primary\",\n ],\n },\n\n defaultVariants: {\n variant: \"Default\",\n size: \"M\",\n active: false,\n disabled: false,\n },\n },\n compoundVariants: [\n {\n active: true,\n variant: \"Warning\",\n className: [\"text-content-presentation-state-negative\"],\n },\n ],\n }\n);\n\nconst PopoverTriggerStyles = cva(\n [\n \"flex flex-row rounded-[4px] justify-between items-center outline-none\",\n \"rounded-[4px]\",\n \"[&_span]:text-content-presentation-action-light-primary\",\n \"typography-body-small-regular\",\n \"[&_p]:px-[10px] [&_p]:whitespace-nowrap\",\n \"group\",\n \"w-fit\",\n \"border\",\n \"transition-all duration-200 ease-in-out\",\n \"hover:shadow-md\",\n \"focus:shadow-md\",\n ],\n {\n variants: {\n variant: {\n PresentationStyle: [\n \"bg-background-presentation-form-field-primary\",\n \"hover:bg-background-presentation-form-field-hover\",\n \"focus:bg-background-presentation-form-field-hover\",\n \"border-none\",\n ],\n SystemStyle: [\n \"bg-black-alpha-20\",\n \"text-content-system-global-primary\",\n \"border-border-system-global-secondary\",\n \"hover:border-border-presentation-state-focus\",\n \"hover:bg-purple-alpha-10\",\n \"focus:border-border-presentation-state-focus\",\n \"focus:bg-purple-alpha-10\",\n ],\n },\n error: {\n true: [\n \"border-border-presentation-state-negative\",\n \"caret-border-presentation-state-negative\",\n \"hover:border-border-presentation-state-negative\",\n \"hover:caret-border-presentation-state-negative\",\n ],\n },\n size: {\n S: [\n \"[&_span]:h-[22px] [&_span]:w-[22px] [&_p]:typography-body-small-medium\",\n ],\n M: [\n \"[&_span]:h-[26px] [&_span]:w-[26px] [&_p]:typography-body-medium-medium\",\n ],\n L: [\n \"[&_span]:h-[28px] [&_span]:w-[28px] [&_p]:typography-body-large-medium\",\n ],\n XL: [\n \"h-[40px] p-[4px] rounded-[6px] [&_span]:h-[32px] [&_span]:w-[32px] [&_p]:typography-body-large-regular [&_p]:px-[4px]\",\n ],\n },\n },\n defaultVariants: {\n size: \"M\",\n },\n }\n);","import { $isListNode, ListNode } from '@lexical/list'\nimport { $isHeadingNode } from '@lexical/rich-text'\nimport { $findMatchingParent, $getNearestNodeOfType } from '@lexical/utils'\nimport { $isRangeSelection, $isRootOrShadowRoot, BaseSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectTrigger,\n} from '../../../../../components/Select'\n\nexport function BlockFormatDropDown({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { activeEditor, blockType, setBlockType } = useToolbarContext()\n\n function $updateToolbar(selection: BaseSelection) {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode()\n let element =\n anchorNode.getKey() === 'root'\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent()\n return parent !== null && $isRootOrShadowRoot(parent)\n })\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow()\n }\n\n const elementKey = element.getKey()\n const elementDOM = activeEditor.getElementByKey(elementKey)\n\n if (elementDOM !== null) {\n // setSelectedElementKey(elementKey);\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType<ListNode>(\n anchorNode,\n ListNode\n )\n const type = parentList\n ? parentList.getListType()\n : element.getListType()\n setBlockType(type)\n } else {\n const type = $isHeadingNode(element)\n ? element.getTag()\n : element.getType()\n if (type in blockTypeToBlockName) {\n setBlockType(type as keyof typeof blockTypeToBlockName)\n }\n }\n }\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n return (\n <Select\n \n value={blockType}\n onValueChange={(value) => {\n setBlockType(value as keyof typeof blockTypeToBlockName)\n }}\n >\n <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n <div className=\"flex items-center gap-1 font-normal text-content-presentation-action-light-primary\">\n {blockTypeToBlockName[blockType].icon}\n {blockTypeToBlockName[blockType].label}\n </div>\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>{children}</SelectGroup>\n </SelectContent>\n </Select>\n )\n}\n","import { INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'bullet'\n\nexport function FormatBulletedList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatBulletedList = () => {\n if (blockType !== 'number') {\n activeEditor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatBulletedList}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","import { INSERT_CHECK_LIST_COMMAND } from '@lexical/list'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'check'\n\nexport function FormatCheckList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatCheckList = () => {\n if (blockType !== 'number') {\n activeEditor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatCheckList}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","import { $createCodeNode } from '@lexical/code'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'code'\n\nexport function FormatCodeBlock() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatCode = () => {\n if (blockType !== 'code') {\n activeEditor.update(() => {\n let selection = $getSelection()\n\n if (selection !== null) {\n if (selection.isCollapsed()) {\n $setBlocksType(selection, () => $createCodeNode())\n } else {\n const textContent = selection.getTextContent()\n const codeNode = $createCodeNode()\n selection.insertNodes([codeNode])\n selection = $getSelection()\n if ($isRangeSelection(selection)) {\n selection.insertRawText(textContent)\n }\n }\n }\n })\n }\n }\n\n return (\n <SelectItem value=\"code\" onPointerDown={formatCode}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","import { $createHeadingNode, HeadingTagType } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nexport function FormatHeading({ levels = [] }: { levels: HeadingTagType[] }) {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n activeEditor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createHeadingNode(headingSize))\n })\n }\n }\n\n return levels.map((level) => (\n <SelectItem key={level} value={level} onPointerDown={() => formatHeading(level)} >\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[level].icon}\n {blockTypeToBlockName[level].label}\n </div>\n </SelectItem>\n ))\n}\n","import { INSERT_ORDERED_LIST_COMMAND } from '@lexical/list'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'number'\n\nexport function FormatNumberedList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatNumberedList = () => {\n if (blockType !== 'number') {\n activeEditor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatNumberedList}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","import { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'paragraph'\n\nexport function FormatParagraph() {\n const { activeEditor } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatParagraph}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","import { $createQuoteNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nconst BLOCK_FORMAT_VALUE = 'quote'\n\nexport function FormatQuote() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatQuote = () => {\n if (blockType !== 'quote') {\n activeEditor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n }\n }\n\n return (\n <SelectItem value=\"quote\" onPointerDown={formatQuote}>\n <div className='flex flex-nowrap items-center gap-1'>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n </div>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\n\nimport { cn } from \"../utils/cn\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border-system-global-secondary bg-background-system-body-primary p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\n\nconst DialogCloseButton = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, children, ...props }, ref) => (\n <DialogPrimitive.Close ref={ref} {...props} className={cn(\"m-0 p-0 h-fit\", className)}>\n {children}\n </DialogPrimitive.Close>\n))\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-content-system-global-primary\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-content-system-global-secondary\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogCloseButton\n}\n","import { useCallback, useMemo, useState, JSX } from \"react\";\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"../../../../components/Dialog\";\n\nexport function useEditorModal(): [\n JSX.Element | null,\n (title: string, showModal: (onClose: () => void) => JSX.Element) => void\n] {\n const [modalContent, setModalContent] = useState<null | {\n closeOnClickOutside: boolean;\n content: JSX.Element;\n title: string;\n }>(null);\n\n const onClose = useCallback(() => {\n setModalContent(null);\n }, []);\n\n const modal = useMemo(() => {\n if (modalContent === null) {\n return null;\n }\n const { title, content } = modalContent;\n return (\n <Dialog open={true} onOpenChange={onClose}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n </DialogHeader>\n {content}\n </DialogContent>\n </Dialog>\n );\n }, [modalContent, onClose]);\n\n const showModal = useCallback(\n (\n title: string,\n getContent: (onClose: () => void) => JSX.Element,\n closeOnClickOutside = false\n ) => {\n setModalContent({\n closeOnClickOutside,\n content: getContent(onClose),\n title,\n });\n },\n [onClose]\n );\n\n return [modal, showModal];\n}\n","'use client'\n\nimport { PlusIcon } from 'lucide-react'\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectTrigger,\n} from '../../../../../components/Select'\n\nimport { useEditorModal } from '@/components/editor/editor-hooks/use-modal'\n\nexport function BlockInsertPlugin({ children }: { children: React.ReactNode }) {\n const [modal] = useEditorModal()\n\n return (\n <>\n {modal}\n <Select value={''}>\n <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n <PlusIcon className=\"size-4 mt-0.5\" />\n <span className='flex h-full text-center shrink-0 items-center w-full'>Insert</span>\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>{children}</SelectGroup>\n </SelectContent>\n </Select>\n </>\n )\n}\n","import { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n $findMatchingParent,\n $insertNodeToNearestRoot,\n mergeRegister,\n} from '@lexical/utils'\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n DELETE_CHARACTER_COMMAND,\n ElementNode,\n INSERT_PARAGRAPH_COMMAND,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_LEFT_COMMAND,\n KEY_ARROW_RIGHT_COMMAND,\n KEY_ARROW_UP_COMMAND,\n LexicalNode,\n createCommand,\n} from 'lexical'\n\nimport {\n $createCollapsibleContainerNode,\n $isCollapsibleContainerNode,\n CollapsibleContainerNode,\n} from '@/components/editor/nodes/collapsible-container-node'\nimport {\n $createCollapsibleContentNode,\n $isCollapsibleContentNode,\n CollapsibleContentNode,\n} from '@/components/editor/nodes/collapsible-content-node'\nimport {\n $createCollapsibleTitleNode,\n $isCollapsibleTitleNode,\n CollapsibleTitleNode,\n} from '@/components/editor/nodes/collapsible-title-node'\n\nexport const INSERT_COLLAPSIBLE_COMMAND = createCommand<void>()\n\nexport function CollapsiblePlugin(): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (\n !editor.hasNodes([\n CollapsibleContainerNode,\n CollapsibleTitleNode,\n CollapsibleContentNode,\n ])\n ) {\n throw new Error(\n 'CollapsiblePlugin: CollapsibleContainerNode, CollapsibleTitleNode, or CollapsibleContentNode not registered on editor'\n )\n }\n\n const $onEscapeUp = () => {\n const selection = $getSelection()\n if (\n $isRangeSelection(selection) &&\n selection.isCollapsed() &&\n selection.anchor.offset === 0\n ) {\n const container = $findMatchingParent(\n selection.anchor.getNode(),\n $isCollapsibleContainerNode\n )\n\n if ($isCollapsibleContainerNode(container)) {\n const parent = container.getParent<ElementNode>()\n if (\n parent !== null &&\n parent.getFirstChild<LexicalNode>() === container &&\n selection.anchor.key ===\n container.getFirstDescendant<LexicalNode>()?.getKey()\n ) {\n container.insertBefore($createParagraphNode())\n }\n }\n }\n\n return false\n }\n\n const $onEscapeDown = () => {\n const selection = $getSelection()\n if ($isRangeSelection(selection) && selection.isCollapsed()) {\n const container = $findMatchingParent(\n selection.anchor.getNode(),\n $isCollapsibleContainerNode\n )\n\n if ($isCollapsibleContainerNode(container)) {\n const parent = container.getParent<ElementNode>()\n if (\n parent !== null &&\n parent.getLastChild<LexicalNode>() === container\n ) {\n const titleParagraph = container.getFirstDescendant<LexicalNode>()\n const contentParagraph = container.getLastDescendant<LexicalNode>()\n\n if (\n (contentParagraph !== null &&\n selection.anchor.key === contentParagraph.getKey() &&\n selection.anchor.offset ===\n contentParagraph.getTextContentSize()) ||\n (titleParagraph !== null &&\n selection.anchor.key === titleParagraph.getKey() &&\n selection.anchor.offset === titleParagraph.getTextContentSize())\n ) {\n container.insertAfter($createParagraphNode())\n }\n }\n }\n }\n\n return false\n }\n\n return mergeRegister(\n // Structure enforcing transformers for each node type. In case nesting structure is not\n // \"Container > Title + Content\" it'll unwrap nodes and convert it back\n // to regular content.\n editor.registerNodeTransform(CollapsibleContentNode, (node) => {\n const parent = node.getParent<ElementNode>()\n if (!$isCollapsibleContainerNode(parent)) {\n const children = node.getChildren<LexicalNode>()\n for (const child of children) {\n node.insertBefore(child)\n }\n node.remove()\n }\n }),\n\n editor.registerNodeTransform(CollapsibleTitleNode, (node) => {\n const parent = node.getParent<ElementNode>()\n if (!$isCollapsibleContainerNode(parent)) {\n node.replace(\n $createParagraphNode().append(...node.getChildren<LexicalNode>())\n )\n return\n }\n }),\n\n editor.registerNodeTransform(CollapsibleContainerNode, (node) => {\n const children = node.getChildren<LexicalNode>()\n if (\n children.length !== 2 ||\n !$isCollapsibleTitleNode(children[0]) ||\n !$isCollapsibleContentNode(children[1])\n ) {\n for (const child of children) {\n node.insertBefore(child)\n }\n node.remove()\n }\n }),\n\n // This handles the case when container is collapsed and we delete its previous sibling\n // into it, it would cause collapsed content deleted (since it's display: none, and selection\n // swallows it when deletes single char). Instead we expand container, which is although\n // not perfect, but avoids bigger problem\n editor.registerCommand(\n DELETE_CHARACTER_COMMAND,\n () => {\n const selection = $getSelection()\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n selection.anchor.offset !== 0\n ) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const topLevelElement = anchorNode.getTopLevelElement()\n if (topLevelElement === null) {\n return false\n }\n\n const container = topLevelElement.getPreviousSibling<LexicalNode>()\n if (!$isCollapsibleContainerNode(container) || container.getOpen()) {\n return false\n }\n\n container.setOpen(true)\n return true\n },\n COMMAND_PRIORITY_LOW\n ),\n\n // When collapsible is the last child pressing down/right arrow will insert paragraph\n // below it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if trailing paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n $onEscapeDown,\n COMMAND_PRIORITY_LOW\n ),\n\n editor.registerCommand(\n KEY_ARROW_RIGHT_COMMAND,\n $onEscapeDown,\n COMMAND_PRIORITY_LOW\n ),\n\n // When collapsible is the first child pressing up/left arrow will insert paragraph\n // above it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if leading paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n $onEscapeUp,\n COMMAND_PRIORITY_LOW\n ),\n\n editor.registerCommand(\n KEY_ARROW_LEFT_COMMAND,\n $onEscapeUp,\n COMMAND_PRIORITY_LOW\n ),\n\n // Enter goes from Title to Content rather than a new line inside Title\n editor.registerCommand(\n INSERT_PARAGRAPH_COMMAND,\n () => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const titleNode = $findMatchingParent(\n selection.anchor.getNode(),\n (node) => $isCollapsibleTitleNode(node)\n )\n\n if ($isCollapsibleTitleNode(titleNode)) {\n const container = titleNode.getParent<ElementNode>()\n if (container && $isCollapsibleContainerNode(container)) {\n if (!container.getOpen()) {\n container.toggleOpen()\n }\n titleNode.getNextSibling()?.selectEnd()\n return true\n }\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_COLLAPSIBLE_COMMAND,\n () => {\n editor.update(() => {\n const title = $createCollapsibleTitleNode()\n const paragraph = $createParagraphNode()\n $insertNodeToNearestRoot(\n $createCollapsibleContainerNode(true).append(\n title.append(paragraph),\n $createCollapsibleContentNode().append($createParagraphNode())\n )\n )\n paragraph.select()\n })\n return true\n },\n COMMAND_PRIORITY_LOW\n )\n )\n }, [editor])\n\n return null\n}\n","'use client'\n\nimport { ChevronRightIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { INSERT_COLLAPSIBLE_COMMAND } from '@/components/editor/plugins/collapsible-plugin'\n\nexport function InsertCollapsibleContainer() {\n const { activeEditor } = useToolbarContext()\n return (\n <SelectItem\n value=\"collapsible\"\n onPointerUp={() =>\n activeEditor.dispatchCommand(INSERT_COLLAPSIBLE_COMMAND, undefined)\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <ChevronRightIcon className=\"size-4\" />\n <span>Collapsible container</span>\n </div>\n </SelectItem>\n )\n}\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-border-system-global-secondary data-[placeholder]:text-content-system-global-secondary [&_svg:not([class*='text-'])]:text-content-system-global-secondary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative bg-background-system-body-primary hover:bg-background-presentation-action-hover flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-content-system-global-secondary px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-background-presentation-action-selected focus:text-content-system-global-primary [&_svg:not([class*='text-'])]:text-content-system-global-secondary relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { useState, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $findMatchingParent,\n $insertNodeToNearestRoot,\n mergeRegister,\n} from \"@lexical/utils\";\nimport { LexicalEditor } from \"lexical\";\nimport type {\n ElementNode,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n} from \"lexical\";\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_LEFT_COMMAND,\n KEY_ARROW_RIGHT_COMMAND,\n KEY_ARROW_UP_COMMAND,\n createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\nimport {\n $createLayoutContainerNode,\n $isLayoutContainerNode,\n LayoutContainerNode,\n} from \"@/components/editor/nodes/layout-container-node\";\nimport {\n $createLayoutItemNode,\n $isLayoutItemNode,\n LayoutItemNode,\n} from \"@/components/editor/nodes/layout-item-node\";\n\nconst LAYOUTS = [\n { label: \"2 columns (equal width)\", value: \"1fr 1fr\" },\n { label: \"2 columns (25% - 75%)\", value: \"1fr 3fr\" },\n { label: \"3 columns (equal width)\", value: \"1fr 1fr 1fr\" },\n { label: \"3 columns (25% - 50% - 25%)\", value: \"1fr 2fr 1fr\" },\n { label: \"4 columns (equal width)\", value: \"1fr 1fr 1fr 1fr\" },\n];\n\nexport function InsertLayoutDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const [layout, setLayout] = useState(LAYOUTS[0].value);\n const buttonLabel = LAYOUTS.find((item) => item.value === layout)?.label;\n\n const onClick = () => {\n activeEditor.dispatchCommand(INSERT_LAYOUT_COMMAND, layout);\n onClose();\n };\n\n return (\n <>\n <Select onValueChange={setLayout} defaultValue={layout}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={buttonLabel} />\n </SelectTrigger>\n <SelectContent className=\"w-full\">\n {LAYOUTS.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button onClick={onClick}>Insert</Button>\n </>\n );\n}\n\nexport const INSERT_LAYOUT_COMMAND: LexicalCommand<string> =\n createCommand<string>();\n\nexport const UPDATE_LAYOUT_COMMAND: LexicalCommand<{\n template: string;\n nodeKey: NodeKey;\n}> = createCommand<{ template: string; nodeKey: NodeKey }>();\n\nexport function LayoutPlugin(): null {\n const [editor] = useLexicalComposerContext();\n useEffect(() => {\n if (!editor.hasNodes([LayoutContainerNode, LayoutItemNode])) {\n throw new Error(\n \"LayoutPlugin: LayoutContainerNode, or LayoutItemNode not registered on editor\"\n );\n }\n\n const $onEscape = (before: boolean) => {\n const selection = $getSelection();\n if (\n $isRangeSelection(selection) &&\n selection.isCollapsed() &&\n selection.anchor.offset === 0\n ) {\n const container = $findMatchingParent(\n selection.anchor.getNode(),\n $isLayoutContainerNode\n );\n\n if ($isLayoutContainerNode(container)) {\n const parent = container.getParent<ElementNode>();\n const child =\n parent &&\n (before\n ? parent.getFirstChild<LexicalNode>()\n : parent?.getLastChild<LexicalNode>());\n const descendant = before\n ? container.getFirstDescendant<LexicalNode>()?.getKey()\n : container.getLastDescendant<LexicalNode>()?.getKey();\n\n if (\n parent !== null &&\n child === container &&\n selection.anchor.key === descendant\n ) {\n if (before) {\n container.insertBefore($createParagraphNode());\n } else {\n container.insertAfter($createParagraphNode());\n }\n }\n }\n }\n\n return false;\n };\n\n return mergeRegister(\n // When layout is the last child pressing down/right arrow will insert paragraph\n // below it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if trailing paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n () => $onEscape(false),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_RIGHT_COMMAND,\n () => $onEscape(false),\n COMMAND_PRIORITY_LOW\n ),\n // When layout is the first child pressing up/left arrow will insert paragraph\n // above it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if leading paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n () => $onEscape(true),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_LEFT_COMMAND,\n () => $onEscape(true),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_LAYOUT_COMMAND,\n (template) => {\n editor.update(() => {\n const container = $createLayoutContainerNode(template);\n const itemsCount = getItemsCountFromTemplate(template);\n\n for (let i = 0; i < itemsCount; i++) {\n container.append(\n $createLayoutItemNode().append($createParagraphNode())\n );\n }\n\n $insertNodeToNearestRoot(container);\n container.selectStart();\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n ),\n editor.registerCommand(\n UPDATE_LAYOUT_COMMAND,\n ({ template, nodeKey }) => {\n editor.update(() => {\n const container = $getNodeByKey<LexicalNode>(nodeKey);\n\n if (!$isLayoutContainerNode(container)) {\n return;\n }\n\n const itemsCount = getItemsCountFromTemplate(template);\n const prevItemsCount = getItemsCountFromTemplate(\n container.getTemplateColumns()\n );\n\n // Add or remove extra columns if new template does not match existing one\n if (itemsCount > prevItemsCount) {\n for (let i = prevItemsCount; i < itemsCount; i++) {\n container.append(\n $createLayoutItemNode().append($createParagraphNode())\n );\n }\n } else if (itemsCount < prevItemsCount) {\n for (let i = prevItemsCount - 1; i >= itemsCount; i--) {\n const layoutItem = container.getChildAtIndex<LexicalNode>(i);\n\n if ($isLayoutItemNode(layoutItem)) {\n layoutItem.remove();\n }\n }\n }\n\n container.setTemplateColumns(template);\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n ),\n // Structure enforcing transformers for each node type. In case nesting structure is not\n // \"Container > Item\" it'll unwrap nodes and convert it back\n // to regular content.\n editor.registerNodeTransform(LayoutItemNode, (node) => {\n const parent = node.getParent<ElementNode>();\n if (!$isLayoutContainerNode(parent)) {\n const children = node.getChildren<LexicalNode>();\n for (const child of children) {\n node.insertBefore(child);\n }\n node.remove();\n }\n }),\n editor.registerNodeTransform(LayoutContainerNode, (node) => {\n const children = node.getChildren<LexicalNode>();\n if (!children.every($isLayoutItemNode)) {\n for (const child of children) {\n node.insertBefore(child);\n }\n node.remove();\n }\n })\n );\n }, [editor]);\n\n return null;\n}\n\nfunction getItemsCountFromTemplate(template: string): number {\n return template.trim().split(/\\s+/).length;\n}\n","import { Columns3Icon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertLayoutDialog } from '@/components/editor/plugins/layout-plugin'\n\nexport function InsertColumnsLayout() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"columns\"\n onPointerUp={() =>\n showModal('Insert Columns Layout', (onClose) => (\n <InsertLayoutDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <Columns3Icon className=\"size-4\" />\n <span>Columns Layout</span>\n </div>\n </SelectItem>\n )\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createCommand as e,KEY_ARROW_DOWN_COMMAND as n,KEY_ARROW_UP_COMMAND as o,KEY_ESCAPE_COMMAND as l,KEY_TAB_COMMAND as r,KEY_ENTER_COMMAND as i,COMMAND_PRIORITY_LOW as u,$getSelection as s,$isRangeSelection as c,$getNodeByKey as a}from\"lexical\";import m,{useLayoutEffect as d,useEffect as p,useState as f,useCallback as g,useMemo as h,useRef as y}from\"react\";import{mergeRegister as w}from\"@lexical/utils\";import{jsx as v}from\"react/jsx-runtime\";const b=\"startTransition\";const C=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,x=C?d:p;class E{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const R=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function I(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function O(e,n,o,l){const[r]=t();p((()=>{if(null!=n&&null!=e){const t=r.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,l=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&l.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=I(n,e);const s=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=I(n,e);t!==u&&(u=t,null!=l&&l(t))},c=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",s,{capture:!0,passive:!0}),c.observe(n),()=>{c.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",s,!0)}}}),[n,r,l,o,e])}const A=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function S({close:t,editor:e,anchorElementRef:a,resolution:m,options:d,menuRenderFn:y,onSelectOption:v,shouldSplitNodeWithQuery:b=!1,commandPriority:C=u,preselectFirstItem:E=!0}){const[I,O]=f(null),S=m.match&&m.match.matchingString;p((()=>{E&&O(0)}),[S,E]);const P=g((n=>{e.update((()=>{const e=null!=m.match&&b?function(t){const e=s();if(!c(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const l=n.offset,r=o.getTextContent().slice(0,l),i=t.replaceableString.length,u=l-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(r,t.matchingString,i);if(u<0)return null;let a;return 0===u?[a]=o.splitText(l):[,a]=o.splitText(u,l),a}(m.match):null;v(n,e,t,m.match?m.match.matchingString:\"\")}))}),[e,b,m.match,v,t]),T=g((t=>{const n=e.getRootElement();null!==n&&(n.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),O(t))}),[e]);p((()=>()=>{const t=e.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[e]),x((()=>{null===d?O(null):null===I&&E&&T(0)}),[d,I,T,E]),p((()=>w(e.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(R(t.ref.current),!0)),C))),[e,T,C]),p((()=>w(e.registerCommand(n,(t=>{const n=t;if(null!==d&&d.length){const t=null===I?0:I!==d.length-1?I+1:0;T(t);const o=d[t];null!=o.ref&&o.ref.current&&e.dispatchCommand(A,{index:t,option:o}),n.preventDefault(),n.stopImmediatePropagation()}return!0}),C),e.registerCommand(o,(t=>{const e=t;if(null!==d&&d.length){const t=null===I?d.length-1:0!==I?I-1:d.length-1;T(t);const n=d[t];null!=n.ref&&n.ref.current&&R(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),e.registerCommand(l,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),e.registerCommand(r,(t=>{const e=t;return null!==d&&null!==I&&null!=d[I]&&(e.preventDefault(),e.stopImmediatePropagation(),P(d[I]),!0)}),C),e.registerCommand(i,(t=>null!==d&&null!==I&&null!=d[I]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),P(d[I]),!0)),C))),[P,t,e,d,I,T,C]);return y(a,h((()=>({options:d,selectOptionAndCleanUp:P,selectedIndex:I,setHighlightedIndex:O})),[P,I,d]),m.match?m.match.matchingString:\"\")}function P(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}function T({options:e,nodeKey:n,onClose:o,onOpen:l,onSelectOption:r,menuRenderFn:i,anchorClassName:s,commandPriority:c=u,parent:d}){const[h]=t(),[w,x]=f(null),E=function(e,n,o,l=(C?document.body:void 0),r=!0){const[i]=t(),u=y(C?document.createElement(\"div\"):null),s=g((()=>{if(null===u.current||void 0===l)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,s=n.firstChild;if(null!==t&&null!==e){const{left:i,top:c,width:a,height:m}=e.getRect(),d=u.current.offsetHeight;if(n.style.top=`${c+d+3+(r?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${m}px`,n.style.width=`${a}px`,null!==s){s.style.top=`${c}`;const e=s.getBoundingClientRect(),o=e.height,l=e.width,u=t.getBoundingClientRect();i+l>u.right&&(n.style.left=`${u.right-l+window.pageXOffset}px`),(c+o>window.innerHeight||c+o>u.bottom)&&c-u.top>o+m&&(n.style.top=`${c-o-m+(r?window.pageYOffset:0)}px`)}n.isConnected||(P(n,o),l.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,r,o,l]);p((()=>{const t=i.getRootElement();return null!==e&&s(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,s,e]);const c=g((t=>{null!==e&&(t||n(null))}),[e,n]);O(e,u.current,s,c);const a=u.current;return null!=a&&(P(a,o),null!=l&&l.append(a)),u}(w,x,s,d),R=g((()=>{x(null),null!=o&&null!==w&&o()}),[o,w]),I=g((t=>{x(t),null!=l&&null===w&&l(t)}),[l,w]),A=g((()=>{n?h.update((()=>{const t=a(n),e=h.getElementByKey(n);var o;null!=t&&null!=e&&null==w&&(o=()=>I({getRect:()=>e.getBoundingClientRect()}),b in m?m[b](o):o())})):null==n&&null!=w&&R()}),[R,h,n,I,w]);return p((()=>{A()}),[A,n]),p((()=>{if(null!=n)return h.registerUpdateListener((({dirtyElements:t})=>{t.get(n)&&A()}))}),[h,A,n]),null===E.current||null===w||null===h?null:v(S,{close:R,resolution:w,editor:h,anchorElementRef:E,options:e,menuRenderFn:i,onSelectOption:r,commandPriority:c})}export{T as LexicalNodeMenuPlugin,E as MenuOption};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isLinkNode as e,LinkNode as t,AutoLinkNode as n}from\"@lexical/link\";import{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{MenuOption as r,LexicalNodeMenuPlugin as i}from\"@lexical/react/LexicalNodeMenuPlugin\";import{mergeRegister as l}from\"@lexical/utils\";import{createCommand as s,$getNodeByKey as a,COMMAND_PRIORITY_EDITOR as c,$getSelection as u,COMMAND_PRIORITY_LOW as m}from\"lexical\";import{useState as d,useCallback as p,useEffect as f,useMemo as x}from\"react\";import{jsx as g}from\"react/jsx-runtime\";const w=/((https?:\\/\\/(www\\.)?)|(www\\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/,C=s(\"INSERT_EMBED_COMMAND\");class y extends r{constructor(e,t){super(e),this.title=e,this.onSelect=t.onSelect.bind(this)}}function E({embedConfigs:r,onOpenEmbedModalForConfig:s,getMenuOptions:w,menuRenderFn:y,menuCommandPriority:E=m}){const[M]=o(),[S,h]=d(null),[_,v]=d(null),z=p((()=>{h(null),v(null)}),[]),A=p((async t=>{const n=M.getEditorState().read((function(){const n=a(t);if(e(n))return n.getURL()}));if(void 0!==n)for(const e of r){null!=await Promise.resolve(e.parseUrl(n))&&(v(e),h(t))}}),[M,r]);f((()=>l(...[t,n].map((e=>M.registerMutationListener(e,((...e)=>((e,{updateTags:t,dirtyLeaves:n})=>{for(const[o,r]of e)\"created\"===r&&t.has(\"paste\")&&n.size<=3?A(o):o===S&&z()})(...e)),{skipInitialization:!0}))))),[A,M,r,S,z]),f((()=>M.registerCommand(C,(e=>{const t=r.find((({type:t})=>t===e));return!!t&&(s(t),!0)}),c)),[M,r,s]);const L=p((async function(){if(null!=_&&null!=S){const t=M.getEditorState().read((()=>{const t=a(S);return e(t)?t:null}));if(e(t)){const e=await Promise.resolve(_.parseUrl(t.__url));null!=e&&M.update((()=>{u()||t.selectEnd(),_.insertNode(M,e),t.isAttached()&&t.remove()}))}}}),[_,M,S]),P=x((()=>null!=_&&null!=S?w(_,L,z):[]),[_,L,w,S,z]),b=p(((e,t,n)=>{M.update((()=>{e.onSelect(t),n()}))}),[M]);return null!=S?g(i,{nodeKey:S,onClose:z,onSelectOption:b,options:P,menuRenderFn:y,commandPriority:E}):null}export{y as AutoEmbedOption,C as INSERT_EMBED_COMMAND,E as LexicalAutoEmbedPlugin,w as URL_MATCHER};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../../../components/Dialog\";\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-background-presentation-form-base text-content-presentation-action-light-primary flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-content-system-global-secondary flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n \"[&::-webkit-scrollbar]:w-2\",\n \"[&::-webkit-scrollbar-track]:bg-transparent\",\n \"[&::-webkit-scrollbar-thumb]:rounded-full\",\n \"[&::-webkit-scrollbar-thumb]:bg-background-system-body-secondary\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-content-system-global-primary [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-background-presentation-action-selected data-[selected=true]:text-content-system-global-primary [&_svg:not([class*='text-'])]:text-content-system-global-secondary relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest \",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-content-system-global-primary placeholder:text-content-system-global-secondary selection:bg-background-presentation-action-selected selection:text-content-system-global-primary bg-background-system-body-primary border-border-system-global-secondary text-content-system-global-primary flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport { $createFigmaNode, FigmaNode } from '@/components/editor/nodes/embeds/figma-node'\n\nexport const INSERT_FIGMA_COMMAND: LexicalCommand<string> = createCommand(\n 'INSERT_FIGMA_COMMAND'\n)\n\nexport function FigmaPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([FigmaNode])) {\n throw new Error('FigmaPlugin: FigmaNode not registered on editor')\n }\n\n return editor.registerCommand<string>(\n INSERT_FIGMA_COMMAND,\n (payload) => {\n const figmaNode = $createFigmaNode(payload)\n $insertNodeToNearestRoot(figmaNode)\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","'use client'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport { $createTweetNode, TweetNode } from '@/components/editor/nodes/embeds/tweet-node'\n\nexport const INSERT_TWEET_COMMAND: LexicalCommand<string> = createCommand(\n 'INSERT_TWEET_COMMAND'\n)\n\nexport function TwitterPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([TweetNode])) {\n throw new Error('TwitterPlugin: TweetNode not registered on editor')\n }\n\n return editor.registerCommand<string>(\n INSERT_TWEET_COMMAND,\n (payload) => {\n const tweetNode = $createTweetNode(payload)\n $insertNodeToNearestRoot(tweetNode)\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport {\n $createYouTubeNode,\n YouTubeNode,\n} from '@/components/editor/nodes/embeds/youtube-node'\n\nexport const INSERT_YOUTUBE_COMMAND: LexicalCommand<string> = createCommand(\n 'INSERT_YOUTUBE_COMMAND'\n)\n\nexport function YouTubePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([YouTubeNode])) {\n throw new Error('YouTubePlugin: YouTubeNode not registered on editor')\n }\n\n return editor.registerCommand<string>(\n INSERT_YOUTUBE_COMMAND,\n (payload) => {\n const youTubeNode = $createYouTubeNode(payload)\n $insertNodeToNearestRoot(youTubeNode)\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","import { useMemo, useState, JSX } from \"react\";\n\nimport {\n AutoEmbedOption,\n EmbedConfig,\n EmbedMatchResult,\n LexicalAutoEmbedPlugin,\n URL_MATCHER,\n} from \"@lexical/react/LexicalAutoEmbedPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { PopoverPortal } from \"@radix-ui/react-popover\";\nimport type { LexicalEditor } from \"lexical\";\nimport { FigmaIcon, TwitterIcon, YoutubeIcon } from \"lucide-react\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { DialogFooter } from \"../../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport { useEditorModal } from \"@/components/editor/editor-hooks/use-modal\";\nimport { INSERT_FIGMA_COMMAND } from \"@/components/editor/plugins/embeds/figma-plugin\";\nimport { INSERT_TWEET_COMMAND } from \"@/components/editor/plugins/embeds/twitter-plugin\";\nimport { INSERT_YOUTUBE_COMMAND } from \"@/components/editor/plugins/embeds/youtube-plugin\";\n\ninterface PlaygroundEmbedConfig extends EmbedConfig {\n // Human readable name of the embeded content e.g. Tweet or Google Map.\n contentName: string;\n\n // Icon for display.\n icon?: JSX.Element;\n\n // An example of a matching url https://twitter.com/jack/status/20\n exampleUrl: string;\n\n // For extra searching.\n keywords: Array<string>;\n\n // Embed a Figma Project.\n description?: string;\n}\n\nexport const YoutubeEmbedConfig: PlaygroundEmbedConfig = {\n contentName: \"Youtube Video\",\n\n exampleUrl: \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n\n // Icon for display.\n icon: <YoutubeIcon className=\"size-4\" />,\n\n insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n editor.dispatchCommand(INSERT_YOUTUBE_COMMAND, result.id);\n },\n\n keywords: [\"youtube\", \"video\"],\n\n // Determine if a given URL is a match and return url data.\n parseUrl: async (url: string) => {\n const match =\n /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/.exec(url);\n\n const id = match ? (match?.[2].length === 11 ? match[2] : null) : null;\n\n if (id != null) {\n return {\n id,\n url,\n };\n }\n\n return null;\n },\n\n type: \"youtube-video\",\n};\n\nexport const TwitterEmbedConfig: PlaygroundEmbedConfig = {\n // e.g. Tweet or Google Map.\n contentName: \"Tweet\",\n\n exampleUrl: \"https://twitter.com/jack/status/20\",\n\n // Icon for display.\n icon: <TwitterIcon className=\"size-4\" />,\n\n // Create the Lexical embed node from the url data.\n insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n editor.dispatchCommand(INSERT_TWEET_COMMAND, result.id);\n },\n\n // For extra searching.\n keywords: [\"tweet\", \"twitter\"],\n\n // Determine if a given URL is a match and return url data.\n parseUrl: (text: string) => {\n const match =\n /^https:\\/\\/(twitter|x)\\.com\\/(#!\\/)?(\\w+)\\/status(es)*\\/(\\d+)/.exec(\n text\n );\n\n if (match != null) {\n return {\n id: match[5],\n url: match[1],\n };\n }\n\n return null;\n },\n\n type: \"tweet\",\n};\n\nexport const FigmaEmbedConfig: PlaygroundEmbedConfig = {\n contentName: \"Figma Document\",\n\n exampleUrl: \"https://www.figma.com/file/LKQ4FJ4bTnCSjedbRpk931/Sample-File\",\n\n icon: <FigmaIcon className=\"size-4\" />,\n\n insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n editor.dispatchCommand(INSERT_FIGMA_COMMAND, result.id);\n },\n\n keywords: [\"figma\", \"figma.com\", \"mock-up\"],\n\n // Determine if a given URL is a match and return url data.\n parseUrl: (text: string) => {\n const match =\n /https:\\/\\/([\\w.-]+\\.)?figma.com\\/(file|proto)\\/([0-9a-zA-Z]{22,128})(?:\\/.*)?$/.exec(\n text\n );\n\n if (match != null) {\n return {\n id: match[3],\n url: match[0],\n };\n }\n\n return null;\n },\n\n type: \"figma\",\n};\n\nexport const EmbedConfigs = [\n TwitterEmbedConfig,\n YoutubeEmbedConfig,\n FigmaEmbedConfig,\n];\n\nconst debounce = (callback: (text: string) => void, delay: number) => {\n let timeoutId: number;\n return (text: string) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => {\n callback(text);\n }, delay);\n };\n};\n\nexport function AutoEmbedDialog({\n embedConfig,\n onClose,\n}: {\n embedConfig: PlaygroundEmbedConfig;\n onClose: () => void;\n}): JSX.Element {\n const [text, setText] = useState(\"\");\n const [editor] = useLexicalComposerContext();\n const [embedResult, setEmbedResult] = useState<EmbedMatchResult | null>(null);\n\n const validateText = useMemo(\n () =>\n debounce((inputText: string) => {\n const urlMatch = URL_MATCHER.exec(inputText);\n if (embedConfig != null && inputText != null && urlMatch != null) {\n Promise.resolve(embedConfig.parseUrl(inputText)).then(\n (parseResult) => {\n setEmbedResult(parseResult);\n }\n );\n } else if (embedResult != null) {\n setEmbedResult(null);\n }\n }, 200),\n [embedConfig, embedResult]\n );\n\n const onClick = () => {\n if (embedResult != null) {\n embedConfig.insertNode(editor, embedResult);\n onClose();\n }\n };\n\n return (\n <div className=\"\">\n <div className=\"space-y-4\">\n <Input\n type=\"text\"\n placeholder={embedConfig.exampleUrl}\n value={text}\n data-test-id={`${embedConfig.type}-embed-modal-url`}\n onChange={(e) => {\n const { value } = e.target;\n setText(value);\n validateText(value);\n }}\n />\n <DialogFooter>\n <Button\n disabled={!embedResult}\n onClick={onClick}\n data-test-id={`${embedConfig.type}-embed-modal-submit-btn`}\n >\n Embed\n </Button>\n </DialogFooter>\n </div>\n </div>\n );\n}\n\nexport function AutoEmbedPlugin(): JSX.Element {\n const [modal, showModal] = useEditorModal();\n\n const openEmbedModal = (embedConfig: PlaygroundEmbedConfig) => {\n showModal(`Embed ${embedConfig.contentName}`, (onClose) => (\n <AutoEmbedDialog embedConfig={embedConfig} onClose={onClose} />\n ));\n };\n\n const getMenuOptions = (\n activeEmbedConfig: PlaygroundEmbedConfig,\n embedFn: () => void,\n dismissFn: () => void\n ) => {\n return [\n new AutoEmbedOption(\"Dismiss\", {\n onSelect: dismissFn,\n }),\n new AutoEmbedOption(`Embed ${activeEmbedConfig.contentName}`, {\n onSelect: embedFn,\n }),\n ];\n };\n\n return (\n <>\n {modal}\n <LexicalAutoEmbedPlugin<PlaygroundEmbedConfig>\n embedConfigs={EmbedConfigs}\n onOpenEmbedModalForConfig={openEmbedModal}\n getMenuOptions={getMenuOptions}\n //@ts-ignore\n menuRenderFn={(\n anchorElementRef,\n {\n //@ts-ignore\n selectedIndex,\n options,\n selectOptionAndCleanUp,\n //@ts-ignore\n setHighlightedIndex,\n }\n ) => {\n return anchorElementRef.current ? (\n <Popover open={true}>\n <PopoverPortal container={anchorElementRef.current}>\n <div className=\"-translate-y-full transform\">\n <PopoverTrigger />\n <PopoverContent\n className=\"w-[200px] p-0\"\n align=\"start\"\n side=\"right\"\n >\n <Command>\n <CommandList>\n <CommandGroup>\n {/* @ts-ignore */}\n {options.map((option, i: number) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option);\n }}\n className=\"flex items-center gap-2\"\n >\n {option.title}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </div>\n </PopoverPortal>\n </Popover>\n ) : null;\n }}\n />\n </>\n );\n}\n","'use client'\n\nimport { INSERT_EMBED_COMMAND } from '@lexical/react/LexicalAutoEmbedPlugin'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { EmbedConfigs } from '@/components/editor/plugins/embeds/auto-embed-plugin'\n\nexport function InsertEmbeds() {\n const { activeEditor } = useToolbarContext()\n return EmbedConfigs.map((embedConfig) => (\n <SelectItem\n key={embedConfig.type}\n value={embedConfig.type}\n onPointerUp={() => {\n activeEditor.dispatchCommand(INSERT_EMBED_COMMAND, embedConfig.type)\n }}\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n {embedConfig.icon}\n <span>{embedConfig.contentName}</span>\n </div>\n </SelectItem>\n ))\n}\n","import { INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode'\nimport { ScissorsIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nexport function InsertHorizontalRule() {\n const { activeEditor } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"horizontal-rule\"\n onPointerUp={() =>\n activeEditor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined)\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <ScissorsIcon className=\"size-4\" />\n <span>Horizontal Rule</span>\n </div>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none text-content-system-global-primary group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-background-presentation-form-base text-content-system-global-secondary inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background-system-body-primary data-[state=active]:text-content-system-global-primary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:outline-border-presentation-state-focus text-content-system-global-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, useRef, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $createRangeSelection,\n $getSelection,\n $insertNodes,\n $isNodeSelection,\n $isRootOrShadowRoot,\n $setSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n DRAGOVER_COMMAND,\n DRAGSTART_COMMAND,\n DROP_COMMAND,\n LexicalCommand,\n LexicalEditor,\n createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\"\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\n\nimport {\n $createImageNode,\n $isImageNode,\n ImageNode,\n ImagePayload,\n} from \"@/components/editor/nodes/image-node\";\nimport { CAN_USE_DOM } from \"@/components/editor/shared/can-use-dom\";\n\nexport type InsertImagePayload = Readonly<ImagePayload>;\n\nconst getDOMSelection = (targetWindow: Window | null): Selection | null =>\n CAN_USE_DOM ? (targetWindow || window).getSelection() : null;\n\nexport const INSERT_IMAGE_COMMAND: LexicalCommand<InsertImagePayload> =\n createCommand(\"INSERT_IMAGE_COMMAND\");\n\nexport function InsertImageUriDialogBody({\n onClick,\n}: {\n onClick: (payload: InsertImagePayload) => void;\n}) {\n const [src, setSrc] = useState(\"\");\n const [altText, setAltText] = useState(\"\");\n\n const isDisabled = src === \"\";\n\n return (\n <div className=\"grid gap-4 py-4\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"image-url\">Image URL</Label>\n <Input\n id=\"image-url\"\n placeholder=\"i.e. https://source.unsplash.com/random\"\n onChange={(e) => setSrc(e.target.value)}\n value={src}\n data-test-id=\"image-modal-url-input\"\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"alt-text\">Alt Text</Label>\n <Input\n id=\"alt-text\"\n placeholder=\"Random unsplash image\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n <DialogFooter>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n onClick={() => onClick({ altText, src })}\n data-test-id=\"image-modal-confirm-btn\"\n >\n Confirm\n </Button>\n </DialogFooter>\n </div>\n );\n}\n\nexport function InsertImageUploadedDialogBody({\n onClick,\n}: {\n onClick: (payload: InsertImagePayload) => void;\n}) {\n const [src, setSrc] = useState(\"\");\n const [altText, setAltText] = useState(\"\");\n\n const isDisabled = src === \"\";\n\n const loadImage = (files: FileList | null) => {\n const reader = new FileReader();\n reader.onload = function () {\n if (typeof reader.result === \"string\") {\n setSrc(reader.result);\n }\n return \"\";\n };\n if (files !== null) {\n reader.readAsDataURL(files[0]);\n }\n };\n\n return (\n <div className=\"grid gap-4 py-4\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"image-upload\">Image Upload</Label>\n <Input\n id=\"image-upload\"\n type=\"file\"\n onChange={(e) => loadImage(e.target.files)}\n accept=\"image/*\"\n data-test-id=\"image-modal-file-upload\"\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"alt-text\">Alt Text</Label>\n <Input\n id=\"alt-text\"\n placeholder=\"Descriptive alternative text\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n onClick={() => onClick({ altText, src })}\n data-test-id=\"image-modal-file-upload-btn\"\n >\n Confirm\n </Button>\n </div>\n );\n}\n\nexport function InsertImageDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const hasModifier = useRef(false);\n\n useEffect(() => {\n hasModifier.current = false;\n const handler = (e: KeyboardEvent) => {\n hasModifier.current = e.altKey;\n };\n document.addEventListener(\"keydown\", handler);\n return () => {\n document.removeEventListener(\"keydown\", handler);\n };\n }, [activeEditor]);\n\n const onClick = (payload: InsertImagePayload) => {\n activeEditor.dispatchCommand(INSERT_IMAGE_COMMAND, payload);\n onClose();\n };\n\n return (\n <Tabs defaultValue=\"url\">\n <TabsList className=\"w-full\">\n <TabsTrigger value=\"url\" className=\"w-full\">\n URL\n </TabsTrigger>\n <TabsTrigger value=\"file\" className=\"w-full\">\n File\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"url\">\n <InsertImageUriDialogBody onClick={onClick} />\n </TabsContent>\n <TabsContent value=\"file\">\n <InsertImageUploadedDialogBody onClick={onClick} />\n </TabsContent>\n </Tabs>\n );\n}\n\nexport function ImagesPlugin({\n captionsEnabled,\n}: {\n captionsEnabled?: boolean;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor.hasNodes([ImageNode])) {\n throw new Error(\"ImagesPlugin: ImageNode not registered on editor\");\n }\n\n return mergeRegister(\n editor.registerCommand<InsertImagePayload>(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n editor.update(() => {\n const imageNode = $createImageNode(payload);\n $insertNodes([imageNode]);\n if ($isRootOrShadowRoot(imageNode.getParentOrThrow())) {\n $wrapNodeInElement(imageNode, $createParagraphNode).selectEnd();\n }\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n ),\n editor.registerCommand<DragEvent>(\n DRAGSTART_COMMAND,\n (event) => {\n return $onDragStart(event);\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand<DragEvent>(\n DRAGOVER_COMMAND,\n (event) => {\n return $onDragover(event);\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<DragEvent>(\n DROP_COMMAND,\n (event) => {\n return $onDrop(event, editor);\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [captionsEnabled, editor]);\n\n return null;\n}\n\nfunction $onDragStart(event: DragEvent): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) {\n return false;\n }\n const TRANSPARENT_IMAGE =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n const img = document.createElement(\"img\");\n img.src = TRANSPARENT_IMAGE;\n dataTransfer.setData(\"text/plain\", \"_\");\n dataTransfer.setDragImage(img, 0, 0);\n dataTransfer.setData(\n \"application/x-lexical-drag\",\n JSON.stringify({\n data: {\n altText: node.__altText,\n caption: node.__caption,\n height: node.__height,\n key: node.getKey(),\n maxWidth: node.__maxWidth,\n showCaption: node.__showCaption,\n src: node.__src,\n width: node.__width,\n },\n type: \"image\",\n })\n );\n\n return true;\n}\n\nfunction $onDragover(event: DragEvent): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n if (!canDropImage(event)) {\n event.preventDefault();\n }\n return true;\n}\n\nfunction $onDrop(event: DragEvent, editor: LexicalEditor): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n const data = getDragImageData(event);\n if (!data) {\n return false;\n }\n event.preventDefault();\n if (canDropImage(event)) {\n editor.update(() => {\n const range = getDragSelection(event);\n node.remove();\n const rangeSelection = $createRangeSelection();\n if (range !== null && range !== undefined) {\n rangeSelection.applyDOMRange(range);\n }\n $setSelection(rangeSelection);\n });\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, data);\n }\n return true;\n}\n\nfunction $getImageNodeInSelection(): ImageNode | null {\n const selection = $getSelection();\n if (!$isNodeSelection(selection)) {\n return null;\n }\n const nodes = selection.getNodes();\n const node = nodes[0];\n return $isImageNode(node) ? node : null;\n}\n\nfunction getDragImageData(event: DragEvent): null | InsertImagePayload {\n const dragData = event.dataTransfer?.getData(\"application/x-lexical-drag\");\n if (!dragData) {\n return null;\n }\n const { type, data } = JSON.parse(dragData);\n if (type !== \"image\") {\n return null;\n }\n\n return data;\n}\n\ndeclare global {\n interface DragEvent {\n rangeOffset?: number;\n rangeParent?: Node;\n }\n}\n\nfunction canDropImage(event: DragEvent): boolean {\n const target = event.target;\n return !!(\n target &&\n target instanceof HTMLElement &&\n !target.closest(\"code, span.editor-image\") &&\n target.parentElement &&\n target.parentElement.closest(\"div.ContentEditable__root\")\n );\n}\n\nfunction getDragSelection(event: DragEvent): Range | null | undefined {\n let range;\n const target = event.target as null | Element | Document;\n const targetWindow =\n target == null\n ? null\n : target.nodeType === 9\n ? (target as Document).defaultView\n : (target as Element).ownerDocument.defaultView;\n const domSelection = getDOMSelection(targetWindow);\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(event.clientX, event.clientY);\n } else if (event.rangeParent && domSelection !== null) {\n domSelection.collapse(event.rangeParent, event.rangeOffset || 0);\n range = domSelection.getRangeAt(0);\n } else {\n throw Error(`Cannot get the selection when dragging`);\n }\n\n return range;\n}\n","\"use client\";\n\nimport { ImageIcon } from \"lucide-react\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertImageDialog } from \"@/components/editor/plugins/images-plugin\";\n\nexport function InsertImage() {\n const { activeEditor, showModal } = useToolbarContext();\n\n return (\n <SelectItem\n value=\"image\"\n onPointerUp={() => {\n showModal(\"Insert Image\", (onClose) => (\n <InsertImageDialog activeEditor={activeEditor} onClose={onClose} />\n ));\n }}\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <ImageIcon className=\"size-4\" />\n <span>Image</span>\n </div>\n </SelectItem>\n );\n}\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-border-system-global-secondary bg-background-system-body-primary data-[state=checked]:bg-background-presentation-action-primary data-[state=checked]:text-content-presentation-action-light-primary data-[state=checked]:border-border-presentation-action-primary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import { useEffect, useRef, useState, JSX } from \"react\";\n\n// import '../nodes/inline-image-node.css';\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $createRangeSelection,\n $getSelection,\n $insertNodes,\n $isNodeSelection,\n $isRootOrShadowRoot,\n $setSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n DRAGOVER_COMMAND,\n DRAGSTART_COMMAND,\n DROP_COMMAND,\n LexicalCommand,\n LexicalEditor,\n createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\"\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../../components/Select\"\n\nimport type { Position } from \"@/components/editor/nodes/inline-image-node\";\nimport {\n $createInlineImageNode,\n $isInlineImageNode,\n InlineImageNode,\n InlineImagePayload,\n} from \"@/components/editor/nodes/inline-image-node\";\nimport { CAN_USE_DOM } from \"@/components/editor/shared/can-use-dom\";\n\nexport type InsertInlineImagePayload = Readonly<InlineImagePayload>;\n\nconst getDOMSelection = (targetWindow: Window | null): Selection | null =>\n CAN_USE_DOM ? (targetWindow || window).getSelection() : null;\n\nexport const INSERT_INLINE_IMAGE_COMMAND: LexicalCommand<InlineImagePayload> =\n createCommand(\"INSERT_INLINE_IMAGE_COMMAND\");\n\nexport function InsertInlineImageDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const hasModifier = useRef(false);\n\n const [src, setSrc] = useState(\"\");\n const [altText, setAltText] = useState(\"\");\n const [showCaption, setShowCaption] = useState(false);\n const [position, setPosition] = useState<Position>(\"left\");\n\n const isDisabled = src === \"\";\n\n const loadImage = (files: FileList | null) => {\n const reader = new FileReader();\n reader.onload = function () {\n if (typeof reader.result === \"string\") {\n setSrc(reader.result);\n }\n return \"\";\n };\n if (files !== null) {\n reader.readAsDataURL(files[0]);\n }\n };\n\n useEffect(() => {\n hasModifier.current = false;\n const handler = (e: KeyboardEvent) => {\n hasModifier.current = e.altKey;\n };\n document.addEventListener(\"keydown\", handler);\n return () => {\n document.removeEventListener(\"keydown\", handler);\n };\n }, [activeEditor]);\n\n const handleOnClick = () => {\n const payload = { altText, position, showCaption, src };\n activeEditor.dispatchCommand(INSERT_INLINE_IMAGE_COMMAND, payload);\n onClose();\n };\n\n return (\n <div className=\"grid gap-4 py-4\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"image\">Image Upload</Label>\n <Input\n id=\"image\"\n type=\"file\"\n onChange={(e) => loadImage(e.target.files)}\n accept=\"image/*\"\n data-test-id=\"image-modal-file-upload\"\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"alt-text\">Alt Text</Label>\n <Input\n id=\"alt-text\"\n placeholder=\"Descriptive alternative text\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"position\">Position</Label>\n <Select\n defaultValue=\"left\"\n onValueChange={(value) => setPosition(value as Position)}\n >\n <SelectTrigger id=\"position\">\n <SelectValue placeholder=\"Select position\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"left\">Left</SelectItem>\n <SelectItem value=\"right\">Right</SelectItem>\n <SelectItem value=\"full\">Full Width</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n id=\"caption\"\n checked={showCaption}\n onCheckedChange={(checked) => setShowCaption(checked as boolean)}\n />\n <Label htmlFor=\"caption\">Show Caption</Label>\n </div>\n <Button\n data-test-id=\"image-modal-file-upload-btn\"\n disabled={isDisabled}\n onClick={() => handleOnClick()}\n >\n Confirm\n </Button>\n </div>\n );\n}\n\nexport function InlineImagePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor.hasNodes([InlineImageNode])) {\n throw new Error(\"ImagesPlugin: ImageNode not registered on editor\");\n }\n\n return mergeRegister(\n editor.registerCommand<InsertInlineImagePayload>(\n INSERT_INLINE_IMAGE_COMMAND,\n (payload) => {\n editor.update(() => {\n const imageNode = $createInlineImageNode(payload);\n $insertNodes([imageNode]);\n if ($isRootOrShadowRoot(imageNode.getParentOrThrow())) {\n $wrapNodeInElement(imageNode, $createParagraphNode).selectEnd();\n }\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n ),\n editor.registerCommand<DragEvent>(\n DRAGSTART_COMMAND,\n (event) => {\n return $onDragStart(event);\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand<DragEvent>(\n DRAGOVER_COMMAND,\n (event) => {\n return $onDragover(event);\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<DragEvent>(\n DROP_COMMAND,\n (event) => {\n return $onDrop(event, editor);\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor]);\n\n return null;\n}\n\nfunction $onDragStart(event: DragEvent): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) {\n return false;\n }\n const TRANSPARENT_IMAGE =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n const img = document.createElement(\"img\");\n img.src = TRANSPARENT_IMAGE;\n dataTransfer.setData(\"text/plain\", \"_\");\n dataTransfer.setDragImage(img, 0, 0);\n dataTransfer.setData(\n \"application/x-lexical-drag\",\n JSON.stringify({\n data: {\n altText: node.__altText,\n caption: node.__caption,\n height: node.__height,\n key: node.getKey(),\n showCaption: node.__showCaption,\n src: node.__src,\n width: node.__width,\n },\n type: \"image\",\n })\n );\n\n return true;\n}\n\nfunction $onDragover(event: DragEvent): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n if (!canDropImage(event)) {\n event.preventDefault();\n }\n return true;\n}\n\nfunction $onDrop(event: DragEvent, editor: LexicalEditor): boolean {\n const node = $getImageNodeInSelection();\n if (!node) {\n return false;\n }\n const data = getDragImageData(event);\n if (!data) {\n return false;\n }\n event.preventDefault();\n if (canDropImage(event)) {\n editor.update(() => {\n const range = getDragSelection(event);\n node.remove();\n const rangeSelection = $createRangeSelection();\n if (range !== null && range !== undefined) {\n rangeSelection.applyDOMRange(range);\n }\n $setSelection(rangeSelection);\n });\n editor.dispatchCommand(INSERT_INLINE_IMAGE_COMMAND, data);\n }\n return true;\n}\n\nfunction $getImageNodeInSelection(): InlineImageNode | null {\n const selection = $getSelection();\n if (!$isNodeSelection(selection)) {\n return null;\n }\n const nodes = selection.getNodes();\n const node = nodes[0];\n return $isInlineImageNode(node) ? node : null;\n}\n\nfunction getDragImageData(event: DragEvent): null | InsertInlineImagePayload {\n const dragData = event.dataTransfer?.getData(\"application/x-lexical-drag\");\n if (!dragData) {\n return null;\n }\n const { type, data } = JSON.parse(dragData);\n if (type !== \"image\") {\n return null;\n }\n\n return data;\n}\n\ndeclare global {\n interface DragEvent {\n rangeOffset?: number;\n rangeParent?: Node;\n }\n}\n\nfunction canDropImage(event: DragEvent): boolean {\n const target = event.target;\n return !!(\n target &&\n target instanceof HTMLElement &&\n !target.closest(\"code, span.editor-image\") &&\n target.parentElement &&\n target.parentElement.closest(\"div.ContentEditable__root\")\n );\n}\n\nfunction getDragSelection(event: DragEvent): Range | null | undefined {\n let range;\n const target = event.target as null | Element | Document;\n const targetWindow =\n target == null\n ? null\n : target.nodeType === 9\n ? (target as Document).defaultView\n : (target as Element).ownerDocument.defaultView;\n const domSelection = getDOMSelection(targetWindow);\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(event.clientX, event.clientY);\n } else if (event.rangeParent && domSelection !== null) {\n domSelection.collapse(event.rangeParent, event.rangeOffset || 0);\n range = domSelection.getRangeAt(0);\n } else {\n throw Error(\"Cannot get the selection when dragging\");\n }\n\n return range;\n}\n","import { FileImageIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertInlineImageDialog } from '@/components/editor/plugins/inline-image-plugin'\n\nexport function InsertInlineImage() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"inline-image\"\n onPointerUp={() =>\n showModal('Insert Inline Image', (onClose) => (\n <InsertInlineImageDialog\n activeEditor={activeEditor}\n onClose={onClose}\n />\n ))\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <FileImageIcon className=\"size-4\" />\n <span>Inline Image</span>\n </div>\n </SelectItem>\n )\n}\n","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n LexicalCommand,\n createCommand,\n} from 'lexical'\n\nimport { $createPageBreakNode, PageBreakNode } from '@/components/editor/nodes/page-break-node'\n\nexport const INSERT_PAGE_BREAK: LexicalCommand<undefined> = createCommand()\n\nexport function PageBreakPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([PageBreakNode])) {\n throw new Error(\n 'PageBreakPlugin: PageBreakNode is not registered on editor'\n )\n }\n\n return mergeRegister(\n editor.registerCommand(\n INSERT_PAGE_BREAK,\n () => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n if (focusNode !== null) {\n const pgBreak = $createPageBreakNode()\n $insertNodeToNearestRoot(pgBreak)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n )\n }, [editor])\n\n return null\n}\n","'use client'\n\nimport { SquareSplitVerticalIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { INSERT_PAGE_BREAK } from '@/components/editor/plugins/page-break-plugin'\n\nexport function InsertPageBreak() {\n const { activeEditor } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"page-break\"\n onPointerUp={() =>\n activeEditor.dispatchCommand(INSERT_PAGE_BREAK, undefined)\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <SquareSplitVerticalIcon className=\"size-4\" />\n <span>Page Break</span>\n </div>\n </SelectItem>\n )\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $insertNodes,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n LexicalCommand,\n LexicalEditor,\n createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\n\nimport {\n $createPollNode,\n PollNode,\n createPollOption,\n} from \"@/components/editor/nodes/poll-node\";\n\nexport const INSERT_POLL_COMMAND: LexicalCommand<string> = createCommand(\n \"INSERT_POLL_COMMAND\"\n);\n\nexport function InsertPollDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const [question, setQuestion] = useState(\"\");\n\n const onClick = () => {\n activeEditor.dispatchCommand(INSERT_POLL_COMMAND, question);\n onClose();\n };\n\n return (\n <>\n <div>\n <Label>Question</Label>\n <Input onChange={(e) => setQuestion(e.target.value)} value={question} />\n </div>\n <DialogFooter>\n <Button disabled={question.trim() === \"\"} onClick={onClick}>\n Confirm\n </Button>\n </DialogFooter>\n </>\n );\n}\n\nexport function PollPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n useEffect(() => {\n if (!editor.hasNodes([PollNode])) {\n throw new Error(\"PollPlugin: PollNode not registered on editor\");\n }\n\n return editor.registerCommand<string>(\n INSERT_POLL_COMMAND,\n (payload) => {\n const pollNode = $createPollNode(payload, [\n createPollOption(),\n createPollOption(),\n ]);\n $insertNodes([pollNode]);\n if ($isRootOrShadowRoot(pollNode.getParentOrThrow())) {\n $wrapNodeInElement(pollNode, $createParagraphNode).selectEnd();\n }\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n return null;\n}\n","import { ListChecksIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertPollDialog } from '@/components/editor/plugins/poll-plugin'\n\nexport function InsertPoll() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"poll\"\n onPointerUp={() =>\n showModal('Insert Poll', (onClose) => (\n <InsertPollDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <ListChecksIcon className=\"size-4\" />\n <span>Poll</span>\n </div>\n </SelectItem>\n )\n}\n","import {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $createTableNodeWithDimensions,\n INSERT_TABLE_COMMAND,\n TableNode,\n} from \"@lexical/table\";\nimport {\n $insertNodes,\n COMMAND_PRIORITY_EDITOR,\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\n\nimport { invariant } from \"@/components/editor/shared/invariant\";\n\nexport type InsertTableCommandPayload = Readonly<{\n columns: string;\n rows: string;\n includeHeaders?: boolean;\n}>;\n\nexport type CellContextShape = {\n cellEditorConfig: null | CellEditorConfig;\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>;\n set: (\n cellEditorConfig: null | CellEditorConfig,\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>\n ) => void;\n};\n\nexport type CellEditorConfig = Readonly<{\n namespace: string;\n nodes?: ReadonlyArray<Klass<LexicalNode>>;\n onError: (error: Error, editor: LexicalEditor) => void;\n readOnly?: boolean;\n theme?: EditorThemeClasses;\n}>;\n\nexport const INSERT_NEW_TABLE_COMMAND: LexicalCommand<InsertTableCommandPayload> =\n createCommand(\"INSERT_NEW_TABLE_COMMAND\");\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n});\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: null | CellEditorConfig;\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>;\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n });\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins });\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins]\n )}\n >\n {children}\n </CellContext.Provider>\n );\n}\n\nexport function InsertTableDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const [rows, setRows] = useState(\"5\");\n const [columns, setColumns] = useState(\"5\");\n const [isDisabled, setIsDisabled] = useState(true);\n\n useEffect(() => {\n const row = Number(rows);\n const column = Number(columns);\n if (row && row > 0 && row <= 500 && column && column > 0 && column <= 50) {\n setIsDisabled(false);\n } else {\n setIsDisabled(true);\n }\n }, [rows, columns]);\n\n const onClick = () => {\n activeEditor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns,\n rows,\n });\n\n onClose();\n };\n\n return (\n <>\n <div className=\"grid gap-4\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"rows\">Number of rows</Label>\n <Input\n id=\"rows\"\n placeholder={\"# of rows (1-500)\"}\n onChange={(e) => setRows(e.target.value)}\n value={rows}\n data-test-id=\"table-modal-rows\"\n type=\"number\"\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"columns\">Number of columns</Label>\n <Input\n id=\"columns\"\n placeholder={\"# of columns (1-50)\"}\n onChange={(e) => setColumns(e.target.value)}\n value={columns}\n data-test-id=\"table-modal-columns\"\n type=\"number\"\n />\n </div>\n </div>\n <DialogFooter data-test-id=\"table-model-confirm-insert\">\n <Button disabled={isDisabled} onClick={onClick}>\n Confirm\n </Button>\n </DialogFooter>\n </>\n );\n}\n\nexport function TablePlugin({\n cellEditorConfig,\n children,\n}: {\n cellEditorConfig: CellEditorConfig;\n children: JSX.Element | Array<JSX.Element>;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const cellContext = useContext(CellContext);\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n invariant(false, \"TablePlugin: TableNode is not registered on editor\");\n }\n\n cellContext.set(cellEditorConfig, children);\n\n return editor.registerCommand<InsertTableCommandPayload>(\n INSERT_NEW_TABLE_COMMAND,\n ({ columns, rows, includeHeaders }) => {\n const tableNode = $createTableNodeWithDimensions(\n Number(rows),\n Number(columns),\n includeHeaders\n );\n $insertNodes([tableNode]);\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [cellContext, cellEditorConfig, children, editor]);\n\n return null;\n}\n","'use client'\n\nimport { TableIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertTableDialog } from '@/components/editor/plugins/table-plugin'\n\nexport function InsertTable() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"table\"\n onPointerUp={() =>\n showModal('Insert Table', (onClose) => (\n <InsertTableDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }\n\n >\n <div className=\"flex flex-nowrap items-center gap-1\">\n <TableIcon className=\"size-4\" />\n <span>Table</span>\n </div>\n </SelectItem>\n )\n}\n","import { useCallback } from \"react\";\n\nimport { $isDecoratorBlockNode } from \"@lexical/react/LexicalDecoratorBlockNode\";\nimport { $isHeadingNode, $isQuoteNode } from \"@lexical/rich-text\";\nimport { $isTableSelection } from \"@lexical/table\";\nimport { $getNearestBlockElementAncestorOrThrow } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n} from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\n\nexport function ClearFormattingToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n\n const clearFormatting = useCallback(() => {\n activeEditor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const nodes = selection.getNodes();\n const extractedNodes = selection.extract();\n\n if (anchor.key === focus.key && anchor.offset === focus.offset) {\n return;\n }\n\n nodes.forEach((node, idx) => {\n // We split the first and last node by the selection\n // So that we don't format unselected text inside those nodes\n if ($isTextNode(node)) {\n // Use a separate variable to ensure TS does not lose the refinement\n let textNode = node;\n if (idx === 0 && anchor.offset !== 0) {\n textNode = textNode.splitText(anchor.offset)[1] || textNode;\n }\n if (idx === nodes.length - 1) {\n textNode = textNode.splitText(focus.offset)[0] || textNode;\n }\n /**\n * If the selected text has one format applied\n * selecting a portion of the text, could\n * clear the format to the wrong portion of the text.\n *\n * The cleared text is based on the length of the selected text.\n */\n // We need this in case the selected text only has one format\n const extractedTextNode = extractedNodes[0];\n if (nodes.length === 1 && $isTextNode(extractedTextNode)) {\n textNode = extractedTextNode;\n }\n\n if (textNode.__style !== \"\") {\n textNode.setStyle(\"\");\n }\n if (textNode.__format !== 0) {\n textNode.setFormat(0);\n $getNearestBlockElementAncestorOrThrow(textNode).setFormat(\"\");\n }\n node = textNode;\n } else if ($isHeadingNode(node) || $isQuoteNode(node)) {\n node.replace($createParagraphNode(), true);\n } else if ($isDecoratorBlockNode(node)) {\n node.setFormat(\"\");\n }\n });\n }\n });\n }, [activeEditor]);\n\n return (\n <Button\n size={\"M\"}\n variant={\"BlueContStyle\"}\n className=\"h-8 w-8\"\n onClick={clearFormatting}\n >\n <i className=\"ri-format-clear\"></i>\n </Button>\n );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\nimport {\n $isCodeNode,\n CODE_LANGUAGE_FRIENDLY_NAME_MAP,\n CODE_LANGUAGE_MAP,\n getLanguageFriendlyName,\n} from '@lexical/code'\nimport { $isListNode } from '@lexical/list'\nimport { $findMatchingParent } from '@lexical/utils'\nimport {\n $getNodeByKey,\n $isRangeSelection,\n $isRootOrShadowRoot,\n BaseSelection,\n} from 'lexical'\n\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from '../../../../../components/Select'\n\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\n\nfunction getCodeLanguageOptions(): [string, string][] {\n const options: [string, string][] = []\n\n for (const [lang, friendlyName] of Object.entries(\n CODE_LANGUAGE_FRIENDLY_NAME_MAP\n )) {\n options.push([lang, friendlyName])\n }\n\n return options\n}\n\nconst CODE_LANGUAGE_OPTIONS = getCodeLanguageOptions()\n\nexport function CodeLanguageToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n const [codeLanguage, setCodeLanguage] = useState<string>('')\n const [selectedElementKey, setSelectedElementKey] = useState<string | null>(\n null\n )\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode()\n let element =\n anchorNode.getKey() === 'root'\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent()\n return parent !== null && $isRootOrShadowRoot(parent)\n })\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow()\n }\n\n const elementKey = element.getKey()\n const elementDOM = activeEditor.getElementByKey(elementKey)\n\n if (elementDOM !== null) {\n setSelectedElementKey(elementKey)\n\n if (!$isListNode(element) && $isCodeNode(element)) {\n const language =\n element.getLanguage() as keyof typeof CODE_LANGUAGE_MAP\n setCodeLanguage(\n language ? CODE_LANGUAGE_MAP[language] || language : ''\n )\n return\n }\n }\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const onCodeLanguageSelect = useCallback(\n (value: string) => {\n activeEditor.update(() => {\n if (selectedElementKey !== null) {\n const node = $getNodeByKey(selectedElementKey)\n if ($isCodeNode(node)) {\n node.setLanguage(value)\n }\n }\n })\n },\n [activeEditor, selectedElementKey]\n )\n\n return (\n <Select>\n <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n <span className='flex h-full text-center shrink-0 items-center w-full'>{getLanguageFriendlyName(codeLanguage)}</span>\n </SelectTrigger>\n <SelectContent>\n {CODE_LANGUAGE_OPTIONS.map(([value, label]) => (\n <SelectItem\n key={value}\n value={value}\n onPointerUp={() => {\n onCodeLanguageSelect(value)\n }}\n >\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n","import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-background-presentation-action-hover hover:text-content-system-global-primary disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-background-presentation-action-selected data-[state=on]:text-content-system-global-primary [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-border-system-global-secondary bg-transparent shadow-xs hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n BlueContStyle: [\n \"text-content-presentation-action-light-primary\",\n \"border-transparent bg-transparent\",\n \"hover:bg-background-presentation-action-contstyle-hover\",\n \"hover:text-content-presentation-action-information-hover\",\n \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n \"focus:lg:bg-background-presentation-action-borderstyle\",\n \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-information-hover\",\n \"data-[state=on]:bg-background-presentation-action-contstyle-hover data-[state=on]:text-content-presentation-action-information-hover\",\n ],\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { toggleVariants } from \"@/components/ui/toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { $isAtNodeEnd } from '@lexical/selection'\nimport { ElementNode, RangeSelection, TextNode } from 'lexical'\n\nexport function getSelectedNode(\n selection: RangeSelection\n): TextNode | ElementNode {\n const anchor = selection.anchor\n const focus = selection.focus\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n if (anchorNode === focusNode) {\n return anchorNode\n }\n const isBackward = selection.isBackward()\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode\n } else {\n return $isAtNodeEnd(anchor) ? anchorNode : focusNode\n }\n}\n","import { useState } from \"react\";\n\nimport { $isLinkNode } from \"@lexical/link\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport {\n $isElementNode,\n $isRangeSelection,\n BaseSelection,\n ElementFormatType,\n FORMAT_ELEMENT_COMMAND,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\n\nimport { Separator } from \"@/components/ui/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\n\nconst ELEMENT_FORMAT_OPTIONS: {\n [key in Exclude<ElementFormatType, \"start\" | \"end\" | \"\">]: {\n icon: React.ReactNode;\n iconRTL: string;\n name: string;\n };\n} = {\n left: {\n icon: <i className=\"ri-align-left\"></i>,\n iconRTL: \"left-align\",\n name: \"Left Align\",\n },\n center: {\n icon: <i className=\"ri-align-center\"></i>,\n iconRTL: \"center-align\",\n name: \"Center Align\",\n },\n right: {\n icon: <i className=\"ri-align-right\"></i>,\n iconRTL: \"right-align\",\n name: \"Right Align\",\n },\n justify: {\n icon: <i className=\"ri-align-justify\"></i>,\n iconRTL: \"justify-align\",\n name: \"Justify Align\",\n },\n} as const;\n\nexport function ElementFormatToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n const [elementFormat, setElementFormat] = useState<ElementFormatType>(\"left\");\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n let matchingParent;\n if ($isLinkNode(parent)) {\n // If node is a link, we need to fetch the parent paragraph node to set format\n matchingParent = $findMatchingParent(\n node,\n (parentNode) => $isElementNode(parentNode) && !parentNode.isInline()\n );\n }\n setElementFormat(\n $isElementNode(matchingParent)\n ? matchingParent.getFormatType()\n : $isElementNode(node)\n ? node.getFormatType()\n : parent?.getFormatType() || \"left\"\n );\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n const handleValueChange = (value: string) => {\n if (!value) return; // Prevent unselecting current value\n\n setElementFormat(value as ElementFormatType);\n\n if (value === \"indent\") {\n activeEditor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n } else if (value === \"outdent\") {\n activeEditor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n } else {\n activeEditor.dispatchCommand(\n FORMAT_ELEMENT_COMMAND,\n value as ElementFormatType\n );\n }\n };\n\n return (\n <ToggleGroup\n type=\"single\"\n value={elementFormat}\n defaultValue={elementFormat}\n onValueChange={handleValueChange}\n className=\"flex gap-1\"\n variant=\"BlueContStyle\"\n >\n {/* Alignment toggles */}\n {Object.entries(ELEMENT_FORMAT_OPTIONS).map(([value, option]) => (\n <ToggleGroupItem\n key={value}\n value={value}\n variant=\"BlueContStyle\"\n aria-label={option.name}\n size=\"sm\"\n className=\"h-8 w-8 p-0 \"\n >\n {option.icon}\n </ToggleGroupItem>\n ))}\n\n<Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" /> \n {/* Indentation toggles */}\n <ToggleGroupItem\n value=\"outdent\"\n aria-label=\"Outdent\"\n variant=\"BlueContStyle\"\n size=\"sm\"\n className=\"h-8 w-8 \"\n >\n <i className=\"ri-indent-decrease\"></i>\n </ToggleGroupItem>\n\n <ToggleGroupItem\n value=\"indent\"\n variant=\"BlueContStyle\"\n aria-label=\"Indent\"\n size=\"sm\"\n className=\"h-8 w-8 \"\n >\n <i className=\"ri-indent-increase\"></i>\n </ToggleGroupItem>\n </ToggleGroup>\n );\n}\n","import { HexColorPicker } from \"react-colorful\";\n\nimport { Input } from \"@/components/ui/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport { Button } from \"../../../../components/Button\";\n\ntype Props = {\n disabled?: boolean;\n icon?: React.ReactNode;\n label?: string;\n title?: string;\n stopCloseOnClickSelf?: boolean;\n color: string;\n onChange?: (color: string, skipHistoryStack: boolean) => void;\n};\n\nexport default function ColorPicker({\n disabled = false,\n stopCloseOnClickSelf = true,\n color,\n onChange,\n icon,\n label,\n ...rest\n}: Props) {\n return (\n <Popover modal={true}>\n <PopoverTrigger asChild disabled={disabled}>\n <Button\n size={\"M\"}\n variant={\"BlueContStyle\"}\n className=\"h-8 w-8\"\n {...rest}\n >\n <span>{icon}</span>\n {/* <ChevronDownIcon className='size-4'/> */}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\">\n <HexColorPicker\n color={color}\n onChange={(color) => onChange?.(color, false)}\n />\n <Input\n maxLength={7}\n onChange={(e) => {\n e.stopPropagation();\n onChange?.(e?.currentTarget?.value, false);\n }}\n value={color}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from '@lexical/selection'\nimport { $getSelection, $isRangeSelection, BaseSelection } from 'lexical'\nimport { PaintBucketIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\nimport ColorPicker from '@/components/editor/editor-ui/colorpicker'\n\nexport function FontBackgroundToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n\n const [bgColor, setBgColor] = useState('var(--background-system-body-primary)')\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n setBgColor(\n $getSelectionStyleValueForProperty(\n selection,\n 'background-color',\n 'var(--background-system-body-primary)'\n )\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const applyStyleText = useCallback(\n (styles: Record<string, string>, skipHistoryStack?: boolean) => {\n activeEditor.update(\n () => {\n const selection = $getSelection()\n if (selection !== null) {\n $patchStyleText(selection, styles)\n }\n },\n skipHistoryStack ? { tag: 'historic' } : {}\n )\n },\n [activeEditor]\n )\n\n const onBgColorSelect = useCallback(\n (value: string, skipHistoryStack: boolean) => {\n applyStyleText({ 'background-color': value }, skipHistoryStack)\n },\n [applyStyleText]\n )\n\n return (\n <ColorPicker\n icon={<PaintBucketIcon className=\"size-4\" />}\n color={bgColor}\n onChange={onBgColorSelect}\n title=\"text background color\"\n />\n )\n}\n","import { useCallback, useState } from \"react\";\n\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\";\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport ColorPicker from \"@/components/editor/editor-ui/colorpicker\";\n\nexport function FontColorToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n\n const [fontColor, setFontColor] = useState(\"var(--content-system-global-primary)\");\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n setFontColor(\n $getSelectionStyleValueForProperty(selection, \"color\", \"var(--content-system-global-primary)\")\n );\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n const applyStyleText = useCallback(\n (styles: Record<string, string>, skipHistoryStack?: boolean) => {\n activeEditor.update(\n () => {\n const selection = $getSelection();\n if (selection !== null) {\n $patchStyleText(selection, styles);\n }\n },\n skipHistoryStack ? { tag: \"historic\" } : {}\n );\n },\n [activeEditor]\n );\n\n const onFontColorSelect = useCallback(\n (value: string, skipHistoryStack: boolean) => {\n applyStyleText({ color: value }, skipHistoryStack);\n },\n [applyStyleText]\n );\n\n return (\n <ColorPicker\n icon={<i className=\"ri-font-color\"></i>}\n color={fontColor}\n onChange={onFontColorSelect}\n title=\"text color\"\n />\n );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from '@lexical/selection'\nimport { $getSelection, $isRangeSelection, BaseSelection } from 'lexical'\nimport { TypeIcon } from 'lucide-react'\n\n import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n } from '../../../../../components/Select'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\n\nconst FONT_FAMILY_OPTIONS = [\n 'Arial',\n 'Verdana',\n 'Times New Roman',\n 'Georgia',\n 'Courier New',\n 'Trebuchet MS',\n]\n\nexport function FontFamilyToolbarPlugin() {\n const style = 'font-family'\n const [fontFamily, setFontFamily] = useState('Arial')\n\n const { activeEditor } = useToolbarContext()\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n setFontFamily(\n $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial')\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const handleClick = useCallback(\n (option: string) => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if (selection !== null) {\n $patchStyleText(selection, {\n [style]: option,\n })\n }\n })\n },\n [activeEditor, style]\n )\n\n const buttonAriaLabel = 'Formatting options for font family'\n\n return (\n <Select\n value={fontFamily}\n onValueChange={(value) => {\n setFontFamily(value)\n handleClick(value)\n }}\n aria-label={buttonAriaLabel}\n >\n <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n <TypeIcon className=\"size-4\" />\n <span className='flex h-full text-center shrink-0 items-center w-full'>{fontFamily}</span>\n </SelectTrigger>\n <SelectContent>\n {FONT_FAMILY_OPTIONS.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n","import { useState } from \"react\";\n\nimport { $isTableSelection } from \"@lexical/table\";\nimport {\n $isRangeSelection,\n BaseSelection,\n FORMAT_TEXT_COMMAND,\n TextFormatType,\n} from \"lexical\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\n\nimport { Button } from \"../../../../../components/Button\";\nconst iconClasses: Partial<Record<TextFormatType, string>> = {\n bold: \"ri-bold\",\n italic: \"ri-italic\",\n underline: \"ri-underline\",\n strikethrough: \"ri-strikethrough\",\n code: \"ri-code-s-slash-line\",\n} as const;\n\nexport function FontFormatToolbarPlugin({\n format,\n}: {\n format: Omit<TextFormatType, \"highlight\" | \"subscript\" | \"superscript\">;\n}) {\n const { activeEditor } = useToolbarContext();\n // @ts-ignore\n const [isSelected, setIsSelected] = useState<boolean>(false);\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n // @ts-ignore\n setIsSelected(selection.hasFormat(format as TextFormatType));\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n const iconClass = iconClasses[format as TextFormatType];\n\n return (\n <Button\n aria-label={`Button ${format}`}\n variant={\"BlueContStyle\"}\n size={\"M\"}\n onClick={() => {\n activeEditor.dispatchCommand(\n FORMAT_TEXT_COMMAND,\n format as TextFormatType\n );\n }}\n >\n <i className={`${iconClass} `}></i>\n </Button>\n );\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\n\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\";\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport { Input } from \"@/components/ui/input\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\n\nconst DEFAULT_FONT_SIZE = 16;\nconst MIN_FONT_SIZE = 1;\nconst MAX_FONT_SIZE = 72;\n\nexport function FontSizeToolbarPlugin() {\n const style = \"font-size\";\n const [fontSize, setFontSize] = useState(DEFAULT_FONT_SIZE);\n\n const { activeEditor } = useToolbarContext();\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const value = $getSelectionStyleValueForProperty(\n selection,\n \"font-size\",\n `${DEFAULT_FONT_SIZE}px`\n );\n setFontSize(parseInt(value) || DEFAULT_FONT_SIZE);\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n const updateFontSize = useCallback(\n (newSize: number) => {\n const size = Math.min(Math.max(newSize, MIN_FONT_SIZE), MAX_FONT_SIZE);\n activeEditor.update(() => {\n const selection = $getSelection();\n if (selection !== null) {\n $patchStyleText(selection, {\n [style]: `${size}px`,\n });\n }\n });\n setFontSize(size);\n },\n [activeEditor, style]\n );\n\n return (\n <div className=\"flex items-center gap-1\">\n <div className=\"flex items-center gap-1\">\n <Button\n variant={\"BlueContStyle\"}\n size={\"M\"}\n onClick={() => updateFontSize(fontSize - 1)}\n disabled={fontSize <= MIN_FONT_SIZE}\n >\n <i className=\"ri-subtract-line\"></i>\n </Button>\n <Input\n value={fontSize}\n onChange={(e) =>\n updateFontSize(parseInt(e.target.value) || DEFAULT_FONT_SIZE)\n }\n className=\"h-8 w-12 text-center\"\n min={MIN_FONT_SIZE}\n max={MAX_FONT_SIZE}\n />\n <Button\n variant={\"BlueContStyle\"}\n size={\"M\"}\n onClick={() => updateFontSize(fontSize + 1)}\n disabled={fontSize >= MAX_FONT_SIZE}\n >\n <i className=\"ri-add-fill\"></i>\n </Button>\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n REDO_COMMAND,\n UNDO_COMMAND,\n} from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\n\nconst IS_APPLE = true;\n\nexport function HistoryToolbarPlugin() {\n const [editor] = useLexicalComposerContext();\n const { activeEditor, $updateToolbar } = useToolbarContext();\n const [isEditable, setIsEditable] = useState(editor.isEditable());\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener((editable) => {\n setIsEditable(editable);\n }),\n activeEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar();\n });\n }),\n activeEditor.registerCommand<boolean>(\n CAN_UNDO_COMMAND,\n (payload) => {\n setCanUndo(payload);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n activeEditor.registerCommand<boolean>(\n CAN_REDO_COMMAND,\n (payload) => {\n setCanRedo(payload);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n )\n );\n }, [$updateToolbar, activeEditor, editor]);\n\n return (\n <div className=\"flex items-center gap-1\">\n <Button\n disabled={!canUndo || !isEditable}\n onClick={() => {\n activeEditor.dispatchCommand(UNDO_COMMAND, undefined);\n }}\n title={IS_APPLE ? \"Undo (⌘Z)\" : \"Undo (Ctrl+Z)\"}\n type=\"button\"\n aria-label=\"Undo\"\n size={\"M\"}\n className=\"h-8 w-8\"\n variant={\"BlueContStyle\"}\n >\n <i className=\"ri-arrow-go-back-line\"></i>\n </Button>\n <Button\n disabled={!canRedo || !isEditable}\n onClick={() => {\n activeEditor.dispatchCommand(REDO_COMMAND, undefined);\n }}\n title={IS_APPLE ? \"Redo (⇧⌘Z)\" : \"Redo (Ctrl+Y)\"}\n type=\"button\"\n aria-label=\"Redo\"\n size={\"M\"}\n className=\"h-8 w-8\"\n variant={\"BlueContStyle\"}\n >\n <i className=\"ri-arrow-go-forward-line\"></i>\n </Button>\n </div>\n );\n}\n","const SUPPORTED_URL_PROTOCOLS = new Set([\n 'http:',\n 'https:',\n 'mailto:',\n 'sms:',\n 'tel:',\n])\n\nexport function sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch {\n return url\n }\n return url\n}\n\n// Source: https://stackoverflow.com/a/8234912/2013580\nconst urlRegExp = new RegExp(\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[\\w]*))?)/\n)\nexport function validateUrl(url: string): boolean {\n // TODO Fix UI for link insertion; it should never default to an invalid URL such as https://.\n // Maybe show a dialog where they user can type the URL before inserting it.\n return url === 'https://' || urlRegExp.test(url)\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport {\n $isRangeSelection,\n BaseSelection,\n COMMAND_PRIORITY_NORMAL,\n} from \"lexical\";\nimport { KEY_MODIFIER_COMMAND } from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { sanitizeUrl } from \"@/components/editor/utils/url\";\n\nexport function LinkToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n const { setIsLinkEditMode } = useFloatingLinkContext();\n const [isLink, setIsLink] = useState(false);\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n useEffect(() => {\n return activeEditor.registerCommand(\n KEY_MODIFIER_COMMAND,\n (payload) => {\n const event: KeyboardEvent = payload;\n const { code, ctrlKey, metaKey } = event;\n\n if (code === \"KeyK\" && (ctrlKey || metaKey)) {\n event.preventDefault();\n let url: string | null;\n if (!isLink) {\n setIsLinkEditMode(true);\n url = sanitizeUrl(\"https://\");\n } else {\n setIsLinkEditMode(false);\n url = null;\n }\n return activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, url);\n }\n return false;\n },\n COMMAND_PRIORITY_NORMAL\n );\n }, [activeEditor, isLink, setIsLinkEditMode]);\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n setIsLinkEditMode(true);\n activeEditor.dispatchCommand(\n TOGGLE_LINK_COMMAND,\n sanitizeUrl(\"https://\")\n );\n } else {\n setIsLinkEditMode(false);\n activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [activeEditor, isLink, setIsLinkEditMode]);\n\n return (\n <Button\n size={\"M\"}\n variant={\"BlueContStyle\"}\n aria-label=\"Button link\"\n onClick={insertLink}\n >\n <i className=\"ri-link\"></i>\n </Button>\n );\n}\n","import { useState } from \"react\";\n\nimport { $isTableSelection } from \"@lexical/table\";\nimport { $isRangeSelection, BaseSelection, FORMAT_TEXT_COMMAND } from \"lexical\";\n\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\n\nexport function SubSuperToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n const [isSubscript, setIsSubscript] = useState(false);\n const [isSuperscript, setIsSuperscript] = useState(false);\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n setIsSubscript(selection.hasFormat(\"subscript\"));\n setIsSuperscript(selection.hasFormat(\"superscript\"));\n }\n };\n\n useUpdateToolbarHandler($updateToolbar);\n\n return (\n <ToggleGroup\n type=\"single\"\n variant=\"BlueContStyle\"\n defaultValue={\n isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n }\n >\n <ToggleGroupItem\n value=\"subscript\"\n variant=\"BlueContStyle\"\n aria-label=\"Toggle subscript\"\n onClick={() => {\n activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\");\n }}\n size=\"sm\"\n className=\"h-8 w-8\"\n >\n <i className=\"ri-subscript\"></i>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"superscript\"\n variant=\"BlueContStyle\"\n aria-label=\"Toggle superscript\"\n onClick={() => {\n activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\");\n }}\n size=\"sm\"\n className=\"h-8 w-8\"\n >\n <i className=\"ri-superscript\"></i>\n </ToggleGroupItem>\n </ToggleGroup>\n );\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{AutoLinkNode as t,$isAutoLinkNode as e,$isLinkNode as n,TOGGLE_LINK_COMMAND as r,$createAutoLinkNode as l}from\"@lexical/link\";import{useLexicalComposerContext as i}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as o}from\"@lexical/utils\";import{TextNode as s,$getSelection as u,$isRangeSelection as g,COMMAND_PRIORITY_LOW as c,$isTextNode as a,$isElementNode as f,$isLineBreakNode as x,$createTextNode as h,$isNodeSelection as p}from\"lexical\";import{useEffect as d}from\"react\";function m(t,e=(t=>t)){return n=>{const r=t.exec(n);return null===r?null:{index:r.index,length:r[0].length,text:r[0],url:e(r[0])}}}function T(t,e){for(let n=0;n<e.length;n++){const r=e[n](t);if(r)return r}return null}const C=/[.,;\\s]/;function S(t){return C.test(t)}function b(t){return S(t[t.length-1])}function U(t){return S(t[0])}function v(t){let e=t.getPreviousSibling();return f(e)&&(e=e.getLastDescendant()),null===e||x(e)||a(e)&&b(e.getTextContent())}function L(t){let e=t.getNextSibling();return f(e)&&(e=e.getFirstDescendant()),null===e||x(e)||a(e)&&U(e.getTextContent())}function R(t,e,n,r){if(!(t>0?S(n[t-1]):v(r[0])))return!1;return e<n.length?S(n[e]):L(r[r.length-1])}function k(t,e,n){const r=[],l=[],i=[];let o=0,s=0;const u=[...t];for(;u.length>0;){const t=u[0],g=t.getTextContent().length,c=s;s+g<=e?(r.push(t),o+=g):c>=n?i.push(t):l.push(t),s+=g,u.shift()}return[o,r,l,i]}function D(t,e,n,r){const i=l(r.url,r.attributes);if(1===t.length){let l,o=t[0];0===e?[l,o]=o.splitText(n):[,l,o]=o.splitText(e,n);const s=h(r.text);return s.setFormat(l.getFormat()),s.setDetail(l.getDetail()),s.setStyle(l.getStyle()),i.append(s),l.replace(i),o}if(t.length>1){const r=t[0];let l,o=r.getTextContent().length;0===e?l=r:[,l]=r.splitText(e);const s=[];let c;for(let e=1;e<t.length;e++){const r=t[e],l=r.getTextContent().length,i=o;if(i<n)if(o+l<=n)s.push(r);else{const[t,e]=r.splitText(n-i);s.push(t),c=e}o+=l}const f=u(),x=f?f.getNodes().find(a):void 0,d=h(l.getTextContent());return d.setFormat(l.getFormat()),d.setDetail(l.getDetail()),d.setStyle(l.getStyle()),i.append(d,...s),x&&x===l&&(g(f)?d.select(f.anchor.offset,f.focus.offset):p(f)&&d.select(0,d.getTextContent().length)),l.replace(i),c}}function N(t,e,n){const r=t.getChildren(),l=r.length;for(let e=0;e<l;e++){const l=r[e];if(!a(l)||!l.isSimpleText())return I(t),void n(null,t.getURL())}const i=t.getTextContent(),o=T(i,e);if(null===o||o.text!==i)return I(t),void n(null,t.getURL());if(!v(t)||!L(t))return I(t),void n(null,t.getURL());const s=t.getURL();if(s!==o.url&&(t.setURL(o.url),n(o.url,s)),o.attributes){const e=t.getRel();e!==o.attributes.rel&&(t.setRel(o.attributes.rel||null),n(o.attributes.rel||null,e));const r=t.getTarget();r!==o.attributes.target&&(t.setTarget(o.attributes.target||null),n(o.attributes.target||null,r))}}function I(t){const e=t.getChildren();for(let n=e.length-1;n>=0;n--)t.insertAfter(e[n]);return t.remove(),e.map((t=>t.getLatest()))}function P(l,i,f){d((()=>{l.hasNodes([t])||function(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(77);const x=(t,e)=>{f&&f(t,e)};return o(l.registerNodeTransform(s,(t=>{const r=t.getParentOrThrow(),l=t.getPreviousSibling();if(e(r)&&!r.getIsUnlinked())N(r,i,x);else if(!n(r)){if(t.isSimpleText()&&(U(t.getTextContent())||!e(l))){const e=function(t){const e=[t];let n=t.getNextSibling();for(;null!==n&&a(n)&&n.isSimpleText()&&(e.push(n),!/[\\s]/.test(n.getTextContent()));)n=n.getNextSibling();return e}(t);!function(t,e,n){let r=[...t];const l=r.map((t=>t.getTextContent())).join(\"\");let i,o=l,s=0;for(;(i=T(o,e))&&null!==i;){const t=i.index,e=t+i.length;if(R(s+t,s+e,l,r)){const[l,,o,u]=k(r,s+t,s+e),g=D(o,s+t-l,s+e-l,i);r=g?[g,...u]:u,n(i.url,null),s=0}else s+=e;o=o.substring(e)}}(e,i,x)}!function(t,n,r){const l=t.getPreviousSibling(),i=t.getNextSibling(),o=t.getTextContent();var s;!e(l)||l.getIsUnlinked()||U(o)&&(s=o,!(l.isEmailURI()?/^\\.[a-zA-Z]{2,}/.test(s):/^\\.[a-zA-Z0-9]{1,}/.test(s)))||(l.append(t),N(l,n,r),r(null,l.getURL())),!e(i)||i.getIsUnlinked()||b(o)||(I(i),N(i,n,r),r(null,i.getURL()))}(t,i,x)}})),l.registerCommand(r,(t=>{const n=u();if(null!==t||!g(n))return!1;return n.extract().forEach((t=>{const n=t.getParent();if(e(n))return n.setIsUnlinked(!n.getIsUnlinked()),n.markDirty(),!0})),!1}),c))}),[l,i,f])}function w({matchers:t,onChange:e}){const[n]=i();return P(n,t,e),null}export{w as AutoLinkPlugin,m as createLinkMatcherWithRegExp};\n","import { JSX } from \"react\";\nimport {\n AutoLinkPlugin as LexicalAutoLinkPlugin,\n createLinkMatcherWithRegExp,\n} from \"@lexical/react/LexicalAutoLinkPlugin\";\n\nconst URL_REGEX =\n /((https?:\\/\\/(www\\.)?)|(www\\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)(?<![-.+():%])/;\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/;\n\nconst MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text) => {\n return text.startsWith(\"http\") ? text : `https://${text}`;\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`;\n }),\n];\n\nexport function AutoLinkPlugin(): JSX.Element {\n return <LexicalAutoLinkPlugin matchers={MATCHERS} />;\n}\n","import { useMemo, useRef } from 'react'\n\nimport { debounce } from 'lodash-es'\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number\n) {\n const funcRef = useRef<T | null>(null)\n funcRef.current = fn\n\n return useMemo(\n () =>\n debounce(\n (...args: Parameters<T>) => {\n if (funcRef.current) {\n funcRef.current(...args)\n }\n },\n ms,\n { maxWait }\n ),\n [ms, maxWait]\n )\n}\n","import { useState } from \"react\";\n\nimport { $isCodeNode } from \"@lexical/code\";\nimport {\n $getNearestNodeFromDOMNode,\n $getSelection,\n $setSelection,\n LexicalEditor,\n} from \"lexical\";\nimport { CircleCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\n\ninterface Props {\n editor: LexicalEditor;\n getCodeDOMNode: () => HTMLElement | null;\n}\n\nexport function CopyButton({ editor, getCodeDOMNode }: Props) {\n const [isCopyCompleted, setCopyCompleted] = useState<boolean>(false);\n\n const removeSuccessIcon = useDebounce(() => {\n setCopyCompleted(false);\n }, 1000);\n\n async function handleClick(): Promise<void> {\n const codeDOMNode = getCodeDOMNode();\n\n if (!codeDOMNode) {\n return;\n }\n\n let content = \"\";\n\n editor.update(() => {\n const codeNode = $getNearestNodeFromDOMNode(codeDOMNode);\n\n if ($isCodeNode(codeNode)) {\n content = codeNode.getTextContent();\n }\n\n const selection = $getSelection();\n $setSelection(selection);\n });\n\n try {\n await navigator.clipboard.writeText(content);\n setCopyCompleted(true);\n removeSuccessIcon();\n } catch (err) {\n console.error(\"Failed to copy: \", err);\n }\n }\n\n return (\n <button\n className=\"flex shrink-0 cursor-pointer items-center rounded border border-transparent bg-none p-1 uppercase text-content-system-global-primary/50\"\n onClick={handleClick}\n aria-label=\"copy\"\n >\n {isCopyCompleted ? (\n <CircleCheckIcon className=\"size-4\" />\n ) : (\n <CopyIcon className=\"size-4\" />\n )}\n </button>\n );\n}\n","import { useEffect, useRef, useState, JSX } from \"react\";\n\nimport { $isCodeNode, CodeNode, getLanguageFriendlyName } from \"@lexical/code\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNearestNodeFromDOMNode } from \"lexical\";\nimport { createPortal } from \"react-dom\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\nimport { CopyButton } from \"@/components/editor/editor-ui/code-button\";\n\nconst CODE_PADDING = 8;\n\ninterface Position {\n top: string;\n right: string;\n}\n\nfunction CodeActionMenuContainer({\n anchorElem,\n}: {\n anchorElem: HTMLElement;\n}): JSX.Element {\n const [editor] = useLexicalComposerContext();\n\n const [lang, setLang] = useState(\"\");\n const [isShown, setShown] = useState<boolean>(false);\n const [shouldListenMouseMove, setShouldListenMouseMove] =\n useState<boolean>(false);\n const [position, setPosition] = useState<Position>({\n right: \"0\",\n top: \"0\",\n });\n const codeSetRef = useRef<Set<string>>(new Set());\n const codeDOMNodeRef = useRef<HTMLElement | null>(null);\n\n function getCodeDOMNode(): HTMLElement | null {\n return codeDOMNodeRef.current;\n }\n\n const debouncedOnMouseMove = useDebounce(\n (event: MouseEvent) => {\n const { codeDOMNode, isOutside } = getMouseInfo(event);\n if (isOutside) {\n setShown(false);\n return;\n }\n\n if (!codeDOMNode) {\n return;\n }\n\n codeDOMNodeRef.current = codeDOMNode;\n\n let codeNode: CodeNode | null = null;\n let _lang = \"\";\n\n editor.update(() => {\n const maybeCodeNode = $getNearestNodeFromDOMNode(codeDOMNode);\n\n if ($isCodeNode(maybeCodeNode)) {\n codeNode = maybeCodeNode;\n _lang = codeNode.getLanguage() || \"\";\n }\n });\n\n if (codeNode) {\n const { y: editorElemY, right: editorElemRight } =\n anchorElem.getBoundingClientRect();\n const { y, right } = codeDOMNode.getBoundingClientRect();\n setLang(_lang);\n setShown(true);\n setPosition({\n right: `${editorElemRight - right + CODE_PADDING}px`,\n top: `${y - editorElemY}px`,\n });\n }\n },\n 50,\n 1000\n );\n\n useEffect(() => {\n if (!shouldListenMouseMove) {\n return;\n }\n\n document.addEventListener(\"mousemove\", debouncedOnMouseMove);\n\n return () => {\n setShown(false);\n debouncedOnMouseMove.cancel();\n document.removeEventListener(\"mousemove\", debouncedOnMouseMove);\n };\n }, [shouldListenMouseMove, debouncedOnMouseMove]);\n\n useEffect(() => {\n return editor.registerMutationListener(\n CodeNode,\n (mutations) => {\n editor.getEditorState().read(() => {\n for (const [key, type] of Array.from(mutations)) {\n switch (type) {\n case \"created\":\n codeSetRef.current.add(key);\n break;\n\n case \"destroyed\":\n codeSetRef.current.delete(key);\n break;\n\n default:\n break;\n }\n }\n });\n setShouldListenMouseMove(codeSetRef.current.size > 0);\n },\n { skipInitialization: false }\n );\n }, [editor]);\n\n const codeFriendlyName = getLanguageFriendlyName(lang);\n\n return (\n <>\n {isShown ? (\n <div\n className=\"code-action-menu-container user-select-none absolute flex h-9 flex-row items-center space-x-1 text-xs text-content-system-global-primary/50\"\n style={{ ...position }}\n >\n <div>{codeFriendlyName}</div>\n <CopyButton editor={editor} getCodeDOMNode={getCodeDOMNode} />\n </div>\n ) : null}\n </>\n );\n}\n\nfunction getMouseInfo(event: MouseEvent): {\n codeDOMNode: HTMLElement | null;\n isOutside: boolean;\n} {\n const target = event.target;\n\n if (target && target instanceof HTMLElement) {\n const codeDOMNode = target.closest<HTMLElement>(\"code.EditorTheme__code\");\n const isOutside = !(\n codeDOMNode ||\n target.closest<HTMLElement>(\"div.code-action-menu-container\")\n );\n\n return { codeDOMNode, isOutside };\n } else {\n return { codeDOMNode: null, isOutside: true };\n }\n}\n\nexport function CodeActionMenuPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLDivElement | null;\n}): React.ReactPortal | null {\n if (!anchorElem) {\n return null;\n }\n\n return createPortal(\n <CodeActionMenuContainer anchorElem={anchorElem} />,\n anchorElem\n );\n}\n","'use client'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, JSX } from 'react'\n\nimport { registerCodeHighlighting } from '@lexical/code'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\n\n\nexport function CodeHighlightPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return registerCodeHighlighting(editor)\n }, [editor])\n\n return null\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createCommand as e,KEY_ARROW_DOWN_COMMAND as n,KEY_ARROW_UP_COMMAND as o,KEY_ESCAPE_COMMAND as r,KEY_TAB_COMMAND as l,KEY_ENTER_COMMAND as i,COMMAND_PRIORITY_LOW as u,$getSelection as s,$isRangeSelection as c,getDOMSelection as a,$isTextNode as d}from\"lexical\";import m,{useLayoutEffect as f,useEffect as p,useState as g,useCallback as h,useMemo as w,useRef as y}from\"react\";import{mergeRegister as v}from\"@lexical/utils\";import{jsx as b}from\"react/jsx-runtime\";const C=\"startTransition\";const E=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,x=E?f:p;class R{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const S=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function O(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function I(e,n,o,r){const[l]=t();p((()=>{if(null!=n&&null!=e){const t=l.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,r=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&r.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=O(n,e);const s=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=O(n,e);t!==u&&(u=t,null!=r&&r(t))},c=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",s,{capture:!0,passive:!0}),c.observe(n),()=>{c.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",s,!0)}}}),[n,l,r,o,e])}const A=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function T({close:t,editor:e,anchorElementRef:a,resolution:d,options:m,menuRenderFn:f,onSelectOption:y,shouldSplitNodeWithQuery:b=!1,commandPriority:C=u,preselectFirstItem:E=!0}){const[R,O]=g(null),I=d.match&&d.match.matchingString;p((()=>{E&&O(0)}),[I,E]);const T=h((n=>{e.update((()=>{const e=null!=d.match&&b?function(t){const e=s();if(!c(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const r=n.offset,l=o.getTextContent().slice(0,r),i=t.replaceableString.length,u=r-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(l,t.matchingString,i);if(u<0)return null;let a;return 0===u?[a]=o.splitText(r):[,a]=o.splitText(u,r),a}(d.match):null;y(n,e,t,d.match?d.match.matchingString:\"\")}))}),[e,b,d.match,y,t]),N=h((t=>{const n=e.getRootElement();null!==n&&(n.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),O(t))}),[e]);p((()=>()=>{const t=e.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[e]),x((()=>{null===m?O(null):null===R&&E&&N(0)}),[m,R,N,E]),p((()=>v(e.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(S(t.ref.current),!0)),C))),[e,N,C]),p((()=>v(e.registerCommand(n,(t=>{const n=t;if(null!==m&&m.length){const t=null===R?0:R!==m.length-1?R+1:0;N(t);const o=m[t];null!=o.ref&&o.ref.current&&e.dispatchCommand(A,{index:t,option:o}),n.preventDefault(),n.stopImmediatePropagation()}return!0}),C),e.registerCommand(o,(t=>{const e=t;if(null!==m&&m.length){const t=null===R?m.length-1:0!==R?R-1:m.length-1;N(t);const n=m[t];null!=n.ref&&n.ref.current&&S(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),e.registerCommand(r,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),e.registerCommand(l,(t=>{const e=t;return null!==m&&null!==R&&null!=m[R]&&(e.preventDefault(),e.stopImmediatePropagation(),T(m[R]),!0)}),C),e.registerCommand(i,(t=>null!==m&&null!==R&&null!=m[R]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),T(m[R]),!0)),C))),[T,t,e,m,R,N,C]);return f(a,w((()=>({options:m,selectOptionAndCleanUp:T,selectedIndex:R,setHighlightedIndex:O})),[T,R,m]),d.match?d.match.matchingString:\"\")}function N(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}const L=\"\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%'\\\"~=<>_:;\";function P(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,r=e?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&r.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}const _=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function D(t,{minLength:e=1,maxLength:n=75}){return h((o=>{const r=new RegExp(\"(^|\\\\s|\\\\()([\"+t+\"]((?:\"+(\"[^\"+t+L+\"\\\\s]\")+\"){0,\"+n+\"}))$\").exec(o);if(null!==r){const t=r[1],n=r[3];if(n.length>=e)return{leadOffset:r.index+t.length,matchingString:n,replaceableString:r[2]}}return null}),[n,e,t])}function $({options:e,onQueryChange:n,onSelectOption:o,onOpen:r,onClose:l,menuRenderFn:i,triggerFn:f,anchorClassName:w,commandPriority:v=u,parent:x,preselectFirstItem:R=!0}){const[S]=t(),[O,A]=g(null),L=function(e,n,o,r=(E?document.body:void 0),l=!0){const[i]=t(),u=y(E?document.createElement(\"div\"):null),s=h((()=>{if(null===u.current||void 0===r)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,s=n.firstChild;if(null!==t&&null!==e){const{left:i,top:c,width:a,height:d}=e.getRect(),m=u.current.offsetHeight;if(n.style.top=`${c+m+3+(l?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${d}px`,n.style.width=`${a}px`,null!==s){s.style.top=`${c}`;const e=s.getBoundingClientRect(),o=e.height,r=e.width,u=t.getBoundingClientRect();i+r>u.right&&(n.style.left=`${u.right-r+window.pageXOffset}px`),(c+o>window.innerHeight||c+o>u.bottom)&&c-u.top>o+d&&(n.style.top=`${c-o-d+(l?window.pageYOffset:0)}px`)}n.isConnected||(N(n,o),r.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,l,o,r]);p((()=>{const t=i.getRootElement();return null!==e&&s(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,s,e]);const c=h((t=>{null!==e&&(t||n(null))}),[e,n]);I(e,u.current,s,c);const a=u.current;return null!=a&&(N(a,o),null!=r&&r.append(a)),u}(O,A,w,x),P=h((()=>{A(null),null!=l&&null!==O&&l()}),[l,O]),_=h((t=>{A(t),null!=r&&null===O&&r(t)}),[r,O]);return p((()=>{const t=S.registerUpdateListener((()=>{S.getEditorState().read((()=>{if(!S.isEditable())return void P();const t=S._window||window,e=t.document.createRange(),o=s(),r=function(t){let e=null;return t.getEditorState().read((()=>{const t=s();c(t)&&(e=function(t){const e=t.anchor;if(\"text\"!==e.type)return null;const n=e.getNode();if(!n.isSimpleText())return null;const o=e.offset;return n.getTextContent().slice(0,o)}(t))})),e}(S);if(!c(o)||!o.isCollapsed()||null===r||null===e)return void P();const l=f(r,S);if(n(l?l.matchingString:null),null!==l&&!function(t,e){return 0===e&&t.getEditorState().read((()=>{const t=s();if(c(t)){const e=t.anchor.getNode().getPreviousSibling();return d(e)&&e.isTextEntity()}return!1}))}(S,l.leadOffset)){const n=function(t,e,n){const o=a(n);if(null===o||!o.isCollapsed)return!1;const r=o.anchorNode,l=t,i=o.anchorOffset;if(null==r||null==i)return!1;try{e.setStart(r,l),e.setEnd(r,i)}catch(t){return!1}return!0}(l.leadOffset,e,t);if(null!==n)return i=()=>_({getRect:()=>e.getBoundingClientRect(),match:l}),void(C in m?m[C](i):i())}var i;P()}))}));return()=>{t()}}),[S,f,n,O,P,_]),p((()=>S.registerEditableListener((t=>{t||P()}))),[S,P]),null===O||null===S||null===L.current?null:b(T,{close:P,resolution:O,editor:S,anchorElementRef:L,options:e,menuRenderFn:i,shouldSplitNodeWithQuery:!0,onSelectOption:o,commandPriority:v,preselectFirstItem:R})}export{$ as LexicalTypeaheadMenuPlugin,R as MenuOption,L as PUNCTUATION,_ as SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,P as getScrollParent,D as useBasicTypeaheadTriggerMatch,I as useDynamicPositioning};\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useCallback, useMemo, useState, JSX, Suspense } from \"react\";\n// @ts-ignore\nimport { createPortal } from \"react-dom\";\n\nimport { lazy } from \"react\";\n\nimport { TextNode } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useBasicTypeaheadTriggerMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\n\n//@ts-ignore\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\n\nimport { useEditorModal } from \"@/components/editor/editor-hooks/use-modal\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n () => import(\"./default/lexical-typeahead-menu-plugin\")\n);\nexport function ComponentPickerMenuPlugin({\n baseOptions = [],\n dynamicOptionsFn,\n}: {\n baseOptions?: Array<ComponentPickerOption>;\n dynamicOptionsFn?: ({\n queryString,\n }: {\n queryString: string;\n }) => Array<ComponentPickerOption>;\n}): JSX.Element {\n const [editor] = useLexicalComposerContext();\n const [modal, showModal] = useEditorModal();\n //@ts-ignore\n const [queryString, setQueryString] = useState<string | null>(null);\n //@ts-ignore\n const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\"/\", {\n minLength: 0,\n });\n //@ts-ignore\n const options = useMemo(() => {\n if (!queryString) {\n return baseOptions;\n }\n\n const regex = new RegExp(queryString, \"i\");\n\n return [\n ...(dynamicOptionsFn?.({ queryString }) || []),\n ...baseOptions.filter(\n (option) =>\n regex.test(option.title) ||\n option.keywords.some((keyword) => regex.test(keyword))\n ),\n ];\n }, [editor, queryString, showModal]);\n //@ts-ignore\n const onSelectOption = useCallback(\n (\n selectedOption: ComponentPickerOption,\n nodeToRemove: TextNode | null,\n closeMenu: () => void,\n matchingString: string\n ) => {\n editor.update(() => {\n nodeToRemove?.remove();\n selectedOption.onSelect(matchingString, editor, showModal);\n closeMenu();\n });\n },\n [editor]\n );\n return (\n <>\n {modal}\n <Suspense fallback={<div>Loading...</div>}>\n {/* @ts-ignore */}\n <LexicalTypeaheadMenuPlugin<ComponentPickerOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTriggerMatch}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n return anchorElementRef.current && options.length\n ? createPortal(\n <div className=\"fixed w-[250px] rounded-md shadow-md bg-background-system-body-primary border border-border-system-global-secondary\">\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) %\n options.length\n : options.length - 1\n );\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex + 1) % options.length\n : 0\n );\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option, index) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option);\n }}\n className={`flex items-center gap-2 ${\n selectedIndex === index\n ? \"bg-background-presentation-action-selected text-content-system-global-primary\"\n : \"!bg-transparent text-content-system-global-primary hover:bg-background-presentation-action-hover\"\n }`}\n >\n {option.icon}\n {option.title}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>,\n anchorElementRef.current\n )\n : null;\n }}\n />\n </Suspense>\n </>\n );\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as e,calculateZoomLevel as n}from\"@lexical/utils\";import{createCommand as o,KEY_ARROW_DOWN_COMMAND as l,KEY_ARROW_UP_COMMAND as r,KEY_ESCAPE_COMMAND as i,KEY_TAB_COMMAND as u,KEY_ENTER_COMMAND as c,COMMAND_PRIORITY_LOW as s,$getSelection as a,$isRangeSelection as m,isDOMNode as d}from\"lexical\";import*as p from\"react\";import{useLayoutEffect as f,useEffect as g,useState as h,useCallback as v,useMemo as w,useRef as y}from\"react\";import{jsx as b}from\"react/jsx-runtime\";const C=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,E=C?f:g;class R{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const x=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function O(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function I(e,n,o,l){const[r]=t();g((()=>{if(null!=n&&null!=e){const t=r.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,l=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&l.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=O(n,e);const c=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=O(n,e);t!==u&&(u=t,null!=l&&l(t))},s=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",c,{capture:!0,passive:!0}),s.observe(n),()=>{s.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",c,!0)}}}),[n,r,l,o,e])}const A=o(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function S({close:t,editor:n,anchorElementRef:o,resolution:d,options:p,menuRenderFn:f,onSelectOption:y,shouldSplitNodeWithQuery:b=!1,commandPriority:C=s,preselectFirstItem:R=!0}){const[O,I]=h(null),S=d.match&&d.match.matchingString;g((()=>{R&&I(0)}),[S,R]);const L=v((e=>{n.update((()=>{const n=null!=d.match&&b?function(t){const e=a();if(!m(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const l=n.offset,r=o.getTextContent().slice(0,l),i=t.replaceableString.length,u=l-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(r,t.matchingString,i);if(u<0)return null;let c;return 0===u?[c]=o.splitText(l):[,c]=o.splitText(u,l),c}(d.match):null;y(e,n,t,d.match?d.match.matchingString:\"\")}))}),[n,b,d.match,y,t]),P=v((t=>{const e=n.getRootElement();null!==e&&(e.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),I(t))}),[n]);g((()=>()=>{const t=n.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[n]),E((()=>{null===p?I(null):null===O&&R&&P(0)}),[p,O,P,R]),g((()=>e(n.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(x(t.ref.current),!0)),C))),[n,P,C]),g((()=>e(n.registerCommand(l,(t=>{const e=t;if(null!==p&&p.length){const t=null===O?0:O!==p.length-1?O+1:0;P(t);const o=p[t];null!=o.ref&&o.ref.current&&n.dispatchCommand(A,{index:t,option:o}),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),n.registerCommand(r,(t=>{const e=t;if(null!==p&&p.length){const t=null===O?p.length-1:0!==O?O-1:p.length-1;P(t);const n=p[t];null!=n.ref&&n.ref.current&&x(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),n.registerCommand(i,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),n.registerCommand(u,(t=>{const e=t;return null!==p&&null!==O&&null!=p[O]&&(e.preventDefault(),e.stopImmediatePropagation(),L(p[O]),!0)}),C),n.registerCommand(c,(t=>null!==p&&null!==O&&null!=p[O]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),L(p[O]),!0)),C))),[L,t,n,p,O,P,C]);return f(o,w((()=>({options:p,selectOptionAndCleanUp:L,selectedIndex:O,setHighlightedIndex:I})),[L,O,p]),d.match?d.match.matchingString:\"\")}function L(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}function P({options:e,onWillOpen:o,onClose:l,onOpen:r,onSelectOption:i,menuRenderFn:u,anchorClassName:c,commandPriority:a=s,parent:m}){const[f]=t(),[w,E]=h(null),R=p.useRef(null),x=function(e,n,o,l=(C?document.body:void 0),r=!0){const[i]=t(),u=y(C?document.createElement(\"div\"):null),c=v((()=>{if(null===u.current||void 0===l)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,c=n.firstChild;if(null!==t&&null!==e){const{left:i,top:s,width:a,height:m}=e.getRect(),d=u.current.offsetHeight;if(n.style.top=`${s+d+3+(r?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${m}px`,n.style.width=`${a}px`,null!==c){c.style.top=`${s}`;const e=c.getBoundingClientRect(),o=e.height,l=e.width,u=t.getBoundingClientRect();i+l>u.right&&(n.style.left=`${u.right-l+window.pageXOffset}px`),(s+o>window.innerHeight||s+o>u.bottom)&&s-u.top>o+m&&(n.style.top=`${s-o-m+(r?window.pageYOffset:0)}px`)}n.isConnected||(L(n,o),l.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,r,o,l]);g((()=>{const t=i.getRootElement();return null!==e&&c(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,c,e]);const s=v((t=>{null!==e&&(t||n(null))}),[e,n]);I(e,u.current,c,s);const a=u.current;return null!=a&&(L(a,o),null!=l&&l.append(a)),u}(w,E,c,m),O=v((()=>{E(null),null!=l&&null!==w&&l()}),[l,w]),A=v((t=>{E(t),null!=r&&null===w&&r(t)}),[r,w]),P=v((t=>{t.preventDefault(),null!=o&&o(t);const e=n(t.target);A({getRect:()=>new DOMRect(t.clientX/e,t.clientY/e,1,1)})}),[A,o]),D=v((t=>{null!==w&&null!=R.current&&null!=t.target&&d(t.target)&&!R.current.contains(t.target)&&O()}),[O,w]);return g((()=>{const t=f.getRootElement();if(t)return t.addEventListener(\"contextmenu\",P),()=>t.removeEventListener(\"contextmenu\",P)}),[f,P]),g((()=>(document.addEventListener(\"click\",D),()=>document.removeEventListener(\"click\",D))),[f,D]),null===x.current||null===w||null===f?null:b(S,{close:O,resolution:w,editor:f,anchorElementRef:x,options:e,menuRenderFn:(t,e)=>u(t,e,{setMenuRef:t=>{R.current=t}}),onSelectOption:i,commandPriority:a})}export{P as LexicalContextMenuPlugin,R as MenuOption};\n","import { useCallback, useMemo, JSX, Suspense } from \"react\";\nimport React from \"react\";\nimport { lazy } from \"react\";\n\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { MenuOption } from \"@lexical/react/LexicalContextMenuPlugin\";\nimport { PopoverPortal } from \"@radix-ui/react-popover\";\nimport {\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isRangeSelection,\n COPY_COMMAND,\n CUT_COMMAND,\n type LexicalNode,\n PASTE_COMMAND,\n} from \"lexical\";\n\nimport { Command, CommandItem, CommandList } from \"@/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nconst LexicalContextMenuPlugin = lazy(\n () => import(\"./default/lexical-context-menu-plugin\")\n);\n\nexport class ContextMenuOption extends MenuOption {\n title: string;\n onSelect: (targetNode: LexicalNode | null) => void;\n constructor(\n title: string,\n options: {\n onSelect: (targetNode: LexicalNode | null) => void;\n }\n ) {\n super(title);\n this.title = title;\n this.onSelect = options.onSelect.bind(this);\n }\n}\n\nexport function ContextMenuPlugin(): JSX.Element {\n const [editor] = useLexicalComposerContext();\n const [isOpen, setIsOpen] = React.useState(false);\n\n const defaultOptions = useMemo(() => {\n return [\n new ContextMenuOption(`Copy`, {\n onSelect: (_node) => {\n editor.dispatchCommand(COPY_COMMAND, null);\n },\n }),\n new ContextMenuOption(`Cut`, {\n onSelect: (_node) => {\n editor.dispatchCommand(CUT_COMMAND, null);\n },\n }),\n new ContextMenuOption(`Paste`, {\n onSelect: (_node) => {\n navigator.clipboard.read().then(async function () {\n const data = new DataTransfer();\n\n const items = await navigator.clipboard.read();\n const item = items[0];\n\n const permission = await navigator.permissions.query({\n // @ts-expect-error These types are incorrect.\n name: \"clipboard-read\",\n });\n if (permission.state === \"denied\") {\n alert(\"Not allowed to paste from clipboard.\");\n return;\n }\n\n for (const type of item.types) {\n const dataString = await (await item.getType(type)).text();\n data.setData(type, dataString);\n }\n\n const event = new ClipboardEvent(\"paste\", {\n clipboardData: data,\n });\n\n editor.dispatchCommand(PASTE_COMMAND, event);\n });\n },\n }),\n new ContextMenuOption(`Paste as Plain Text`, {\n onSelect: (_node) => {\n navigator.clipboard.read().then(async function () {\n const permission = await navigator.permissions.query({\n // @ts-expect-error These types are incorrect.\n name: \"clipboard-read\",\n });\n\n if (permission.state === \"denied\") {\n alert(\"Not allowed to paste from clipboard.\");\n return;\n }\n\n const data = new DataTransfer();\n const items = await navigator.clipboard.readText();\n data.setData(\"text/plain\", items);\n\n const event = new ClipboardEvent(\"paste\", {\n clipboardData: data,\n });\n editor.dispatchCommand(PASTE_COMMAND, event);\n });\n },\n }),\n new ContextMenuOption(`Delete Node`, {\n onSelect: (_node) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const currentNode = selection.anchor.getNode();\n const ancestorNodeWithRootAsParent = currentNode\n .getParents()\n .at(-2);\n\n ancestorNodeWithRootAsParent?.remove();\n }\n },\n }),\n ];\n }, [editor]);\n\n const [options, setOptions] = React.useState(defaultOptions);\n\n const onSelectOption = useCallback(\n (\n selectedOption: ContextMenuOption,\n targetNode: LexicalNode | null,\n closeMenu: () => void\n ) => {\n editor.update(() => {\n selectedOption.onSelect(targetNode);\n closeMenu();\n });\n },\n [editor]\n );\n\n const onWillOpen = (event: MouseEvent) => {\n let newOptions = defaultOptions;\n setIsOpen(true);\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(event.target as Element);\n if (node) {\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n newOptions = [\n new ContextMenuOption(`Remove Link`, {\n onSelect: (_node) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n },\n }),\n ...defaultOptions,\n ];\n }\n }\n });\n setOptions(newOptions);\n };\n\n return (\n <Suspense fallback={<div>Loading...</div>}>\n <LexicalContextMenuPlugin\n options={options}\n onSelectOption={(option, targetNode) => {\n onSelectOption(option as ContextMenuOption, targetNode, () => {\n setIsOpen(false);\n });\n }}\n onWillOpen={onWillOpen}\n onOpen={() => {\n setIsOpen(true);\n }}\n onClose={() => {\n setIsOpen(false);\n }}\n menuRenderFn={(\n anchorElementRef,\n { options: _options, selectOptionAndCleanUp },\n { setMenuRef }\n ) => {\n return anchorElementRef.current ? (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverPortal container={anchorElementRef.current}>\n <div>\n <PopoverTrigger\n ref={setMenuRef}\n style={{\n marginLeft: anchorElementRef.current?.style.width,\n userSelect: \"none\",\n }}\n />\n <PopoverContent className=\"w-[200px] p-1\">\n <Command>\n <CommandList>\n {options.map((option) => (\n <CommandItem\n key={option.key}\n onSelect={() => {\n selectOptionAndCleanUp(option);\n }}\n >\n {option.title}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </div>\n </PopoverPortal>\n </Popover>\n ) : null;\n }}\n />\n </Suspense>\n );\n}\n","'use client'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\nimport { isMimeType, mediaFileReader } from '@lexical/utils'\nimport { COMMAND_PRIORITY_LOW } from 'lexical'\n\nimport { INSERT_IMAGE_COMMAND } from '@/components/editor/plugins/images-plugin'\n\nconst ACCEPTABLE_IMAGE_TYPES = [\n 'image/',\n 'image/heic',\n 'image/heif',\n 'image/gif',\n 'image/webp',\n]\n\nexport function DragDropPastePlugin(): null {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n return editor.registerCommand(\n DRAG_DROP_PASTE,\n (files) => {\n ;(async () => {\n const filesResult = await mediaFileReader(\n files,\n [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x)\n )\n for (const { file, result } of filesResult) {\n if (isMimeType(file, ACCEPTABLE_IMAGE_TYPES)) {\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\n altText: file.name,\n src: result,\n })\n }\n }\n })()\n return true\n },\n COMMAND_PRIORITY_LOW\n )\n }, [editor])\n return null\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{eventFiles as e}from\"@lexical/rich-text\";import{mergeRegister as n,isHTMLElement as r,calculateZoomLevel as o}from\"@lexical/utils\";import{DRAGOVER_COMMAND as i,COMMAND_PRIORITY_LOW as s,DROP_COMMAND as a,COMMAND_PRIORITY_HIGH as l,$getNodeByKey as c,$getNearestNodeFromDOMNode as u,$getRoot as h}from\"lexical\";import{useRef as m,useState as g,useCallback as f,useEffect as p}from\"react\";import{createPortal as d}from\"react-dom\";import{jsxs as y,Fragment as x,jsx as _}from\"react/jsx-runtime\";class b{constructor(t,e){this._x=t,this._y=e}get x(){return this._x}get y(){return this._y}equals({x:t,y:e}){return this.x===t&&this.y===e}calcDeltaXTo({x:t}){return this.x-t}calcDeltaYTo({y:t}){return this.y-t}calcHorizontalDistanceTo(t){return Math.abs(this.calcDeltaXTo(t))}calcVerticalDistance(t){return Math.abs(this.calcDeltaYTo(t))}calcDistanceTo(t){return Math.sqrt(Math.pow(this.calcDeltaXTo(t),2)+Math.pow(this.calcDeltaYTo(t),2))}}class B{constructor(t,e,n,r){const[o,i]=e<=r?[e,r]:[r,e],[s,a]=t<=n?[t,n]:[n,t];this._top=o,this._right=a,this._left=s,this._bottom=i}get top(){return this._top}get right(){return this._right}get bottom(){return this._bottom}get left(){return this._left}get width(){return Math.abs(this._left-this._right)}get height(){return Math.abs(this._bottom-this._top)}equals({top:t,left:e,bottom:n,right:r}){return t===this._top&&n===this._bottom&&e===this._left&&r===this._right}contains(t){if(t instanceof b){const{x:e,y:n}=t,r=n<this._top,o=n>this._bottom,i=e<this._left,s=e>this._right;return{reason:{isOnBottomSide:o,isOnLeftSide:i,isOnRightSide:s,isOnTopSide:r},result:!(r||o||i||s)}}{const{top:e,left:n,bottom:r,right:o}=t;return e>=this._top&&e<=this._bottom&&r>=this._top&&r<=this._bottom&&n>=this._left&&n<=this._right&&o>=this._left&&o<=this._right}}intersectsWith(t){const{left:e,top:n,width:r,height:o}=t,{left:i,top:s,width:a,height:l}=this;return(e+r>=i+a?e+r:i+a)-(e<=i?e:i)<=r+a&&(n+o>=s+l?n+o:s+l)-(n<=s?n:s)<=o+l}generateNewRect({left:t=this.left,top:e=this.top,right:n=this.right,bottom:r=this.bottom}){return new B(t,e,n,r)}static fromLTRB(t,e,n,r){return new B(t,e,n,r)}static fromLWTH(t,e,n,r){return new B(t,n,t+e,n+r)}static fromPoints(t,e){const{y:n,x:r}=t,{y:o,x:i}=e;return B.fromLTRB(r,n,i,o)}static fromDOM(t){const{top:e,width:n,left:r,height:o}=t.getBoundingClientRect();return B.fromLWTH(r,n,e,o)}}const T=4,C=2,w=\"application/x-lexical-drag-block\",v=28,D=1,R=-1,E=0;let S=1/0;function M(t){const e=(t,e)=>t?parseFloat(window.getComputedStyle(t)[e]):0,{marginTop:n,marginBottom:r}=window.getComputedStyle(t),o=e(t.previousElementSibling,\"marginBottom\"),i=e(t.nextElementSibling,\"marginTop\"),s=Math.max(parseFloat(n),o);return{marginBottom:Math.max(parseFloat(r),i),marginTop:s}}function L(t,e,n,r=!1){const i=t.getBoundingClientRect(),s=function(t){return t.getEditorState().read((()=>h().getChildrenKeys()))}(e);let a=null;return e.getEditorState().read((()=>{if(r){const[t,r]=[e.getElementByKey(s[0]),e.getElementByKey(s[s.length-1])],[i,l]=[null!=t?t.getBoundingClientRect():void 0,null!=r?r.getBoundingClientRect():void 0];if(i&&l){const e=o(t),s=o(r);if(n.y/e<i.top?a=t:n.y/s>l.bottom&&(a=r),a)return}}let t=0===(l=s.length)?1/0:S>=0&&S<l?S:Math.floor(l/2);var l;let c=E;for(;t>=0&&t<s.length;){const r=s[t],l=e.getElementByKey(r);if(null===l)break;const u=o(l),h=new b(n.x/u,n.y/u),m=B.fromDOM(l),{marginTop:g,marginBottom:f}=M(l),p=m.generateNewRect({bottom:m.bottom+f,left:i.left,right:i.right,top:m.top-g}),{result:d,reason:{isOnTopSide:y,isOnBottomSide:x}}=p.contains(h);if(d){a=l,S=t;break}c===E&&(c=y?R:x?D:1/0),t+=c}})),a}function O(t,h,b,B,D,R,E,S,O){const K=h.parentElement,Y=m(!1),[H,N]=g(null),$=f((t=>{N(t),O&&O(t)}),[O]);return p((()=>{function e(e){const n=e.target;if(!r(n))return void $(null);if(S(n))return;const o=L(h,t,e);$(o)}function n(){$(null)}return null!=K&&(K.addEventListener(\"mousemove\",e),K.addEventListener(\"mouseleave\",n)),()=>{null!=K&&(K.removeEventListener(\"mousemove\",e),K.removeEventListener(\"mouseleave\",n))}}),[K,h,t,S,$]),p((()=>{b.current&&function(t,e,n){if(!t)return e.style.opacity=\"0\",void(e.style.transform=\"translate(-10000px, -10000px)\");const r=t.getBoundingClientRect(),o=window.getComputedStyle(t),i=e.getBoundingClientRect(),s=n.getBoundingClientRect();let a=parseInt(o.lineHeight,10);isNaN(a)&&(a=r.bottom-r.top);const l=r.top+(a-i.height)/2-s.top,c=T;e.style.opacity=\"1\",e.style.transform=`translate(${c}px, ${l}px)`}(H,b.current,h)}),[h,H,b]),p((()=>{function m(n){if(!Y.current)return!1;const[i]=e(n);if(i)return!1;const{pageY:s,target:a}=n;if(!r(a))return!1;const l=L(h,t,n,!0),c=B.current;return null!==l&&null!==c&&(function(t,e,n,r){const{top:o,height:i}=e.getBoundingClientRect(),{top:s,width:a}=r.getBoundingClientRect(),{marginTop:l,marginBottom:c}=M(e);let u=o;n>=o?u+=i+c/2:u-=l/2;const h=u-s-C,m=v-T;t.style.transform=`translate(${m}px, ${h}px)`,t.style.width=a-2*(v-T)+\"px\",t.style.opacity=\".4\"}(c,l,s/o(a),h),n.preventDefault(),!0)}return n(t.registerCommand(i,(t=>m(t)),s),t.registerCommand(a,(n=>function(n){if(!Y.current)return!1;const[i]=e(n);if(i)return!1;const{target:s,dataTransfer:a,pageY:l}=n,m=null!=a?a.getData(w):\"\",g=c(m);if(!g)return!1;if(!r(s))return!1;const f=L(h,t,n,!0);if(!f)return!1;const p=u(f);if(!p)return!1;if(p===g)return!0;const d=f.getBoundingClientRect().top;return l/o(s)>=d?p.insertAfter(g):p.insertBefore(g),$(null),!0}(n)),l))}),[h,t,B,$]),d(y(x,{children:[_(\"div\",{draggable:!0,onDragStart:function(e){const n=e.dataTransfer;if(!n||!H)return;!function(t,e){const{transform:n}=e.style;e.style.transform=\"translateZ(0)\",t.setDragImage(e,0,0),setTimeout((()=>{e.style.transform=n}))}(n,H);let r=\"\";t.update((()=>{const t=u(H);t&&(r=t.getKey())})),Y.current=!0,n.setData(w,r)},onDragEnd:function(){var t;Y.current=!1,(t=B.current)&&(t.style.opacity=\"0\",t.style.transform=\"translate(-10000px, -10000px)\")},children:D&&R}),E]}),h)}function K({anchorElem:e=document.body,menuRef:n,targetLineRef:r,menuComponent:o,targetLineComponent:i,isOnMenu:s,onElementChanged:a}){const[l]=t();return O(l,e,n,r,l._editable,o,i,s,a)}export{K as DraggableBlockPlugin_EXPERIMENTAL};\n","import { useRef, JSX } from \"react\";\n\nimport { DraggableBlockPlugin_EXPERIMENTAL } from \"@lexical/react/LexicalDraggableBlockPlugin\";\nimport { GripVerticalIcon, Plus } from \"lucide-react\";\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = \"draggable-block-menu\";\n\nfunction isOnMenu(element: HTMLElement): boolean {\n return !!element.closest(`.${DRAGGABLE_BLOCK_MENU_CLASSNAME}`);\n}\n\nexport function DraggableBlockPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLElement | null;\n}): JSX.Element | null {\n const menuRef = useRef<HTMLDivElement>(null);\n const targetLineRef = useRef<HTMLDivElement>(null);\n\n if (!anchorElem) {\n return null;\n }\n\n const handleSlashClick = () => {\n // Get the active editor element\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement) {\n // Focus the element if it's not already focused\n activeElement.focus();\n\n // Insert a slash character at the current cursor position\n document.execCommand(\"insertText\", false, \"/\");\n }\n };\n\n return (\n <DraggableBlockPlugin_EXPERIMENTAL\n anchorElem={anchorElem}\n menuRef={menuRef as React.RefObject<HTMLElement>}\n targetLineRef={targetLineRef as React.RefObject<HTMLElement>}\n menuComponent={\n <div\n ref={menuRef}\n className=\" test draggable-block-menu absolute left-0 top-0 flex items-center cursor-grab rounded-sm px-[1px] py-0.5 opacity-0 will-change-transform active:cursor-grabbing\"\n >\n <button\n onClick={handleSlashClick}\n className=\"ml-1 p-0.5 rounded-sm cursor-pointer\"\n title=\"slash command\"\n >\n <Plus className=\"size-4 opacity-30\" />\n </button>\n <button className=\"p-0.5 rounded-sm cursor-pointer\">\n <GripVerticalIcon className=\"size-4 opacity-30\" />\n </button>\n </div>\n }\n targetLineComponent={\n <div\n ref={targetLineRef}\n className=\"pointer-events-none absolute left-0 top-0 h-1 bg-content-system-global-secondary opacity-0 will-change-transform\"\n />\n }\n isOnMenu={isOnMenu}\n />\n );\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useCallback, useEffect, useMemo, useState, Suspense } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { lazy } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n MenuOption,\n useBasicTypeaheadTriggerMatch,\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n TextNode,\n} from \"lexical\";\n\nimport { Command, CommandGroup, CommandItem, CommandList } from \"@/components/ui/command\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n () => import(\"./default/lexical-typeahead-menu-plugin\")\n);\n\nclass EmojiOption extends MenuOption {\n title: string;\n emoji: string;\n keywords: Array<string>;\n\n constructor(\n title: string,\n emoji: string,\n options: {\n keywords?: Array<string>;\n }\n ) {\n super(title);\n this.title = title;\n this.emoji = emoji;\n this.keywords = options.keywords || [];\n }\n}\n\ntype Emoji = {\n emoji: string;\n description: string;\n category: string;\n aliases: Array<string>;\n tags: Array<string>;\n unicode_version: string;\n ios_version: string;\n skin_tones?: boolean;\n};\n\nconst MAX_EMOJI_SUGGESTION_COUNT = 10;\n\nexport function EmojiPickerPlugin() {\n const [editor] = useLexicalComposerContext();\n //@ts-ignore\n const [queryString, setQueryString] = useState<string | null>(null);\n const [emojis, setEmojis] = useState<Array<Emoji>>([]);\n const [isOpen, setIsOpen] = useState(false);\n useEffect(() => {\n import(\"../utils/emoji-list\").then((file) => setEmojis(file.default));\n }, []);\n\n const emojiOptions = useMemo(\n () =>\n emojis != null\n ? emojis.map(\n ({ emoji, aliases, tags }) =>\n new EmojiOption(aliases[0], emoji, {\n keywords: [...aliases, ...tags],\n })\n )\n : [],\n [emojis]\n );\n //@ts-ignore\n const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\":\", {\n minLength: 0,\n });\n //@ts-ignore\n const options: Array<EmojiOption> = useMemo(() => {\n return emojiOptions\n .filter((option: EmojiOption) => {\n return queryString != null\n ? new RegExp(queryString, \"gi\").exec(option.title) ||\n option.keywords != null\n ? option.keywords.some((keyword: string) =>\n new RegExp(queryString, \"gi\").exec(keyword)\n )\n : false\n : emojiOptions;\n })\n .slice(0, MAX_EMOJI_SUGGESTION_COUNT);\n }, [emojiOptions, queryString]);\n //@ts-ignore\n const onSelectOption = useCallback(\n (\n selectedOption: EmojiOption,\n nodeToRemove: TextNode | null,\n closeMenu: () => void\n ) => {\n editor.update(() => {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || selectedOption == null) {\n return;\n }\n\n if (nodeToRemove) {\n nodeToRemove.remove();\n }\n\n selection.insertNodes([$createTextNode(selectedOption.emoji)]);\n\n closeMenu();\n });\n },\n [editor]\n );\n return (\n <Suspense fallback={<div>Loading...</div>}>\n {/* @ts-ignore */}\n <LexicalTypeaheadMenuPlugin<EmojiOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTriggerMatch}\n options={options}\n onOpen={() => {\n setIsOpen(true);\n }}\n onClose={() => {\n setIsOpen(false);\n }}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n return anchorElementRef.current && options.length\n ? createPortal(\n <div className=\"fixed w-[200px] rounded-md shadow-md\">\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) %\n options.length\n : options.length - 1\n );\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex + 1) % options.length\n : 0\n );\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option, index) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option);\n }}\n className={`flex items-center gap-2 ${\n selectedIndex === index\n ? \"bg-background-presentation-action-selected\"\n : \"!bg-transparent\"\n }`}\n >\n {option.emoji} {option.title}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>,\n anchorElementRef.current\n )\n : null;\n }}\n />\n </Suspense>\n );\n}\n","import { useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport type { LexicalEditor } from \"lexical\";\nimport { TextNode } from \"lexical\";\n\nimport {\n $createEmojiNode,\n EmojiNode,\n} from \"@/components/editor/nodes/emoji-node\";\n\nconst emojis: Map<string, [string, string]> = new Map([\n [\":)\", [\"emoji happysmile\", \"🙂\"]],\n [\":D\", [\"emoji veryhappysmile\", \"😀\"]],\n [\":(\", [\"emoji unhappysmile\", \"🙁\"]],\n [\"<3\", [\"emoji heart\", \"❤\"]],\n]);\n\nfunction $findAndTransformEmoji(node: TextNode): null | TextNode {\n const text = node.getTextContent();\n\n for (let i = 0; i < text.length; i++) {\n const emojiData = emojis.get(text[i]) || emojis.get(text.slice(i, i + 2));\n\n if (emojiData !== undefined) {\n const [emojiStyle, emojiText] = emojiData;\n let targetNode;\n\n if (i === 0) {\n [targetNode] = node.splitText(i + 2);\n } else {\n [, targetNode] = node.splitText(i, i + 2);\n }\n\n const emojiNode = $createEmojiNode(emojiStyle, emojiText);\n targetNode.replace(emojiNode);\n return emojiNode;\n }\n }\n\n return null;\n}\n\nfunction $textNodeTransform(node: TextNode): void {\n let targetNode: TextNode | null = node;\n\n while (targetNode !== null) {\n if (!targetNode.isSimpleText()) {\n return;\n }\n\n targetNode = $findAndTransformEmoji(targetNode);\n }\n}\n\nfunction useEmojis(editor: LexicalEditor): void {\n useEffect(() => {\n if (!editor.hasNodes([EmojiNode])) {\n throw new Error(\"EmojisPlugin: EmojiNode not registered on editor\");\n }\n\n return editor.registerNodeTransform(TextNode, $textNodeTransform);\n }, [editor]);\n}\n\nexport function EmojisPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n useEmojis(editor);\n return null;\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px] aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative\",\n {\n variants: {\n variant: {\n default:\n \"bg-background-presentation-action-primary text-content-presentation-action-light-primary shadow-xs hover:bg-background-presentation-action-primary/90\",\n destructive:\n \"bg-background-presentation-state-negative-primary text-content-presentation-action-light-primary shadow-xs hover:bg-background-presentation-state-negative-primary/90 focus-visible:ring-border-presentation-state-negative\",\n outline:\n \"border border-border-system-global-secondary bg-background-system-body-primary shadow-xs hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n secondary:\n \"bg-background-presentation-action-secondary text-content-system-global-primary shadow-xs hover:bg-background-presentation-action-hover\",\n ghost:\n \"hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n link: \"text-content-presentation-action-link-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-border-system-global-secondary placeholder:text-content-system-global-secondary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative bg-background-system-body-primary flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import { useEffect, useRef, JSX } from \"react\";\n\nimport katex from \"katex\";\n\nexport default function KatexRenderer({\n equation,\n inline,\n onDoubleClick,\n}: Readonly<{\n equation: string;\n inline: boolean;\n onDoubleClick: () => void;\n}>): JSX.Element {\n const katexElementRef = useRef(null);\n\n useEffect(() => {\n const katexElement = katexElementRef.current;\n\n if (katexElement !== null) {\n katex.render(equation, katexElement, {\n displayMode: !inline, // true === block display //\n errorColor: \"var(--content-presentation-state-negative-primary)\",\n output: \"html\",\n strict: \"warn\",\n throwOnError: false,\n trust: false,\n });\n }\n }, [equation, inline]);\n\n return (\n // We use an empty image tag either side to ensure Android doesn't try and compose from the\n // inner text from Katex. There didn't seem to be any other way of making this work,\n // without having a physical space.\n <>\n <img src=\"#\" alt=\"\" />\n <span\n role=\"button\"\n tabIndex={-1}\n onDoubleClick={onDoubleClick}\n ref={katexElementRef}\n />\n <img src=\"#\" alt=\"\" />\n </>\n );\n}\n","import { useCallback, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\n\nimport KatexRenderer from \"@/components/editor/editor-ui/katex-renderer\";\n\ntype Props = {\n initialEquation?: string;\n onConfirm: (equation: string, inline: boolean) => void;\n};\n\nexport default function KatexEquationAlterer({\n onConfirm,\n initialEquation = \"\",\n}: Props): JSX.Element {\n const [editor] = useLexicalComposerContext();\n const [equation, setEquation] = useState<string>(initialEquation);\n const [inline, setInline] = useState<boolean>(true);\n\n const onClick = useCallback(() => {\n onConfirm(equation, inline);\n }, [onConfirm, equation, inline]);\n\n const onCheckboxChange = useCallback(() => {\n setInline(!inline);\n }, [setInline, inline]);\n\n return (\n <>\n <div className=\"flex items-center space-x-2\">\n <Label htmlFor=\"inline-toggle\" className=\"text-sm font-medium\">\n Inline\n </Label>\n <Checkbox\n id=\"inline-toggle\"\n checked={inline}\n onCheckedChange={onCheckboxChange}\n />\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"equation-input\" className=\"text-sm font-medium\">\n Equation\n </Label>\n {inline ? (\n <Input\n id=\"equation-input\"\n onChange={(event) => setEquation(event.target.value)}\n value={equation}\n placeholder=\"Enter inline equation...\"\n />\n ) : (\n <Textarea\n id=\"equation-input\"\n onChange={(event) => setEquation(event.target.value)}\n value={equation}\n placeholder=\"Enter block equation...\"\n className=\"min-h-[100px]\"\n />\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label className=\"text-sm font-medium\">Visualization</Label>\n <div className=\"rounded-md border bg-muted p-4\">\n <ErrorBoundary onError={(e) => editor._onError(e)} fallback={null}>\n <KatexRenderer\n equation={equation}\n inline={false}\n onDoubleClick={() => null}\n />\n </ErrorBoundary>\n </div>\n </div>\n\n <div className=\"flex justify-end\">\n <Button onClick={onClick}>Confirm</Button>\n </div>\n </>\n );\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport \"katex/dist/katex.css\";\nimport {\n $createParagraphNode,\n $insertNodes,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n LexicalCommand,\n LexicalEditor,\n createCommand,\n} from \"lexical\";\n\nimport {\n $createEquationNode,\n EquationNode,\n} from \"@/components/editor/nodes/equation-node\";\nimport KatexEquationAlterer from \"@/components/editor/editor-ui/katex-equation-alterer\";\n\ntype CommandPayload = {\n equation: string;\n inline: boolean;\n};\n\nexport const INSERT_EQUATION_COMMAND: LexicalCommand<CommandPayload> =\n createCommand(\"INSERT_EQUATION_COMMAND\");\n\nexport function InsertEquationDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n onClose: () => void;\n}): JSX.Element {\n const onEquationConfirm = useCallback(\n (equation: string, inline: boolean) => {\n activeEditor.dispatchCommand(INSERT_EQUATION_COMMAND, {\n equation,\n inline,\n });\n onClose();\n },\n [activeEditor, onClose]\n );\n\n return <KatexEquationAlterer onConfirm={onEquationConfirm} />;\n}\n\nexport function EquationsPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor.hasNodes([EquationNode])) {\n throw new Error(\n \"EquationsPlugins: EquationsNode not registered on editor\"\n );\n }\n\n return editor.registerCommand<CommandPayload>(\n INSERT_EQUATION_COMMAND,\n (payload) => {\n const { equation, inline } = payload;\n const equationNode = $createEquationNode(equation, inline);\n\n $insertNodes([equationNode]);\n if ($isRootOrShadowRoot(equationNode.getParentOrThrow())) {\n $wrapNodeInElement(equationNode, $createParagraphNode).selectEnd();\n }\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n}\n","import React, { Suspense } from \"react\";\nimport {\n ReactElement,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n JSX,\n} from \"react\";\n\nimport { lazy } from \"react\";\n\nimport {\n AppState,\n BinaryFiles,\n ExcalidrawImperativeAPI,\n ExcalidrawInitialDataState,\n} from \"@excalidraw/excalidraw/types\";\nimport { DialogTrigger } from \"@radix-ui/react-dialog\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { Dialog, DialogClose, DialogContent } from \"../../../../components/Dialog\";\n\n// @ts-ignore\nconst Excalidraw = lazy(() => import(\"./excalidraw\"));\n\nexport type ExcalidrawInitialElements = ExcalidrawInitialDataState[\"elements\"];\n\ntype Props = {\n closeOnClickOutside?: boolean;\n /**\n * The initial set of elements to draw into the scene\n */\n initialElements: ExcalidrawInitialElements;\n /**\n * The initial set of elements to draw into the scene\n */\n initialAppState: AppState;\n /**\n * The initial set of elements to draw into the scene\n */\n initialFiles: BinaryFiles;\n /**\n * Controls the visibility of the modal\n */\n isShown?: boolean;\n /**\n * Callback when closing and discarding the new changes\n */\n onClose: () => void;\n /**\n * Completely remove Excalidraw component\n */\n onDelete: () => void;\n /**\n * Callback when the save button is clicked\n */\n onSave: (\n elements: ExcalidrawInitialElements,\n appState: Partial<AppState>,\n files: BinaryFiles\n ) => void;\n};\n\nexport const useCallbackRefState = () => {\n const [refValue, setRefValue] =\n React.useState<ExcalidrawImperativeAPI | null>(null);\n const refCallback = React.useCallback(\n (value: ExcalidrawImperativeAPI | null) => setRefValue(value),\n []\n );\n return [refValue, refCallback] as const;\n};\n\n/**\n * @explorer-desc\n * A component which renders a modal with Excalidraw (a painting app)\n * which can be used to export an editable image\n */\nexport function ExcalidrawModal({\n closeOnClickOutside = false,\n onSave,\n initialElements,\n initialAppState,\n initialFiles,\n isShown = false,\n onDelete,\n onClose,\n}: Props): ReactElement | null {\n const excaliDrawModelRef = useRef<HTMLDivElement | null>(null);\n const [excalidrawAPI, excalidrawAPIRefCallback] = useCallbackRefState();\n const [discardModalOpen, setDiscardModalOpen] = useState(false);\n const [elements, setElements] =\n useState<ExcalidrawInitialElements>(initialElements);\n const [files, setFiles] = useState<BinaryFiles>(initialFiles);\n\n useEffect(() => {\n if (excaliDrawModelRef.current !== null) {\n excaliDrawModelRef.current.focus();\n }\n }, []);\n\n useEffect(() => {\n let modalOverlayElement: HTMLElement | null = null;\n\n const clickOutsideHandler = (event: MouseEvent) => {\n const target = event.target;\n if (\n excaliDrawModelRef.current !== null &&\n !excaliDrawModelRef.current.contains(target as Node) &&\n closeOnClickOutside\n ) {\n onDelete();\n }\n };\n\n if (excaliDrawModelRef.current !== null) {\n modalOverlayElement = excaliDrawModelRef.current?.parentElement;\n if (modalOverlayElement !== null) {\n modalOverlayElement?.addEventListener(\"click\", clickOutsideHandler);\n }\n }\n\n return () => {\n if (modalOverlayElement !== null) {\n modalOverlayElement?.removeEventListener(\"click\", clickOutsideHandler);\n }\n };\n }, [closeOnClickOutside, onDelete]);\n\n useLayoutEffect(() => {\n const currentModalRef = excaliDrawModelRef.current;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onDelete();\n }\n };\n\n if (currentModalRef !== null) {\n currentModalRef.addEventListener(\"keydown\", onKeyDown);\n }\n\n return () => {\n if (currentModalRef !== null) {\n currentModalRef.removeEventListener(\"keydown\", onKeyDown);\n }\n };\n }, [elements, files, onDelete]);\n\n const save = () => {\n if (elements && elements.filter((el: any) => !el.isDeleted).length > 0) {\n const appState = excalidrawAPI?.getAppState();\n // We only need a subset of the state\n const partialState: Partial<AppState> = {\n exportBackground: appState?.exportBackground,\n exportScale: appState?.exportScale,\n exportWithDarkMode: appState?.theme === \"dark\",\n isBindingEnabled: appState?.isBindingEnabled,\n isLoading: appState?.isLoading,\n name: appState?.name,\n theme: appState?.theme,\n viewBackgroundColor: appState?.viewBackgroundColor,\n viewModeEnabled: appState?.viewModeEnabled,\n zenModeEnabled: appState?.zenModeEnabled,\n zoom: appState?.zoom,\n };\n onSave(elements, partialState, files);\n } else {\n // delete node if the scene is clear\n onDelete();\n }\n };\n // @ts-ignore\n const discard = () => {\n setDiscardModalOpen(true);\n };\n\n function ShowDiscardDialog(): JSX.Element {\n return (\n <Dialog open={discardModalOpen} onOpenChange={setDiscardModalOpen}>\n <DialogContent>\n Are you sure you want to discard the changes?\n </DialogContent>\n <DialogClose asChild>\n <Button\n onClick={() => {\n setDiscardModalOpen(false);\n onClose();\n }}\n >\n Discard\n </Button>\n </DialogClose>\n <DialogClose asChild>\n <Button onClick={() => setDiscardModalOpen(false)}>Cancel</Button>\n </DialogClose>\n </Dialog>\n );\n }\n\n if (isShown === false) {\n return null;\n }\n\n const onChange = (\n els: ExcalidrawInitialElements,\n _: AppState,\n fls: BinaryFiles\n ) => {\n setElements(els);\n setFiles(fls);\n };\n\n return (\n <Dialog open={isShown}>\n <DialogTrigger />\n <DialogContent className=\"h-4/6 max-w-4xl overflow-hidden p-0\">\n <div className=\"relative\" role=\"dialog\">\n <div className=\"h-full w-full\" ref={excaliDrawModelRef} tabIndex={-1}>\n <div className=\"h-full w-full\">\n {discardModalOpen && <ShowDiscardDialog />}\n <Suspense fallback={<div className=\"flex h-full items-center justify-center\">Loading...</div>}>\n <Excalidraw\n onChange={onChange}\n excalidrawAPI={excalidrawAPIRefCallback}\n initialData={{\n appState: initialAppState || { isLoading: false },\n elements: initialElements,\n files: initialFiles,\n }}\n />\n </Suspense>\n <div className=\"absolute bottom-5 right-1/2 z-10 flex translate-x-1/2 gap-2\">\n <Button onClick={onClose}>\n Discard\n </Button>\n <Button onClick={save}>Save</Button>\n </div>\n </div>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","import { useEffect, useState, JSX } from \"react\";\n\nimport type { AppState, BinaryFiles } from \"@excalidraw/excalidraw/types\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $insertNodes,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n LexicalCommand,\n createCommand,\n} from \"lexical\";\n\nimport {\n $createExcalidrawNode,\n ExcalidrawNode,\n} from \"@/components/editor/nodes/excalidraw-node\";\nimport type { ExcalidrawInitialElements } from \"@/components/editor/editor-ui/excalidraw-modal\";\nimport { ExcalidrawModal } from \"@/components/editor/editor-ui/excalidraw-modal\";\n\nexport const INSERT_EXCALIDRAW_COMMAND: LexicalCommand<void> = createCommand(\n \"INSERT_EXCALIDRAW_COMMAND\"\n);\n\nexport function ExcalidrawPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const [isModalOpen, setModalOpen] = useState<boolean>(false);\n\n useEffect(() => {\n if (!editor.hasNodes([ExcalidrawNode])) {\n throw new Error(\n \"ExcalidrawPlugin: ExcalidrawNode not registered on editor\"\n );\n }\n\n return editor.registerCommand(\n INSERT_EXCALIDRAW_COMMAND,\n () => {\n setModalOpen(true);\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n const onClose = () => {\n setModalOpen(false);\n };\n\n const onDelete = () => {\n setModalOpen(false);\n };\n\n const onSave = (\n elements: ExcalidrawInitialElements,\n appState: Partial<AppState>,\n files: BinaryFiles\n ) => {\n editor.update(() => {\n const excalidrawNode = $createExcalidrawNode();\n excalidrawNode.setData(\n JSON.stringify({\n appState,\n elements,\n files,\n })\n );\n $insertNodes([excalidrawNode]);\n if ($isRootOrShadowRoot(excalidrawNode.getParentOrThrow())) {\n $wrapNodeInElement(excalidrawNode, $createParagraphNode).selectEnd();\n }\n });\n setModalOpen(false);\n };\n return (\n <ExcalidrawModal\n initialElements={[]}\n initialAppState={{} as AppState}\n initialFiles={{}}\n isShown={isModalOpen}\n onDelete={onDelete}\n onClose={onClose}\n onSave={onSave}\n closeOnClickOutside={false}\n />\n );\n}\n","const VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\n\nexport function setFloatingElemPositionForLinkEditor(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = '0'\n floatingElem.style.transform = 'translate(-10000px, -10000px)'\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = '1'\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { Dispatch, useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\nimport {\n $createLinkNode,\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND,\n} from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { Check, Pencil, Trash, X } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { Input } from \"@/components/ui/input\";\n\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { setFloatingElemPositionForLinkEditor } from \"@/components/editor/utils/set-floating-elem-position-for-link-editor\";\nimport { sanitizeUrl } from \"@/components/editor/utils/url\";\n\nfunction FloatingLinkEditor({\n editor,\n isLink,\n setIsLink,\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode,\n}: {\n editor: LexicalEditor;\n isLink: boolean;\n setIsLink: Dispatch<boolean>;\n anchorElem: HTMLElement;\n isLinkEditMode: boolean;\n setIsLinkEditMode: Dispatch<boolean>;\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [editedLinkUrl, setEditedLinkUrl] = useState(\"https://\");\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(\n null\n );\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n\n if (linkParent) {\n setLinkUrl(linkParent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkUrl(node.getURL());\n } else {\n setLinkUrl(\"\");\n }\n if (isLinkEditMode) {\n setEditedLinkUrl(linkUrl);\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const domRect: DOMRect | undefined =\n nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n if (domRect) {\n domRect.y += 40;\n setFloatingElemPositionForLinkEditor(domRect, editorElem, anchorElem);\n }\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setIsLinkEditMode(false);\n setLinkUrl(\"\");\n }\n\n return true;\n }, [anchorElem, editor, setIsLinkEditMode, isLinkEditMode, linkUrl]);\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n $updateLinkEditor();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem.parentElement, editor, $updateLinkEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor, $updateLinkEditor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n $updateLinkEditor();\n });\n }, [editor, $updateLinkEditor]);\n\n useEffect(() => {\n if (isLinkEditMode && inputRef.current) {\n inputRef.current.focus();\n setIsLink(true);\n }\n }, [isLinkEditMode, isLink]);\n\n const monitorInputInteraction = (\n event: React.KeyboardEvent<HTMLInputElement>\n ) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n handleLinkSubmission();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setIsLinkEditMode(false);\n }\n };\n\n const handleLinkSubmission = () => {\n if (lastSelection !== null) {\n if (linkUrl !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(editedLinkUrl));\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const parent = getSelectedNode(selection).getParent();\n if ($isAutoLinkNode(parent)) {\n const linkNode = $createLinkNode(parent.getURL(), {\n rel: parent.__rel,\n target: parent.__target,\n title: parent.__title,\n });\n parent.replace(linkNode, true);\n }\n }\n });\n }\n setEditedLinkUrl(\"https://\");\n setIsLinkEditMode(false);\n }\n };\n return (\n <div\n ref={editorRef}\n className=\"absolute left-0 top-0 w-full max-w-sm rounded-md opacity-0 shadow-md\"\n >\n {!isLink ? null : isLinkEditMode ? (\n <div className=\"flex items-center space-x-2 rounded-md border p-1 pl-2\">\n <Input\n ref={inputRef}\n value={editedLinkUrl}\n onChange={(event) => setEditedLinkUrl(event.target.value)}\n onKeyDown={monitorInputInteraction}\n className=\"flex-grow\"\n />\n <Button\n size=\"M\"\n variant={\"BlueContStyle\"}\n onClick={() => {\n setIsLinkEditMode(false);\n setIsLink(false);\n }}\n className=\"shrink-0\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n <Button\n size=\"M\"\n variant={\"BlueContStyle\"}\n onClick={handleLinkSubmission}\n className=\"shrink-0\"\n >\n <Check className=\"h-4 w-4\" />\n </Button>\n </div>\n ) : (\n <div className=\"flex items-center justify-between rounded-md border p-1 pl-2\">\n <a\n href={sanitizeUrl(linkUrl)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"overflow-hidden text-ellipsis whitespace-nowrap text-sm\"\n >\n {linkUrl}\n </a>\n <div className=\"flex\">\n <Button\n size=\"M\"\n variant={\"BlueContStyle\"}\n onClick={() => {\n setEditedLinkUrl(linkUrl);\n setIsLinkEditMode(true);\n }}\n >\n <Pencil className=\"h-4 w-4\" />\n </Button>\n <Button\n size=\"M\"\n variant={\"RedContStyle\"}\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }}\n >\n <Trash className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLDivElement | null,\n isLinkEditMode: boolean,\n setIsLinkEditMode: Dispatch<boolean>\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n useEffect(() => {\n function $updateToolbar() {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const focusNode = getSelectedNode(selection);\n const focusLinkNode = $findMatchingParent(focusNode, $isLinkNode);\n const focusAutoLinkNode = $findMatchingParent(\n focusNode,\n $isAutoLinkNode\n );\n if (!(focusLinkNode || focusAutoLinkNode)) {\n setIsLink(false);\n return;\n }\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode);\n const autoLinkNode = $findMatchingParent(node, $isAutoLinkNode);\n return (\n (focusLinkNode && !focusLinkNode.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkNode)) ||\n (focusAutoLinkNode && !focusAutoLinkNode.is(autoLinkNode)) ||\n (autoLinkNode &&\n (!autoLinkNode.is(focusAutoLinkNode) ||\n autoLinkNode.getIsUnlinked()))\n );\n });\n\n if (!badNode) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n $updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(linkNode.getURL(), \"_blank\");\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\n\n if (!anchorElem) {\n return null;\n }\n\n return createPortal(\n <FloatingLinkEditor\n editor={activeEditor}\n isLink={isLink}\n anchorElem={anchorElem}\n setIsLink={setIsLink}\n isLinkEditMode={isLinkEditMode}\n setIsLinkEditMode={setIsLinkEditMode}\n />,\n anchorElem\n );\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLDivElement | null;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const { isLinkEditMode, setIsLinkEditMode } = useFloatingLinkContext();\n\n return useFloatingLinkEditorToolbar(\n editor,\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode\n );\n}\n","import { Dispatch, useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\nimport { $isCodeHighlightNode } from \"@lexical/code\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\n\nimport {\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n FORMAT_TEXT_COMMAND,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { SubscriptIcon, SuperscriptIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport { Separator } from \"@/components/ui/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { getDOMRangeRect } from \"@/components/editor/utils/get-dom-range-rect\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { setFloatingElemPosition } from \"@/components/editor/utils/set-floating-elem-position\";\n\nfunction TextFormatFloatingToolbar({\n editor,\n anchorElem,\n isLink,\n isBold,\n isItalic,\n isUnderline,\n isCode,\n isStrikethrough,\n isSubscript,\n isSuperscript,\n setIsLinkEditMode,\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n isBold: boolean;\n isCode: boolean;\n isItalic: boolean;\n isLink: boolean;\n isStrikethrough: boolean;\n isSubscript: boolean;\n isSuperscript: boolean;\n isUnderline: boolean;\n setIsLinkEditMode: Dispatch<boolean>;\n}): JSX.Element {\n const popupCharStylesEditorRef = useRef<HTMLDivElement | null>(null);\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n setIsLinkEditMode(true);\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n } else {\n setIsLinkEditMode(false);\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink, setIsLinkEditMode]);\n\n function mouseMoveListener(e: MouseEvent) {\n if (\n popupCharStylesEditorRef?.current &&\n (e.buttons === 1 || e.buttons === 3)\n ) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"none\") {\n const x = e.clientX;\n const y = e.clientY;\n const elementUnderMouse = document.elementFromPoint(x, y);\n\n if (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n popupCharStylesEditorRef.current.style.pointerEvents = \"none\";\n }\n }\n }\n }\n\n // @ts-ignore\n function mouseUpListener(e: MouseEvent) {\n if (popupCharStylesEditorRef?.current) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"auto\") {\n popupCharStylesEditorRef.current.style.pointerEvents = \"auto\";\n }\n }\n }\n\n useEffect(() => {\n if (popupCharStylesEditorRef?.current) {\n document.addEventListener(\"mousemove\", mouseMoveListener);\n document.addEventListener(\"mouseup\", mouseUpListener);\n\n return () => {\n document.removeEventListener(\"mousemove\", mouseMoveListener);\n document.removeEventListener(\"mouseup\", mouseUpListener);\n };\n }\n }, [popupCharStylesEditorRef]);\n\n const $updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection();\n\n const popupCharStylesEditorElem = popupCharStylesEditorRef.current;\n const nativeSelection = window.getSelection();\n\n if (popupCharStylesEditorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement);\n\n setFloatingElemPosition(\n rangeRect,\n popupCharStylesEditorElem,\n anchorElem,\n isLink\n );\n }\n }, [editor, anchorElem, isLink]);\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar();\n });\n };\n\n window.addEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [editor, $updateTextFormatFloatingToolbar, anchorElem]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar();\n });\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateTextFormatFloatingToolbar();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateTextFormatFloatingToolbar();\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, $updateTextFormatFloatingToolbar]);\n\n return (\n <div\n ref={popupCharStylesEditorRef}\n className=\"absolute left-0 top-0 z-50 flex gap-0.5 rounded-[4px] border border-border-system-global-secondary p-1 opacity-0 shadow-md transition-opacity duration-200 will-change-transform bg-background-system-body-primary\"\n >\n {editor.isEditable() && (\n <>\n <ToggleGroup\n type=\"multiple\"\n size=\"sm\"\n className=\"gap-0\"\n defaultValue={[\n isBold ? \"bold\" : \"\",\n isItalic ? \"italic\" : \"\",\n isUnderline ? \"underline\" : \"\",\n isStrikethrough ? \"strikethrough\" : \"\",\n isSubscript ? \"subscript\" : \"\",\n isSuperscript ? \"superscript\" : \"\",\n isCode ? \"code\" : \"\",\n isLink ? \"link\" : \"\",\n ]}\n >\n <ToggleGroupItem\n value=\"bold\"\n aria-label=\"Toggle bold\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n }}\n >\n <i className=\"ri-bold\"></i>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"italic\"\n aria-label=\"Toggle italic\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n }}\n >\n <i className=\"ri-italic\"></i>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"underline\"\n aria-label=\"Toggle underline\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n }}\n >\n <i className=\"ri-underline\"></i>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"strikethrough\"\n aria-label=\"Toggle strikethrough\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"strikethrough\");\n }}\n >\n <i className=\"ri-strikethrough\"></i>\n </ToggleGroupItem>\n <Separator orientation=\"vertical\" className=\"mx-0.5 h-5 bg-border-system-global-secondary\" />\n <ToggleGroupItem\n value=\"code\"\n aria-label=\"Toggle code\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\");\n }}\n >\n <i className=\"ri-code-line\"></i>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"link\"\n aria-label=\"Toggle link\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={insertLink}\n >\n <i className=\"ri-link\"></i>\n </ToggleGroupItem>\n <Separator orientation=\"vertical\" className=\"mx-0.5 h-5 bg-border-system-global-secondary\" />\n </ToggleGroup>\n <ToggleGroup\n type=\"single\"\n size=\"sm\"\n className=\"gap-0\"\n defaultValue={\n isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n }\n >\n <ToggleGroupItem\n value=\"subscript\"\n aria-label=\"Toggle subscript\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\");\n }}\n >\n <SubscriptIcon className=\"h-4 w-4\" />\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"superscript\"\n aria-label=\"Toggle superscript\"\n className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\");\n }}\n >\n <SuperscriptIcon className=\"h-4 w-4\" />\n </ToggleGroupItem>\n </ToggleGroup>\n </>\n )}\n </div>\n );\n}\n\nfunction useFloatingTextFormatToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLDivElement | null,\n setIsLinkEditMode: Dispatch<boolean>\n): JSX.Element | null {\n const [isText, setIsText] = useState(false);\n const [isLink, setIsLink] = useState(false);\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const [isStrikethrough, setIsStrikethrough] = useState(false);\n const [isSubscript, setIsSubscript] = useState(false);\n const [isSuperscript, setIsSuperscript] = useState(false);\n const [isCode, setIsCode] = useState(false);\n\n const updatePopup = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return;\n }\n const selection = $getSelection();\n const nativeSelection = window.getSelection();\n const rootElement = editor.getRootElement();\n\n if (\n nativeSelection !== null &&\n (!$isRangeSelection(selection) ||\n rootElement === null ||\n !rootElement.contains(nativeSelection.anchorNode))\n ) {\n setIsText(false);\n return;\n }\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const node = getSelectedNode(selection);\n\n // Update text format\n setIsBold(selection.hasFormat(\"bold\"));\n setIsItalic(selection.hasFormat(\"italic\"));\n setIsUnderline(selection.hasFormat(\"underline\"));\n setIsStrikethrough(selection.hasFormat(\"strikethrough\"));\n setIsSubscript(selection.hasFormat(\"subscript\"));\n setIsSuperscript(selection.hasFormat(\"superscript\"));\n setIsCode(selection.hasFormat(\"code\"));\n\n // Update links\n const parent = node.getParent();\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n\n if (\n !$isCodeHighlightNode(selection.anchor.getNode()) &&\n selection.getTextContent() !== \"\"\n ) {\n setIsText($isTextNode(node) || $isParagraphNode(node));\n } else {\n setIsText(false);\n }\n\n const rawTextContent = selection.getTextContent().replace(/\\n/g, \"\");\n if (!selection.isCollapsed() && rawTextContent === \"\") {\n setIsText(false);\n return;\n }\n });\n }, [editor]);\n\n useEffect(() => {\n document.addEventListener(\"selectionchange\", updatePopup);\n return () => {\n document.removeEventListener(\"selectionchange\", updatePopup);\n };\n }, [updatePopup]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updatePopup();\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setIsText(false);\n }\n })\n );\n }, [editor, updatePopup]);\n\n if (!isText || !anchorElem) {\n return null;\n }\n\n return createPortal(\n <TextFormatFloatingToolbar\n editor={editor}\n anchorElem={anchorElem}\n isLink={isLink}\n isBold={isBold}\n isItalic={isItalic}\n isStrikethrough={isStrikethrough}\n isSubscript={isSubscript}\n isSuperscript={isSuperscript}\n isUnderline={isUnderline}\n isCode={isCode}\n setIsLinkEditMode={setIsLinkEditMode}\n />,\n anchorElem\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLDivElement | null;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const { setIsLinkEditMode } = useFloatingLinkContext();\n\n return useFloatingTextFormatToolbar(editor, anchorElem, setIsLinkEditMode);\n}\n","export function getDOMRangeRect(\n nativeSelection: Selection,\n rootElement: HTMLElement\n): DOMRect {\n const domRange = nativeSelection.getRangeAt(0)\n\n let rect\n\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement\n }\n rect = inner.getBoundingClientRect()\n } else {\n rect = domRange.getBoundingClientRect()\n }\n\n return rect\n}\n","const VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\n\nexport function setFloatingElemPosition(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n isLink: boolean = false,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = '0'\n floatingElem.style.transform = 'translate(-10000px, -10000px)'\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - floatingElemRect.height - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n // adjusted height for link element if the element is at top\n top +=\n floatingElemRect.height +\n targetRect.height +\n verticalGap * (isLink ? 9 : 2)\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = '1'\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n","'use client'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useCallback, useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalTextEntity } from '@lexical/react/useLexicalTextEntity'\nimport type { TextNode } from 'lexical'\n\nimport { $createKeywordNode, KeywordNode } from '@/components/editor/nodes/keyword-node'\n\nconst KEYWORDS_REGEX =\n /(^|$|[^A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ])(congrats|congratulations|gratuluju|gratuluji|gratulujeme|blahopřeju|blahopřeji|blahopřejeme|Til lykke|Tillykke|Glückwunsch|Gratuliere|felicitaciones|enhorabuena|paljon onnea|onnittelut|Félicitations|gratula|gratulálok|gratulálunk|congratulazioni|complimenti|おめでとう|おめでとうございます|축하해|축하해요|gratulerer|Gefeliciteerd|gratulacje|Parabéns|parabéns|felicitações|felicitări|мои поздравления|поздравляем|поздравляю|gratulujem|blahoželám|ยินดีด้วย|ขอแสดงความยินดี|tebrikler|tebrik ederim|恭喜|祝贺你|恭喜你|恭喜|恭喜|baie geluk|veels geluk|অভিনন্দন|Čestitam|Čestitke|Čestitamo|Συγχαρητήρια|Μπράβο|અભિનંદન|badhai|बधाई|अभिनंदन|Честитам|Свака част|hongera|வாழ்த்துகள்|வாழ்த்துக்கள்|అభినందనలు|അഭിനന്ദനങ്ങൾ|Chúc mừng|מזל טוב|mazel tov|mazal tov)(^|$|[^A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ])/i\n\nexport function KeywordsPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([KeywordNode])) {\n throw new Error('KeywordsPlugin: KeywordNode not registered on editor')\n }\n }, [editor])\n\n const $createKeywordNode_ = useCallback((textNode: TextNode): KeywordNode => {\n return $createKeywordNode(textNode.getTextContent())\n }, [])\n\n const getKeywordMatch = useCallback((text: string) => {\n const matchArr = KEYWORDS_REGEX.exec(text)\n\n if (matchArr === null) {\n return null\n }\n\n const hashtagLength = matchArr[2].length\n const startOffset = matchArr.index + matchArr[1].length\n const endOffset = startOffset + hashtagLength\n return {\n end: endOffset,\n start: startOffset,\n }\n }, [])\n\n useLexicalTextEntity<KeywordNode>(\n getKeywordMatch,\n KeywordNode,\n $createKeywordNode_\n )\n\n return null\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{LinkNode as t,TOGGLE_LINK_COMMAND as r,$toggleLink as e}from\"@lexical/link\";import{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as i,objectKlassEquals as l}from\"@lexical/utils\";import{COMMAND_PRIORITY_LOW as n,PASTE_COMMAND as a,$getSelection as m,$isRangeSelection as s,$isElementNode as u}from\"lexical\";import{useEffect as d}from\"react\";function c({validateUrl:c,attributes:p}){const[f]=o();return d((()=>{if(!f.hasNodes([t]))throw new Error(\"LinkPlugin: LinkNode not registered on editor\");return i(f.registerCommand(r,(t=>{if(null===t)return e(t),!0;if(\"string\"==typeof t)return!(void 0!==c&&!c(t))&&(e(t,p),!0);{const{url:r,target:o,rel:i,title:l}=t;return e(r,{...p,rel:i,target:o,title:l}),!0}}),n),void 0!==c?f.registerCommand(a,(t=>{const e=m();if(!s(e)||e.isCollapsed()||!l(t,ClipboardEvent))return!1;if(null===t.clipboardData)return!1;const o=t.clipboardData.getData(\"text\");return!!c(o)&&(!e.getNodes().some((t=>u(t)))&&(f.dispatchCommand(r,{...p,url:o}),t.preventDefault(),!0))}),n):()=>{})}),[f,c,p]),null}export{c as LinkPlugin};\n","'use client'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n \nimport { JSX } from 'react'\n\nimport { LinkPlugin as LexicalLinkPlugin } from '@lexical/react/LexicalLinkPlugin'\n\nimport { validateUrl } from '@/components/editor/utils/url'\n\nexport function LinkPlugin(): JSX.Element {\n return <LexicalLinkPlugin validateUrl={validateUrl} />\n}\n\n","import { useEffect } from 'react'\n\nimport { $getListDepth, $isListItemNode, $isListNode } from '@lexical/list'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport type { ElementNode, RangeSelection } from 'lexical'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n INDENT_CONTENT_COMMAND,\n} from 'lexical'\n\nfunction getElementNodesInSelection(\n selection: RangeSelection\n): Set<ElementNode> {\n const nodesInSelection = selection.getNodes()\n\n if (nodesInSelection.length === 0) {\n return new Set([\n selection.anchor.getNode().getParentOrThrow(),\n selection.focus.getNode().getParentOrThrow(),\n ])\n }\n\n return new Set(\n nodesInSelection.map((n) => ($isElementNode(n) ? n : n.getParentOrThrow()))\n )\n}\n\nfunction $shouldPreventIndent(maxDepth: number): boolean {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const elementNodesInSelection: Set<ElementNode> =\n getElementNodesInSelection(selection)\n\n let totalDepth = 0\n\n for (const elementNode of Array.from(elementNodesInSelection)) {\n if ($isListNode(elementNode)) {\n totalDepth = Math.max($getListDepth(elementNode) + 1, totalDepth)\n } else if ($isListItemNode(elementNode)) {\n const parent = elementNode.getParent()\n\n if (!$isListNode(parent)) {\n throw new Error(\n 'ListMaxIndentLevelPlugin: A ListItemNode must have a ListNode for a parent.'\n )\n }\n\n totalDepth = Math.max($getListDepth(parent) + 1, totalDepth)\n }\n }\n\n return totalDepth > maxDepth\n}\n\nexport function ListMaxIndentLevelPlugin({\n maxDepth = 7,\n}: {\n maxDepth?: number\n}): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => $shouldPreventIndent(maxDepth),\n COMMAND_PRIORITY_CRITICAL\n )\n }, [editor, maxDepth])\n return null\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useCallback, useEffect, useMemo, useState, JSX, Suspense } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { lazy } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n MenuOption,\n MenuTextMatch,\n useBasicTypeaheadTriggerMatch,\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport { TextNode } from \"lexical\";\nimport { CircleUserRoundIcon } from \"lucide-react\";\n\nimport { $createMentionNode } from \"@/components/editor/nodes/mention-node\";\nimport { Command, CommandGroup, CommandItem, CommandList } from \"@/components/ui/command\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n () => import(\"./default/lexical-typeahead-menu-plugin\")\n);\n\nconst PUNCTUATION =\n \"\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%'\\\"~=<>_:;\";\nconst NAME = \"\\\\b[A-Z][^\\\\s\" + PUNCTUATION + \"]\";\n\nconst DocumentMentionsRegex = {\n NAME,\n PUNCTUATION,\n};\n\nconst PUNC = DocumentMentionsRegex.PUNCTUATION;\n\nconst TRIGGERS = [\"@\"].join(\"\");\n\n// Chars we expect to see in a mention (non-space, non-punctuation).\nconst VALID_CHARS = \"[^\" + TRIGGERS + PUNC + \"\\\\s]\";\n\n// Non-standard series of chars. Each series must be preceded and followed by\n// a valid char.\nconst VALID_JOINS =\n \"(?:\" +\n \"\\\\.[ |$]|\" + // E.g. \"r. \" in \"Mr. Smith\"\n \" |\" + // E.g. \" \" in \"Josh Duck\"\n \"[\" +\n PUNC +\n \"]|\" + // E.g. \"-' in \"Salier-Hellendag\"\n \")\";\n\nconst LENGTH_LIMIT = 75;\n\nconst AtSignMentionsRegex = new RegExp(\n \"(^|\\\\s|\\\\()(\" +\n \"[\" +\n TRIGGERS +\n \"]\" +\n \"((?:\" +\n VALID_CHARS +\n VALID_JOINS +\n \"){0,\" +\n LENGTH_LIMIT +\n \"})\" +\n \")$\"\n);\n\n// 50 is the longest alias length limit.\nconst ALIAS_LENGTH_LIMIT = 50;\n\n// Regex used to match alias.\nconst AtSignMentionsRegexAliasRegex = new RegExp(\n \"(^|\\\\s|\\\\()(\" +\n \"[\" +\n TRIGGERS +\n \"]\" +\n \"((?:\" +\n VALID_CHARS +\n \"){0,\" +\n ALIAS_LENGTH_LIMIT +\n \"})\" +\n \")$\"\n);\n\n// At most, 5 suggestions are shown in the popup.\nconst SUGGESTION_LIST_LENGTH_LIMIT = 5;\n\nconst mentionsCache = new Map();\n\nconst dummyMentionsData = [\n \"Aayla Secura\",\n \"Adi Gallia\",\n \"Admiral Dodd Rancit\",\n \"Admiral Firmus Piett\",\n \"Admiral Gial Ackbar\",\n \"Admiral Ozzel\",\n \"Admiral Raddus\",\n \"Admiral Terrinald Screed\",\n \"Admiral Trench\",\n \"Admiral U.O. Statura\",\n \"Agen Kolar\",\n \"Agent Kallus\",\n \"Aiolin and Morit Astarte\",\n \"Aks Moe\",\n \"Almec\",\n \"Alton Kastle\",\n \"Amee\",\n \"AP-5\",\n \"Armitage Hux\",\n \"Artoo\",\n \"Arvel Crynyd\",\n \"Asajj Ventress\",\n \"Aurra Sing\",\n \"AZI-3\",\n \"Bala-Tik\",\n \"Barada\",\n \"Bargwill Tomder\",\n \"Baron Papanoida\",\n \"Barriss Offee\",\n \"Baze Malbus\",\n \"Bazine Netal\",\n \"BB-8\",\n \"BB-9E\",\n \"Ben Quadinaros\",\n \"Berch Teller\",\n \"Beru Lars\",\n \"Bib Fortuna\",\n \"Biggs Darklighter\",\n \"Black Krrsantan\",\n \"Bo-Katan Kryze\",\n \"Boba Fett\",\n \"Bobbajo\",\n \"Bodhi Rook\",\n \"Borvo the Hutt\",\n \"Boss Nass\",\n \"Bossk\",\n \"Breha Antilles-Organa\",\n \"Bren Derlin\",\n \"Brendol Hux\",\n \"BT-1\",\n \"C-3PO\",\n \"C1-10P\",\n \"Cad Bane\",\n \"Caluan Ematt\",\n \"Captain Gregor\",\n \"Captain Phasma\",\n \"Captain Quarsh Panaka\",\n \"Captain Rex\",\n \"Carlist Rieekan\",\n \"Casca Panzoro\",\n \"Cassian Andor\",\n \"Cassio Tagge\",\n \"Cham Syndulla\",\n \"Che Amanwe Papanoida\",\n \"Chewbacca\",\n \"Chi Eekway Papanoida\",\n \"Chief Chirpa\",\n \"Chirrut Îmwe\",\n \"Ciena Ree\",\n \"Cin Drallig\",\n \"Clegg Holdfast\",\n \"Cliegg Lars\",\n \"Coleman Kcaj\",\n \"Coleman Trebor\",\n \"Colonel Kaplan\",\n \"Commander Bly\",\n \"Commander Cody (CC-2224)\",\n \"Commander Fil (CC-3714)\",\n \"Commander Fox\",\n \"Commander Gree\",\n \"Commander Jet\",\n \"Commander Wolffe\",\n \"Conan Antonio Motti\",\n \"Conder Kyl\",\n \"Constable Zuvio\",\n \"Cordé\",\n \"Cpatain Typho\",\n \"Crix Madine\",\n \"Cut Lawquane\",\n \"Dak Ralter\",\n \"Dapp\",\n \"Darth Bane\",\n \"Darth Maul\",\n \"Darth Tyranus\",\n \"Daultay Dofine\",\n \"Del Meeko\",\n \"Delian Mors\",\n \"Dengar\",\n \"Depa Billaba\",\n \"Derek Klivian\",\n \"Dexter Jettster\",\n \"Dineé Ellberger\",\n \"DJ\",\n \"Doctor Aphra\",\n \"Doctor Evazan\",\n \"Dogma\",\n \"Dormé\",\n \"Dr. Cylo\",\n \"Droidbait\",\n \"Droopy McCool\",\n \"Dryden Vos\",\n \"Dud Bolt\",\n \"Ebe E. Endocott\",\n \"Echuu Shen-Jon\",\n \"Eeth Koth\",\n \"Eighth Brother\",\n \"Eirtaé\",\n \"Eli Vanto\",\n \"Ellé\",\n \"Ello Asty\",\n \"Embo\",\n \"Eneb Ray\",\n \"Enfys Nest\",\n \"EV-9D9\",\n \"Evaan Verlaine\",\n \"Even Piell\",\n \"Ezra Bridger\",\n \"Faro Argyus\",\n \"Feral\",\n \"Fifth Brother\",\n \"Finis Valorum\",\n \"Finn\",\n \"Fives\",\n \"FN-1824\",\n \"FN-2003\",\n \"Fodesinbeed Annodue\",\n \"Fulcrum\",\n \"FX-7\",\n \"GA-97\",\n \"Galen Erso\",\n \"Gallius Rax\",\n 'Garazeb \"Zeb\" Orrelios',\n \"Gardulla the Hutt\",\n \"Garrick Versio\",\n \"Garven Dreis\",\n \"Gavyn Sykes\",\n \"Gideon Hask\",\n \"Gizor Dellso\",\n \"Gonk droid\",\n \"Grand Inquisitor\",\n \"Greeata Jendowanian\",\n \"Greedo\",\n \"Greer Sonnel\",\n \"Grievous\",\n \"Grummgar\",\n \"Gungi\",\n \"Hammerhead\",\n \"Han Solo\",\n \"Harter Kalonia\",\n \"Has Obbit\",\n \"Hera Syndulla\",\n \"Hevy\",\n \"Hondo Ohnaka\",\n \"Huyang\",\n \"Iden Versio\",\n \"IG-88\",\n \"Ima-Gun Di\",\n \"Inquisitors\",\n \"Inspector Thanoth\",\n \"Jabba\",\n \"Jacen Syndulla\",\n \"Jan Dodonna\",\n \"Jango Fett\",\n \"Janus Greejatus\",\n \"Jar Jar Binks\",\n \"Jas Emari\",\n \"Jaxxon\",\n \"Jek Tono Porkins\",\n \"Jeremoch Colton\",\n \"Jira\",\n \"Jobal Naberrie\",\n \"Jocasta Nu\",\n \"Joclad Danva\",\n \"Joh Yowza\",\n \"Jom Barell\",\n \"Joph Seastriker\",\n \"Jova Tarkin\",\n \"Jubnuk\",\n \"Jyn Erso\",\n \"K-2SO\",\n \"Kanan Jarrus\",\n \"Karbin\",\n \"Karina the Great\",\n \"Kes Dameron\",\n \"Ketsu Onyo\",\n \"Ki-Adi-Mundi\",\n \"King Katuunko\",\n \"Kit Fisto\",\n \"Kitster Banai\",\n \"Klaatu\",\n \"Klik-Klak\",\n \"Korr Sella\",\n \"Kylo Ren\",\n \"L3-37\",\n \"Lama Su\",\n \"Lando Calrissian\",\n \"Lanever Villecham\",\n \"Leia Organa\",\n \"Letta Turmond\",\n \"Lieutenant Kaydel Ko Connix\",\n \"Lieutenant Thire\",\n \"Lobot\",\n \"Logray\",\n \"Lok Durd\",\n \"Longo Two-Guns\",\n \"Lor San Tekka\",\n \"Lorth Needa\",\n \"Lott Dod\",\n \"Luke Skywalker\",\n \"Lumat\",\n \"Luminara Unduli\",\n \"Lux Bonteri\",\n \"Lyn Me\",\n \"Lyra Erso\",\n \"Mace Windu\",\n \"Malakili\",\n \"Mama the Hutt\",\n \"Mars Guo\",\n \"Mas Amedda\",\n \"Mawhonic\",\n \"Max Rebo\",\n \"Maximilian Veers\",\n \"Maz Kanata\",\n \"ME-8D9\",\n \"Meena Tills\",\n \"Mercurial Swift\",\n \"Mina Bonteri\",\n \"Miraj Scintel\",\n \"Mister Bones\",\n \"Mod Terrik\",\n \"Moden Canady\",\n \"Mon Mothma\",\n \"Moradmin Bast\",\n \"Moralo Eval\",\n \"Morley\",\n \"Mother Talzin\",\n \"Nahdar Vebb\",\n \"Nahdonnis Praji\",\n \"Nien Nunb\",\n \"Niima the Hutt\",\n \"Nines\",\n \"Norra Wexley\",\n \"Nute Gunray\",\n \"Nuvo Vindi\",\n \"Obi-Wan Kenobi\",\n \"Odd Ball\",\n \"Ody Mandrell\",\n \"Omi\",\n \"Onaconda Farr\",\n \"Oola\",\n \"OOM-9\",\n \"Oppo Rancisis\",\n \"Orn Free Taa\",\n \"Oro Dassyne\",\n \"Orrimarko\",\n \"Osi Sobeck\",\n \"Owen Lars\",\n \"Pablo-Jill\",\n \"Padmé Amidala\",\n \"Pagetti Rook\",\n \"Paige Tico\",\n \"Paploo\",\n \"Petty Officer Thanisson\",\n \"Pharl McQuarrie\",\n \"Plo Koon\",\n \"Po Nudo\",\n \"Poe Dameron\",\n \"Poggle the Lesser\",\n \"Pong Krell\",\n \"Pooja Naberrie\",\n \"PZ-4CO\",\n \"Quarrie\",\n \"Quay Tolsite\",\n \"Queen Apailana\",\n \"Queen Jamillia\",\n \"Queen Neeyutnee\",\n \"Qui-Gon Jinn\",\n \"Quiggold\",\n \"Quinlan Vos\",\n \"R2-D2\",\n \"R2-KT\",\n \"R3-S6\",\n \"R4-P17\",\n \"R5-D4\",\n \"RA-7\",\n \"Rabé\",\n \"Rako Hardeen\",\n \"Ransolm Casterfo\",\n \"Rappertunie\",\n \"Ratts Tyerell\",\n \"Raymus Antilles\",\n \"Ree-Yees\",\n \"Reeve Panzoro\",\n \"Rey\",\n \"Ric Olié\",\n \"Riff Tamson\",\n \"Riley\",\n \"Rinnriyin Di\",\n \"Rio Durant\",\n \"Rogue Squadron\",\n \"Romba\",\n \"Roos Tarpals\",\n \"Rose Tico\",\n \"Rotta the Hutt\",\n \"Rukh\",\n \"Rune Haako\",\n \"Rush Clovis\",\n \"Ruwee Naberrie\",\n \"Ryoo Naberrie\",\n \"Sabé\",\n \"Sabine Wren\",\n \"Saché\",\n \"Saelt-Marae\",\n \"Saesee Tiin\",\n \"Salacious B. Crumb\",\n \"San Hill\",\n \"Sana Starros\",\n \"Sarco Plank\",\n \"Sarkli\",\n \"Satine Kryze\",\n \"Savage Opress\",\n \"Sebulba\",\n \"Senator Organa\",\n \"Sergeant Kreel\",\n \"Seventh Sister\",\n \"Shaak Ti\",\n \"Shara Bey\",\n \"Shmi Skywalker\",\n \"Shu Mai\",\n \"Sidon Ithano\",\n \"Sifo-Dyas\",\n \"Sim Aloo\",\n \"Siniir Rath Velus\",\n \"Sio Bibble\",\n \"Sixth Brother\",\n \"Slowen Lo\",\n \"Sly Moore\",\n \"Snaggletooth\",\n \"Snap Wexley\",\n \"Snoke\",\n \"Sola Naberrie\",\n \"Sora Bulq\",\n \"Strono Tuggs\",\n \"Sy Snootles\",\n \"Tallissan Lintra\",\n \"Tarfful\",\n \"Tasu Leech\",\n \"Taun We\",\n \"TC-14\",\n \"Tee Watt Kaa\",\n \"Teebo\",\n \"Teedo\",\n \"Teemto Pagalies\",\n \"Temiri Blagg\",\n \"Tessek\",\n \"Tey How\",\n \"Thane Kyrell\",\n \"The Bendu\",\n \"The Smuggler\",\n \"Thrawn\",\n \"Tiaan Jerjerrod\",\n \"Tion Medon\",\n \"Tobias Beckett\",\n \"Tulon Voidgazer\",\n \"Tup\",\n \"U9-C4\",\n \"Unkar Plutt\",\n \"Val Beckett\",\n \"Vanden Willard\",\n \"Vice Admiral Amilyn Holdo\",\n \"Vober Dand\",\n \"WAC-47\",\n \"Wag Too\",\n \"Wald\",\n \"Walrus Man\",\n \"Warok\",\n \"Wat Tambor\",\n \"Watto\",\n \"Wedge Antilles\",\n \"Wes Janson\",\n \"Wicket W. Warrick\",\n \"Wilhuff Tarkin\",\n \"Wollivan\",\n \"Wuher\",\n \"Wullf Yularen\",\n \"Xamuel Lennox\",\n \"Yaddle\",\n \"Yarael Poof\",\n \"Yoda\",\n \"Zam Wesell\",\n \"Zev Senesca\",\n \"Ziro the Hutt\",\n \"Zuckuss\",\n];\n\nconst dummyLookupService = {\n search(string: string, callback: (results: Array<string>) => void): void {\n setTimeout(() => {\n const results = dummyMentionsData.filter((mention) =>\n mention.toLowerCase().includes(string.toLowerCase())\n );\n callback(results);\n }, 500);\n },\n};\n\nfunction useMentionLookupService(mentionString: string | null) {\n const [results, setResults] = useState<Array<string>>([]);\n\n useEffect(() => {\n const cachedResults = mentionsCache.get(mentionString);\n\n if (mentionString == null) {\n setResults([]);\n return;\n }\n\n if (cachedResults === null) {\n return;\n } else if (cachedResults !== undefined) {\n setResults(cachedResults);\n return;\n }\n\n mentionsCache.set(mentionString, null);\n dummyLookupService.search(mentionString, (newResults) => {\n mentionsCache.set(mentionString, newResults);\n setResults(newResults);\n });\n }, [mentionString]);\n\n return results;\n}\n\nfunction checkForAtSignMentions(\n text: string,\n minMatchLength: number\n): MenuTextMatch | null {\n let match = AtSignMentionsRegex.exec(text);\n\n if (match === null) {\n match = AtSignMentionsRegexAliasRegex.exec(text);\n }\n if (match !== null) {\n // The strategy ignores leading whitespace but we need to know it's\n // length to add it to the leadOffset\n\n const maybeLeadingWhitespace = match[1];\n\n const matchingString = match[3];\n if (matchingString.length >= minMatchLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2],\n };\n }\n }\n return null;\n}\n\nfunction getPossibleQueryMatch(text: string): MenuTextMatch | null {\n return checkForAtSignMentions(text, 1);\n}\n\nclass MentionTypeaheadOption extends MenuOption {\n name: string;\n picture: JSX.Element;\n\n constructor(name: string, picture: JSX.Element) {\n super(name);\n this.name = name;\n this.picture = picture;\n }\n}\n\nexport function MentionsPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n const [queryString, setQueryString] = useState<string | null>(null);\n const results = useMentionLookupService(queryString);\n\n const checkForSlashTriggerMatch = useBasicTypeaheadTriggerMatch(\"/\", {\n minLength: 0,\n });\n\n const options = useMemo(\n () =>\n results\n .map(\n (result) =>\n new MentionTypeaheadOption(\n result,\n <CircleUserRoundIcon className=\"size-4\" />\n )\n )\n .slice(0, SUGGESTION_LIST_LENGTH_LIMIT),\n [results]\n );\n\n const onSelectOption = useCallback(\n (\n selectedOption: MentionTypeaheadOption,\n nodeToReplace: TextNode | null,\n closeMenu: () => void\n ) => {\n editor.update(() => {\n const mentionNode = $createMentionNode(selectedOption.name);\n if (nodeToReplace) {\n nodeToReplace.replace(mentionNode);\n }\n mentionNode.select();\n closeMenu();\n });\n },\n [editor]\n );\n const checkForMentionMatch = useCallback(\n (text: string) => {\n const slashMatch = checkForSlashTriggerMatch(text, editor);\n if (slashMatch !== null) {\n return null;\n }\n return getPossibleQueryMatch(text);\n },\n [checkForSlashTriggerMatch, editor]\n );\n\n return (\n <Suspense fallback={<div>Loading...</div>}>\n {/* @ts-ignore */}\n <LexicalTypeaheadMenuPlugin<MentionTypeaheadOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForMentionMatch}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n return anchorElementRef.current && results.length\n ? createPortal(\n <div className=\"fixed w-[200px] rounded-md shadow-md\">\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) %\n options.length\n : options.length - 1\n );\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex + 1) % options.length\n : 0\n );\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option, index) => (\n <CommandItem\n key={option.key}\n value={option.name}\n onSelect={() => {\n selectOptionAndCleanUp(option);\n }}\n className={`flex items-center gap-2 ${\n selectedIndex === index\n ? \"bg-background-presentation-action-selected\"\n : \"!bg-transparent\"\n }`}\n >\n {option.picture}\n {option.name}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>,\n anchorElementRef.current\n )\n : null;\n }}\n />\n </Suspense>\n );\n}\n","import { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n $getSelection,\n $isRangeSelection,\n $setSelection,\n FOCUS_COMMAND,\n} from 'lexical'\n\nconst COMMAND_PRIORITY_LOW = 1\nconst TAB_TO_FOCUS_INTERVAL = 100\n\nlet lastTabKeyDownTimestamp = 0\nlet hasRegisteredKeyDownListener = false\n\nfunction registerKeyTimeStampTracker() {\n window.addEventListener(\n 'keydown',\n (event: KeyboardEvent) => {\n // Tab\n if (event.key === 'Tab') {\n lastTabKeyDownTimestamp = event.timeStamp\n }\n },\n true\n )\n}\n\nexport function TabFocusPlugin(): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!hasRegisteredKeyDownListener) {\n registerKeyTimeStampTracker()\n hasRegisteredKeyDownListener = true\n }\n\n return editor.registerCommand(\n FOCUS_COMMAND,\n (event: FocusEvent) => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n if (\n lastTabKeyDownTimestamp + TAB_TO_FOCUS_INTERVAL >\n event.timeStamp\n ) {\n $setSelection(selection.clone())\n }\n }\n return false\n },\n COMMAND_PRIORITY_LOW\n )\n }, [editor])\n\n return null\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport {\n ReactPortal,\n useCallback,\n useEffect,\n useRef,\n useState,\n JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport {\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableRowNode,\n $isTableSelection,\n $unmergeCell,\n HTMLTableElementWithWithTableSelectionState,\n TableCellHeaderStates,\n TableCellNode,\n TableRowNode,\n TableSelection,\n getTableObserverFromTableElement,\n} from \"@lexical/table\";\nimport type { ElementNode, LexicalEditor } from \"lexical\";\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from \"lexical\";\nimport { ChevronDownIcon, PaintBucketIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport ColorPicker from \"@/components/editor/editor-ui/colorpicker\";\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number;\n rows: number;\n} {\n const selectionShape = selection.getShape();\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n };\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection();\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false;\n }\n const [cell] = $getNodeTriplet(selection.anchor);\n return cell.__colSpan > 1 || cell.__rowSpan > 1;\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false;\n }\n const firstChild = cell.getFirstChildOrThrow();\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false;\n }\n return true;\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant();\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select();\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd();\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext();\n }\n}\n\nfunction currentCellBackgroundColor(editor: LexicalEditor): null | string {\n return editor.getEditorState().read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const [cell] = $getNodeTriplet(selection.anchor);\n if ($isTableCellNode(cell)) {\n return cell.getBackgroundColor();\n }\n }\n return null;\n });\n}\n\ntype TableCellActionMenuProps = Readonly<{\n contextRef: { current: null | HTMLElement };\n onClose: () => void;\n setIsMenuOpen: (isOpen: boolean) => void;\n tableCellNode: TableCellNode;\n cellMerge: boolean;\n}>;\n\nfunction TableActionMenu({\n onClose,\n tableCellNode: _tableCellNode,\n setIsMenuOpen,\n contextRef,\n cellMerge,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext();\n const dropDownRef = useRef<HTMLDivElement | null>(null);\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode);\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n });\n const [canMergeCells, setCanMergeCells] = useState(false);\n const [canUnmergeCell, setCanUnmergeCell] = useState(false);\n const [backgroundColor, setBackgroundColor] = useState(\n () => currentCellBackgroundColor(editor) || \"\"\n );\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated =\n nodeMutations.get(tableCellNode.getKey()) === \"updated\";\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest());\n });\n setBackgroundColor(currentCellBackgroundColor(editor) || \"\");\n }\n },\n { skipInitialization: true }\n );\n }, [editor, tableCellNode]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection);\n updateSelectionCounts(computeSelectionCount(selection));\n setCanMergeCells(\n currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1\n );\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge());\n });\n }, [editor]);\n\n useEffect(() => {\n const menuButtonElement = contextRef.current;\n const dropDownElement = dropDownRef.current;\n const rootElement = editor.getRootElement();\n\n if (\n menuButtonElement != null &&\n dropDownElement != null &&\n rootElement != null\n ) {\n const rootEleRect = rootElement.getBoundingClientRect();\n const menuButtonRect = menuButtonElement.getBoundingClientRect();\n dropDownElement.style.opacity = \"1\";\n const dropDownElementRect = dropDownElement.getBoundingClientRect();\n const margin = 5;\n let leftPosition = menuButtonRect.right + margin;\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position =\n menuButtonRect.left - dropDownElementRect.width - margin;\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset;\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`;\n\n let topPosition = menuButtonRect.top;\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height;\n topPosition = (position < 0 ? margin : position) + window.pageYOffset;\n }\n dropDownElement.style.top = `${topPosition + +window.pageYOffset}px`;\n }\n }, [contextRef, dropDownRef, editor]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false);\n }\n }\n\n window.addEventListener(\"click\", handleClickOutside);\n\n return () => window.removeEventListener(\"click\", handleClickOutside);\n }, [setIsMenuOpen, contextRef]);\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n const tableElement = editor.getElementByKey(\n tableNode.getKey()\n ) as HTMLTableElementWithWithTableSelectionState;\n\n if (!tableElement) {\n throw new Error(\"Expected to find tableElement in DOM\");\n }\n\n const tableObserver = getTableObserverFromTableElement(tableElement);\n if (tableObserver !== null) {\n tableObserver.$clearHighlight();\n }\n\n tableNode.markDirty();\n updateTableCellNode(tableCellNode.getLatest());\n }\n\n const rootNode = $getRoot();\n rootNode.selectStart();\n });\n }, [editor, tableCellNode]);\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection);\n const nodes = selection.getNodes();\n let firstCell: null | TableCellNode = null;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows);\n firstCell = node;\n const isEmpty = $cellContainsEmptyParagraph(node);\n let firstChild;\n if (\n isEmpty &&\n $isParagraphNode((firstChild = node.getFirstChild()))\n ) {\n firstChild.remove();\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node);\n if (!isEmpty) {\n firstCell.append(...node.getChildren());\n }\n node.remove();\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode());\n }\n $selectLastDescendant(firstCell);\n }\n onClose();\n }\n });\n };\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell();\n });\n };\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter);\n onClose();\n });\n },\n [editor, onClose]\n );\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter);\n }\n onClose();\n });\n },\n [editor, onClose, selectionCounts.columns]\n );\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL();\n onClose();\n });\n }, [editor, onClose]);\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n tableNode.remove();\n\n clearTableSelection();\n onClose();\n });\n }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL();\n onClose();\n });\n }, [editor, onClose]);\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);\n\n const tableRows = tableNode.getChildren();\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error(\"Expected table cell to be inside of table row.\");\n }\n\n const tableRow = tableRows[tableRowIndex];\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error(\"Expected table row\");\n }\n\n const newStyle =\n tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW;\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error(\"Expected table cell\");\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW);\n });\n\n clearTableSelection();\n onClose();\n });\n }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n const tableColumnIndex =\n $getTableColumnIndexFromTableCellNode(tableCellNode);\n\n const tableRows = tableNode.getChildren<TableRowNode>();\n const maxRowsLength = Math.max(\n ...tableRows.map((row) => row.getChildren().length)\n );\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error(\"Expected table cell to be inside of table row.\");\n }\n\n const newStyle =\n tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN;\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r];\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error(\"Expected table row\");\n }\n\n const tableCells = tableRow.getChildren();\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue;\n }\n\n const tableCell = tableCells[tableColumnIndex];\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error(\"Expected table cell\");\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN);\n }\n clearTableSelection();\n onClose();\n });\n }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping());\n }\n }\n clearTableSelection();\n onClose();\n });\n }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n const handleCellBackgroundColor = useCallback(\n (value: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const [cell] = $getNodeTriplet(selection.anchor);\n if ($isTableCellNode(cell)) {\n cell.setBackgroundColor(value);\n }\n\n if ($isTableSelection(selection)) {\n const nodes = selection.getNodes();\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isTableCellNode(node)) {\n node.setBackgroundColor(value);\n }\n }\n }\n }\n });\n },\n [editor]\n );\n\n let mergeCellButton: null | JSX.Element = null;\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <CommandItem onSelect={() => mergeTableCellsAtSelection()}>\n Merge cells\n </CommandItem>\n );\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <CommandItem onSelect={() => unmergeTableCellsAtSelection()}>\n Unmerge cells\n </CommandItem>\n );\n }\n }\n\n return (\n <>\n <Command>\n <CommandList>\n <CommandGroup>\n {mergeCellButton}\n <CommandItem className=\"flex justify-between\">\n Background color\n <ColorPicker\n color={backgroundColor}\n onChange={handleCellBackgroundColor}\n icon={<PaintBucketIcon className=\"size-4\" />}\n />\n </CommandItem>\n <CommandItem onSelect={() => toggleRowStriping()}>\n Toggle row striping\n </CommandItem>\n <CommandSeparator />\n <CommandItem onSelect={() => insertTableRowAtSelection(false)}>\n Insert{\" \"}\n {selectionCounts.rows === 1\n ? \"row\"\n : `${selectionCounts.rows} rows`}{\" \"}\n above\n </CommandItem>\n <CommandItem onSelect={() => insertTableRowAtSelection(true)}>\n Insert{\" \"}\n {selectionCounts.rows === 1\n ? \"row\"\n : `${selectionCounts.rows} rows`}{\" \"}\n below\n </CommandItem>\n <CommandSeparator />\n <CommandItem onSelect={() => insertTableColumnAtSelection(false)}>\n Insert{\" \"}\n {selectionCounts.columns === 1\n ? \"column\"\n : `${selectionCounts.columns} columns`}{\" \"}\n left\n </CommandItem>\n <CommandItem onSelect={() => insertTableColumnAtSelection(true)}>\n Insert{\" \"}\n {selectionCounts.columns === 1\n ? \"column\"\n : `${selectionCounts.columns} columns`}{\" \"}\n right\n </CommandItem>\n <CommandSeparator />\n <CommandItem onSelect={() => deleteTableColumnAtSelection()}>\n Delete column\n </CommandItem>\n <CommandItem onSelect={() => deleteTableRowAtSelection()}>\n Delete row\n </CommandItem>\n <CommandItem onSelect={() => deleteTableAtSelection()}>\n Delete table\n </CommandItem>\n <CommandSeparator />\n <CommandItem onSelect={() => toggleTableRowIsHeader()}>\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) ===\n TableCellHeaderStates.ROW\n ? \"Remove\"\n : \"Add\"}{\" \"}\n row header\n </CommandItem>\n <CommandItem onSelect={() => toggleTableColumnIsHeader()}>\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? \"Remove\"\n : \"Add\"}{\" \"}\n column header\n </CommandItem>\n </CommandGroup>\n </CommandList>\n </Command>\n </>\n );\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement;\n cellMerge: boolean;\n}): JSX.Element {\n const [editor] = useLexicalComposerContext();\n\n const menuButtonRef = useRef(null);\n const menuRootRef = useRef(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const [tableCellNode, setTableMenuCellNode] = useState<TableCellNode | null>(\n null\n );\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current;\n const selection = $getSelection();\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null);\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode()\n );\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null);\n return;\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(\n tableCellNodeFromSelection.getKey()\n );\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null);\n return;\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection);\n } else if (!activeElement) {\n setTableMenuCellNode(null);\n }\n }, [editor]);\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu();\n });\n });\n });\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null;\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey());\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect();\n const menuRect = menuButtonDOM.getBoundingClientRect();\n const anchorRect = anchorElem.getBoundingClientRect();\n\n const top = tableCellRect.top - anchorRect.top + 4;\n const left =\n tableCellRect.right - menuRect.width - 10 - anchorRect.left;\n\n menuButtonDOM.style.opacity = \"1\";\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`;\n } else {\n menuButtonDOM.style.opacity = \"0\";\n menuButtonDOM.style.transform = \"translate(-10000px, -10000px)\";\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem]);\n\n const prevTableCellDOM = useRef(tableCellNode);\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false);\n }\n\n prevTableCellDOM.current = tableCellNode;\n }, [prevTableCellDOM, tableCellNode]);\n\n return (\n <div\n className=\"table-cell-action-button-container absolute top-0 will-change-transform\"\n ref={menuButtonRef}\n >\n {tableCellNode != null && (\n <Popover open={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"relative flex cursor-pointer items-center justify-center bg-none\"\n onClick={(e) => {\n e.stopPropagation();\n setIsMenuOpen(!isMenuOpen);\n }}\n ref={menuRootRef}\n >\n <ChevronDownIcon className=\"h-4 w-4\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\">\n <TableActionMenu\n contextRef={menuRootRef}\n setIsMenuOpen={setIsMenuOpen}\n onClose={() => setIsMenuOpen(false)}\n tableCellNode={tableCellNode}\n cellMerge={cellMerge}\n />\n </PopoverContent>\n </Popover>\n )}\n </div>\n );\n}\n\nexport function TableActionMenuPlugin({\n anchorElem,\n cellMerge = false,\n}: {\n anchorElem: HTMLDivElement | null;\n cellMerge?: boolean;\n}): null | ReactPortal {\n const isEditable = useLexicalEditable();\n\n if (!anchorElem) {\n return null;\n }\n\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer\n anchorElem={anchorElem}\n cellMerge={cellMerge}\n />\n ) : null,\n anchorElem\n );\n}\n","import * as React from \"react\";\nimport {\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport type { TableCellNode, TableDOMCell, TableMapType } from \"@lexical/table\";\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n TableNode,\n getDOMCellFromTarget,\n} from \"@lexical/table\";\nimport { calculateZoomLevel } from \"@lexical/utils\";\nimport type { LexicalEditor } from \"lexical\";\nimport { $getNearestNodeFromDOMNode } from \"lexical\";\nimport { createPortal } from \"react-dom\";\n\ntype MousePosition = {\n x: number;\n y: number;\n};\n\ntype MouseDraggingDirection = \"right\" | \"bottom\";\n\nconst MIN_ROW_HEIGHT = 33;\nconst MIN_COLUMN_WIDTH = 92;\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null);\n const resizerRef = useRef<HTMLDivElement | null>(null);\n const tableRectRef = useRef<ClientRect | null>(null);\n\n const mouseStartPosRef = useRef<MousePosition | null>(null);\n const [mouseCurrentPos, updateMouseCurrentPos] =\n useState<MousePosition | null>(null);\n\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null);\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false);\n const [draggingDirection, updateDraggingDirection] =\n useState<MouseDraggingDirection | null>(null);\n\n const resetState = useCallback(() => {\n updateActiveCell(null);\n targetRef.current = null;\n updateDraggingDirection(null);\n mouseStartPosRef.current = null;\n tableRectRef.current = null;\n }, []);\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1;\n };\n\n useEffect(() => {\n return editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode;\n }\n\n const numColumns = tableNode.getColumnCount();\n const columnWidth = MIN_COLUMN_WIDTH;\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth));\n return tableNode;\n });\n }, [editor]);\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target;\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n });\n return;\n }\n updateIsMouseDown(isMouseDownOnEvent(event));\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return;\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement;\n const cell = getDOMCellFromTarget(target as HTMLElement);\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);\n if (!tableCellNode) {\n throw new Error(\"TableCellResizer: Table cell node not found.\");\n }\n\n const tableNode =\n $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n const tableElement = editor.getElementByKey(tableNode.getKey());\n\n if (!tableElement) {\n throw new Error(\"TableCellResizer: Table element not found.\");\n }\n\n targetRef.current = target as HTMLElement;\n tableRectRef.current = tableElement.getBoundingClientRect();\n updateActiveCell(cell);\n });\n } else if (cell == null) {\n resetState();\n }\n }\n }, 0);\n };\n\n const onMouseDown = () => {\n setTimeout(() => {\n updateIsMouseDown(true);\n }, 0);\n };\n\n const onMouseUp = () => {\n setTimeout(() => {\n updateIsMouseDown(false);\n }, 0);\n };\n\n const removeRootListener = editor.registerRootListener(\n (rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener(\"mousemove\", onMouseMove);\n prevRootElement?.removeEventListener(\"mousedown\", onMouseDown);\n prevRootElement?.removeEventListener(\"mouseup\", onMouseUp);\n rootElement?.addEventListener(\"mousemove\", onMouseMove);\n rootElement?.addEventListener(\"mousedown\", onMouseDown);\n rootElement?.addEventListener(\"mouseup\", onMouseUp);\n }\n );\n\n return () => {\n removeRootListener();\n };\n }, [activeCell, draggingDirection, editor, resetState]);\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === \"bottom\") {\n return true;\n }\n return false;\n };\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error(\"TableCellResizer: Expected active cell.\");\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error(\"TableCellResizer: Table cell node not found.\");\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) +\n tableCellNode.getRowSpan() -\n 1;\n\n const tableRows = tableNode.getChildren();\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error(\"Expected table cell to be inside of table row.\");\n }\n\n const tableRow = tableRows[tableRowIndex];\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error(\"Expected table row\");\n }\n\n let height = tableRow.getHeight();\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>();\n height = Math.min(\n ...rowCells.map(\n (cell) => getCellNodeHeight(cell, editor) ?? Infinity\n )\n );\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);\n tableRow.setHeight(newHeight);\n },\n { tag: \"skip-scroll-into-view\" }\n );\n },\n [activeCell, editor]\n );\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey());\n return domCellNode?.clientHeight;\n };\n\n const getCellColumnIndex = (\n tableCellNode: TableCellNode,\n tableMap: TableMapType\n ) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column;\n }\n }\n }\n };\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error(\"TableCellResizer: Expected active cell.\");\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error(\"TableCellResizer: Table cell node not found.\");\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n const [tableMap] = $computeTableMapSkipCellCheck(\n tableNode,\n null,\n null\n );\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap);\n if (columnIndex === undefined) {\n throw new Error(\"TableCellResizer: Table column not found.\");\n }\n\n const colWidths = tableNode.getColWidths();\n if (!colWidths) {\n return;\n }\n const width = colWidths[columnIndex];\n if (width === undefined) {\n return;\n }\n const newColWidths = [...colWidths];\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);\n newColWidths[columnIndex] = newWidth;\n tableNode.setColWidths(newColWidths);\n },\n { tag: \"skip-scroll-into-view\" }\n );\n },\n [activeCell, editor]\n );\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!activeCell) {\n throw new Error(\"TableCellResizer: Expected active cell.\");\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current;\n\n if (activeCell === null) {\n return;\n }\n const zoom = calculateZoomLevel(event.target as Element);\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom;\n updateRowHeight(heightChange);\n } else {\n const widthChange = (event.clientX - x) / zoom;\n updateColumnWidth(widthChange);\n }\n\n resetState();\n document.removeEventListener(\"mouseup\", handler);\n }\n };\n return handler;\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight]\n );\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!activeCell) {\n throw new Error(\"TableCellResizer: Expected active cell.\");\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n };\n updateMouseCurrentPos(mouseStartPosRef.current);\n updateDraggingDirection(direction);\n\n document.addEventListener(\"mouseup\", mouseUpHandler(direction));\n },\n [activeCell, mouseUpHandler]\n );\n\n const getResizers = useCallback(() => {\n if (activeCell) {\n const { height, width, top, left } =\n activeCell.elem.getBoundingClientRect();\n const zoom = calculateZoomLevel(activeCell.elem);\n const zoneWidth = 10; // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: \"none\",\n cursor: \"row-resize\",\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: \"none\",\n cursor: \"col-resize\",\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n };\n\n const tableRect = tableRectRef.current;\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${\n window.pageXOffset + tableRect.left\n }px`;\n styles[draggingDirection].top = `${\n window.pageYOffset + mouseCurrentPos.y / zoom\n }px`;\n styles[draggingDirection].height = \"3px\";\n styles[draggingDirection].width = `${tableRect.width}px`;\n } else {\n styles[draggingDirection].top = `${\n window.pageYOffset + tableRect.top\n }px`;\n styles[draggingDirection].left = `${\n window.pageXOffset + mouseCurrentPos.x / zoom\n }px`;\n styles[draggingDirection].width = \"3px\";\n styles[draggingDirection].height = `${tableRect.height}px`;\n }\n\n styles[draggingDirection].backgroundColor = \"var(--background-presentation-action-selected)\";\n }\n\n return styles;\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n };\n }, [activeCell, draggingDirection, mouseCurrentPos]);\n\n const resizerStyles = getResizers();\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <>\n <div\n className=\"TableCellResizer__ui absolute\"\n style={resizerStyles.right || undefined}\n onMouseDown={toggleResize(\"right\")}\n />\n <div\n className=\"TableCellResizer__ui absolute\"\n style={resizerStyles.bottom || undefined}\n onMouseDown={toggleResize(\"bottom\")}\n />\n </>\n )}\n </div>\n );\n}\n\nexport function TableCellResizerPlugin(): null | React.ReactElement {\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [bodyRef, setBodyRef] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setBodyRef(document.body);\n }, []);\n\n return useMemo(\n () =>\n isEditable && bodyRef\n ? createPortal(<TableCellResizer editor={editor} />, bodyRef)\n : null,\n [editor, isEditable, bodyRef]\n );\n}\n","\"use client\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, useMemo, useRef, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport {\n $getTableColumnIndexFromTableCellNode,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableNode,\n TableCellNode,\n TableNode,\n TableRowNode,\n} from \"@lexical/table\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport { $getNearestNodeFromDOMNode, NodeKey } from \"lexical\";\nimport { PlusIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\n\nconst BUTTON_WIDTH_PX = 20;\n\nfunction TableHoverActionsContainer({\n anchorElem,\n}: {\n anchorElem: HTMLElement;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [isShownRow, setShownRow] = useState<boolean>(false);\n const [isShownColumn, setShownColumn] = useState<boolean>(false);\n const [shouldListenMouseMove, setShouldListenMouseMove] =\n useState<boolean>(false);\n const [position, setPosition] = useState({});\n const tableSetRef = useRef<Set<NodeKey>>(new Set());\n const tableCellDOMNodeRef = useRef<HTMLElement | null>(null);\n\n const debouncedOnMouseMove = useDebounce(\n (event: MouseEvent) => {\n const { isOutside, tableDOMNode } = getMouseInfo(event);\n\n if (isOutside) {\n setShownRow(false);\n setShownColumn(false);\n return;\n }\n\n if (!tableDOMNode) {\n return;\n }\n\n tableCellDOMNodeRef.current = tableDOMNode;\n\n let hoveredRowNode: TableCellNode | null = null;\n let hoveredColumnNode: TableCellNode | null = null;\n let tableDOMElement: HTMLElement | null = null;\n\n editor.update(() => {\n const maybeTableCell = $getNearestNodeFromDOMNode(tableDOMNode);\n\n if ($isTableCellNode(maybeTableCell)) {\n const table = $findMatchingParent(maybeTableCell, (node) =>\n $isTableNode(node)\n );\n if (!$isTableNode(table)) {\n return;\n }\n\n tableDOMElement = editor.getElementByKey(table?.getKey());\n\n if (tableDOMElement) {\n const rowCount = table.getChildrenSize();\n const colCount = (\n (table as TableNode).getChildAtIndex(0) as TableRowNode\n )?.getChildrenSize();\n\n const rowIndex = $getTableRowIndexFromTableCellNode(maybeTableCell);\n const colIndex =\n $getTableColumnIndexFromTableCellNode(maybeTableCell);\n\n if (rowIndex === rowCount - 1) {\n hoveredRowNode = maybeTableCell;\n } else if (colIndex === colCount - 1) {\n hoveredColumnNode = maybeTableCell;\n }\n }\n }\n });\n\n if (tableDOMElement) {\n const {\n width: tableElemWidth,\n y: tableElemY,\n right: tableElemRight,\n left: tableElemLeft,\n bottom: tableElemBottom,\n height: tableElemHeight,\n } = (tableDOMElement as HTMLTableElement).getBoundingClientRect();\n\n const { y: editorElemY, left: editorElemLeft } =\n anchorElem.getBoundingClientRect();\n\n if (hoveredRowNode) {\n setShownColumn(false);\n setShownRow(true);\n setPosition({\n height: BUTTON_WIDTH_PX,\n left: tableElemLeft - editorElemLeft,\n top: tableElemBottom - editorElemY + 5,\n width: tableElemWidth,\n });\n } else if (hoveredColumnNode) {\n setShownColumn(true);\n setShownRow(false);\n setPosition({\n height: tableElemHeight,\n left: tableElemRight - editorElemLeft + 5,\n top: tableElemY - editorElemY,\n width: BUTTON_WIDTH_PX,\n });\n }\n }\n },\n 50,\n 250\n );\n\n // Hide the buttons on any table dimensions change to prevent last row cells\n // overlap behind the 'Add Row' button when text entry changes cell height\n const tableResizeObserver = useMemo(() => {\n return new ResizeObserver(() => {\n setShownRow(false);\n setShownColumn(false);\n });\n }, []);\n\n useEffect(() => {\n if (!shouldListenMouseMove) {\n return;\n }\n\n document.addEventListener(\"mousemove\", debouncedOnMouseMove);\n\n return () => {\n setShownRow(false);\n setShownColumn(false);\n debouncedOnMouseMove.cancel();\n document.removeEventListener(\"mousemove\", debouncedOnMouseMove);\n };\n }, [shouldListenMouseMove, debouncedOnMouseMove]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerMutationListener(\n TableNode,\n (mutations) => {\n editor.getEditorState().read(() => {\n for (const [key, type] of Array.from(mutations)) {\n const tableDOMElement = editor.getElementByKey(key);\n switch (type) {\n case \"created\":\n tableSetRef.current.add(key);\n setShouldListenMouseMove(tableSetRef.current.size > 0);\n if (tableDOMElement) {\n tableResizeObserver.observe(tableDOMElement);\n }\n break;\n\n case \"destroyed\":\n tableSetRef.current.delete(key);\n setShouldListenMouseMove(tableSetRef.current.size > 0);\n // Reset resize observers\n tableResizeObserver.disconnect();\n tableSetRef.current.forEach((tableKey: NodeKey) => {\n const tableElement = editor.getElementByKey(tableKey);\n if (tableElement) {\n tableResizeObserver.observe(tableElement);\n }\n });\n break;\n\n default:\n break;\n }\n }\n });\n },\n { skipInitialization: false }\n )\n );\n }, [editor, tableResizeObserver]);\n\n const insertAction = (insertRow: boolean) => {\n editor.update(() => {\n if (tableCellDOMNodeRef.current) {\n const maybeTableNode = $getNearestNodeFromDOMNode(\n tableCellDOMNodeRef.current\n );\n maybeTableNode?.selectEnd();\n if (insertRow) {\n $insertTableRow__EXPERIMENTAL();\n setShownRow(false);\n } else {\n $insertTableColumn__EXPERIMENTAL();\n setShownColumn(false);\n }\n }\n });\n };\n\n if (!isEditable) {\n return null;\n }\n\n return (\n <>\n {isShownRow && (\n <button\n className={\n \"EditorTheme__tableAddRows absolute flex w-[calc(100%-25px)] cursor-pointer items-center justify-center border-0 bg-background-presentation-action-secondary hover:bg-background-presentation-action-hover\"\n }\n style={{ ...position }}\n onClick={() => insertAction(true)}\n >\n <PlusIcon className=\"h-4 w-4\" />\n </button>\n )}\n {isShownColumn && (\n <button\n className={\n \"EditorTheme__tableAddColumns absolute flex w-[calc(100%-25px)] cursor-pointer items-center justify-center border-0 bg-background-presentation-action-secondary hover:bg-background-presentation-action-hover\"\n }\n style={{ ...position }}\n onClick={() => insertAction(false)}\n >\n <PlusIcon className=\"h-4 w-4\" />\n </button>\n )}\n </>\n );\n}\n\nfunction getMouseInfo(event: MouseEvent): {\n tableDOMNode: HTMLElement | null;\n isOutside: boolean;\n} {\n const target = event.target;\n\n if (target && target instanceof HTMLElement) {\n const tableDOMNode = target.closest<HTMLElement>(\n \"td.EditorTheme__tableCell, th.EditorTheme__tableCell\"\n );\n\n const isOutside = !(\n tableDOMNode ||\n target.closest<HTMLElement>(\"button.EditorTheme__tableAddRows\") ||\n target.closest<HTMLElement>(\"button.EditorTheme__tableAddColumns\") ||\n target.closest<HTMLElement>(\"div.TableCellResizer__resizer\")\n );\n\n return { isOutside, tableDOMNode };\n } else {\n return { isOutside: true, tableDOMNode: null };\n }\n}\n\nexport function TableHoverActionsPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLDivElement | null;\n}): React.ReactPortal | null {\n const isEditable = useLexicalEditable();\n\n if (!anchorElem) {\n return null;\n }\n\n return isEditable\n ? createPortal(\n <TableHoverActionsContainer anchorElem={anchorElem} />,\n anchorElem\n )\n : null;\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport { useState } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from 'lexical'\n\nimport { ToolbarContext } from '@/components/editor/context/toolbar-context'\n\nimport { useEditorModal } from '@/components/editor/editor-hooks/use-modal'\n\nexport function ToolbarPlugin({\n children,\n}: {\n children: (props: {\n blockType: string\n }) => React.ReactNode\n}) {\n const [editor] = useLexicalComposerContext()\n\n const [activeEditor, setActiveEditor] = useState(editor)\n const [blockType, setBlockType] = useState<string>('paragraph')\n\n const [modal, showModal] = useEditorModal()\n\n const $updateToolbar = () => {}\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n setActiveEditor(newEditor)\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n )\n }, [editor])\n\n return (\n <ToolbarContext\n activeEditor={activeEditor}\n $updateToolbar={$updateToolbar}\n blockType={blockType}\n setBlockType={setBlockType}\n showModal={showModal}\n >\n {modal}\n\n {children({ blockType })}\n\n </ToolbarContext>\n )\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as i,forwardRef as a,useState as r,useCallback as n,useMemo as o}from\"react\";import{jsx as l,jsxs as d,Fragment as c}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as s}from\"@lexical/text\";import{mergeRegister as u}from\"@lexical/utils\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:i;function f({editor:e,ariaActiveDescendant:t,ariaAutoComplete:i,ariaControls:a,ariaDescribedBy:d,ariaErrorMessage:c,ariaExpanded:s,ariaInvalid:u,ariaLabel:f,ariaLabelledBy:b,ariaMultiline:p,ariaOwns:x,ariaRequired:E,autoCapitalize:v,className:w,id:y,role:C=\"textbox\",spellCheck:g=!0,style:h,tabIndex:L,\"data-testid\":D,...I},R){const[k,q]=r(e.isEditable()),z=n((t=>{t&&t.ownerDocument&&t.ownerDocument.defaultView?e.setRootElement(t):e.setRootElement(null)}),[e]),A=o((()=>function(...e){return t=>{e.forEach((e=>{\"function\"==typeof e?e(t):null!=e&&(e.current=t)}))}}(R,z)),[z,R]);return m((()=>(q(e.isEditable()),e.registerEditableListener((e=>{q(e)})))),[e]),l(\"div\",{\"aria-activedescendant\":k?t:void 0,\"aria-autocomplete\":k?i:\"none\",\"aria-controls\":k?a:void 0,\"aria-describedby\":d,...null!=c?{\"aria-errormessage\":c}:{},\"aria-expanded\":k&&\"combobox\"===C?!!s:void 0,...null!=u?{\"aria-invalid\":u}:{},\"aria-label\":f,\"aria-labelledby\":b,\"aria-multiline\":p,\"aria-owns\":k?x:void 0,\"aria-readonly\":!k||void 0,\"aria-required\":E,autoCapitalize:v,className:w,contentEditable:k,\"data-testid\":D,id:y,ref:A,role:k?C:void 0,spellCheck:g,style:h,tabIndex:L,...I})}const b=a(f);function p(e){return e.getEditorState().read(s(e.isComposing()))}const x=a(E);function E(t,i){const{placeholder:a,...r}=t,[n]=e();return d(c,{children:[l(b,{editor:n,...r,ref:i}),null!=a&&l(v,{editor:n,content:a})]})}function v({content:e,editor:i}){const a=function(e){const[t,i]=r((()=>p(e)));return m((()=>{function t(){const t=p(e);i(t)}return t(),u(e.registerUpdateListener((()=>{t()})),e.registerEditableListener((()=>{t()})))}),[e]),t}(i),[n,o]=r(i.isEditable());if(t((()=>(o(i.isEditable()),i.registerEditableListener((e=>{o(e)})))),[i]),!a)return null;let d=null;return\"function\"==typeof e?d=e(n):null!==e&&(d=e),null===d?null:l(\"div\",{\"aria-hidden\":!0,children:d})}export{x as ContentEditable,b as ContentEditableElement};\n","import { JSX } from \"react\";\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\";\n\ntype Props = {\n placeholder: string;\n className?: string;\n placeholderClassName?: string;\n};\n\nexport function ContentEditable({\n placeholder,\n className,\n placeholderClassName,\n}: Props): JSX.Element {\n return (\n <LexicalContentEditable\n className={\n className ??\n `ContentEditable__root relative block bg-background-system-body-primary text-content-system-global-primary overflow-auto min-h-full !px-12 py-4 focus:outline-none max-w-full overflow-x-hidden whitespace-pre-wrap break-words`\n }\n aria-placeholder={placeholder}\n placeholder={\n <div\n className={\n placeholderClassName ??\n `pointer-events-none absolute left-0 top-0 select-none overflow-hidden text-ellipsis px-8 py-[18px] text-content-system-global-secondary`\n }\n >\n {placeholder}\n </div>\n }\n />\n );\n}\n","import { LexicalEditor } from \"lexical\";\nimport { MenuOption } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport type { JSX } from \"react\";\n\nexport class ComponentPickerOption extends MenuOption {\n // What shows up in the editor\n title: string;\n // Icon for display\n icon?: JSX.Element;\n // For extra searching.\n keywords: Array<string>;\n // TBD\n keyboardShortcut?: string;\n // What happens when you select this option?\n onSelect: (\n queryString: string,\n editor: LexicalEditor,\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element\n ) => void\n ) => void;\n\n constructor(\n title: string,\n options: {\n icon?: JSX.Element;\n keywords?: Array<string>;\n keyboardShortcut?: string;\n onSelect: (\n queryString: string,\n editor: LexicalEditor,\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element\n ) => void\n ) => void;\n }\n ) {\n super(title);\n this.title = title;\n this.keywords = options.keywords || [];\n this.icon = options.icon;\n this.keyboardShortcut = options.keyboardShortcut;\n this.onSelect = options.onSelect.bind(this);\n }\n}\n","import { FORMAT_ELEMENT_COMMAND } from \"lexical\";\nimport { AlignCenterIcon, AlignRightIcon, AlignJustifyIcon, AlignLeftIcon } from \"lucide-react\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function AlignmentPickerPlugin({\n alignment\n}: {\n alignment: 'left' | 'center' | 'right' | 'justify'\n}) {\n return new ComponentPickerOption(`Align ${alignment}`, {\n icon: <AlignIcons alignment={alignment} />,\n keywords: ['align', 'justify', alignment],\n onSelect: (_, editor) =>\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, alignment),\n })\n}\n\nfunction AlignIcons({\n alignment,\n}: {\n alignment: 'left' | 'center' | 'right' | 'justify'\n}) {\n switch (alignment) {\n case 'left':\n return <AlignLeftIcon className=\"size-4\" />\n case 'center':\n return <AlignCenterIcon className=\"size-4\" />\n case 'right':\n return <AlignRightIcon className=\"size-4\" />\n case 'justify':\n return <AlignJustifyIcon className=\"size-4\" />\n }\n}\n","import { Heading1Icon, Heading2Icon, Heading3Icon } from \"lucide-react\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createHeadingNode } from \"@lexical/rich-text\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function HeadingPickerPlugin({\n n\n}: {\n n: 1 | 2 | 3\n}) {\n return new ComponentPickerOption(`Heading ${n}`, {\n icon: <HeadingIcons n={n} />,\n keywords: ['heading', 'header', `h${n}`],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createHeadingNode(`h${n}`))\n }\n }),\n })\n}\n\nfunction HeadingIcons({ n }: { n: number }) {\n switch (n) {\n case 1:\n return <Heading1Icon className=\"size-4\" />\n case 2:\n return <Heading2Icon className=\"size-4\" />\n case 3:\n return <Heading3Icon className=\"size-4\" />\n }\n}","import { TableIcon } from \"lucide-react\";\nimport { INSERT_TABLE_COMMAND } from \"@lexical/table\";\n\nimport { InsertTableDialog } from \"@/components/editor/plugins/table-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function TablePickerPlugin() {\n return new ComponentPickerOption('Table', {\n icon: <TableIcon className=\"size-4\" />,\n keywords: ['table', 'grid', 'spreadsheet', 'rows', 'columns'],\n onSelect: (_, editor, showModal) =>\n showModal('Insert Table', (onClose) => (\n <InsertTableDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}\n\n\nexport function DynamicTablePickerPlugin({queryString}: {queryString: string}) {\n const options: Array<ComponentPickerOption> = []\n\n if (queryString == null) {\n return options\n }\n\n const tableMatch = queryString.match(/^([1-9]\\d?)(?:x([1-9]\\d?)?)?$/)\n\n if (tableMatch !== null) {\n const rows = tableMatch[1]\n const colOptions = tableMatch[2]\n ? [tableMatch[2]]\n : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(String)\n\n options.push(\n ...colOptions.map(\n (columns) =>\n new ComponentPickerOption(`${rows}x${columns} Table`, {\n icon: <i className=\"icon table\" />,\n keywords: ['table'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_TABLE_COMMAND, { columns, rows }),\n })\n )\n )\n }\n\n return options\n}","import { INSERT_EMBED_COMMAND } from \"@lexical/react/LexicalAutoEmbedPlugin\";\n//@ts-ignore\nimport {\n //@ts-ignore\n CustomEmbedConfig,\n EmbedConfigs,\n} from \"@/components/editor/plugins/embeds/auto-embed-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function EmbedsPickerPlugin({\n embed,\n}: {\n embed: \"figma\" | \"tweet\" | \"youtube-video\";\n}) {\n const embedConfig = EmbedConfigs.find(\n (config) => config.type === embed\n ) as CustomEmbedConfig;\n\n return new ComponentPickerOption(`Embed ${embedConfig.contentName}`, {\n icon: embedConfig.icon,\n keywords: [...embedConfig.keywords, \"embed\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_EMBED_COMMAND, embedConfig.type),\n });\n}\n","export default [\n {\n description: 'grinning face',\n emoji: '😀',\n category: 'Smileys & Emotion',\n aliases: ['grinning'],\n tags: ['smile', 'happy'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😃',\n description: 'grinning face with big eyes',\n category: 'Smileys & Emotion',\n aliases: ['smiley'],\n tags: ['happy', 'joy', 'haha'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😄',\n description: 'grinning face with smiling eyes',\n category: 'Smileys & Emotion',\n aliases: ['smile'],\n tags: ['happy', 'joy', 'laugh', 'pleased'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😁',\n description: 'beaming face with smiling eyes',\n category: 'Smileys & Emotion',\n aliases: ['grin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😆',\n description: 'grinning squinting face',\n category: 'Smileys & Emotion',\n aliases: ['laughing', 'satisfied'],\n tags: ['happy', 'haha'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😅',\n description: 'grinning face with sweat',\n category: 'Smileys & Emotion',\n aliases: ['sweat_smile'],\n tags: ['hot'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤣',\n description: 'rolling on the floor laughing',\n category: 'Smileys & Emotion',\n aliases: ['rofl'],\n tags: ['lol', 'laughing'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '😂',\n description: 'face with tears of joy',\n category: 'Smileys & Emotion',\n aliases: ['joy'],\n tags: ['tears'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙂',\n description: 'slightly smiling face',\n category: 'Smileys & Emotion',\n aliases: ['slightly_smiling_face'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🙃',\n description: 'upside-down face',\n category: 'Smileys & Emotion',\n aliases: ['upside_down_face'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '😉',\n description: 'winking face',\n category: 'Smileys & Emotion',\n aliases: ['wink'],\n tags: ['flirt'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😊',\n description: 'smiling face with smiling eyes',\n category: 'Smileys & Emotion',\n aliases: ['blush'],\n tags: ['proud'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😇',\n description: 'smiling face with halo',\n category: 'Smileys & Emotion',\n aliases: ['innocent'],\n tags: ['angel'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥰',\n description: 'smiling face with hearts',\n category: 'Smileys & Emotion',\n aliases: ['smiling_face_with_three_hearts'],\n tags: ['love'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😍',\n description: 'smiling face with heart-eyes',\n category: 'Smileys & Emotion',\n aliases: ['heart_eyes'],\n tags: ['love', 'crush'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤩',\n description: 'star-struck',\n category: 'Smileys & Emotion',\n aliases: ['star_struck'],\n tags: ['eyes'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😘',\n description: 'face blowing a kiss',\n category: 'Smileys & Emotion',\n aliases: ['kissing_heart'],\n tags: ['flirt'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😗',\n description: 'kissing face',\n category: 'Smileys & Emotion',\n aliases: ['kissing'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '☺️',\n description: 'smiling face',\n category: 'Smileys & Emotion',\n aliases: ['relaxed'],\n tags: ['blush', 'pleased'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '😚',\n description: 'kissing face with closed eyes',\n category: 'Smileys & Emotion',\n aliases: ['kissing_closed_eyes'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😙',\n description: 'kissing face with smiling eyes',\n category: 'Smileys & Emotion',\n aliases: ['kissing_smiling_eyes'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '🥲',\n description: 'smiling face with tear',\n category: 'Smileys & Emotion',\n aliases: ['smiling_face_with_tear'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '😋',\n description: 'face savoring food',\n category: 'Smileys & Emotion',\n aliases: ['yum'],\n tags: ['tongue', 'lick'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😛',\n description: 'face with tongue',\n category: 'Smileys & Emotion',\n aliases: ['stuck_out_tongue'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😜',\n description: 'winking face with tongue',\n category: 'Smileys & Emotion',\n aliases: ['stuck_out_tongue_winking_eye'],\n tags: ['prank', 'silly'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤪',\n description: 'zany face',\n category: 'Smileys & Emotion',\n aliases: ['zany_face'],\n tags: ['goofy', 'wacky'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😝',\n description: 'squinting face with tongue',\n category: 'Smileys & Emotion',\n aliases: ['stuck_out_tongue_closed_eyes'],\n tags: ['prank'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤑',\n description: 'money-mouth face',\n category: 'Smileys & Emotion',\n aliases: ['money_mouth_face'],\n tags: ['rich'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤗',\n description: 'hugging face',\n category: 'Smileys & Emotion',\n aliases: ['hugs'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤭',\n description: 'face with hand over mouth',\n category: 'Smileys & Emotion',\n aliases: ['hand_over_mouth'],\n tags: ['quiet', 'whoops'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🤫',\n description: 'shushing face',\n category: 'Smileys & Emotion',\n aliases: ['shushing_face'],\n tags: ['silence', 'quiet'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🤔',\n description: 'thinking face',\n category: 'Smileys & Emotion',\n aliases: ['thinking'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤐',\n description: 'zipper-mouth face',\n category: 'Smileys & Emotion',\n aliases: ['zipper_mouth_face'],\n tags: ['silence', 'hush'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤨',\n description: 'face with raised eyebrow',\n category: 'Smileys & Emotion',\n aliases: ['raised_eyebrow'],\n tags: ['suspicious'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😐',\n description: 'neutral face',\n category: 'Smileys & Emotion',\n aliases: ['neutral_face'],\n tags: ['meh'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😑',\n description: 'expressionless face',\n category: 'Smileys & Emotion',\n aliases: ['expressionless'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😶',\n description: 'face without mouth',\n category: 'Smileys & Emotion',\n aliases: ['no_mouth'],\n tags: ['mute', 'silence'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😶🌫️',\n description: 'face in clouds',\n category: 'Smileys & Emotion',\n aliases: ['face_in_clouds'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n },\n {\n emoji: '😏',\n description: 'smirking face',\n category: 'Smileys & Emotion',\n aliases: ['smirk'],\n tags: ['smug'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😒',\n description: 'unamused face',\n category: 'Smileys & Emotion',\n aliases: ['unamused'],\n tags: ['meh'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙄',\n description: 'face with rolling eyes',\n category: 'Smileys & Emotion',\n aliases: ['roll_eyes'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '😬',\n description: 'grimacing face',\n category: 'Smileys & Emotion',\n aliases: ['grimacing'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😮💨',\n description: 'face exhaling',\n category: 'Smileys & Emotion',\n aliases: ['face_exhaling'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n },\n {\n emoji: '🤥',\n description: 'lying face',\n category: 'Smileys & Emotion',\n aliases: ['lying_face'],\n tags: ['liar'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '😌',\n description: 'relieved face',\n category: 'Smileys & Emotion',\n aliases: ['relieved'],\n tags: ['whew'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😔',\n description: 'pensive face',\n category: 'Smileys & Emotion',\n aliases: ['pensive'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😪',\n description: 'sleepy face',\n category: 'Smileys & Emotion',\n aliases: ['sleepy'],\n tags: ['tired'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤤',\n description: 'drooling face',\n category: 'Smileys & Emotion',\n aliases: ['drooling_face'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '😴',\n description: 'sleeping face',\n category: 'Smileys & Emotion',\n aliases: ['sleeping'],\n tags: ['zzz'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😷',\n description: 'face with medical mask',\n category: 'Smileys & Emotion',\n aliases: ['mask'],\n tags: ['sick', 'ill'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤒',\n description: 'face with thermometer',\n category: 'Smileys & Emotion',\n aliases: ['face_with_thermometer'],\n tags: ['sick'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤕',\n description: 'face with head-bandage',\n category: 'Smileys & Emotion',\n aliases: ['face_with_head_bandage'],\n tags: ['hurt'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🤢',\n description: 'nauseated face',\n category: 'Smileys & Emotion',\n aliases: ['nauseated_face'],\n tags: ['sick', 'barf', 'disgusted'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🤮',\n description: 'face vomiting',\n category: 'Smileys & Emotion',\n aliases: ['vomiting_face'],\n tags: ['barf', 'sick'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🤧',\n description: 'sneezing face',\n category: 'Smileys & Emotion',\n aliases: ['sneezing_face'],\n tags: ['achoo', 'sick'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥵',\n description: 'hot face',\n category: 'Smileys & Emotion',\n aliases: ['hot_face'],\n tags: ['heat', 'sweating'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥶',\n description: 'cold face',\n category: 'Smileys & Emotion',\n aliases: ['cold_face'],\n tags: ['freezing', 'ice'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥴',\n description: 'woozy face',\n category: 'Smileys & Emotion',\n aliases: ['woozy_face'],\n tags: ['groggy'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😵',\n description: 'knocked-out face',\n category: 'Smileys & Emotion',\n aliases: ['dizzy_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😵💫',\n description: 'face with spiral eyes',\n category: 'Smileys & Emotion',\n aliases: ['face_with_spiral_eyes'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n },\n {\n emoji: '🤯',\n description: 'exploding head',\n category: 'Smileys & Emotion',\n aliases: ['exploding_head'],\n tags: ['mind', 'blown'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🤠',\n description: 'cowboy hat face',\n category: 'Smileys & Emotion',\n aliases: ['cowboy_hat_face'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥳',\n description: 'partying face',\n category: 'Smileys & Emotion',\n aliases: ['partying_face'],\n tags: ['celebration', 'birthday'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥸',\n description: 'disguised face',\n category: 'Smileys & Emotion',\n aliases: ['disguised_face'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '😎',\n description: 'smiling face with sunglasses',\n category: 'Smileys & Emotion',\n aliases: ['sunglasses'],\n tags: ['cool'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤓',\n description: 'nerd face',\n category: 'Smileys & Emotion',\n aliases: ['nerd_face'],\n tags: ['geek', 'glasses'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🧐',\n description: 'face with monocle',\n category: 'Smileys & Emotion',\n aliases: ['monocle_face'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😕',\n description: 'confused face',\n category: 'Smileys & Emotion',\n aliases: ['confused'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😟',\n description: 'worried face',\n category: 'Smileys & Emotion',\n aliases: ['worried'],\n tags: ['nervous'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '🙁',\n description: 'slightly frowning face',\n category: 'Smileys & Emotion',\n aliases: ['slightly_frowning_face'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '☹️',\n description: 'frowning face',\n category: 'Smileys & Emotion',\n aliases: ['frowning_face'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '😮',\n description: 'face with open mouth',\n category: 'Smileys & Emotion',\n aliases: ['open_mouth'],\n tags: ['surprise', 'impressed', 'wow'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😯',\n description: 'hushed face',\n category: 'Smileys & Emotion',\n aliases: ['hushed'],\n tags: ['silence', 'speechless'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😲',\n description: 'astonished face',\n category: 'Smileys & Emotion',\n aliases: ['astonished'],\n tags: ['amazed', 'gasp'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😳',\n description: 'flushed face',\n category: 'Smileys & Emotion',\n aliases: ['flushed'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥺',\n description: 'pleading face',\n category: 'Smileys & Emotion',\n aliases: ['pleading_face'],\n tags: ['puppy', 'eyes'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😦',\n description: 'frowning face with open mouth',\n category: 'Smileys & Emotion',\n aliases: ['frowning'],\n tags: [],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😧',\n description: 'anguished face',\n category: 'Smileys & Emotion',\n aliases: ['anguished'],\n tags: ['stunned'],\n unicode_version: '6.1',\n ios_version: '6.0',\n },\n {\n emoji: '😨',\n description: 'fearful face',\n category: 'Smileys & Emotion',\n aliases: ['fearful'],\n tags: ['scared', 'shocked', 'oops'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😰',\n description: 'anxious face with sweat',\n category: 'Smileys & Emotion',\n aliases: ['cold_sweat'],\n tags: ['nervous'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😥',\n description: 'sad but relieved face',\n category: 'Smileys & Emotion',\n aliases: ['disappointed_relieved'],\n tags: ['phew', 'sweat', 'nervous'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😢',\n description: 'crying face',\n category: 'Smileys & Emotion',\n aliases: ['cry'],\n tags: ['sad', 'tear'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😭',\n description: 'loudly crying face',\n category: 'Smileys & Emotion',\n aliases: ['sob'],\n tags: ['sad', 'cry', 'bawling'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😱',\n description: 'face screaming in fear',\n category: 'Smileys & Emotion',\n aliases: ['scream'],\n tags: ['horror', 'shocked'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😖',\n description: 'confounded face',\n category: 'Smileys & Emotion',\n aliases: ['confounded'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😣',\n description: 'persevering face',\n category: 'Smileys & Emotion',\n aliases: ['persevere'],\n tags: ['struggling'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😞',\n description: 'disappointed face',\n category: 'Smileys & Emotion',\n aliases: ['disappointed'],\n tags: ['sad'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😓',\n description: 'downcast face with sweat',\n category: 'Smileys & Emotion',\n aliases: ['sweat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😩',\n description: 'weary face',\n category: 'Smileys & Emotion',\n aliases: ['weary'],\n tags: ['tired'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😫',\n description: 'tired face',\n category: 'Smileys & Emotion',\n aliases: ['tired_face'],\n tags: ['upset', 'whine'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥱',\n description: 'yawning face',\n category: 'Smileys & Emotion',\n aliases: ['yawning_face'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '😤',\n description: 'face with steam from nose',\n category: 'Smileys & Emotion',\n aliases: ['triumph'],\n tags: ['smug'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😡',\n description: 'pouting face',\n category: 'Smileys & Emotion',\n aliases: ['rage', 'pout'],\n tags: ['angry'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😠',\n description: 'angry face',\n category: 'Smileys & Emotion',\n aliases: ['angry'],\n tags: ['mad', 'annoyed'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤬',\n description: 'face with symbols on mouth',\n category: 'Smileys & Emotion',\n aliases: ['cursing_face'],\n tags: ['foul'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '😈',\n description: 'smiling face with horns',\n category: 'Smileys & Emotion',\n aliases: ['smiling_imp'],\n tags: ['devil', 'evil', 'horns'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👿',\n description: 'angry face with horns',\n category: 'Smileys & Emotion',\n aliases: ['imp'],\n tags: ['angry', 'devil', 'evil', 'horns'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💀',\n description: 'skull',\n category: 'Smileys & Emotion',\n aliases: ['skull'],\n tags: ['dead', 'danger', 'poison'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☠️',\n description: 'skull and crossbones',\n category: 'Smileys & Emotion',\n aliases: ['skull_and_crossbones'],\n tags: ['danger', 'pirate'],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '💩',\n description: 'pile of poo',\n category: 'Smileys & Emotion',\n aliases: ['hankey', 'poop', 'shit'],\n tags: ['crap'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤡',\n description: 'clown face',\n category: 'Smileys & Emotion',\n aliases: ['clown_face'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '👹',\n description: 'ogre',\n category: 'Smileys & Emotion',\n aliases: ['japanese_ogre'],\n tags: ['monster'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👺',\n description: 'goblin',\n category: 'Smileys & Emotion',\n aliases: ['japanese_goblin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👻',\n description: 'ghost',\n category: 'Smileys & Emotion',\n aliases: ['ghost'],\n tags: ['halloween'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👽',\n description: 'alien',\n category: 'Smileys & Emotion',\n aliases: ['alien'],\n tags: ['ufo'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👾',\n description: 'alien monster',\n category: 'Smileys & Emotion',\n aliases: ['space_invader'],\n tags: ['game', 'retro'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤖',\n description: 'robot',\n category: 'Smileys & Emotion',\n aliases: ['robot'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '😺',\n description: 'grinning cat',\n category: 'Smileys & Emotion',\n aliases: ['smiley_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😸',\n description: 'grinning cat with smiling eyes',\n category: 'Smileys & Emotion',\n aliases: ['smile_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😹',\n description: 'cat with tears of joy',\n category: 'Smileys & Emotion',\n aliases: ['joy_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😻',\n description: 'smiling cat with heart-eyes',\n category: 'Smileys & Emotion',\n aliases: ['heart_eyes_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😼',\n description: 'cat with wry smile',\n category: 'Smileys & Emotion',\n aliases: ['smirk_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😽',\n description: 'kissing cat',\n category: 'Smileys & Emotion',\n aliases: ['kissing_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙀',\n description: 'weary cat',\n category: 'Smileys & Emotion',\n aliases: ['scream_cat'],\n tags: ['horror'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😿',\n description: 'crying cat',\n category: 'Smileys & Emotion',\n aliases: ['crying_cat_face'],\n tags: ['sad', 'tear'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '😾',\n description: 'pouting cat',\n category: 'Smileys & Emotion',\n aliases: ['pouting_cat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙈',\n description: 'see-no-evil monkey',\n category: 'Smileys & Emotion',\n aliases: ['see_no_evil'],\n tags: ['monkey', 'blind', 'ignore'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙉',\n description: 'hear-no-evil monkey',\n category: 'Smileys & Emotion',\n aliases: ['hear_no_evil'],\n tags: ['monkey', 'deaf'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🙊',\n description: 'speak-no-evil monkey',\n category: 'Smileys & Emotion',\n aliases: ['speak_no_evil'],\n tags: ['monkey', 'mute', 'hush'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💋',\n description: 'kiss mark',\n category: 'Smileys & Emotion',\n aliases: ['kiss'],\n tags: ['lipstick'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💌',\n description: 'love letter',\n category: 'Smileys & Emotion',\n aliases: ['love_letter'],\n tags: ['email', 'envelope'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💘',\n description: 'heart with arrow',\n category: 'Smileys & Emotion',\n aliases: ['cupid'],\n tags: ['love', 'heart'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💝',\n description: 'heart with ribbon',\n category: 'Smileys & Emotion',\n aliases: ['gift_heart'],\n tags: ['chocolates'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💖',\n description: 'sparkling heart',\n category: 'Smileys & Emotion',\n aliases: ['sparkling_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💗',\n description: 'growing heart',\n category: 'Smileys & Emotion',\n aliases: ['heartpulse'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💓',\n description: 'beating heart',\n category: 'Smileys & Emotion',\n aliases: ['heartbeat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💞',\n description: 'revolving hearts',\n category: 'Smileys & Emotion',\n aliases: ['revolving_hearts'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💕',\n description: 'two hearts',\n category: 'Smileys & Emotion',\n aliases: ['two_hearts'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💟',\n description: 'heart decoration',\n category: 'Smileys & Emotion',\n aliases: ['heart_decoration'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❣️',\n description: 'heart exclamation',\n category: 'Smileys & Emotion',\n aliases: ['heavy_heart_exclamation'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '💔',\n description: 'broken heart',\n category: 'Smileys & Emotion',\n aliases: ['broken_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❤️🔥',\n description: 'heart on fire',\n category: 'Smileys & Emotion',\n aliases: ['heart_on_fire'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n },\n {\n emoji: '❤️🩹',\n description: 'mending heart',\n category: 'Smileys & Emotion',\n aliases: ['mending_heart'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n },\n {\n emoji: '❤️',\n description: 'red heart',\n category: 'Smileys & Emotion',\n aliases: ['heart'],\n tags: ['love'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🧡',\n description: 'orange heart',\n category: 'Smileys & Emotion',\n aliases: ['orange_heart'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '💛',\n description: 'yellow heart',\n category: 'Smileys & Emotion',\n aliases: ['yellow_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💚',\n description: 'green heart',\n category: 'Smileys & Emotion',\n aliases: ['green_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💙',\n description: 'blue heart',\n category: 'Smileys & Emotion',\n aliases: ['blue_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💜',\n description: 'purple heart',\n category: 'Smileys & Emotion',\n aliases: ['purple_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤎',\n description: 'brown heart',\n category: 'Smileys & Emotion',\n aliases: ['brown_heart'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🖤',\n description: 'black heart',\n category: 'Smileys & Emotion',\n aliases: ['black_heart'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🤍',\n description: 'white heart',\n category: 'Smileys & Emotion',\n aliases: ['white_heart'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '💯',\n description: 'hundred points',\n category: 'Smileys & Emotion',\n aliases: ['100'],\n tags: ['score', 'perfect'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💢',\n description: 'anger symbol',\n category: 'Smileys & Emotion',\n aliases: ['anger'],\n tags: ['angry'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💥',\n description: 'collision',\n category: 'Smileys & Emotion',\n aliases: ['boom', 'collision'],\n tags: ['explode'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💫',\n description: 'dizzy',\n category: 'Smileys & Emotion',\n aliases: ['dizzy'],\n tags: ['star'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💦',\n description: 'sweat droplets',\n category: 'Smileys & Emotion',\n aliases: ['sweat_drops'],\n tags: ['water', 'workout'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💨',\n description: 'dashing away',\n category: 'Smileys & Emotion',\n aliases: ['dash'],\n tags: ['wind', 'blow', 'fast'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕳️',\n description: 'hole',\n category: 'Smileys & Emotion',\n aliases: ['hole'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '💣',\n description: 'bomb',\n category: 'Smileys & Emotion',\n aliases: ['bomb'],\n tags: ['boom'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💬',\n description: 'speech balloon',\n category: 'Smileys & Emotion',\n aliases: ['speech_balloon'],\n tags: ['comment'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👁️🗨️',\n description: 'eye in speech bubble',\n category: 'Smileys & Emotion',\n aliases: ['eye_speech_bubble'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🗨️',\n description: 'left speech bubble',\n category: 'Smileys & Emotion',\n aliases: ['left_speech_bubble'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🗯️',\n description: 'right anger bubble',\n category: 'Smileys & Emotion',\n aliases: ['right_anger_bubble'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '💭',\n description: 'thought balloon',\n category: 'Smileys & Emotion',\n aliases: ['thought_balloon'],\n tags: ['thinking'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💤',\n description: 'zzz',\n category: 'Smileys & Emotion',\n aliases: ['zzz'],\n tags: ['sleeping'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👋',\n description: 'waving hand',\n category: 'People & Body',\n aliases: ['wave'],\n tags: ['goodbye'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤚',\n description: 'raised back of hand',\n category: 'People & Body',\n aliases: ['raised_back_of_hand'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🖐️',\n description: 'hand with fingers splayed',\n category: 'People & Body',\n aliases: ['raised_hand_with_fingers_splayed'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '✋',\n description: 'raised hand',\n category: 'People & Body',\n aliases: ['hand', 'raised_hand'],\n tags: ['highfive', 'stop'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🖖',\n description: 'vulcan salute',\n category: 'People & Body',\n aliases: ['vulcan_salute'],\n tags: ['prosper', 'spock'],\n unicode_version: '7.0',\n ios_version: '8.3',\n skin_tones: true,\n },\n {\n emoji: '👌',\n description: 'OK hand',\n category: 'People & Body',\n aliases: ['ok_hand'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤌',\n description: 'pinched fingers',\n category: 'People & Body',\n aliases: ['pinched_fingers'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🤏',\n description: 'pinching hand',\n category: 'People & Body',\n aliases: ['pinching_hand'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '✌️',\n description: 'victory hand',\n category: 'People & Body',\n aliases: ['v'],\n tags: ['victory', 'peace'],\n unicode_version: '',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤞',\n description: 'crossed fingers',\n category: 'People & Body',\n aliases: ['crossed_fingers'],\n tags: ['luck', 'hopeful'],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤟',\n description: 'love-you gesture',\n category: 'People & Body',\n aliases: ['love_you_gesture'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤘',\n description: 'sign of the horns',\n category: 'People & Body',\n aliases: ['metal'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '🤙',\n description: 'call me hand',\n category: 'People & Body',\n aliases: ['call_me_hand'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👈',\n description: 'backhand index pointing left',\n category: 'People & Body',\n aliases: ['point_left'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👉',\n description: 'backhand index pointing right',\n category: 'People & Body',\n aliases: ['point_right'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👆',\n description: 'backhand index pointing up',\n category: 'People & Body',\n aliases: ['point_up_2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🖕',\n description: 'middle finger',\n category: 'People & Body',\n aliases: ['middle_finger', 'fu'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '👇',\n description: 'backhand index pointing down',\n category: 'People & Body',\n aliases: ['point_down'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '☝️',\n description: 'index pointing up',\n category: 'People & Body',\n aliases: ['point_up'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👍',\n description: 'thumbs up',\n category: 'People & Body',\n aliases: ['+1', 'thumbsup'],\n tags: ['approve', 'ok'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👎',\n description: 'thumbs down',\n category: 'People & Body',\n aliases: ['-1', 'thumbsdown'],\n tags: ['disapprove', 'bury'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '✊',\n description: 'raised fist',\n category: 'People & Body',\n aliases: ['fist_raised', 'fist'],\n tags: ['power'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👊',\n description: 'oncoming fist',\n category: 'People & Body',\n aliases: ['fist_oncoming', 'facepunch', 'punch'],\n tags: ['attack'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤛',\n description: 'left-facing fist',\n category: 'People & Body',\n aliases: ['fist_left'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤜',\n description: 'right-facing fist',\n category: 'People & Body',\n aliases: ['fist_right'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👏',\n description: 'clapping hands',\n category: 'People & Body',\n aliases: ['clap'],\n tags: ['praise', 'applause'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙌',\n description: 'raising hands',\n category: 'People & Body',\n aliases: ['raised_hands'],\n tags: ['hooray'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👐',\n description: 'open hands',\n category: 'People & Body',\n aliases: ['open_hands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤲',\n description: 'palms up together',\n category: 'People & Body',\n aliases: ['palms_up_together'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤝',\n description: 'handshake',\n category: 'People & Body',\n aliases: ['handshake'],\n tags: ['deal'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🙏',\n description: 'folded hands',\n category: 'People & Body',\n aliases: ['pray'],\n tags: ['please', 'hope', 'wish'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '✍️',\n description: 'writing hand',\n category: 'People & Body',\n aliases: ['writing_hand'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '💅',\n description: 'nail polish',\n category: 'People & Body',\n aliases: ['nail_care'],\n tags: ['beauty', 'manicure'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤳',\n description: 'selfie',\n category: 'People & Body',\n aliases: ['selfie'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '💪',\n description: 'flexed biceps',\n category: 'People & Body',\n aliases: ['muscle'],\n tags: ['flex', 'bicep', 'strong', 'workout'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🦾',\n description: 'mechanical arm',\n category: 'People & Body',\n aliases: ['mechanical_arm'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦿',\n description: 'mechanical leg',\n category: 'People & Body',\n aliases: ['mechanical_leg'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦵',\n description: 'leg',\n category: 'People & Body',\n aliases: ['leg'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦶',\n description: 'foot',\n category: 'People & Body',\n aliases: ['foot'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👂',\n description: 'ear',\n category: 'People & Body',\n aliases: ['ear'],\n tags: ['hear', 'sound', 'listen'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🦻',\n description: 'ear with hearing aid',\n category: 'People & Body',\n aliases: ['ear_with_hearing_aid'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '👃',\n description: 'nose',\n category: 'People & Body',\n aliases: ['nose'],\n tags: ['smell'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🧠',\n description: 'brain',\n category: 'People & Body',\n aliases: ['brain'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🫀',\n description: 'anatomical heart',\n category: 'People & Body',\n aliases: ['anatomical_heart'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🫁',\n description: 'lungs',\n category: 'People & Body',\n aliases: ['lungs'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦷',\n description: 'tooth',\n category: 'People & Body',\n aliases: ['tooth'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦴',\n description: 'bone',\n category: 'People & Body',\n aliases: ['bone'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '👀',\n description: 'eyes',\n category: 'People & Body',\n aliases: ['eyes'],\n tags: ['look', 'see', 'watch'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👁️',\n description: 'eye',\n category: 'People & Body',\n aliases: ['eye'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '👅',\n description: 'tongue',\n category: 'People & Body',\n aliases: ['tongue'],\n tags: ['taste'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👄',\n description: 'mouth',\n category: 'People & Body',\n aliases: ['lips'],\n tags: ['kiss'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👶',\n description: 'baby',\n category: 'People & Body',\n aliases: ['baby'],\n tags: ['child', 'newborn'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🧒',\n description: 'child',\n category: 'People & Body',\n aliases: ['child'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👦',\n description: 'boy',\n category: 'People & Body',\n aliases: ['boy'],\n tags: ['child'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👧',\n description: 'girl',\n category: 'People & Body',\n aliases: ['girl'],\n tags: ['child'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🧑',\n description: 'person',\n category: 'People & Body',\n aliases: ['adult'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👱',\n description: 'person: blond hair',\n category: 'People & Body',\n aliases: ['blond_haired_person'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👨',\n description: 'man',\n category: 'People & Body',\n aliases: ['man'],\n tags: ['mustache', 'father', 'dad'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🧔',\n description: 'person: beard',\n category: 'People & Body',\n aliases: ['bearded_person'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧔♂️',\n description: 'man: beard',\n category: 'People & Body',\n aliases: ['man_beard'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🧔♀️',\n description: 'woman: beard',\n category: 'People & Body',\n aliases: ['woman_beard'],\n tags: [],\n unicode_version: '13.1',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👨🦰',\n description: 'man: red hair',\n category: 'People & Body',\n aliases: ['red_haired_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👨🦱',\n description: 'man: curly hair',\n category: 'People & Body',\n aliases: ['curly_haired_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👨🦳',\n description: 'man: white hair',\n category: 'People & Body',\n aliases: ['white_haired_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👨🦲',\n description: 'man: bald',\n category: 'People & Body',\n aliases: ['bald_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👩',\n description: 'woman',\n category: 'People & Body',\n aliases: ['woman'],\n tags: ['girls'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👩🦰',\n description: 'woman: red hair',\n category: 'People & Body',\n aliases: ['red_haired_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧑🦰',\n description: 'person: red hair',\n category: 'People & Body',\n aliases: ['person_red_hair'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👩🦱',\n description: 'woman: curly hair',\n category: 'People & Body',\n aliases: ['curly_haired_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧑🦱',\n description: 'person: curly hair',\n category: 'People & Body',\n aliases: ['person_curly_hair'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👩🦳',\n description: 'woman: white hair',\n category: 'People & Body',\n aliases: ['white_haired_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧑🦳',\n description: 'person: white hair',\n category: 'People & Body',\n aliases: ['person_white_hair'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👩🦲',\n description: 'woman: bald',\n category: 'People & Body',\n aliases: ['bald_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧑🦲',\n description: 'person: bald',\n category: 'People & Body',\n aliases: ['person_bald'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👱♀️',\n description: 'woman: blond hair',\n category: 'People & Body',\n aliases: ['blond_haired_woman', 'blonde_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '👱♂️',\n description: 'man: blond hair',\n category: 'People & Body',\n aliases: ['blond_haired_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧓',\n description: 'older person',\n category: 'People & Body',\n aliases: ['older_adult'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👴',\n description: 'old man',\n category: 'People & Body',\n aliases: ['older_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👵',\n description: 'old woman',\n category: 'People & Body',\n aliases: ['older_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙍',\n description: 'person frowning',\n category: 'People & Body',\n aliases: ['frowning_person'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙍♂️',\n description: 'man frowning',\n category: 'People & Body',\n aliases: ['frowning_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🙍♀️',\n description: 'woman frowning',\n category: 'People & Body',\n aliases: ['frowning_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🙎',\n description: 'person pouting',\n category: 'People & Body',\n aliases: ['pouting_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙎♂️',\n description: 'man pouting',\n category: 'People & Body',\n aliases: ['pouting_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🙎♀️',\n description: 'woman pouting',\n category: 'People & Body',\n aliases: ['pouting_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🙅',\n description: 'person gesturing NO',\n category: 'People & Body',\n aliases: ['no_good'],\n tags: ['stop', 'halt', 'denied'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙅♂️',\n description: 'man gesturing NO',\n category: 'People & Body',\n aliases: ['no_good_man', 'ng_man'],\n tags: ['stop', 'halt', 'denied'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🙅♀️',\n description: 'woman gesturing NO',\n category: 'People & Body',\n aliases: ['no_good_woman', 'ng_woman'],\n tags: ['stop', 'halt', 'denied'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🙆',\n description: 'person gesturing OK',\n category: 'People & Body',\n aliases: ['ok_person'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙆♂️',\n description: 'man gesturing OK',\n category: 'People & Body',\n aliases: ['ok_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🙆♀️',\n description: 'woman gesturing OK',\n category: 'People & Body',\n aliases: ['ok_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '💁',\n description: 'person tipping hand',\n category: 'People & Body',\n aliases: ['tipping_hand_person', 'information_desk_person'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '💁♂️',\n description: 'man tipping hand',\n category: 'People & Body',\n aliases: ['tipping_hand_man', 'sassy_man'],\n tags: ['information'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '💁♀️',\n description: 'woman tipping hand',\n category: 'People & Body',\n aliases: ['tipping_hand_woman', 'sassy_woman'],\n tags: ['information'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🙋',\n description: 'person raising hand',\n category: 'People & Body',\n aliases: ['raising_hand'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙋♂️',\n description: 'man raising hand',\n category: 'People & Body',\n aliases: ['raising_hand_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🙋♀️',\n description: 'woman raising hand',\n category: 'People & Body',\n aliases: ['raising_hand_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧏',\n description: 'deaf person',\n category: 'People & Body',\n aliases: ['deaf_person'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧏♂️',\n description: 'deaf man',\n category: 'People & Body',\n aliases: ['deaf_man'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧏♀️',\n description: 'deaf woman',\n category: 'People & Body',\n aliases: ['deaf_woman'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🙇',\n description: 'person bowing',\n category: 'People & Body',\n aliases: ['bow'],\n tags: ['respect', 'thanks'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🙇♂️',\n description: 'man bowing',\n category: 'People & Body',\n aliases: ['bowing_man'],\n tags: ['respect', 'thanks'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🙇♀️',\n description: 'woman bowing',\n category: 'People & Body',\n aliases: ['bowing_woman'],\n tags: ['respect', 'thanks'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🤦',\n description: 'person facepalming',\n category: 'People & Body',\n aliases: ['facepalm'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤦♂️',\n description: 'man facepalming',\n category: 'People & Body',\n aliases: ['man_facepalming'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤦♀️',\n description: 'woman facepalming',\n category: 'People & Body',\n aliases: ['woman_facepalming'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤷',\n description: 'person shrugging',\n category: 'People & Body',\n aliases: ['shrug'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤷♂️',\n description: 'man shrugging',\n category: 'People & Body',\n aliases: ['man_shrugging'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤷♀️',\n description: 'woman shrugging',\n category: 'People & Body',\n aliases: ['woman_shrugging'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑⚕️',\n description: 'health worker',\n category: 'People & Body',\n aliases: ['health_worker'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨⚕️',\n description: 'man health worker',\n category: 'People & Body',\n aliases: ['man_health_worker'],\n tags: ['doctor', 'nurse'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩⚕️',\n description: 'woman health worker',\n category: 'People & Body',\n aliases: ['woman_health_worker'],\n tags: ['doctor', 'nurse'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🎓',\n description: 'student',\n category: 'People & Body',\n aliases: ['student'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🎓',\n description: 'man student',\n category: 'People & Body',\n aliases: ['man_student'],\n tags: ['graduation'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🎓',\n description: 'woman student',\n category: 'People & Body',\n aliases: ['woman_student'],\n tags: ['graduation'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🏫',\n description: 'teacher',\n category: 'People & Body',\n aliases: ['teacher'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🏫',\n description: 'man teacher',\n category: 'People & Body',\n aliases: ['man_teacher'],\n tags: ['school', 'professor'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🏫',\n description: 'woman teacher',\n category: 'People & Body',\n aliases: ['woman_teacher'],\n tags: ['school', 'professor'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑⚖️',\n description: 'judge',\n category: 'People & Body',\n aliases: ['judge'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨⚖️',\n description: 'man judge',\n category: 'People & Body',\n aliases: ['man_judge'],\n tags: ['justice'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩⚖️',\n description: 'woman judge',\n category: 'People & Body',\n aliases: ['woman_judge'],\n tags: ['justice'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🌾',\n description: 'farmer',\n category: 'People & Body',\n aliases: ['farmer'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🌾',\n description: 'man farmer',\n category: 'People & Body',\n aliases: ['man_farmer'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🌾',\n description: 'woman farmer',\n category: 'People & Body',\n aliases: ['woman_farmer'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🍳',\n description: 'cook',\n category: 'People & Body',\n aliases: ['cook'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🍳',\n description: 'man cook',\n category: 'People & Body',\n aliases: ['man_cook'],\n tags: ['chef'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🍳',\n description: 'woman cook',\n category: 'People & Body',\n aliases: ['woman_cook'],\n tags: ['chef'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🔧',\n description: 'mechanic',\n category: 'People & Body',\n aliases: ['mechanic'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🔧',\n description: 'man mechanic',\n category: 'People & Body',\n aliases: ['man_mechanic'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🔧',\n description: 'woman mechanic',\n category: 'People & Body',\n aliases: ['woman_mechanic'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🏭',\n description: 'factory worker',\n category: 'People & Body',\n aliases: ['factory_worker'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🏭',\n description: 'man factory worker',\n category: 'People & Body',\n aliases: ['man_factory_worker'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🏭',\n description: 'woman factory worker',\n category: 'People & Body',\n aliases: ['woman_factory_worker'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑💼',\n description: 'office worker',\n category: 'People & Body',\n aliases: ['office_worker'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨💼',\n description: 'man office worker',\n category: 'People & Body',\n aliases: ['man_office_worker'],\n tags: ['business'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩💼',\n description: 'woman office worker',\n category: 'People & Body',\n aliases: ['woman_office_worker'],\n tags: ['business'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🔬',\n description: 'scientist',\n category: 'People & Body',\n aliases: ['scientist'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🔬',\n description: 'man scientist',\n category: 'People & Body',\n aliases: ['man_scientist'],\n tags: ['research'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🔬',\n description: 'woman scientist',\n category: 'People & Body',\n aliases: ['woman_scientist'],\n tags: ['research'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑💻',\n description: 'technologist',\n category: 'People & Body',\n aliases: ['technologist'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨💻',\n description: 'man technologist',\n category: 'People & Body',\n aliases: ['man_technologist'],\n tags: ['coder'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩💻',\n description: 'woman technologist',\n category: 'People & Body',\n aliases: ['woman_technologist'],\n tags: ['coder'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🎤',\n description: 'singer',\n category: 'People & Body',\n aliases: ['singer'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🎤',\n description: 'man singer',\n category: 'People & Body',\n aliases: ['man_singer'],\n tags: ['rockstar'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🎤',\n description: 'woman singer',\n category: 'People & Body',\n aliases: ['woman_singer'],\n tags: ['rockstar'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🎨',\n description: 'artist',\n category: 'People & Body',\n aliases: ['artist'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🎨',\n description: 'man artist',\n category: 'People & Body',\n aliases: ['man_artist'],\n tags: ['painter'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🎨',\n description: 'woman artist',\n category: 'People & Body',\n aliases: ['woman_artist'],\n tags: ['painter'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑✈️',\n description: 'pilot',\n category: 'People & Body',\n aliases: ['pilot'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨✈️',\n description: 'man pilot',\n category: 'People & Body',\n aliases: ['man_pilot'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩✈️',\n description: 'woman pilot',\n category: 'People & Body',\n aliases: ['woman_pilot'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🚀',\n description: 'astronaut',\n category: 'People & Body',\n aliases: ['astronaut'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🚀',\n description: 'man astronaut',\n category: 'People & Body',\n aliases: ['man_astronaut'],\n tags: ['space'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🚀',\n description: 'woman astronaut',\n category: 'People & Body',\n aliases: ['woman_astronaut'],\n tags: ['space'],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🚒',\n description: 'firefighter',\n category: 'People & Body',\n aliases: ['firefighter'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🚒',\n description: 'man firefighter',\n category: 'People & Body',\n aliases: ['man_firefighter'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👩🚒',\n description: 'woman firefighter',\n category: 'People & Body',\n aliases: ['woman_firefighter'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👮',\n description: 'police officer',\n category: 'People & Body',\n aliases: ['police_officer', 'cop'],\n tags: ['law'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👮♂️',\n description: 'man police officer',\n category: 'People & Body',\n aliases: ['policeman'],\n tags: ['law', 'cop'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👮♀️',\n description: 'woman police officer',\n category: 'People & Body',\n aliases: ['policewoman'],\n tags: ['law', 'cop'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🕵️',\n description: 'detective',\n category: 'People & Body',\n aliases: ['detective'],\n tags: ['sleuth'],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '🕵️♂️',\n description: 'man detective',\n category: 'People & Body',\n aliases: ['male_detective'],\n tags: ['sleuth'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🕵️♀️',\n description: 'woman detective',\n category: 'People & Body',\n aliases: ['female_detective'],\n tags: ['sleuth'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '💂',\n description: 'guard',\n category: 'People & Body',\n aliases: ['guard'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '💂♂️',\n description: 'man guard',\n category: 'People & Body',\n aliases: ['guardsman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '💂♀️',\n description: 'woman guard',\n category: 'People & Body',\n aliases: ['guardswoman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🥷',\n description: 'ninja',\n category: 'People & Body',\n aliases: ['ninja'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👷',\n description: 'construction worker',\n category: 'People & Body',\n aliases: ['construction_worker'],\n tags: ['helmet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👷♂️',\n description: 'man construction worker',\n category: 'People & Body',\n aliases: ['construction_worker_man'],\n tags: ['helmet'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👷♀️',\n description: 'woman construction worker',\n category: 'People & Body',\n aliases: ['construction_worker_woman'],\n tags: ['helmet'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🤴',\n description: 'prince',\n category: 'People & Body',\n aliases: ['prince'],\n tags: ['crown', 'royal'],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '👸',\n description: 'princess',\n category: 'People & Body',\n aliases: ['princess'],\n tags: ['crown', 'royal'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👳',\n description: 'person wearing turban',\n category: 'People & Body',\n aliases: ['person_with_turban'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👳♂️',\n description: 'man wearing turban',\n category: 'People & Body',\n aliases: ['man_with_turban'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👳♀️',\n description: 'woman wearing turban',\n category: 'People & Body',\n aliases: ['woman_with_turban'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '👲',\n description: 'person with skullcap',\n category: 'People & Body',\n aliases: ['man_with_gua_pi_mao'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🧕',\n description: 'woman with headscarf',\n category: 'People & Body',\n aliases: ['woman_with_headscarf'],\n tags: ['hijab'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤵',\n description: 'person in tuxedo',\n category: 'People & Body',\n aliases: ['person_in_tuxedo'],\n tags: ['groom', 'marriage', 'wedding'],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤵♂️',\n description: 'man in tuxedo',\n category: 'People & Body',\n aliases: ['man_in_tuxedo'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🤵♀️',\n description: 'woman in tuxedo',\n category: 'People & Body',\n aliases: ['woman_in_tuxedo'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👰',\n description: 'person with veil',\n category: 'People & Body',\n aliases: ['person_with_veil'],\n tags: ['marriage', 'wedding'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👰♂️',\n description: 'man with veil',\n category: 'People & Body',\n aliases: ['man_with_veil'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👰♀️',\n description: 'woman with veil',\n category: 'People & Body',\n aliases: ['woman_with_veil', 'bride_with_veil'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🤰',\n description: 'pregnant woman',\n category: 'People & Body',\n aliases: ['pregnant_woman'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤱',\n description: 'breast-feeding',\n category: 'People & Body',\n aliases: ['breast_feeding'],\n tags: ['nursing'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👩🍼',\n description: 'woman feeding baby',\n category: 'People & Body',\n aliases: ['woman_feeding_baby'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👨🍼',\n description: 'man feeding baby',\n category: 'People & Body',\n aliases: ['man_feeding_baby'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🧑🍼',\n description: 'person feeding baby',\n category: 'People & Body',\n aliases: ['person_feeding_baby'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '👼',\n description: 'baby angel',\n category: 'People & Body',\n aliases: ['angel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🎅',\n description: 'Santa Claus',\n category: 'People & Body',\n aliases: ['santa'],\n tags: ['christmas'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🤶',\n description: 'Mrs. Claus',\n category: 'People & Body',\n aliases: ['mrs_claus'],\n tags: ['santa'],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧑🎄',\n description: 'mx claus',\n category: 'People & Body',\n aliases: ['mx_claus'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n skin_tones: true,\n },\n {\n emoji: '🦸',\n description: 'superhero',\n category: 'People & Body',\n aliases: ['superhero'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦸♂️',\n description: 'man superhero',\n category: 'People & Body',\n aliases: ['superhero_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦸♀️',\n description: 'woman superhero',\n category: 'People & Body',\n aliases: ['superhero_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦹',\n description: 'supervillain',\n category: 'People & Body',\n aliases: ['supervillain'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦹♂️',\n description: 'man supervillain',\n category: 'People & Body',\n aliases: ['supervillain_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🦹♀️',\n description: 'woman supervillain',\n category: 'People & Body',\n aliases: ['supervillain_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧙',\n description: 'mage',\n category: 'People & Body',\n aliases: ['mage'],\n tags: ['wizard'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧙♂️',\n description: 'man mage',\n category: 'People & Body',\n aliases: ['mage_man'],\n tags: ['wizard'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧙♀️',\n description: 'woman mage',\n category: 'People & Body',\n aliases: ['mage_woman'],\n tags: ['wizard'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧚',\n description: 'fairy',\n category: 'People & Body',\n aliases: ['fairy'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧚♂️',\n description: 'man fairy',\n category: 'People & Body',\n aliases: ['fairy_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧚♀️',\n description: 'woman fairy',\n category: 'People & Body',\n aliases: ['fairy_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧛',\n description: 'vampire',\n category: 'People & Body',\n aliases: ['vampire'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧛♂️',\n description: 'man vampire',\n category: 'People & Body',\n aliases: ['vampire_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧛♀️',\n description: 'woman vampire',\n category: 'People & Body',\n aliases: ['vampire_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧜',\n description: 'merperson',\n category: 'People & Body',\n aliases: ['merperson'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧜♂️',\n description: 'merman',\n category: 'People & Body',\n aliases: ['merman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧜♀️',\n description: 'mermaid',\n category: 'People & Body',\n aliases: ['mermaid'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧝',\n description: 'elf',\n category: 'People & Body',\n aliases: ['elf'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧝♂️',\n description: 'man elf',\n category: 'People & Body',\n aliases: ['elf_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧝♀️',\n description: 'woman elf',\n category: 'People & Body',\n aliases: ['elf_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧞',\n description: 'genie',\n category: 'People & Body',\n aliases: ['genie'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧞♂️',\n description: 'man genie',\n category: 'People & Body',\n aliases: ['genie_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧞♀️',\n description: 'woman genie',\n category: 'People & Body',\n aliases: ['genie_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧟',\n description: 'zombie',\n category: 'People & Body',\n aliases: ['zombie'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧟♂️',\n description: 'man zombie',\n category: 'People & Body',\n aliases: ['zombie_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧟♀️',\n description: 'woman zombie',\n category: 'People & Body',\n aliases: ['zombie_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '💆',\n description: 'person getting massage',\n category: 'People & Body',\n aliases: ['massage'],\n tags: ['spa'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '💆♂️',\n description: 'man getting massage',\n category: 'People & Body',\n aliases: ['massage_man'],\n tags: ['spa'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '💆♀️',\n description: 'woman getting massage',\n category: 'People & Body',\n aliases: ['massage_woman'],\n tags: ['spa'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '💇',\n description: 'person getting haircut',\n category: 'People & Body',\n aliases: ['haircut'],\n tags: ['beauty'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '💇♂️',\n description: 'man getting haircut',\n category: 'People & Body',\n aliases: ['haircut_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '💇♀️',\n description: 'woman getting haircut',\n category: 'People & Body',\n aliases: ['haircut_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🚶',\n description: 'person walking',\n category: 'People & Body',\n aliases: ['walking'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🚶♂️',\n description: 'man walking',\n category: 'People & Body',\n aliases: ['walking_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🚶♀️',\n description: 'woman walking',\n category: 'People & Body',\n aliases: ['walking_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🧍',\n description: 'person standing',\n category: 'People & Body',\n aliases: ['standing_person'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧍♂️',\n description: 'man standing',\n category: 'People & Body',\n aliases: ['standing_man'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧍♀️',\n description: 'woman standing',\n category: 'People & Body',\n aliases: ['standing_woman'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧎',\n description: 'person kneeling',\n category: 'People & Body',\n aliases: ['kneeling_person'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧎♂️',\n description: 'man kneeling',\n category: 'People & Body',\n aliases: ['kneeling_man'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧎♀️',\n description: 'woman kneeling',\n category: 'People & Body',\n aliases: ['kneeling_woman'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧑🦯',\n description: 'person with white cane',\n category: 'People & Body',\n aliases: ['person_with_probing_cane'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🦯',\n description: 'man with white cane',\n category: 'People & Body',\n aliases: ['man_with_probing_cane'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '👩🦯',\n description: 'woman with white cane',\n category: 'People & Body',\n aliases: ['woman_with_probing_cane'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧑🦼',\n description: 'person in motorized wheelchair',\n category: 'People & Body',\n aliases: ['person_in_motorized_wheelchair'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🦼',\n description: 'man in motorized wheelchair',\n category: 'People & Body',\n aliases: ['man_in_motorized_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '👩🦼',\n description: 'woman in motorized wheelchair',\n category: 'People & Body',\n aliases: ['woman_in_motorized_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🧑🦽',\n description: 'person in manual wheelchair',\n category: 'People & Body',\n aliases: ['person_in_manual_wheelchair'],\n tags: [],\n unicode_version: '12.1',\n ios_version: '13.2',\n skin_tones: true,\n },\n {\n emoji: '👨🦽',\n description: 'man in manual wheelchair',\n category: 'People & Body',\n aliases: ['man_in_manual_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '👩🦽',\n description: 'woman in manual wheelchair',\n category: 'People & Body',\n aliases: ['woman_in_manual_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '🏃',\n description: 'person running',\n category: 'People & Body',\n aliases: ['runner', 'running'],\n tags: ['exercise', 'workout', 'marathon'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🏃♂️',\n description: 'man running',\n category: 'People & Body',\n aliases: ['running_man'],\n tags: ['exercise', 'workout', 'marathon'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🏃♀️',\n description: 'woman running',\n category: 'People & Body',\n aliases: ['running_woman'],\n tags: ['exercise', 'workout', 'marathon'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '💃',\n description: 'woman dancing',\n category: 'People & Body',\n aliases: ['woman_dancing', 'dancer'],\n tags: ['dress'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🕺',\n description: 'man dancing',\n category: 'People & Body',\n aliases: ['man_dancing'],\n tags: ['dancer'],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🕴️',\n description: 'person in suit levitating',\n category: 'People & Body',\n aliases: ['business_suit_levitating'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '👯',\n description: 'people with bunny ears',\n category: 'People & Body',\n aliases: ['dancers'],\n tags: ['bunny'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👯♂️',\n description: 'men with bunny ears',\n category: 'People & Body',\n aliases: ['dancing_men'],\n tags: ['bunny'],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👯♀️',\n description: 'women with bunny ears',\n category: 'People & Body',\n aliases: ['dancing_women'],\n tags: ['bunny'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧖',\n description: 'person in steamy room',\n category: 'People & Body',\n aliases: ['sauna_person'],\n tags: ['steamy'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧖♂️',\n description: 'man in steamy room',\n category: 'People & Body',\n aliases: ['sauna_man'],\n tags: ['steamy'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧖♀️',\n description: 'woman in steamy room',\n category: 'People & Body',\n aliases: ['sauna_woman'],\n tags: ['steamy'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧗',\n description: 'person climbing',\n category: 'People & Body',\n aliases: ['climbing'],\n tags: ['bouldering'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧗♂️',\n description: 'man climbing',\n category: 'People & Body',\n aliases: ['climbing_man'],\n tags: ['bouldering'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧗♀️',\n description: 'woman climbing',\n category: 'People & Body',\n aliases: ['climbing_woman'],\n tags: ['bouldering'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤺',\n description: 'person fencing',\n category: 'People & Body',\n aliases: ['person_fencing'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🏇',\n description: 'horse racing',\n category: 'People & Body',\n aliases: ['horse_racing'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '⛷️',\n description: 'skier',\n category: 'People & Body',\n aliases: ['skier'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🏂',\n description: 'snowboarder',\n category: 'People & Body',\n aliases: ['snowboarder'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🏌️',\n description: 'person golfing',\n category: 'People & Body',\n aliases: ['golfing'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '🏌️♂️',\n description: 'man golfing',\n category: 'People & Body',\n aliases: ['golfing_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🏌️♀️',\n description: 'woman golfing',\n category: 'People & Body',\n aliases: ['golfing_woman'],\n tags: [],\n unicode_version: '',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🏄',\n description: 'person surfing',\n category: 'People & Body',\n aliases: ['surfer'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🏄♂️',\n description: 'man surfing',\n category: 'People & Body',\n aliases: ['surfing_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🏄♀️',\n description: 'woman surfing',\n category: 'People & Body',\n aliases: ['surfing_woman'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🚣',\n description: 'person rowing boat',\n category: 'People & Body',\n aliases: ['rowboat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🚣♂️',\n description: 'man rowing boat',\n category: 'People & Body',\n aliases: ['rowing_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🚣♀️',\n description: 'woman rowing boat',\n category: 'People & Body',\n aliases: ['rowing_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🏊',\n description: 'person swimming',\n category: 'People & Body',\n aliases: ['swimmer'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🏊♂️',\n description: 'man swimming',\n category: 'People & Body',\n aliases: ['swimming_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🏊♀️',\n description: 'woman swimming',\n category: 'People & Body',\n aliases: ['swimming_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '⛹️',\n description: 'person bouncing ball',\n category: 'People & Body',\n aliases: ['bouncing_ball_person'],\n tags: ['basketball'],\n unicode_version: '5.2',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '⛹️♂️',\n description: 'man bouncing ball',\n category: 'People & Body',\n aliases: ['bouncing_ball_man', 'basketball_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '⛹️♀️',\n description: 'woman bouncing ball',\n category: 'People & Body',\n aliases: ['bouncing_ball_woman', 'basketball_woman'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🏋️',\n description: 'person lifting weights',\n category: 'People & Body',\n aliases: ['weight_lifting'],\n tags: ['gym', 'workout'],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '🏋️♂️',\n description: 'man lifting weights',\n category: 'People & Body',\n aliases: ['weight_lifting_man'],\n tags: ['gym', 'workout'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🏋️♀️',\n description: 'woman lifting weights',\n category: 'People & Body',\n aliases: ['weight_lifting_woman'],\n tags: ['gym', 'workout'],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🚴',\n description: 'person biking',\n category: 'People & Body',\n aliases: ['bicyclist'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🚴♂️',\n description: 'man biking',\n category: 'People & Body',\n aliases: ['biking_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🚴♀️',\n description: 'woman biking',\n category: 'People & Body',\n aliases: ['biking_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🚵',\n description: 'person mountain biking',\n category: 'People & Body',\n aliases: ['mountain_bicyclist'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🚵♂️',\n description: 'man mountain biking',\n category: 'People & Body',\n aliases: ['mountain_biking_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🚵♀️',\n description: 'woman mountain biking',\n category: 'People & Body',\n aliases: ['mountain_biking_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n skin_tones: true,\n },\n {\n emoji: '🤸',\n description: 'person cartwheeling',\n category: 'People & Body',\n aliases: ['cartwheeling'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤸♂️',\n description: 'man cartwheeling',\n category: 'People & Body',\n aliases: ['man_cartwheeling'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤸♀️',\n description: 'woman cartwheeling',\n category: 'People & Body',\n aliases: ['woman_cartwheeling'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤼',\n description: 'people wrestling',\n category: 'People & Body',\n aliases: ['wrestling'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🤼♂️',\n description: 'men wrestling',\n category: 'People & Body',\n aliases: ['men_wrestling'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🤼♀️',\n description: 'women wrestling',\n category: 'People & Body',\n aliases: ['women_wrestling'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🤽',\n description: 'person playing water polo',\n category: 'People & Body',\n aliases: ['water_polo'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤽♂️',\n description: 'man playing water polo',\n category: 'People & Body',\n aliases: ['man_playing_water_polo'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤽♀️',\n description: 'woman playing water polo',\n category: 'People & Body',\n aliases: ['woman_playing_water_polo'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤾',\n description: 'person playing handball',\n category: 'People & Body',\n aliases: ['handball_person'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤾♂️',\n description: 'man playing handball',\n category: 'People & Body',\n aliases: ['man_playing_handball'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤾♀️',\n description: 'woman playing handball',\n category: 'People & Body',\n aliases: ['woman_playing_handball'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤹',\n description: 'person juggling',\n category: 'People & Body',\n aliases: ['juggling_person'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🤹♂️',\n description: 'man juggling',\n category: 'People & Body',\n aliases: ['man_juggling'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🤹♀️',\n description: 'woman juggling',\n category: 'People & Body',\n aliases: ['woman_juggling'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n skin_tones: true,\n },\n {\n emoji: '🧘',\n description: 'person in lotus position',\n category: 'People & Body',\n aliases: ['lotus_position'],\n tags: ['meditation'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧘♂️',\n description: 'man in lotus position',\n category: 'People & Body',\n aliases: ['lotus_position_man'],\n tags: ['meditation'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🧘♀️',\n description: 'woman in lotus position',\n category: 'People & Body',\n aliases: ['lotus_position_woman'],\n tags: ['meditation'],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '🛀',\n description: 'person taking bath',\n category: 'People & Body',\n aliases: ['bath'],\n tags: ['shower'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '🛌',\n description: 'person in bed',\n category: 'People & Body',\n aliases: ['sleeping_bed'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n skin_tones: true,\n },\n {\n emoji: '🧑🤝🧑',\n description: 'people holding hands',\n category: 'People & Body',\n aliases: ['people_holding_hands'],\n tags: ['couple', 'date'],\n unicode_version: '12.0',\n ios_version: '13.0',\n skin_tones: true,\n },\n {\n emoji: '👭',\n description: 'women holding hands',\n category: 'People & Body',\n aliases: ['two_women_holding_hands'],\n tags: ['couple', 'date'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👫',\n description: 'woman and man holding hands',\n category: 'People & Body',\n aliases: ['couple'],\n tags: ['date'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👬',\n description: 'men holding hands',\n category: 'People & Body',\n aliases: ['two_men_holding_hands'],\n tags: ['couple', 'date'],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '💏',\n description: 'kiss',\n category: 'People & Body',\n aliases: ['couplekiss'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👩❤️💋👨',\n description: 'kiss: woman, man',\n category: 'People & Body',\n aliases: ['couplekiss_man_woman'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👨❤️💋👨',\n description: 'kiss: man, man',\n category: 'People & Body',\n aliases: ['couplekiss_man_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n skin_tones: true,\n },\n {\n emoji: '👩❤️💋👩',\n description: 'kiss: woman, woman',\n category: 'People & Body',\n aliases: ['couplekiss_woman_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n skin_tones: true,\n },\n {\n emoji: '💑',\n description: 'couple with heart',\n category: 'People & Body',\n aliases: ['couple_with_heart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n skin_tones: true,\n },\n {\n emoji: '👩❤️👨',\n description: 'couple with heart: woman, man',\n category: 'People & Body',\n aliases: ['couple_with_heart_woman_man'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n skin_tones: true,\n },\n {\n emoji: '👨❤️👨',\n description: 'couple with heart: man, man',\n category: 'People & Body',\n aliases: ['couple_with_heart_man_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n skin_tones: true,\n },\n {\n emoji: '👩❤️👩',\n description: 'couple with heart: woman, woman',\n category: 'People & Body',\n aliases: ['couple_with_heart_woman_woman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n skin_tones: true,\n },\n {\n emoji: '👪',\n description: 'family',\n category: 'People & Body',\n aliases: ['family'],\n tags: ['home', 'parents', 'child'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👨👩👦',\n description: 'family: man, woman, boy',\n category: 'People & Body',\n aliases: ['family_man_woman_boy'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '👨👩👧',\n description: 'family: man, woman, girl',\n category: 'People & Body',\n aliases: ['family_man_woman_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👩👧👦',\n description: 'family: man, woman, girl, boy',\n category: 'People & Body',\n aliases: ['family_man_woman_girl_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👩👦👦',\n description: 'family: man, woman, boy, boy',\n category: 'People & Body',\n aliases: ['family_man_woman_boy_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👩👧👧',\n description: 'family: man, woman, girl, girl',\n category: 'People & Body',\n aliases: ['family_man_woman_girl_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👨👦',\n description: 'family: man, man, boy',\n category: 'People & Body',\n aliases: ['family_man_man_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👨👧',\n description: 'family: man, man, girl',\n category: 'People & Body',\n aliases: ['family_man_man_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👨👧👦',\n description: 'family: man, man, girl, boy',\n category: 'People & Body',\n aliases: ['family_man_man_girl_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👨👦👦',\n description: 'family: man, man, boy, boy',\n category: 'People & Body',\n aliases: ['family_man_man_boy_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👨👧👧',\n description: 'family: man, man, girl, girl',\n category: 'People & Body',\n aliases: ['family_man_man_girl_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👩👩👦',\n description: 'family: woman, woman, boy',\n category: 'People & Body',\n aliases: ['family_woman_woman_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👩👩👧',\n description: 'family: woman, woman, girl',\n category: 'People & Body',\n aliases: ['family_woman_woman_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👩👩👧👦',\n description: 'family: woman, woman, girl, boy',\n category: 'People & Body',\n aliases: ['family_woman_woman_girl_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👩👩👦👦',\n description: 'family: woman, woman, boy, boy',\n category: 'People & Body',\n aliases: ['family_woman_woman_boy_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👩👩👧👧',\n description: 'family: woman, woman, girl, girl',\n category: 'People & Body',\n aliases: ['family_woman_woman_girl_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '👨👦',\n description: 'family: man, boy',\n category: 'People & Body',\n aliases: ['family_man_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👨👦👦',\n description: 'family: man, boy, boy',\n category: 'People & Body',\n aliases: ['family_man_boy_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👨👧',\n description: 'family: man, girl',\n category: 'People & Body',\n aliases: ['family_man_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👨👧👦',\n description: 'family: man, girl, boy',\n category: 'People & Body',\n aliases: ['family_man_girl_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👨👧👧',\n description: 'family: man, girl, girl',\n category: 'People & Body',\n aliases: ['family_man_girl_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👩👦',\n description: 'family: woman, boy',\n category: 'People & Body',\n aliases: ['family_woman_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👩👦👦',\n description: 'family: woman, boy, boy',\n category: 'People & Body',\n aliases: ['family_woman_boy_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👩👧',\n description: 'family: woman, girl',\n category: 'People & Body',\n aliases: ['family_woman_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👩👧👦',\n description: 'family: woman, girl, boy',\n category: 'People & Body',\n aliases: ['family_woman_girl_boy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '👩👧👧',\n description: 'family: woman, girl, girl',\n category: 'People & Body',\n aliases: ['family_woman_girl_girl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '🗣️',\n description: 'speaking head',\n category: 'People & Body',\n aliases: ['speaking_head'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '👤',\n description: 'bust in silhouette',\n category: 'People & Body',\n aliases: ['bust_in_silhouette'],\n tags: ['user'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👥',\n description: 'busts in silhouette',\n category: 'People & Body',\n aliases: ['busts_in_silhouette'],\n tags: ['users', 'group', 'team'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🫂',\n description: 'people hugging',\n category: 'People & Body',\n aliases: ['people_hugging'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '👣',\n description: 'footprints',\n category: 'People & Body',\n aliases: ['footprints'],\n tags: ['feet', 'tracks'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐵',\n description: 'monkey face',\n category: 'Animals & Nature',\n aliases: ['monkey_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐒',\n description: 'monkey',\n category: 'Animals & Nature',\n aliases: ['monkey'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦍',\n description: 'gorilla',\n category: 'Animals & Nature',\n aliases: ['gorilla'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦧',\n description: 'orangutan',\n category: 'Animals & Nature',\n aliases: ['orangutan'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🐶',\n description: 'dog face',\n category: 'Animals & Nature',\n aliases: ['dog'],\n tags: ['pet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐕',\n description: 'dog',\n category: 'Animals & Nature',\n aliases: ['dog2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦮',\n description: 'guide dog',\n category: 'Animals & Nature',\n aliases: ['guide_dog'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🐕🦺',\n description: 'service dog',\n category: 'Animals & Nature',\n aliases: ['service_dog'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🐩',\n description: 'poodle',\n category: 'Animals & Nature',\n aliases: ['poodle'],\n tags: ['dog'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐺',\n description: 'wolf',\n category: 'Animals & Nature',\n aliases: ['wolf'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦊',\n description: 'fox',\n category: 'Animals & Nature',\n aliases: ['fox_face'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦝',\n description: 'raccoon',\n category: 'Animals & Nature',\n aliases: ['raccoon'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐱',\n description: 'cat face',\n category: 'Animals & Nature',\n aliases: ['cat'],\n tags: ['pet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐈',\n description: 'cat',\n category: 'Animals & Nature',\n aliases: ['cat2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐈⬛',\n description: 'black cat',\n category: 'Animals & Nature',\n aliases: ['black_cat'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦁',\n description: 'lion',\n category: 'Animals & Nature',\n aliases: ['lion'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🐯',\n description: 'tiger face',\n category: 'Animals & Nature',\n aliases: ['tiger'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐅',\n description: 'tiger',\n category: 'Animals & Nature',\n aliases: ['tiger2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐆',\n description: 'leopard',\n category: 'Animals & Nature',\n aliases: ['leopard'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐴',\n description: 'horse face',\n category: 'Animals & Nature',\n aliases: ['horse'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐎',\n description: 'horse',\n category: 'Animals & Nature',\n aliases: ['racehorse'],\n tags: ['speed'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦄',\n description: 'unicorn',\n category: 'Animals & Nature',\n aliases: ['unicorn'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦓',\n description: 'zebra',\n category: 'Animals & Nature',\n aliases: ['zebra'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦌',\n description: 'deer',\n category: 'Animals & Nature',\n aliases: ['deer'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦬',\n description: 'bison',\n category: 'Animals & Nature',\n aliases: ['bison'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🐮',\n description: 'cow face',\n category: 'Animals & Nature',\n aliases: ['cow'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐂',\n description: 'ox',\n category: 'Animals & Nature',\n aliases: ['ox'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐃',\n description: 'water buffalo',\n category: 'Animals & Nature',\n aliases: ['water_buffalo'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐄',\n description: 'cow',\n category: 'Animals & Nature',\n aliases: ['cow2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐷',\n description: 'pig face',\n category: 'Animals & Nature',\n aliases: ['pig'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐖',\n description: 'pig',\n category: 'Animals & Nature',\n aliases: ['pig2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐗',\n description: 'boar',\n category: 'Animals & Nature',\n aliases: ['boar'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐽',\n description: 'pig nose',\n category: 'Animals & Nature',\n aliases: ['pig_nose'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐏',\n description: 'ram',\n category: 'Animals & Nature',\n aliases: ['ram'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐑',\n description: 'ewe',\n category: 'Animals & Nature',\n aliases: ['sheep'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐐',\n description: 'goat',\n category: 'Animals & Nature',\n aliases: ['goat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐪',\n description: 'camel',\n category: 'Animals & Nature',\n aliases: ['dromedary_camel'],\n tags: ['desert'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐫',\n description: 'two-hump camel',\n category: 'Animals & Nature',\n aliases: ['camel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦙',\n description: 'llama',\n category: 'Animals & Nature',\n aliases: ['llama'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦒',\n description: 'giraffe',\n category: 'Animals & Nature',\n aliases: ['giraffe'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐘',\n description: 'elephant',\n category: 'Animals & Nature',\n aliases: ['elephant'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦣',\n description: 'mammoth',\n category: 'Animals & Nature',\n aliases: ['mammoth'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦏',\n description: 'rhinoceros',\n category: 'Animals & Nature',\n aliases: ['rhinoceros'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦛',\n description: 'hippopotamus',\n category: 'Animals & Nature',\n aliases: ['hippopotamus'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐭',\n description: 'mouse face',\n category: 'Animals & Nature',\n aliases: ['mouse'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐁',\n description: 'mouse',\n category: 'Animals & Nature',\n aliases: ['mouse2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐀',\n description: 'rat',\n category: 'Animals & Nature',\n aliases: ['rat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐹',\n description: 'hamster',\n category: 'Animals & Nature',\n aliases: ['hamster'],\n tags: ['pet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐰',\n description: 'rabbit face',\n category: 'Animals & Nature',\n aliases: ['rabbit'],\n tags: ['bunny'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐇',\n description: 'rabbit',\n category: 'Animals & Nature',\n aliases: ['rabbit2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐿️',\n description: 'chipmunk',\n category: 'Animals & Nature',\n aliases: ['chipmunk'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦫',\n description: 'beaver',\n category: 'Animals & Nature',\n aliases: ['beaver'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦔',\n description: 'hedgehog',\n category: 'Animals & Nature',\n aliases: ['hedgehog'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦇',\n description: 'bat',\n category: 'Animals & Nature',\n aliases: ['bat'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🐻',\n description: 'bear',\n category: 'Animals & Nature',\n aliases: ['bear'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐻❄️',\n description: 'polar bear',\n category: 'Animals & Nature',\n aliases: ['polar_bear'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🐨',\n description: 'koala',\n category: 'Animals & Nature',\n aliases: ['koala'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐼',\n description: 'panda',\n category: 'Animals & Nature',\n aliases: ['panda_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦥',\n description: 'sloth',\n category: 'Animals & Nature',\n aliases: ['sloth'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦦',\n description: 'otter',\n category: 'Animals & Nature',\n aliases: ['otter'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦨',\n description: 'skunk',\n category: 'Animals & Nature',\n aliases: ['skunk'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦘',\n description: 'kangaroo',\n category: 'Animals & Nature',\n aliases: ['kangaroo'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦡',\n description: 'badger',\n category: 'Animals & Nature',\n aliases: ['badger'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐾',\n description: 'paw prints',\n category: 'Animals & Nature',\n aliases: ['feet', 'paw_prints'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦃',\n description: 'turkey',\n category: 'Animals & Nature',\n aliases: ['turkey'],\n tags: ['thanksgiving'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🐔',\n description: 'chicken',\n category: 'Animals & Nature',\n aliases: ['chicken'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐓',\n description: 'rooster',\n category: 'Animals & Nature',\n aliases: ['rooster'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐣',\n description: 'hatching chick',\n category: 'Animals & Nature',\n aliases: ['hatching_chick'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐤',\n description: 'baby chick',\n category: 'Animals & Nature',\n aliases: ['baby_chick'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐥',\n description: 'front-facing baby chick',\n category: 'Animals & Nature',\n aliases: ['hatched_chick'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐦',\n description: 'bird',\n category: 'Animals & Nature',\n aliases: ['bird'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐧',\n description: 'penguin',\n category: 'Animals & Nature',\n aliases: ['penguin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕊️',\n description: 'dove',\n category: 'Animals & Nature',\n aliases: ['dove'],\n tags: ['peace'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦅',\n description: 'eagle',\n category: 'Animals & Nature',\n aliases: ['eagle'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦆',\n description: 'duck',\n category: 'Animals & Nature',\n aliases: ['duck'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦢',\n description: 'swan',\n category: 'Animals & Nature',\n aliases: ['swan'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦉',\n description: 'owl',\n category: 'Animals & Nature',\n aliases: ['owl'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦤',\n description: 'dodo',\n category: 'Animals & Nature',\n aliases: ['dodo'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪶',\n description: 'feather',\n category: 'Animals & Nature',\n aliases: ['feather'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦩',\n description: 'flamingo',\n category: 'Animals & Nature',\n aliases: ['flamingo'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦚',\n description: 'peacock',\n category: 'Animals & Nature',\n aliases: ['peacock'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦜',\n description: 'parrot',\n category: 'Animals & Nature',\n aliases: ['parrot'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐸',\n description: 'frog',\n category: 'Animals & Nature',\n aliases: ['frog'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐊',\n description: 'crocodile',\n category: 'Animals & Nature',\n aliases: ['crocodile'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐢',\n description: 'turtle',\n category: 'Animals & Nature',\n aliases: ['turtle'],\n tags: ['slow'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦎',\n description: 'lizard',\n category: 'Animals & Nature',\n aliases: ['lizard'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🐍',\n description: 'snake',\n category: 'Animals & Nature',\n aliases: ['snake'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐲',\n description: 'dragon face',\n category: 'Animals & Nature',\n aliases: ['dragon_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐉',\n description: 'dragon',\n category: 'Animals & Nature',\n aliases: ['dragon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦕',\n description: 'sauropod',\n category: 'Animals & Nature',\n aliases: ['sauropod'],\n tags: ['dinosaur'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦖',\n description: 'T-Rex',\n category: 'Animals & Nature',\n aliases: ['t-rex'],\n tags: ['dinosaur'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🐳',\n description: 'spouting whale',\n category: 'Animals & Nature',\n aliases: ['whale'],\n tags: ['sea'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐋',\n description: 'whale',\n category: 'Animals & Nature',\n aliases: ['whale2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐬',\n description: 'dolphin',\n category: 'Animals & Nature',\n aliases: ['dolphin', 'flipper'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦭',\n description: 'seal',\n category: 'Animals & Nature',\n aliases: ['seal'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🐟',\n description: 'fish',\n category: 'Animals & Nature',\n aliases: ['fish'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐠',\n description: 'tropical fish',\n category: 'Animals & Nature',\n aliases: ['tropical_fish'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐡',\n description: 'blowfish',\n category: 'Animals & Nature',\n aliases: ['blowfish'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦈',\n description: 'shark',\n category: 'Animals & Nature',\n aliases: ['shark'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🐙',\n description: 'octopus',\n category: 'Animals & Nature',\n aliases: ['octopus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐚',\n description: 'spiral shell',\n category: 'Animals & Nature',\n aliases: ['shell'],\n tags: ['sea', 'beach'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐌',\n description: 'snail',\n category: 'Animals & Nature',\n aliases: ['snail'],\n tags: ['slow'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦋',\n description: 'butterfly',\n category: 'Animals & Nature',\n aliases: ['butterfly'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🐛',\n description: 'bug',\n category: 'Animals & Nature',\n aliases: ['bug'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐜',\n description: 'ant',\n category: 'Animals & Nature',\n aliases: ['ant'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🐝',\n description: 'honeybee',\n category: 'Animals & Nature',\n aliases: ['bee', 'honeybee'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪲',\n description: 'beetle',\n category: 'Animals & Nature',\n aliases: ['beetle'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🐞',\n description: 'lady beetle',\n category: 'Animals & Nature',\n aliases: ['lady_beetle'],\n tags: ['bug'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🦗',\n description: 'cricket',\n category: 'Animals & Nature',\n aliases: ['cricket'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪳',\n description: 'cockroach',\n category: 'Animals & Nature',\n aliases: ['cockroach'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🕷️',\n description: 'spider',\n category: 'Animals & Nature',\n aliases: ['spider'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🕸️',\n description: 'spider web',\n category: 'Animals & Nature',\n aliases: ['spider_web'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦂',\n description: 'scorpion',\n category: 'Animals & Nature',\n aliases: ['scorpion'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦟',\n description: 'mosquito',\n category: 'Animals & Nature',\n aliases: ['mosquito'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪰',\n description: 'fly',\n category: 'Animals & Nature',\n aliases: ['fly'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪱',\n description: 'worm',\n category: 'Animals & Nature',\n aliases: ['worm'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🦠',\n description: 'microbe',\n category: 'Animals & Nature',\n aliases: ['microbe'],\n tags: ['germ'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '💐',\n description: 'bouquet',\n category: 'Animals & Nature',\n aliases: ['bouquet'],\n tags: ['flowers'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌸',\n description: 'cherry blossom',\n category: 'Animals & Nature',\n aliases: ['cherry_blossom'],\n tags: ['flower', 'spring'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💮',\n description: 'white flower',\n category: 'Animals & Nature',\n aliases: ['white_flower'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏵️',\n description: 'rosette',\n category: 'Animals & Nature',\n aliases: ['rosette'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌹',\n description: 'rose',\n category: 'Animals & Nature',\n aliases: ['rose'],\n tags: ['flower'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥀',\n description: 'wilted flower',\n category: 'Animals & Nature',\n aliases: ['wilted_flower'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🌺',\n description: 'hibiscus',\n category: 'Animals & Nature',\n aliases: ['hibiscus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌻',\n description: 'sunflower',\n category: 'Animals & Nature',\n aliases: ['sunflower'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌼',\n description: 'blossom',\n category: 'Animals & Nature',\n aliases: ['blossom'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌷',\n description: 'tulip',\n category: 'Animals & Nature',\n aliases: ['tulip'],\n tags: ['flower'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌱',\n description: 'seedling',\n category: 'Animals & Nature',\n aliases: ['seedling'],\n tags: ['plant'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪴',\n description: 'potted plant',\n category: 'Animals & Nature',\n aliases: ['potted_plant'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🌲',\n description: 'evergreen tree',\n category: 'Animals & Nature',\n aliases: ['evergreen_tree'],\n tags: ['wood'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌳',\n description: 'deciduous tree',\n category: 'Animals & Nature',\n aliases: ['deciduous_tree'],\n tags: ['wood'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌴',\n description: 'palm tree',\n category: 'Animals & Nature',\n aliases: ['palm_tree'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌵',\n description: 'cactus',\n category: 'Animals & Nature',\n aliases: ['cactus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌾',\n description: 'sheaf of rice',\n category: 'Animals & Nature',\n aliases: ['ear_of_rice'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌿',\n description: 'herb',\n category: 'Animals & Nature',\n aliases: ['herb'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☘️',\n description: 'shamrock',\n category: 'Animals & Nature',\n aliases: ['shamrock'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🍀',\n description: 'four leaf clover',\n category: 'Animals & Nature',\n aliases: ['four_leaf_clover'],\n tags: ['luck'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍁',\n description: 'maple leaf',\n category: 'Animals & Nature',\n aliases: ['maple_leaf'],\n tags: ['canada'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍂',\n description: 'fallen leaf',\n category: 'Animals & Nature',\n aliases: ['fallen_leaf'],\n tags: ['autumn'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍃',\n description: 'leaf fluttering in wind',\n category: 'Animals & Nature',\n aliases: ['leaves'],\n tags: ['leaf'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍇',\n description: 'grapes',\n category: 'Food & Drink',\n aliases: ['grapes'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍈',\n description: 'melon',\n category: 'Food & Drink',\n aliases: ['melon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍉',\n description: 'watermelon',\n category: 'Food & Drink',\n aliases: ['watermelon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍊',\n description: 'tangerine',\n category: 'Food & Drink',\n aliases: ['tangerine', 'orange', 'mandarin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍋',\n description: 'lemon',\n category: 'Food & Drink',\n aliases: ['lemon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍌',\n description: 'banana',\n category: 'Food & Drink',\n aliases: ['banana'],\n tags: ['fruit'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍍',\n description: 'pineapple',\n category: 'Food & Drink',\n aliases: ['pineapple'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥭',\n description: 'mango',\n category: 'Food & Drink',\n aliases: ['mango'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🍎',\n description: 'red apple',\n category: 'Food & Drink',\n aliases: ['apple'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍏',\n description: 'green apple',\n category: 'Food & Drink',\n aliases: ['green_apple'],\n tags: ['fruit'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍐',\n description: 'pear',\n category: 'Food & Drink',\n aliases: ['pear'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍑',\n description: 'peach',\n category: 'Food & Drink',\n aliases: ['peach'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍒',\n description: 'cherries',\n category: 'Food & Drink',\n aliases: ['cherries'],\n tags: ['fruit'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍓',\n description: 'strawberry',\n category: 'Food & Drink',\n aliases: ['strawberry'],\n tags: ['fruit'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🫐',\n description: 'blueberries',\n category: 'Food & Drink',\n aliases: ['blueberries'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥝',\n description: 'kiwi fruit',\n category: 'Food & Drink',\n aliases: ['kiwi_fruit'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🍅',\n description: 'tomato',\n category: 'Food & Drink',\n aliases: ['tomato'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🫒',\n description: 'olive',\n category: 'Food & Drink',\n aliases: ['olive'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥥',\n description: 'coconut',\n category: 'Food & Drink',\n aliases: ['coconut'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥑',\n description: 'avocado',\n category: 'Food & Drink',\n aliases: ['avocado'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🍆',\n description: 'eggplant',\n category: 'Food & Drink',\n aliases: ['eggplant'],\n tags: ['aubergine'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥔',\n description: 'potato',\n category: 'Food & Drink',\n aliases: ['potato'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥕',\n description: 'carrot',\n category: 'Food & Drink',\n aliases: ['carrot'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🌽',\n description: 'ear of corn',\n category: 'Food & Drink',\n aliases: ['corn'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌶️',\n description: 'hot pepper',\n category: 'Food & Drink',\n aliases: ['hot_pepper'],\n tags: ['spicy'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🫑',\n description: 'bell pepper',\n category: 'Food & Drink',\n aliases: ['bell_pepper'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥒',\n description: 'cucumber',\n category: 'Food & Drink',\n aliases: ['cucumber'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥬',\n description: 'leafy green',\n category: 'Food & Drink',\n aliases: ['leafy_green'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥦',\n description: 'broccoli',\n category: 'Food & Drink',\n aliases: ['broccoli'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧄',\n description: 'garlic',\n category: 'Food & Drink',\n aliases: ['garlic'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧅',\n description: 'onion',\n category: 'Food & Drink',\n aliases: ['onion'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🍄',\n description: 'mushroom',\n category: 'Food & Drink',\n aliases: ['mushroom'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥜',\n description: 'peanuts',\n category: 'Food & Drink',\n aliases: ['peanuts'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🌰',\n description: 'chestnut',\n category: 'Food & Drink',\n aliases: ['chestnut'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍞',\n description: 'bread',\n category: 'Food & Drink',\n aliases: ['bread'],\n tags: ['toast'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥐',\n description: 'croissant',\n category: 'Food & Drink',\n aliases: ['croissant'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥖',\n description: 'baguette bread',\n category: 'Food & Drink',\n aliases: ['baguette_bread'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🫓',\n description: 'flatbread',\n category: 'Food & Drink',\n aliases: ['flatbread'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥨',\n description: 'pretzel',\n category: 'Food & Drink',\n aliases: ['pretzel'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥯',\n description: 'bagel',\n category: 'Food & Drink',\n aliases: ['bagel'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥞',\n description: 'pancakes',\n category: 'Food & Drink',\n aliases: ['pancakes'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🧇',\n description: 'waffle',\n category: 'Food & Drink',\n aliases: ['waffle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧀',\n description: 'cheese wedge',\n category: 'Food & Drink',\n aliases: ['cheese'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🍖',\n description: 'meat on bone',\n category: 'Food & Drink',\n aliases: ['meat_on_bone'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍗',\n description: 'poultry leg',\n category: 'Food & Drink',\n aliases: ['poultry_leg'],\n tags: ['meat', 'chicken'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥩',\n description: 'cut of meat',\n category: 'Food & Drink',\n aliases: ['cut_of_meat'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥓',\n description: 'bacon',\n category: 'Food & Drink',\n aliases: ['bacon'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🍔',\n description: 'hamburger',\n category: 'Food & Drink',\n aliases: ['hamburger'],\n tags: ['burger'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍟',\n description: 'french fries',\n category: 'Food & Drink',\n aliases: ['fries'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍕',\n description: 'pizza',\n category: 'Food & Drink',\n aliases: ['pizza'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌭',\n description: 'hot dog',\n category: 'Food & Drink',\n aliases: ['hotdog'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🥪',\n description: 'sandwich',\n category: 'Food & Drink',\n aliases: ['sandwich'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🌮',\n description: 'taco',\n category: 'Food & Drink',\n aliases: ['taco'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌯',\n description: 'burrito',\n category: 'Food & Drink',\n aliases: ['burrito'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🫔',\n description: 'tamale',\n category: 'Food & Drink',\n aliases: ['tamale'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥙',\n description: 'stuffed flatbread',\n category: 'Food & Drink',\n aliases: ['stuffed_flatbread'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🧆',\n description: 'falafel',\n category: 'Food & Drink',\n aliases: ['falafel'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🥚',\n description: 'egg',\n category: 'Food & Drink',\n aliases: ['egg'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🍳',\n description: 'cooking',\n category: 'Food & Drink',\n aliases: ['fried_egg'],\n tags: ['breakfast'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥘',\n description: 'shallow pan of food',\n category: 'Food & Drink',\n aliases: ['shallow_pan_of_food'],\n tags: ['paella', 'curry'],\n unicode_version: '',\n ios_version: '10.2',\n },\n {\n emoji: '🍲',\n description: 'pot of food',\n category: 'Food & Drink',\n aliases: ['stew'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🫕',\n description: 'fondue',\n category: 'Food & Drink',\n aliases: ['fondue'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🥣',\n description: 'bowl with spoon',\n category: 'Food & Drink',\n aliases: ['bowl_with_spoon'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥗',\n description: 'green salad',\n category: 'Food & Drink',\n aliases: ['green_salad'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🍿',\n description: 'popcorn',\n category: 'Food & Drink',\n aliases: ['popcorn'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🧈',\n description: 'butter',\n category: 'Food & Drink',\n aliases: ['butter'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧂',\n description: 'salt',\n category: 'Food & Drink',\n aliases: ['salt'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥫',\n description: 'canned food',\n category: 'Food & Drink',\n aliases: ['canned_food'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🍱',\n description: 'bento box',\n category: 'Food & Drink',\n aliases: ['bento'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍘',\n description: 'rice cracker',\n category: 'Food & Drink',\n aliases: ['rice_cracker'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍙',\n description: 'rice ball',\n category: 'Food & Drink',\n aliases: ['rice_ball'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍚',\n description: 'cooked rice',\n category: 'Food & Drink',\n aliases: ['rice'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍛',\n description: 'curry rice',\n category: 'Food & Drink',\n aliases: ['curry'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍜',\n description: 'steaming bowl',\n category: 'Food & Drink',\n aliases: ['ramen'],\n tags: ['noodle'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍝',\n description: 'spaghetti',\n category: 'Food & Drink',\n aliases: ['spaghetti'],\n tags: ['pasta'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍠',\n description: 'roasted sweet potato',\n category: 'Food & Drink',\n aliases: ['sweet_potato'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍢',\n description: 'oden',\n category: 'Food & Drink',\n aliases: ['oden'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍣',\n description: 'sushi',\n category: 'Food & Drink',\n aliases: ['sushi'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍤',\n description: 'fried shrimp',\n category: 'Food & Drink',\n aliases: ['fried_shrimp'],\n tags: ['tempura'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍥',\n description: 'fish cake with swirl',\n category: 'Food & Drink',\n aliases: ['fish_cake'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥮',\n description: 'moon cake',\n category: 'Food & Drink',\n aliases: ['moon_cake'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🍡',\n description: 'dango',\n category: 'Food & Drink',\n aliases: ['dango'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥟',\n description: 'dumpling',\n category: 'Food & Drink',\n aliases: ['dumpling'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥠',\n description: 'fortune cookie',\n category: 'Food & Drink',\n aliases: ['fortune_cookie'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥡',\n description: 'takeout box',\n category: 'Food & Drink',\n aliases: ['takeout_box'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦀',\n description: 'crab',\n category: 'Food & Drink',\n aliases: ['crab'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🦞',\n description: 'lobster',\n category: 'Food & Drink',\n aliases: ['lobster'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦐',\n description: 'shrimp',\n category: 'Food & Drink',\n aliases: ['shrimp'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦑',\n description: 'squid',\n category: 'Food & Drink',\n aliases: ['squid'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦪',\n description: 'oyster',\n category: 'Food & Drink',\n aliases: ['oyster'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🍦',\n description: 'soft ice cream',\n category: 'Food & Drink',\n aliases: ['icecream'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍧',\n description: 'shaved ice',\n category: 'Food & Drink',\n aliases: ['shaved_ice'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍨',\n description: 'ice cream',\n category: 'Food & Drink',\n aliases: ['ice_cream'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍩',\n description: 'doughnut',\n category: 'Food & Drink',\n aliases: ['doughnut'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍪',\n description: 'cookie',\n category: 'Food & Drink',\n aliases: ['cookie'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎂',\n description: 'birthday cake',\n category: 'Food & Drink',\n aliases: ['birthday'],\n tags: ['party'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍰',\n description: 'shortcake',\n category: 'Food & Drink',\n aliases: ['cake'],\n tags: ['dessert'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧁',\n description: 'cupcake',\n category: 'Food & Drink',\n aliases: ['cupcake'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥧',\n description: 'pie',\n category: 'Food & Drink',\n aliases: ['pie'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🍫',\n description: 'chocolate bar',\n category: 'Food & Drink',\n aliases: ['chocolate_bar'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍬',\n description: 'candy',\n category: 'Food & Drink',\n aliases: ['candy'],\n tags: ['sweet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍭',\n description: 'lollipop',\n category: 'Food & Drink',\n aliases: ['lollipop'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍮',\n description: 'custard',\n category: 'Food & Drink',\n aliases: ['custard'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍯',\n description: 'honey pot',\n category: 'Food & Drink',\n aliases: ['honey_pot'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍼',\n description: 'baby bottle',\n category: 'Food & Drink',\n aliases: ['baby_bottle'],\n tags: ['milk'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥛',\n description: 'glass of milk',\n category: 'Food & Drink',\n aliases: ['milk_glass'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '☕',\n description: 'hot beverage',\n category: 'Food & Drink',\n aliases: ['coffee'],\n tags: ['cafe', 'espresso'],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '🫖',\n description: 'teapot',\n category: 'Food & Drink',\n aliases: ['teapot'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🍵',\n description: 'teacup without handle',\n category: 'Food & Drink',\n aliases: ['tea'],\n tags: ['green', 'breakfast'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍶',\n description: 'sake',\n category: 'Food & Drink',\n aliases: ['sake'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍾',\n description: 'bottle with popping cork',\n category: 'Food & Drink',\n aliases: ['champagne'],\n tags: ['bottle', 'bubbly', 'celebration'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🍷',\n description: 'wine glass',\n category: 'Food & Drink',\n aliases: ['wine_glass'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍸',\n description: 'cocktail glass',\n category: 'Food & Drink',\n aliases: ['cocktail'],\n tags: ['drink'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍹',\n description: 'tropical drink',\n category: 'Food & Drink',\n aliases: ['tropical_drink'],\n tags: ['summer', 'vacation'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍺',\n description: 'beer mug',\n category: 'Food & Drink',\n aliases: ['beer'],\n tags: ['drink'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🍻',\n description: 'clinking beer mugs',\n category: 'Food & Drink',\n aliases: ['beers'],\n tags: ['drinks'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥂',\n description: 'clinking glasses',\n category: 'Food & Drink',\n aliases: ['clinking_glasses'],\n tags: ['cheers', 'toast'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥃',\n description: 'tumbler glass',\n category: 'Food & Drink',\n aliases: ['tumbler_glass'],\n tags: ['whisky'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥤',\n description: 'cup with straw',\n category: 'Food & Drink',\n aliases: ['cup_with_straw'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧋',\n description: 'bubble tea',\n category: 'Food & Drink',\n aliases: ['bubble_tea'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧃',\n description: 'beverage box',\n category: 'Food & Drink',\n aliases: ['beverage_box'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧉',\n description: 'mate',\n category: 'Food & Drink',\n aliases: ['mate'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧊',\n description: 'ice',\n category: 'Food & Drink',\n aliases: ['ice_cube'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🥢',\n description: 'chopsticks',\n category: 'Food & Drink',\n aliases: ['chopsticks'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🍽️',\n description: 'fork and knife with plate',\n category: 'Food & Drink',\n aliases: ['plate_with_cutlery'],\n tags: ['dining', 'dinner'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🍴',\n description: 'fork and knife',\n category: 'Food & Drink',\n aliases: ['fork_and_knife'],\n tags: ['cutlery'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥄',\n description: 'spoon',\n category: 'Food & Drink',\n aliases: ['spoon'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🔪',\n description: 'kitchen knife',\n category: 'Food & Drink',\n aliases: ['hocho', 'knife'],\n tags: ['cut', 'chop'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏺',\n description: 'amphora',\n category: 'Food & Drink',\n aliases: ['amphora'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌍',\n description: 'globe showing Europe-Africa',\n category: 'Travel & Places',\n aliases: ['earth_africa'],\n tags: ['globe', 'world', 'international'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌎',\n description: 'globe showing Americas',\n category: 'Travel & Places',\n aliases: ['earth_americas'],\n tags: ['globe', 'world', 'international'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌏',\n description: 'globe showing Asia-Australia',\n category: 'Travel & Places',\n aliases: ['earth_asia'],\n tags: ['globe', 'world', 'international'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌐',\n description: 'globe with meridians',\n category: 'Travel & Places',\n aliases: ['globe_with_meridians'],\n tags: ['world', 'global', 'international'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗺️',\n description: 'world map',\n category: 'Travel & Places',\n aliases: ['world_map'],\n tags: ['travel'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🗾',\n description: 'map of Japan',\n category: 'Travel & Places',\n aliases: ['japan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧭',\n description: 'compass',\n category: 'Travel & Places',\n aliases: ['compass'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🏔️',\n description: 'snow-capped mountain',\n category: 'Travel & Places',\n aliases: ['mountain_snow'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⛰️',\n description: 'mountain',\n category: 'Travel & Places',\n aliases: ['mountain'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🌋',\n description: 'volcano',\n category: 'Travel & Places',\n aliases: ['volcano'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗻',\n description: 'mount fuji',\n category: 'Travel & Places',\n aliases: ['mount_fuji'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏕️',\n description: 'camping',\n category: 'Travel & Places',\n aliases: ['camping'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏖️',\n description: 'beach with umbrella',\n category: 'Travel & Places',\n aliases: ['beach_umbrella'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏜️',\n description: 'desert',\n category: 'Travel & Places',\n aliases: ['desert'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏝️',\n description: 'desert island',\n category: 'Travel & Places',\n aliases: ['desert_island'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏞️',\n description: 'national park',\n category: 'Travel & Places',\n aliases: ['national_park'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏟️',\n description: 'stadium',\n category: 'Travel & Places',\n aliases: ['stadium'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏛️',\n description: 'classical building',\n category: 'Travel & Places',\n aliases: ['classical_building'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏗️',\n description: 'building construction',\n category: 'Travel & Places',\n aliases: ['building_construction'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🧱',\n description: 'brick',\n category: 'Travel & Places',\n aliases: ['bricks'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪨',\n description: 'rock',\n category: 'Travel & Places',\n aliases: ['rock'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪵',\n description: 'wood',\n category: 'Travel & Places',\n aliases: ['wood'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🛖',\n description: 'hut',\n category: 'Travel & Places',\n aliases: ['hut'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🏘️',\n description: 'houses',\n category: 'Travel & Places',\n aliases: ['houses'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏚️',\n description: 'derelict house',\n category: 'Travel & Places',\n aliases: ['derelict_house'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏠',\n description: 'house',\n category: 'Travel & Places',\n aliases: ['house'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏡',\n description: 'house with garden',\n category: 'Travel & Places',\n aliases: ['house_with_garden'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏢',\n description: 'office building',\n category: 'Travel & Places',\n aliases: ['office'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏣',\n description: 'Japanese post office',\n category: 'Travel & Places',\n aliases: ['post_office'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏤',\n description: 'post office',\n category: 'Travel & Places',\n aliases: ['european_post_office'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏥',\n description: 'hospital',\n category: 'Travel & Places',\n aliases: ['hospital'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏦',\n description: 'bank',\n category: 'Travel & Places',\n aliases: ['bank'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏨',\n description: 'hotel',\n category: 'Travel & Places',\n aliases: ['hotel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏩',\n description: 'love hotel',\n category: 'Travel & Places',\n aliases: ['love_hotel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏪',\n description: 'convenience store',\n category: 'Travel & Places',\n aliases: ['convenience_store'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏫',\n description: 'school',\n category: 'Travel & Places',\n aliases: ['school'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏬',\n description: 'department store',\n category: 'Travel & Places',\n aliases: ['department_store'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏭',\n description: 'factory',\n category: 'Travel & Places',\n aliases: ['factory'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏯',\n description: 'Japanese castle',\n category: 'Travel & Places',\n aliases: ['japanese_castle'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏰',\n description: 'castle',\n category: 'Travel & Places',\n aliases: ['european_castle'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💒',\n description: 'wedding',\n category: 'Travel & Places',\n aliases: ['wedding'],\n tags: ['marriage'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗼',\n description: 'Tokyo tower',\n category: 'Travel & Places',\n aliases: ['tokyo_tower'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗽',\n description: 'Statue of Liberty',\n category: 'Travel & Places',\n aliases: ['statue_of_liberty'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⛪',\n description: 'church',\n category: 'Travel & Places',\n aliases: ['church'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🕌',\n description: 'mosque',\n category: 'Travel & Places',\n aliases: ['mosque'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛕',\n description: 'hindu temple',\n category: 'Travel & Places',\n aliases: ['hindu_temple'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🕍',\n description: 'synagogue',\n category: 'Travel & Places',\n aliases: ['synagogue'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '⛩️',\n description: 'shinto shrine',\n category: 'Travel & Places',\n aliases: ['shinto_shrine'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🕋',\n description: 'kaaba',\n category: 'Travel & Places',\n aliases: ['kaaba'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '⛲',\n description: 'fountain',\n category: 'Travel & Places',\n aliases: ['fountain'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '⛺',\n description: 'tent',\n category: 'Travel & Places',\n aliases: ['tent'],\n tags: ['camping'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🌁',\n description: 'foggy',\n category: 'Travel & Places',\n aliases: ['foggy'],\n tags: ['karl'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌃',\n description: 'night with stars',\n category: 'Travel & Places',\n aliases: ['night_with_stars'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏙️',\n description: 'cityscape',\n category: 'Travel & Places',\n aliases: ['cityscape'],\n tags: ['skyline'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌄',\n description: 'sunrise over mountains',\n category: 'Travel & Places',\n aliases: ['sunrise_over_mountains'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌅',\n description: 'sunrise',\n category: 'Travel & Places',\n aliases: ['sunrise'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌆',\n description: 'cityscape at dusk',\n category: 'Travel & Places',\n aliases: ['city_sunset'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌇',\n description: 'sunset',\n category: 'Travel & Places',\n aliases: ['city_sunrise'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌉',\n description: 'bridge at night',\n category: 'Travel & Places',\n aliases: ['bridge_at_night'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '♨️',\n description: 'hot springs',\n category: 'Travel & Places',\n aliases: ['hotsprings'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🎠',\n description: 'carousel horse',\n category: 'Travel & Places',\n aliases: ['carousel_horse'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎡',\n description: 'ferris wheel',\n category: 'Travel & Places',\n aliases: ['ferris_wheel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎢',\n description: 'roller coaster',\n category: 'Travel & Places',\n aliases: ['roller_coaster'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💈',\n description: 'barber pole',\n category: 'Travel & Places',\n aliases: ['barber'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎪',\n description: 'circus tent',\n category: 'Travel & Places',\n aliases: ['circus_tent'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚂',\n description: 'locomotive',\n category: 'Travel & Places',\n aliases: ['steam_locomotive'],\n tags: ['train'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚃',\n description: 'railway car',\n category: 'Travel & Places',\n aliases: ['railway_car'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚄',\n description: 'high-speed train',\n category: 'Travel & Places',\n aliases: ['bullettrain_side'],\n tags: ['train'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚅',\n description: 'bullet train',\n category: 'Travel & Places',\n aliases: ['bullettrain_front'],\n tags: ['train'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚆',\n description: 'train',\n category: 'Travel & Places',\n aliases: ['train2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚇',\n description: 'metro',\n category: 'Travel & Places',\n aliases: ['metro'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚈',\n description: 'light rail',\n category: 'Travel & Places',\n aliases: ['light_rail'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚉',\n description: 'station',\n category: 'Travel & Places',\n aliases: ['station'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚊',\n description: 'tram',\n category: 'Travel & Places',\n aliases: ['tram'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚝',\n description: 'monorail',\n category: 'Travel & Places',\n aliases: ['monorail'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚞',\n description: 'mountain railway',\n category: 'Travel & Places',\n aliases: ['mountain_railway'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚋',\n description: 'tram car',\n category: 'Travel & Places',\n aliases: ['train'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚌',\n description: 'bus',\n category: 'Travel & Places',\n aliases: ['bus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚍',\n description: 'oncoming bus',\n category: 'Travel & Places',\n aliases: ['oncoming_bus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚎',\n description: 'trolleybus',\n category: 'Travel & Places',\n aliases: ['trolleybus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚐',\n description: 'minibus',\n category: 'Travel & Places',\n aliases: ['minibus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚑',\n description: 'ambulance',\n category: 'Travel & Places',\n aliases: ['ambulance'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚒',\n description: 'fire engine',\n category: 'Travel & Places',\n aliases: ['fire_engine'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚓',\n description: 'police car',\n category: 'Travel & Places',\n aliases: ['police_car'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚔',\n description: 'oncoming police car',\n category: 'Travel & Places',\n aliases: ['oncoming_police_car'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚕',\n description: 'taxi',\n category: 'Travel & Places',\n aliases: ['taxi'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚖',\n description: 'oncoming taxi',\n category: 'Travel & Places',\n aliases: ['oncoming_taxi'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚗',\n description: 'automobile',\n category: 'Travel & Places',\n aliases: ['car', 'red_car'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚘',\n description: 'oncoming automobile',\n category: 'Travel & Places',\n aliases: ['oncoming_automobile'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚙',\n description: 'sport utility vehicle',\n category: 'Travel & Places',\n aliases: ['blue_car'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛻',\n description: 'pickup truck',\n category: 'Travel & Places',\n aliases: ['pickup_truck'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🚚',\n description: 'delivery truck',\n category: 'Travel & Places',\n aliases: ['truck'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚛',\n description: 'articulated lorry',\n category: 'Travel & Places',\n aliases: ['articulated_lorry'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚜',\n description: 'tractor',\n category: 'Travel & Places',\n aliases: ['tractor'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏎️',\n description: 'racing car',\n category: 'Travel & Places',\n aliases: ['racing_car'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏍️',\n description: 'motorcycle',\n category: 'Travel & Places',\n aliases: ['motorcycle'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛵',\n description: 'motor scooter',\n category: 'Travel & Places',\n aliases: ['motor_scooter'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🦽',\n description: 'manual wheelchair',\n category: 'Travel & Places',\n aliases: ['manual_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🦼',\n description: 'motorized wheelchair',\n category: 'Travel & Places',\n aliases: ['motorized_wheelchair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🛺',\n description: 'auto rickshaw',\n category: 'Travel & Places',\n aliases: ['auto_rickshaw'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🚲',\n description: 'bicycle',\n category: 'Travel & Places',\n aliases: ['bike'],\n tags: ['bicycle'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛴',\n description: 'kick scooter',\n category: 'Travel & Places',\n aliases: ['kick_scooter'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🛹',\n description: 'skateboard',\n category: 'Travel & Places',\n aliases: ['skateboard'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🛼',\n description: 'roller skate',\n category: 'Travel & Places',\n aliases: ['roller_skate'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🚏',\n description: 'bus stop',\n category: 'Travel & Places',\n aliases: ['busstop'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛣️',\n description: 'motorway',\n category: 'Travel & Places',\n aliases: ['motorway'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛤️',\n description: 'railway track',\n category: 'Travel & Places',\n aliases: ['railway_track'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛢️',\n description: 'oil drum',\n category: 'Travel & Places',\n aliases: ['oil_drum'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⛽',\n description: 'fuel pump',\n category: 'Travel & Places',\n aliases: ['fuelpump'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🚨',\n description: 'police car light',\n category: 'Travel & Places',\n aliases: ['rotating_light'],\n tags: ['911', 'emergency'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚥',\n description: 'horizontal traffic light',\n category: 'Travel & Places',\n aliases: ['traffic_light'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚦',\n description: 'vertical traffic light',\n category: 'Travel & Places',\n aliases: ['vertical_traffic_light'],\n tags: ['semaphore'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛑',\n description: 'stop sign',\n category: 'Travel & Places',\n aliases: ['stop_sign'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🚧',\n description: 'construction',\n category: 'Travel & Places',\n aliases: ['construction'],\n tags: ['wip'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⚓',\n description: 'anchor',\n category: 'Travel & Places',\n aliases: ['anchor'],\n tags: ['ship'],\n unicode_version: '4.1',\n ios_version: '6.0',\n },\n {\n emoji: '⛵',\n description: 'sailboat',\n category: 'Travel & Places',\n aliases: ['boat', 'sailboat'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🛶',\n description: 'canoe',\n category: 'Travel & Places',\n aliases: ['canoe'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🚤',\n description: 'speedboat',\n category: 'Travel & Places',\n aliases: ['speedboat'],\n tags: ['ship'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛳️',\n description: 'passenger ship',\n category: 'Travel & Places',\n aliases: ['passenger_ship'],\n tags: ['cruise'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⛴️',\n description: 'ferry',\n category: 'Travel & Places',\n aliases: ['ferry'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🛥️',\n description: 'motor boat',\n category: 'Travel & Places',\n aliases: ['motor_boat'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🚢',\n description: 'ship',\n category: 'Travel & Places',\n aliases: ['ship'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '✈️',\n description: 'airplane',\n category: 'Travel & Places',\n aliases: ['airplane'],\n tags: ['flight'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🛩️',\n description: 'small airplane',\n category: 'Travel & Places',\n aliases: ['small_airplane'],\n tags: ['flight'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛫',\n description: 'airplane departure',\n category: 'Travel & Places',\n aliases: ['flight_departure'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛬',\n description: 'airplane arrival',\n category: 'Travel & Places',\n aliases: ['flight_arrival'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🪂',\n description: 'parachute',\n category: 'Travel & Places',\n aliases: ['parachute'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '💺',\n description: 'seat',\n category: 'Travel & Places',\n aliases: ['seat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚁',\n description: 'helicopter',\n category: 'Travel & Places',\n aliases: ['helicopter'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚟',\n description: 'suspension railway',\n category: 'Travel & Places',\n aliases: ['suspension_railway'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚠',\n description: 'mountain cableway',\n category: 'Travel & Places',\n aliases: ['mountain_cableway'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚡',\n description: 'aerial tramway',\n category: 'Travel & Places',\n aliases: ['aerial_tramway'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛰️',\n description: 'satellite',\n category: 'Travel & Places',\n aliases: ['artificial_satellite'],\n tags: ['orbit', 'space'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🚀',\n description: 'rocket',\n category: 'Travel & Places',\n aliases: ['rocket'],\n tags: ['ship', 'launch'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛸',\n description: 'flying saucer',\n category: 'Travel & Places',\n aliases: ['flying_saucer'],\n tags: ['ufo'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🛎️',\n description: 'bellhop bell',\n category: 'Travel & Places',\n aliases: ['bellhop_bell'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🧳',\n description: 'luggage',\n category: 'Travel & Places',\n aliases: ['luggage'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '⌛',\n description: 'hourglass done',\n category: 'Travel & Places',\n aliases: ['hourglass'],\n tags: ['time'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⏳',\n description: 'hourglass not done',\n category: 'Travel & Places',\n aliases: ['hourglass_flowing_sand'],\n tags: ['time'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⌚',\n description: 'watch',\n category: 'Travel & Places',\n aliases: ['watch'],\n tags: ['time'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⏰',\n description: 'alarm clock',\n category: 'Travel & Places',\n aliases: ['alarm_clock'],\n tags: ['morning'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏱️',\n description: 'stopwatch',\n category: 'Travel & Places',\n aliases: ['stopwatch'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.1',\n },\n {\n emoji: '⏲️',\n description: 'timer clock',\n category: 'Travel & Places',\n aliases: ['timer_clock'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.1',\n },\n {\n emoji: '🕰️',\n description: 'mantelpiece clock',\n category: 'Travel & Places',\n aliases: ['mantelpiece_clock'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🕛',\n description: 'twelve o’clock',\n category: 'Travel & Places',\n aliases: ['clock12'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕧',\n description: 'twelve-thirty',\n category: 'Travel & Places',\n aliases: ['clock1230'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕐',\n description: 'one o’clock',\n category: 'Travel & Places',\n aliases: ['clock1'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕜',\n description: 'one-thirty',\n category: 'Travel & Places',\n aliases: ['clock130'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕑',\n description: 'two o’clock',\n category: 'Travel & Places',\n aliases: ['clock2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕝',\n description: 'two-thirty',\n category: 'Travel & Places',\n aliases: ['clock230'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕒',\n description: 'three o’clock',\n category: 'Travel & Places',\n aliases: ['clock3'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕞',\n description: 'three-thirty',\n category: 'Travel & Places',\n aliases: ['clock330'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕓',\n description: 'four o’clock',\n category: 'Travel & Places',\n aliases: ['clock4'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕟',\n description: 'four-thirty',\n category: 'Travel & Places',\n aliases: ['clock430'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕔',\n description: 'five o’clock',\n category: 'Travel & Places',\n aliases: ['clock5'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕠',\n description: 'five-thirty',\n category: 'Travel & Places',\n aliases: ['clock530'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕕',\n description: 'six o’clock',\n category: 'Travel & Places',\n aliases: ['clock6'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕡',\n description: 'six-thirty',\n category: 'Travel & Places',\n aliases: ['clock630'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕖',\n description: 'seven o’clock',\n category: 'Travel & Places',\n aliases: ['clock7'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕢',\n description: 'seven-thirty',\n category: 'Travel & Places',\n aliases: ['clock730'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕗',\n description: 'eight o’clock',\n category: 'Travel & Places',\n aliases: ['clock8'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕣',\n description: 'eight-thirty',\n category: 'Travel & Places',\n aliases: ['clock830'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕘',\n description: 'nine o’clock',\n category: 'Travel & Places',\n aliases: ['clock9'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕤',\n description: 'nine-thirty',\n category: 'Travel & Places',\n aliases: ['clock930'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕙',\n description: 'ten o’clock',\n category: 'Travel & Places',\n aliases: ['clock10'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕥',\n description: 'ten-thirty',\n category: 'Travel & Places',\n aliases: ['clock1030'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕚',\n description: 'eleven o’clock',\n category: 'Travel & Places',\n aliases: ['clock11'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕦',\n description: 'eleven-thirty',\n category: 'Travel & Places',\n aliases: ['clock1130'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌑',\n description: 'new moon',\n category: 'Travel & Places',\n aliases: ['new_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌒',\n description: 'waxing crescent moon',\n category: 'Travel & Places',\n aliases: ['waxing_crescent_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌓',\n description: 'first quarter moon',\n category: 'Travel & Places',\n aliases: ['first_quarter_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌔',\n description: 'waxing gibbous moon',\n category: 'Travel & Places',\n aliases: ['moon', 'waxing_gibbous_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌕',\n description: 'full moon',\n category: 'Travel & Places',\n aliases: ['full_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌖',\n description: 'waning gibbous moon',\n category: 'Travel & Places',\n aliases: ['waning_gibbous_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌗',\n description: 'last quarter moon',\n category: 'Travel & Places',\n aliases: ['last_quarter_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌘',\n description: 'waning crescent moon',\n category: 'Travel & Places',\n aliases: ['waning_crescent_moon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌙',\n description: 'crescent moon',\n category: 'Travel & Places',\n aliases: ['crescent_moon'],\n tags: ['night'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌚',\n description: 'new moon face',\n category: 'Travel & Places',\n aliases: ['new_moon_with_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌛',\n description: 'first quarter moon face',\n category: 'Travel & Places',\n aliases: ['first_quarter_moon_with_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌜',\n description: 'last quarter moon face',\n category: 'Travel & Places',\n aliases: ['last_quarter_moon_with_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌡️',\n description: 'thermometer',\n category: 'Travel & Places',\n aliases: ['thermometer'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '☀️',\n description: 'sun',\n category: 'Travel & Places',\n aliases: ['sunny'],\n tags: ['weather'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🌝',\n description: 'full moon face',\n category: 'Travel & Places',\n aliases: ['full_moon_with_face'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌞',\n description: 'sun with face',\n category: 'Travel & Places',\n aliases: ['sun_with_face'],\n tags: ['summer'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪐',\n description: 'ringed planet',\n category: 'Travel & Places',\n aliases: ['ringed_planet'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '⭐',\n description: 'star',\n category: 'Travel & Places',\n aliases: ['star'],\n tags: [],\n unicode_version: '5.1',\n ios_version: '6.0',\n },\n {\n emoji: '🌟',\n description: 'glowing star',\n category: 'Travel & Places',\n aliases: ['star2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌠',\n description: 'shooting star',\n category: 'Travel & Places',\n aliases: ['stars'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌌',\n description: 'milky way',\n category: 'Travel & Places',\n aliases: ['milky_way'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☁️',\n description: 'cloud',\n category: 'Travel & Places',\n aliases: ['cloud'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⛅',\n description: 'sun behind cloud',\n category: 'Travel & Places',\n aliases: ['partly_sunny'],\n tags: ['weather', 'cloud'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '⛈️',\n description: 'cloud with lightning and rain',\n category: 'Travel & Places',\n aliases: ['cloud_with_lightning_and_rain'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🌤️',\n description: 'sun behind small cloud',\n category: 'Travel & Places',\n aliases: ['sun_behind_small_cloud'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌥️',\n description: 'sun behind large cloud',\n category: 'Travel & Places',\n aliases: ['sun_behind_large_cloud'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌦️',\n description: 'sun behind rain cloud',\n category: 'Travel & Places',\n aliases: ['sun_behind_rain_cloud'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌧️',\n description: 'cloud with rain',\n category: 'Travel & Places',\n aliases: ['cloud_with_rain'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌨️',\n description: 'cloud with snow',\n category: 'Travel & Places',\n aliases: ['cloud_with_snow'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌩️',\n description: 'cloud with lightning',\n category: 'Travel & Places',\n aliases: ['cloud_with_lightning'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌪️',\n description: 'tornado',\n category: 'Travel & Places',\n aliases: ['tornado'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌫️',\n description: 'fog',\n category: 'Travel & Places',\n aliases: ['fog'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌬️',\n description: 'wind face',\n category: 'Travel & Places',\n aliases: ['wind_face'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🌀',\n description: 'cyclone',\n category: 'Travel & Places',\n aliases: ['cyclone'],\n tags: ['swirl'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌈',\n description: 'rainbow',\n category: 'Travel & Places',\n aliases: ['rainbow'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌂',\n description: 'closed umbrella',\n category: 'Travel & Places',\n aliases: ['closed_umbrella'],\n tags: ['weather', 'rain'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☂️',\n description: 'umbrella',\n category: 'Travel & Places',\n aliases: ['open_umbrella'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☔',\n description: 'umbrella with rain drops',\n category: 'Travel & Places',\n aliases: ['umbrella'],\n tags: ['rain', 'weather'],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '⛱️',\n description: 'umbrella on ground',\n category: 'Travel & Places',\n aliases: ['parasol_on_ground'],\n tags: ['beach_umbrella'],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '⚡',\n description: 'high voltage',\n category: 'Travel & Places',\n aliases: ['zap'],\n tags: ['lightning', 'thunder'],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '❄️',\n description: 'snowflake',\n category: 'Travel & Places',\n aliases: ['snowflake'],\n tags: ['winter', 'cold', 'weather'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '☃️',\n description: 'snowman',\n category: 'Travel & Places',\n aliases: ['snowman_with_snow'],\n tags: ['winter', 'christmas'],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '⛄',\n description: 'snowman without snow',\n category: 'Travel & Places',\n aliases: ['snowman'],\n tags: ['winter'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '☄️',\n description: 'comet',\n category: 'Travel & Places',\n aliases: ['comet'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '🔥',\n description: 'fire',\n category: 'Travel & Places',\n aliases: ['fire'],\n tags: ['burn'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💧',\n description: 'droplet',\n category: 'Travel & Places',\n aliases: ['droplet'],\n tags: ['water'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🌊',\n description: 'water wave',\n category: 'Travel & Places',\n aliases: ['ocean'],\n tags: ['sea'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎃',\n description: 'jack-o-lantern',\n category: 'Activities',\n aliases: ['jack_o_lantern'],\n tags: ['halloween'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎄',\n description: 'Christmas tree',\n category: 'Activities',\n aliases: ['christmas_tree'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎆',\n description: 'fireworks',\n category: 'Activities',\n aliases: ['fireworks'],\n tags: ['festival', 'celebration'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎇',\n description: 'sparkler',\n category: 'Activities',\n aliases: ['sparkler'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧨',\n description: 'firecracker',\n category: 'Activities',\n aliases: ['firecracker'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '✨',\n description: 'sparkles',\n category: 'Activities',\n aliases: ['sparkles'],\n tags: ['shiny'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎈',\n description: 'balloon',\n category: 'Activities',\n aliases: ['balloon'],\n tags: ['party', 'birthday'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎉',\n description: 'party popper',\n category: 'Activities',\n aliases: ['tada'],\n tags: ['hooray', 'party'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎊',\n description: 'confetti ball',\n category: 'Activities',\n aliases: ['confetti_ball'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎋',\n description: 'tanabata tree',\n category: 'Activities',\n aliases: ['tanabata_tree'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎍',\n description: 'pine decoration',\n category: 'Activities',\n aliases: ['bamboo'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎎',\n description: 'Japanese dolls',\n category: 'Activities',\n aliases: ['dolls'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎏',\n description: 'carp streamer',\n category: 'Activities',\n aliases: ['flags'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎐',\n description: 'wind chime',\n category: 'Activities',\n aliases: ['wind_chime'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎑',\n description: 'moon viewing ceremony',\n category: 'Activities',\n aliases: ['rice_scene'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧧',\n description: 'red envelope',\n category: 'Activities',\n aliases: ['red_envelope'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎀',\n description: 'ribbon',\n category: 'Activities',\n aliases: ['ribbon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎁',\n description: 'wrapped gift',\n category: 'Activities',\n aliases: ['gift'],\n tags: ['present', 'birthday', 'christmas'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎗️',\n description: 'reminder ribbon',\n category: 'Activities',\n aliases: ['reminder_ribbon'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎟️',\n description: 'admission tickets',\n category: 'Activities',\n aliases: ['tickets'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎫',\n description: 'ticket',\n category: 'Activities',\n aliases: ['ticket'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎖️',\n description: 'military medal',\n category: 'Activities',\n aliases: ['medal_military'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏆',\n description: 'trophy',\n category: 'Activities',\n aliases: ['trophy'],\n tags: ['award', 'contest', 'winner'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏅',\n description: 'sports medal',\n category: 'Activities',\n aliases: ['medal_sports'],\n tags: ['gold', 'winner'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🥇',\n description: '1st place medal',\n category: 'Activities',\n aliases: ['1st_place_medal'],\n tags: ['gold'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥈',\n description: '2nd place medal',\n category: 'Activities',\n aliases: ['2nd_place_medal'],\n tags: ['silver'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥉',\n description: '3rd place medal',\n category: 'Activities',\n aliases: ['3rd_place_medal'],\n tags: ['bronze'],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '⚽',\n description: 'soccer ball',\n category: 'Activities',\n aliases: ['soccer'],\n tags: ['sports'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '⚾',\n description: 'baseball',\n category: 'Activities',\n aliases: ['baseball'],\n tags: ['sports'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🥎',\n description: 'softball',\n category: 'Activities',\n aliases: ['softball'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🏀',\n description: 'basketball',\n category: 'Activities',\n aliases: ['basketball'],\n tags: ['sports'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏐',\n description: 'volleyball',\n category: 'Activities',\n aliases: ['volleyball'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏈',\n description: 'american football',\n category: 'Activities',\n aliases: ['football'],\n tags: ['sports'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏉',\n description: 'rugby football',\n category: 'Activities',\n aliases: ['rugby_football'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎾',\n description: 'tennis',\n category: 'Activities',\n aliases: ['tennis'],\n tags: ['sports'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥏',\n description: 'flying disc',\n category: 'Activities',\n aliases: ['flying_disc'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎳',\n description: 'bowling',\n category: 'Activities',\n aliases: ['bowling'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏏',\n description: 'cricket game',\n category: 'Activities',\n aliases: ['cricket_game'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏑',\n description: 'field hockey',\n category: 'Activities',\n aliases: ['field_hockey'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏒',\n description: 'ice hockey',\n category: 'Activities',\n aliases: ['ice_hockey'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🥍',\n description: 'lacrosse',\n category: 'Activities',\n aliases: ['lacrosse'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🏓',\n description: 'ping pong',\n category: 'Activities',\n aliases: ['ping_pong'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏸',\n description: 'badminton',\n category: 'Activities',\n aliases: ['badminton'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🥊',\n description: 'boxing glove',\n category: 'Activities',\n aliases: ['boxing_glove'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥋',\n description: 'martial arts uniform',\n category: 'Activities',\n aliases: ['martial_arts_uniform'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🥅',\n description: 'goal net',\n category: 'Activities',\n aliases: ['goal_net'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '⛳',\n description: 'flag in hole',\n category: 'Activities',\n aliases: ['golf'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '⛸️',\n description: 'ice skate',\n category: 'Activities',\n aliases: ['ice_skate'],\n tags: ['skating'],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🎣',\n description: 'fishing pole',\n category: 'Activities',\n aliases: ['fishing_pole_and_fish'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🤿',\n description: 'diving mask',\n category: 'Activities',\n aliases: ['diving_mask'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🎽',\n description: 'running shirt',\n category: 'Activities',\n aliases: ['running_shirt_with_sash'],\n tags: ['marathon'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎿',\n description: 'skis',\n category: 'Activities',\n aliases: ['ski'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛷',\n description: 'sled',\n category: 'Activities',\n aliases: ['sled'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥌',\n description: 'curling stone',\n category: 'Activities',\n aliases: ['curling_stone'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎯',\n description: 'bullseye',\n category: 'Activities',\n aliases: ['dart'],\n tags: ['target'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪀',\n description: 'yo-yo',\n category: 'Activities',\n aliases: ['yo_yo'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🪁',\n description: 'kite',\n category: 'Activities',\n aliases: ['kite'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🎱',\n description: 'pool 8 ball',\n category: 'Activities',\n aliases: ['8ball'],\n tags: ['pool', 'billiards'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔮',\n description: 'crystal ball',\n category: 'Activities',\n aliases: ['crystal_ball'],\n tags: ['fortune'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪄',\n description: 'magic wand',\n category: 'Activities',\n aliases: ['magic_wand'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧿',\n description: 'nazar amulet',\n category: 'Activities',\n aliases: ['nazar_amulet'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎮',\n description: 'video game',\n category: 'Activities',\n aliases: ['video_game'],\n tags: ['play', 'controller', 'console'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕹️',\n description: 'joystick',\n category: 'Activities',\n aliases: ['joystick'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎰',\n description: 'slot machine',\n category: 'Activities',\n aliases: ['slot_machine'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎲',\n description: 'game die',\n category: 'Activities',\n aliases: ['game_die'],\n tags: ['dice', 'gambling'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧩',\n description: 'puzzle piece',\n category: 'Activities',\n aliases: ['jigsaw'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧸',\n description: 'teddy bear',\n category: 'Activities',\n aliases: ['teddy_bear'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪅',\n description: 'piñata',\n category: 'Activities',\n aliases: ['pinata'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪆',\n description: 'nesting dolls',\n category: 'Activities',\n aliases: ['nesting_dolls'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '♠️',\n description: 'spade suit',\n category: 'Activities',\n aliases: ['spades'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♥️',\n description: 'heart suit',\n category: 'Activities',\n aliases: ['hearts'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♦️',\n description: 'diamond suit',\n category: 'Activities',\n aliases: ['diamonds'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♣️',\n description: 'club suit',\n category: 'Activities',\n aliases: ['clubs'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♟️',\n description: 'chess pawn',\n category: 'Activities',\n aliases: ['chess_pawn'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🃏',\n description: 'joker',\n category: 'Activities',\n aliases: ['black_joker'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🀄',\n description: 'mahjong red dragon',\n category: 'Activities',\n aliases: ['mahjong'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🎴',\n description: 'flower playing cards',\n category: 'Activities',\n aliases: ['flower_playing_cards'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎭',\n description: 'performing arts',\n category: 'Activities',\n aliases: ['performing_arts'],\n tags: ['theater', 'drama'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🖼️',\n description: 'framed picture',\n category: 'Activities',\n aliases: ['framed_picture'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎨',\n description: 'artist palette',\n category: 'Activities',\n aliases: ['art'],\n tags: ['design', 'paint'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧵',\n description: 'thread',\n category: 'Activities',\n aliases: ['thread'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪡',\n description: 'sewing needle',\n category: 'Activities',\n aliases: ['sewing_needle'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧶',\n description: 'yarn',\n category: 'Activities',\n aliases: ['yarn'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪢',\n description: 'knot',\n category: 'Activities',\n aliases: ['knot'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '👓',\n description: 'glasses',\n category: 'Objects',\n aliases: ['eyeglasses'],\n tags: ['glasses'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕶️',\n description: 'sunglasses',\n category: 'Objects',\n aliases: ['dark_sunglasses'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🥽',\n description: 'goggles',\n category: 'Objects',\n aliases: ['goggles'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥼',\n description: 'lab coat',\n category: 'Objects',\n aliases: ['lab_coat'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🦺',\n description: 'safety vest',\n category: 'Objects',\n aliases: ['safety_vest'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '👔',\n description: 'necktie',\n category: 'Objects',\n aliases: ['necktie'],\n tags: ['shirt', 'formal'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👕',\n description: 't-shirt',\n category: 'Objects',\n aliases: ['shirt', 'tshirt'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👖',\n description: 'jeans',\n category: 'Objects',\n aliases: ['jeans'],\n tags: ['pants'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧣',\n description: 'scarf',\n category: 'Objects',\n aliases: ['scarf'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧤',\n description: 'gloves',\n category: 'Objects',\n aliases: ['gloves'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧥',\n description: 'coat',\n category: 'Objects',\n aliases: ['coat'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧦',\n description: 'socks',\n category: 'Objects',\n aliases: ['socks'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '👗',\n description: 'dress',\n category: 'Objects',\n aliases: ['dress'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👘',\n description: 'kimono',\n category: 'Objects',\n aliases: ['kimono'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥻',\n description: 'sari',\n category: 'Objects',\n aliases: ['sari'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🩱',\n description: 'one-piece swimsuit',\n category: 'Objects',\n aliases: ['one_piece_swimsuit'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🩲',\n description: 'briefs',\n category: 'Objects',\n aliases: ['swim_brief'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🩳',\n description: 'shorts',\n category: 'Objects',\n aliases: ['shorts'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '👙',\n description: 'bikini',\n category: 'Objects',\n aliases: ['bikini'],\n tags: ['beach'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👚',\n description: 'woman’s clothes',\n category: 'Objects',\n aliases: ['womans_clothes'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👛',\n description: 'purse',\n category: 'Objects',\n aliases: ['purse'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👜',\n description: 'handbag',\n category: 'Objects',\n aliases: ['handbag'],\n tags: ['bag'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👝',\n description: 'clutch bag',\n category: 'Objects',\n aliases: ['pouch'],\n tags: ['bag'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛍️',\n description: 'shopping bags',\n category: 'Objects',\n aliases: ['shopping'],\n tags: ['bags'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎒',\n description: 'backpack',\n category: 'Objects',\n aliases: ['school_satchel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🩴',\n description: 'thong sandal',\n category: 'Objects',\n aliases: ['thong_sandal'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '👞',\n description: 'man’s shoe',\n category: 'Objects',\n aliases: ['mans_shoe', 'shoe'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👟',\n description: 'running shoe',\n category: 'Objects',\n aliases: ['athletic_shoe'],\n tags: ['sneaker', 'sport', 'running'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🥾',\n description: 'hiking boot',\n category: 'Objects',\n aliases: ['hiking_boot'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🥿',\n description: 'flat shoe',\n category: 'Objects',\n aliases: ['flat_shoe'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '👠',\n description: 'high-heeled shoe',\n category: 'Objects',\n aliases: ['high_heel'],\n tags: ['shoe'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👡',\n description: 'woman’s sandal',\n category: 'Objects',\n aliases: ['sandal'],\n tags: ['shoe'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🩰',\n description: 'ballet shoes',\n category: 'Objects',\n aliases: ['ballet_shoes'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '👢',\n description: 'woman’s boot',\n category: 'Objects',\n aliases: ['boot'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👑',\n description: 'crown',\n category: 'Objects',\n aliases: ['crown'],\n tags: ['king', 'queen', 'royal'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '👒',\n description: 'woman’s hat',\n category: 'Objects',\n aliases: ['womans_hat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎩',\n description: 'top hat',\n category: 'Objects',\n aliases: ['tophat'],\n tags: ['hat', 'classy'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎓',\n description: 'graduation cap',\n category: 'Objects',\n aliases: ['mortar_board'],\n tags: ['education', 'college', 'university', 'graduation'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧢',\n description: 'billed cap',\n category: 'Objects',\n aliases: ['billed_cap'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪖',\n description: 'military helmet',\n category: 'Objects',\n aliases: ['military_helmet'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '⛑️',\n description: 'rescue worker’s helmet',\n category: 'Objects',\n aliases: ['rescue_worker_helmet'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '📿',\n description: 'prayer beads',\n category: 'Objects',\n aliases: ['prayer_beads'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '💄',\n description: 'lipstick',\n category: 'Objects',\n aliases: ['lipstick'],\n tags: ['makeup'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💍',\n description: 'ring',\n category: 'Objects',\n aliases: ['ring'],\n tags: ['wedding', 'marriage', 'engaged'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💎',\n description: 'gem stone',\n category: 'Objects',\n aliases: ['gem'],\n tags: ['diamond'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔇',\n description: 'muted speaker',\n category: 'Objects',\n aliases: ['mute'],\n tags: ['sound', 'volume'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔈',\n description: 'speaker low volume',\n category: 'Objects',\n aliases: ['speaker'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔉',\n description: 'speaker medium volume',\n category: 'Objects',\n aliases: ['sound'],\n tags: ['volume'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔊',\n description: 'speaker high volume',\n category: 'Objects',\n aliases: ['loud_sound'],\n tags: ['volume'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📢',\n description: 'loudspeaker',\n category: 'Objects',\n aliases: ['loudspeaker'],\n tags: ['announcement'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📣',\n description: 'megaphone',\n category: 'Objects',\n aliases: ['mega'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📯',\n description: 'postal horn',\n category: 'Objects',\n aliases: ['postal_horn'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔔',\n description: 'bell',\n category: 'Objects',\n aliases: ['bell'],\n tags: ['sound', 'notification'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔕',\n description: 'bell with slash',\n category: 'Objects',\n aliases: ['no_bell'],\n tags: ['volume', 'off'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎼',\n description: 'musical score',\n category: 'Objects',\n aliases: ['musical_score'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎵',\n description: 'musical note',\n category: 'Objects',\n aliases: ['musical_note'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎶',\n description: 'musical notes',\n category: 'Objects',\n aliases: ['notes'],\n tags: ['music'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎙️',\n description: 'studio microphone',\n category: 'Objects',\n aliases: ['studio_microphone'],\n tags: ['podcast'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎚️',\n description: 'level slider',\n category: 'Objects',\n aliases: ['level_slider'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎛️',\n description: 'control knobs',\n category: 'Objects',\n aliases: ['control_knobs'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎤',\n description: 'microphone',\n category: 'Objects',\n aliases: ['microphone'],\n tags: ['sing'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎧',\n description: 'headphone',\n category: 'Objects',\n aliases: ['headphones'],\n tags: ['music', 'earphones'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📻',\n description: 'radio',\n category: 'Objects',\n aliases: ['radio'],\n tags: ['podcast'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎷',\n description: 'saxophone',\n category: 'Objects',\n aliases: ['saxophone'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪗',\n description: 'accordion',\n category: 'Objects',\n aliases: ['accordion'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🎸',\n description: 'guitar',\n category: 'Objects',\n aliases: ['guitar'],\n tags: ['rock'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎹',\n description: 'musical keyboard',\n category: 'Objects',\n aliases: ['musical_keyboard'],\n tags: ['piano'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎺',\n description: 'trumpet',\n category: 'Objects',\n aliases: ['trumpet'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎻',\n description: 'violin',\n category: 'Objects',\n aliases: ['violin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪕',\n description: 'banjo',\n category: 'Objects',\n aliases: ['banjo'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🥁',\n description: 'drum',\n category: 'Objects',\n aliases: ['drum'],\n tags: [],\n unicode_version: '',\n ios_version: '10.2',\n },\n {\n emoji: '🪘',\n description: 'long drum',\n category: 'Objects',\n aliases: ['long_drum'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '📱',\n description: 'mobile phone',\n category: 'Objects',\n aliases: ['iphone'],\n tags: ['smartphone', 'mobile'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📲',\n description: 'mobile phone with arrow',\n category: 'Objects',\n aliases: ['calling'],\n tags: ['call', 'incoming'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☎️',\n description: 'telephone',\n category: 'Objects',\n aliases: ['phone', 'telephone'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '📞',\n description: 'telephone receiver',\n category: 'Objects',\n aliases: ['telephone_receiver'],\n tags: ['phone', 'call'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📟',\n description: 'pager',\n category: 'Objects',\n aliases: ['pager'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📠',\n description: 'fax machine',\n category: 'Objects',\n aliases: ['fax'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔋',\n description: 'battery',\n category: 'Objects',\n aliases: ['battery'],\n tags: ['power'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔌',\n description: 'electric plug',\n category: 'Objects',\n aliases: ['electric_plug'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💻',\n description: 'laptop',\n category: 'Objects',\n aliases: ['computer'],\n tags: ['desktop', 'screen'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🖥️',\n description: 'desktop computer',\n category: 'Objects',\n aliases: ['desktop_computer'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🖨️',\n description: 'printer',\n category: 'Objects',\n aliases: ['printer'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⌨️',\n description: 'keyboard',\n category: 'Objects',\n aliases: ['keyboard'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '🖱️',\n description: 'computer mouse',\n category: 'Objects',\n aliases: ['computer_mouse'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🖲️',\n description: 'trackball',\n category: 'Objects',\n aliases: ['trackball'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '💽',\n description: 'computer disk',\n category: 'Objects',\n aliases: ['minidisc'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💾',\n description: 'floppy disk',\n category: 'Objects',\n aliases: ['floppy_disk'],\n tags: ['save'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💿',\n description: 'optical disk',\n category: 'Objects',\n aliases: ['cd'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📀',\n description: 'dvd',\n category: 'Objects',\n aliases: ['dvd'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧮',\n description: 'abacus',\n category: 'Objects',\n aliases: ['abacus'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎥',\n description: 'movie camera',\n category: 'Objects',\n aliases: ['movie_camera'],\n tags: ['film', 'video'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎞️',\n description: 'film frames',\n category: 'Objects',\n aliases: ['film_strip'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📽️',\n description: 'film projector',\n category: 'Objects',\n aliases: ['film_projector'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🎬',\n description: 'clapper board',\n category: 'Objects',\n aliases: ['clapper'],\n tags: ['film'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📺',\n description: 'television',\n category: 'Objects',\n aliases: ['tv'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📷',\n description: 'camera',\n category: 'Objects',\n aliases: ['camera'],\n tags: ['photo'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📸',\n description: 'camera with flash',\n category: 'Objects',\n aliases: ['camera_flash'],\n tags: ['photo'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📹',\n description: 'video camera',\n category: 'Objects',\n aliases: ['video_camera'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📼',\n description: 'videocassette',\n category: 'Objects',\n aliases: ['vhs'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔍',\n description: 'magnifying glass tilted left',\n category: 'Objects',\n aliases: ['mag'],\n tags: ['search', 'zoom'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔎',\n description: 'magnifying glass tilted right',\n category: 'Objects',\n aliases: ['mag_right'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🕯️',\n description: 'candle',\n category: 'Objects',\n aliases: ['candle'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '💡',\n description: 'light bulb',\n category: 'Objects',\n aliases: ['bulb'],\n tags: ['idea', 'light'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔦',\n description: 'flashlight',\n category: 'Objects',\n aliases: ['flashlight'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏮',\n description: 'red paper lantern',\n category: 'Objects',\n aliases: ['izakaya_lantern', 'lantern'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪔',\n description: 'diya lamp',\n category: 'Objects',\n aliases: ['diya_lamp'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '📔',\n description: 'notebook with decorative cover',\n category: 'Objects',\n aliases: ['notebook_with_decorative_cover'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📕',\n description: 'closed book',\n category: 'Objects',\n aliases: ['closed_book'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📖',\n description: 'open book',\n category: 'Objects',\n aliases: ['book', 'open_book'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📗',\n description: 'green book',\n category: 'Objects',\n aliases: ['green_book'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📘',\n description: 'blue book',\n category: 'Objects',\n aliases: ['blue_book'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📙',\n description: 'orange book',\n category: 'Objects',\n aliases: ['orange_book'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📚',\n description: 'books',\n category: 'Objects',\n aliases: ['books'],\n tags: ['library'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📓',\n description: 'notebook',\n category: 'Objects',\n aliases: ['notebook'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📒',\n description: 'ledger',\n category: 'Objects',\n aliases: ['ledger'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📃',\n description: 'page with curl',\n category: 'Objects',\n aliases: ['page_with_curl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📜',\n description: 'scroll',\n category: 'Objects',\n aliases: ['scroll'],\n tags: ['document'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📄',\n description: 'page facing up',\n category: 'Objects',\n aliases: ['page_facing_up'],\n tags: ['document'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📰',\n description: 'newspaper',\n category: 'Objects',\n aliases: ['newspaper'],\n tags: ['press'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗞️',\n description: 'rolled-up newspaper',\n category: 'Objects',\n aliases: ['newspaper_roll'],\n tags: ['press'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📑',\n description: 'bookmark tabs',\n category: 'Objects',\n aliases: ['bookmark_tabs'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔖',\n description: 'bookmark',\n category: 'Objects',\n aliases: ['bookmark'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏷️',\n description: 'label',\n category: 'Objects',\n aliases: ['label'],\n tags: ['tag'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '💰',\n description: 'money bag',\n category: 'Objects',\n aliases: ['moneybag'],\n tags: ['dollar', 'cream'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪙',\n description: 'coin',\n category: 'Objects',\n aliases: ['coin'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '💴',\n description: 'yen banknote',\n category: 'Objects',\n aliases: ['yen'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💵',\n description: 'dollar banknote',\n category: 'Objects',\n aliases: ['dollar'],\n tags: ['money'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💶',\n description: 'euro banknote',\n category: 'Objects',\n aliases: ['euro'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💷',\n description: 'pound banknote',\n category: 'Objects',\n aliases: ['pound'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💸',\n description: 'money with wings',\n category: 'Objects',\n aliases: ['money_with_wings'],\n tags: ['dollar'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💳',\n description: 'credit card',\n category: 'Objects',\n aliases: ['credit_card'],\n tags: ['subscription'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🧾',\n description: 'receipt',\n category: 'Objects',\n aliases: ['receipt'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '💹',\n description: 'chart increasing with yen',\n category: 'Objects',\n aliases: ['chart'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '✉️',\n description: 'envelope',\n category: 'Objects',\n aliases: ['envelope'],\n tags: ['letter', 'email'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '📧',\n description: 'e-mail',\n category: 'Objects',\n aliases: ['email', 'e-mail'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📨',\n description: 'incoming envelope',\n category: 'Objects',\n aliases: ['incoming_envelope'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📩',\n description: 'envelope with arrow',\n category: 'Objects',\n aliases: ['envelope_with_arrow'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📤',\n description: 'outbox tray',\n category: 'Objects',\n aliases: ['outbox_tray'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📥',\n description: 'inbox tray',\n category: 'Objects',\n aliases: ['inbox_tray'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📦',\n description: 'package',\n category: 'Objects',\n aliases: ['package'],\n tags: ['shipping'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📫',\n description: 'closed mailbox with raised flag',\n category: 'Objects',\n aliases: ['mailbox'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📪',\n description: 'closed mailbox with lowered flag',\n category: 'Objects',\n aliases: ['mailbox_closed'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📬',\n description: 'open mailbox with raised flag',\n category: 'Objects',\n aliases: ['mailbox_with_mail'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📭',\n description: 'open mailbox with lowered flag',\n category: 'Objects',\n aliases: ['mailbox_with_no_mail'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📮',\n description: 'postbox',\n category: 'Objects',\n aliases: ['postbox'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗳️',\n description: 'ballot box with ballot',\n category: 'Objects',\n aliases: ['ballot_box'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '✏️',\n description: 'pencil',\n category: 'Objects',\n aliases: ['pencil2'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '✒️',\n description: 'black nib',\n category: 'Objects',\n aliases: ['black_nib'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🖋️',\n description: 'fountain pen',\n category: 'Objects',\n aliases: ['fountain_pen'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🖊️',\n description: 'pen',\n category: 'Objects',\n aliases: ['pen'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🖌️',\n description: 'paintbrush',\n category: 'Objects',\n aliases: ['paintbrush'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🖍️',\n description: 'crayon',\n category: 'Objects',\n aliases: ['crayon'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📝',\n description: 'memo',\n category: 'Objects',\n aliases: ['memo', 'pencil'],\n tags: ['document', 'note'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💼',\n description: 'briefcase',\n category: 'Objects',\n aliases: ['briefcase'],\n tags: ['business'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📁',\n description: 'file folder',\n category: 'Objects',\n aliases: ['file_folder'],\n tags: ['directory'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📂',\n description: 'open file folder',\n category: 'Objects',\n aliases: ['open_file_folder'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗂️',\n description: 'card index dividers',\n category: 'Objects',\n aliases: ['card_index_dividers'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📅',\n description: 'calendar',\n category: 'Objects',\n aliases: ['date'],\n tags: ['calendar', 'schedule'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📆',\n description: 'tear-off calendar',\n category: 'Objects',\n aliases: ['calendar'],\n tags: ['schedule'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗒️',\n description: 'spiral notepad',\n category: 'Objects',\n aliases: ['spiral_notepad'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🗓️',\n description: 'spiral calendar',\n category: 'Objects',\n aliases: ['spiral_calendar'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📇',\n description: 'card index',\n category: 'Objects',\n aliases: ['card_index'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📈',\n description: 'chart increasing',\n category: 'Objects',\n aliases: ['chart_with_upwards_trend'],\n tags: ['graph', 'metrics'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📉',\n description: 'chart decreasing',\n category: 'Objects',\n aliases: ['chart_with_downwards_trend'],\n tags: ['graph', 'metrics'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📊',\n description: 'bar chart',\n category: 'Objects',\n aliases: ['bar_chart'],\n tags: ['stats', 'metrics'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📋',\n description: 'clipboard',\n category: 'Objects',\n aliases: ['clipboard'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📌',\n description: 'pushpin',\n category: 'Objects',\n aliases: ['pushpin'],\n tags: ['location'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📍',\n description: 'round pushpin',\n category: 'Objects',\n aliases: ['round_pushpin'],\n tags: ['location'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📎',\n description: 'paperclip',\n category: 'Objects',\n aliases: ['paperclip'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🖇️',\n description: 'linked paperclips',\n category: 'Objects',\n aliases: ['paperclips'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '📏',\n description: 'straight ruler',\n category: 'Objects',\n aliases: ['straight_ruler'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📐',\n description: 'triangular ruler',\n category: 'Objects',\n aliases: ['triangular_ruler'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '✂️',\n description: 'scissors',\n category: 'Objects',\n aliases: ['scissors'],\n tags: ['cut'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🗃️',\n description: 'card file box',\n category: 'Objects',\n aliases: ['card_file_box'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🗄️',\n description: 'file cabinet',\n category: 'Objects',\n aliases: ['file_cabinet'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🗑️',\n description: 'wastebasket',\n category: 'Objects',\n aliases: ['wastebasket'],\n tags: ['trash'],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🔒',\n description: 'locked',\n category: 'Objects',\n aliases: ['lock'],\n tags: ['security', 'private'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔓',\n description: 'unlocked',\n category: 'Objects',\n aliases: ['unlock'],\n tags: ['security'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔏',\n description: 'locked with pen',\n category: 'Objects',\n aliases: ['lock_with_ink_pen'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔐',\n description: 'locked with key',\n category: 'Objects',\n aliases: ['closed_lock_with_key'],\n tags: ['security'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔑',\n description: 'key',\n category: 'Objects',\n aliases: ['key'],\n tags: ['lock', 'password'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🗝️',\n description: 'old key',\n category: 'Objects',\n aliases: ['old_key'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🔨',\n description: 'hammer',\n category: 'Objects',\n aliases: ['hammer'],\n tags: ['tool'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪓',\n description: 'axe',\n category: 'Objects',\n aliases: ['axe'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '⛏️',\n description: 'pick',\n category: 'Objects',\n aliases: ['pick'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '⚒️',\n description: 'hammer and pick',\n category: 'Objects',\n aliases: ['hammer_and_pick'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🛠️',\n description: 'hammer and wrench',\n category: 'Objects',\n aliases: ['hammer_and_wrench'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🗡️',\n description: 'dagger',\n category: 'Objects',\n aliases: ['dagger'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⚔️',\n description: 'crossed swords',\n category: 'Objects',\n aliases: ['crossed_swords'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🔫',\n description: 'water pistol',\n category: 'Objects',\n aliases: ['gun'],\n tags: ['shoot', 'weapon'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪃',\n description: 'boomerang',\n category: 'Objects',\n aliases: ['boomerang'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🏹',\n description: 'bow and arrow',\n category: 'Objects',\n aliases: ['bow_and_arrow'],\n tags: ['archery'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛡️',\n description: 'shield',\n category: 'Objects',\n aliases: ['shield'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🪚',\n description: 'carpentry saw',\n category: 'Objects',\n aliases: ['carpentry_saw'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🔧',\n description: 'wrench',\n category: 'Objects',\n aliases: ['wrench'],\n tags: ['tool'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪛',\n description: 'screwdriver',\n category: 'Objects',\n aliases: ['screwdriver'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🔩',\n description: 'nut and bolt',\n category: 'Objects',\n aliases: ['nut_and_bolt'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⚙️',\n description: 'gear',\n category: 'Objects',\n aliases: ['gear'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🗜️',\n description: 'clamp',\n category: 'Objects',\n aliases: ['clamp'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⚖️',\n description: 'balance scale',\n category: 'Objects',\n aliases: ['balance_scale'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🦯',\n description: 'white cane',\n category: 'Objects',\n aliases: ['probing_cane'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🔗',\n description: 'link',\n category: 'Objects',\n aliases: ['link'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⛓️',\n description: 'chains',\n category: 'Objects',\n aliases: ['chains'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '9.1',\n },\n {\n emoji: '🪝',\n description: 'hook',\n category: 'Objects',\n aliases: ['hook'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧰',\n description: 'toolbox',\n category: 'Objects',\n aliases: ['toolbox'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧲',\n description: 'magnet',\n category: 'Objects',\n aliases: ['magnet'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪜',\n description: 'ladder',\n category: 'Objects',\n aliases: ['ladder'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '⚗️',\n description: 'alembic',\n category: 'Objects',\n aliases: ['alembic'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🧪',\n description: 'test tube',\n category: 'Objects',\n aliases: ['test_tube'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧫',\n description: 'petri dish',\n category: 'Objects',\n aliases: ['petri_dish'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧬',\n description: 'dna',\n category: 'Objects',\n aliases: ['dna'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🔬',\n description: 'microscope',\n category: 'Objects',\n aliases: ['microscope'],\n tags: ['science', 'laboratory', 'investigate'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔭',\n description: 'telescope',\n category: 'Objects',\n aliases: ['telescope'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📡',\n description: 'satellite antenna',\n category: 'Objects',\n aliases: ['satellite'],\n tags: ['signal'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💉',\n description: 'syringe',\n category: 'Objects',\n aliases: ['syringe'],\n tags: ['health', 'hospital', 'needle'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🩸',\n description: 'drop of blood',\n category: 'Objects',\n aliases: ['drop_of_blood'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '💊',\n description: 'pill',\n category: 'Objects',\n aliases: ['pill'],\n tags: ['health', 'medicine'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🩹',\n description: 'adhesive bandage',\n category: 'Objects',\n aliases: ['adhesive_bandage'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🩺',\n description: 'stethoscope',\n category: 'Objects',\n aliases: ['stethoscope'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🚪',\n description: 'door',\n category: 'Objects',\n aliases: ['door'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛗',\n description: 'elevator',\n category: 'Objects',\n aliases: ['elevator'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪞',\n description: 'mirror',\n category: 'Objects',\n aliases: ['mirror'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪟',\n description: 'window',\n category: 'Objects',\n aliases: ['window'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🛏️',\n description: 'bed',\n category: 'Objects',\n aliases: ['bed'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🛋️',\n description: 'couch and lamp',\n category: 'Objects',\n aliases: ['couch_and_lamp'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🪑',\n description: 'chair',\n category: 'Objects',\n aliases: ['chair'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🚽',\n description: 'toilet',\n category: 'Objects',\n aliases: ['toilet'],\n tags: ['wc'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪠',\n description: 'plunger',\n category: 'Objects',\n aliases: ['plunger'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🚿',\n description: 'shower',\n category: 'Objects',\n aliases: ['shower'],\n tags: ['bath'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛁',\n description: 'bathtub',\n category: 'Objects',\n aliases: ['bathtub'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪤',\n description: 'mouse trap',\n category: 'Objects',\n aliases: ['mouse_trap'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🪒',\n description: 'razor',\n category: 'Objects',\n aliases: ['razor'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🧴',\n description: 'lotion bottle',\n category: 'Objects',\n aliases: ['lotion_bottle'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧷',\n description: 'safety pin',\n category: 'Objects',\n aliases: ['safety_pin'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧹',\n description: 'broom',\n category: 'Objects',\n aliases: ['broom'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧺',\n description: 'basket',\n category: 'Objects',\n aliases: ['basket'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧻',\n description: 'roll of paper',\n category: 'Objects',\n aliases: ['roll_of_paper'],\n tags: ['toilet'],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪣',\n description: 'bucket',\n category: 'Objects',\n aliases: ['bucket'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧼',\n description: 'soap',\n category: 'Objects',\n aliases: ['soap'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🪥',\n description: 'toothbrush',\n category: 'Objects',\n aliases: ['toothbrush'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🧽',\n description: 'sponge',\n category: 'Objects',\n aliases: ['sponge'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🧯',\n description: 'fire extinguisher',\n category: 'Objects',\n aliases: ['fire_extinguisher'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🛒',\n description: 'shopping cart',\n category: 'Objects',\n aliases: ['shopping_cart'],\n tags: [],\n unicode_version: '9.0',\n ios_version: '10.2',\n },\n {\n emoji: '🚬',\n description: 'cigarette',\n category: 'Objects',\n aliases: ['smoking'],\n tags: ['cigarette'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⚰️',\n description: 'coffin',\n category: 'Objects',\n aliases: ['coffin'],\n tags: ['funeral'],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🪦',\n description: 'headstone',\n category: 'Objects',\n aliases: ['headstone'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '⚱️',\n description: 'funeral urn',\n category: 'Objects',\n aliases: ['funeral_urn'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🗿',\n description: 'moai',\n category: 'Objects',\n aliases: ['moyai'],\n tags: ['stone'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🪧',\n description: 'placard',\n category: 'Objects',\n aliases: ['placard'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🏧',\n description: 'ATM sign',\n category: 'Symbols',\n aliases: ['atm'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚮',\n description: 'litter in bin sign',\n category: 'Symbols',\n aliases: ['put_litter_in_its_place'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚰',\n description: 'potable water',\n category: 'Symbols',\n aliases: ['potable_water'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '♿',\n description: 'wheelchair symbol',\n category: 'Symbols',\n aliases: ['wheelchair'],\n tags: ['accessibility'],\n unicode_version: '4.1',\n ios_version: '6.0',\n },\n {\n emoji: '🚹',\n description: 'men’s room',\n category: 'Symbols',\n aliases: ['mens'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚺',\n description: 'women’s room',\n category: 'Symbols',\n aliases: ['womens'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚻',\n description: 'restroom',\n category: 'Symbols',\n aliases: ['restroom'],\n tags: ['toilet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚼',\n description: 'baby symbol',\n category: 'Symbols',\n aliases: ['baby_symbol'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚾',\n description: 'water closet',\n category: 'Symbols',\n aliases: ['wc'],\n tags: ['toilet', 'restroom'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛂',\n description: 'passport control',\n category: 'Symbols',\n aliases: ['passport_control'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛃',\n description: 'customs',\n category: 'Symbols',\n aliases: ['customs'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛄',\n description: 'baggage claim',\n category: 'Symbols',\n aliases: ['baggage_claim'],\n tags: ['airport'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛅',\n description: 'left luggage',\n category: 'Symbols',\n aliases: ['left_luggage'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⚠️',\n description: 'warning',\n category: 'Symbols',\n aliases: ['warning'],\n tags: ['wip'],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚸',\n description: 'children crossing',\n category: 'Symbols',\n aliases: ['children_crossing'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⛔',\n description: 'no entry',\n category: 'Symbols',\n aliases: ['no_entry'],\n tags: ['limit'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🚫',\n description: 'prohibited',\n category: 'Symbols',\n aliases: ['no_entry_sign'],\n tags: ['block', 'forbidden'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚳',\n description: 'no bicycles',\n category: 'Symbols',\n aliases: ['no_bicycles'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚭',\n description: 'no smoking',\n category: 'Symbols',\n aliases: ['no_smoking'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚯',\n description: 'no littering',\n category: 'Symbols',\n aliases: ['do_not_litter'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚱',\n description: 'non-potable water',\n category: 'Symbols',\n aliases: ['non-potable_water'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚷',\n description: 'no pedestrians',\n category: 'Symbols',\n aliases: ['no_pedestrians'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📵',\n description: 'no mobile phones',\n category: 'Symbols',\n aliases: ['no_mobile_phones'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔞',\n description: 'no one under eighteen',\n category: 'Symbols',\n aliases: ['underage'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☢️',\n description: 'radioactive',\n category: 'Symbols',\n aliases: ['radioactive'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☣️',\n description: 'biohazard',\n category: 'Symbols',\n aliases: ['biohazard'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '⬆️',\n description: 'up arrow',\n category: 'Symbols',\n aliases: ['arrow_up'],\n tags: [],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '↗️',\n description: 'up-right arrow',\n category: 'Symbols',\n aliases: ['arrow_upper_right'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '➡️',\n description: 'right arrow',\n category: 'Symbols',\n aliases: ['arrow_right'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '↘️',\n description: 'down-right arrow',\n category: 'Symbols',\n aliases: ['arrow_lower_right'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⬇️',\n description: 'down arrow',\n category: 'Symbols',\n aliases: ['arrow_down'],\n tags: [],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '↙️',\n description: 'down-left arrow',\n category: 'Symbols',\n aliases: ['arrow_lower_left'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⬅️',\n description: 'left arrow',\n category: 'Symbols',\n aliases: ['arrow_left'],\n tags: [],\n unicode_version: '4.0',\n ios_version: '6.0',\n },\n {\n emoji: '↖️',\n description: 'up-left arrow',\n category: 'Symbols',\n aliases: ['arrow_upper_left'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '↕️',\n description: 'up-down arrow',\n category: 'Symbols',\n aliases: ['arrow_up_down'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '↔️',\n description: 'left-right arrow',\n category: 'Symbols',\n aliases: ['left_right_arrow'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '↩️',\n description: 'right arrow curving left',\n category: 'Symbols',\n aliases: ['leftwards_arrow_with_hook'],\n tags: ['return'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '↪️',\n description: 'left arrow curving right',\n category: 'Symbols',\n aliases: ['arrow_right_hook'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⤴️',\n description: 'right arrow curving up',\n category: 'Symbols',\n aliases: ['arrow_heading_up'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⤵️',\n description: 'right arrow curving down',\n category: 'Symbols',\n aliases: ['arrow_heading_down'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🔃',\n description: 'clockwise vertical arrows',\n category: 'Symbols',\n aliases: ['arrows_clockwise'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔄',\n description: 'counterclockwise arrows button',\n category: 'Symbols',\n aliases: ['arrows_counterclockwise'],\n tags: ['sync'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔙',\n description: 'BACK arrow',\n category: 'Symbols',\n aliases: ['back'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔚',\n description: 'END arrow',\n category: 'Symbols',\n aliases: ['end'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔛',\n description: 'ON! arrow',\n category: 'Symbols',\n aliases: ['on'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔜',\n description: 'SOON arrow',\n category: 'Symbols',\n aliases: ['soon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔝',\n description: 'TOP arrow',\n category: 'Symbols',\n aliases: ['top'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🛐',\n description: 'place of worship',\n category: 'Symbols',\n aliases: ['place_of_worship'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '⚛️',\n description: 'atom symbol',\n category: 'Symbols',\n aliases: ['atom_symbol'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🕉️',\n description: 'om',\n category: 'Symbols',\n aliases: ['om'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '✡️',\n description: 'star of David',\n category: 'Symbols',\n aliases: ['star_of_david'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☸️',\n description: 'wheel of dharma',\n category: 'Symbols',\n aliases: ['wheel_of_dharma'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☯️',\n description: 'yin yang',\n category: 'Symbols',\n aliases: ['yin_yang'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '✝️',\n description: 'latin cross',\n category: 'Symbols',\n aliases: ['latin_cross'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☦️',\n description: 'orthodox cross',\n category: 'Symbols',\n aliases: ['orthodox_cross'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☪️',\n description: 'star and crescent',\n category: 'Symbols',\n aliases: ['star_and_crescent'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '☮️',\n description: 'peace symbol',\n category: 'Symbols',\n aliases: ['peace_symbol'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '🕎',\n description: 'menorah',\n category: 'Symbols',\n aliases: ['menorah'],\n tags: [],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🔯',\n description: 'dotted six-pointed star',\n category: 'Symbols',\n aliases: ['six_pointed_star'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '♈',\n description: 'Aries',\n category: 'Symbols',\n aliases: ['aries'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♉',\n description: 'Taurus',\n category: 'Symbols',\n aliases: ['taurus'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♊',\n description: 'Gemini',\n category: 'Symbols',\n aliases: ['gemini'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♋',\n description: 'Cancer',\n category: 'Symbols',\n aliases: ['cancer'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♌',\n description: 'Leo',\n category: 'Symbols',\n aliases: ['leo'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♍',\n description: 'Virgo',\n category: 'Symbols',\n aliases: ['virgo'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♎',\n description: 'Libra',\n category: 'Symbols',\n aliases: ['libra'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♏',\n description: 'Scorpio',\n category: 'Symbols',\n aliases: ['scorpius'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♐',\n description: 'Sagittarius',\n category: 'Symbols',\n aliases: ['sagittarius'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♑',\n description: 'Capricorn',\n category: 'Symbols',\n aliases: ['capricorn'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♒',\n description: 'Aquarius',\n category: 'Symbols',\n aliases: ['aquarius'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '♓',\n description: 'Pisces',\n category: 'Symbols',\n aliases: ['pisces'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⛎',\n description: 'Ophiuchus',\n category: 'Symbols',\n aliases: ['ophiuchus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔀',\n description: 'shuffle tracks button',\n category: 'Symbols',\n aliases: ['twisted_rightwards_arrows'],\n tags: ['shuffle'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔁',\n description: 'repeat button',\n category: 'Symbols',\n aliases: ['repeat'],\n tags: ['loop'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔂',\n description: 'repeat single button',\n category: 'Symbols',\n aliases: ['repeat_one'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '▶️',\n description: 'play button',\n category: 'Symbols',\n aliases: ['arrow_forward'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⏩',\n description: 'fast-forward button',\n category: 'Symbols',\n aliases: ['fast_forward'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏭️',\n description: 'next track button',\n category: 'Symbols',\n aliases: ['next_track_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.1',\n },\n {\n emoji: '⏯️',\n description: 'play or pause button',\n category: 'Symbols',\n aliases: ['play_or_pause_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.1',\n },\n {\n emoji: '◀️',\n description: 'reverse button',\n category: 'Symbols',\n aliases: ['arrow_backward'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⏪',\n description: 'fast reverse button',\n category: 'Symbols',\n aliases: ['rewind'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏮️',\n description: 'last track button',\n category: 'Symbols',\n aliases: ['previous_track_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.1',\n },\n {\n emoji: '🔼',\n description: 'upwards button',\n category: 'Symbols',\n aliases: ['arrow_up_small'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏫',\n description: 'fast up button',\n category: 'Symbols',\n aliases: ['arrow_double_up'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔽',\n description: 'downwards button',\n category: 'Symbols',\n aliases: ['arrow_down_small'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏬',\n description: 'fast down button',\n category: 'Symbols',\n aliases: ['arrow_double_down'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⏸️',\n description: 'pause button',\n category: 'Symbols',\n aliases: ['pause_button'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⏹️',\n description: 'stop button',\n category: 'Symbols',\n aliases: ['stop_button'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⏺️',\n description: 'record button',\n category: 'Symbols',\n aliases: ['record_button'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '⏏️',\n description: 'eject button',\n category: 'Symbols',\n aliases: ['eject_button'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🎦',\n description: 'cinema',\n category: 'Symbols',\n aliases: ['cinema'],\n tags: ['film', 'movie'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔅',\n description: 'dim button',\n category: 'Symbols',\n aliases: ['low_brightness'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔆',\n description: 'bright button',\n category: 'Symbols',\n aliases: ['high_brightness'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📶',\n description: 'antenna bars',\n category: 'Symbols',\n aliases: ['signal_strength'],\n tags: ['wifi'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📳',\n description: 'vibration mode',\n category: 'Symbols',\n aliases: ['vibration_mode'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📴',\n description: 'mobile phone off',\n category: 'Symbols',\n aliases: ['mobile_phone_off'],\n tags: ['mute', 'off'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '♀️',\n description: 'female sign',\n category: 'Symbols',\n aliases: ['female_sign'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '♂️',\n description: 'male sign',\n category: 'Symbols',\n aliases: ['male_sign'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '⚧️',\n description: 'transgender symbol',\n category: 'Symbols',\n aliases: ['transgender_symbol'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '✖️',\n description: 'multiply',\n category: 'Symbols',\n aliases: ['heavy_multiplication_x'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '➕',\n description: 'plus',\n category: 'Symbols',\n aliases: ['heavy_plus_sign'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '➖',\n description: 'minus',\n category: 'Symbols',\n aliases: ['heavy_minus_sign'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '➗',\n description: 'divide',\n category: 'Symbols',\n aliases: ['heavy_division_sign'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '♾️',\n description: 'infinity',\n category: 'Symbols',\n aliases: ['infinity'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '‼️',\n description: 'double exclamation mark',\n category: 'Symbols',\n aliases: ['bangbang'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '⁉️',\n description: 'exclamation question mark',\n category: 'Symbols',\n aliases: ['interrobang'],\n tags: [],\n unicode_version: '3.0',\n ios_version: '6.0',\n },\n {\n emoji: '❓',\n description: 'red question mark',\n category: 'Symbols',\n aliases: ['question'],\n tags: ['confused'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❔',\n description: 'white question mark',\n category: 'Symbols',\n aliases: ['grey_question'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❕',\n description: 'white exclamation mark',\n category: 'Symbols',\n aliases: ['grey_exclamation'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❗',\n description: 'red exclamation mark',\n category: 'Symbols',\n aliases: ['exclamation', 'heavy_exclamation_mark'],\n tags: ['bang'],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '〰️',\n description: 'wavy dash',\n category: 'Symbols',\n aliases: ['wavy_dash'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '💱',\n description: 'currency exchange',\n category: 'Symbols',\n aliases: ['currency_exchange'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💲',\n description: 'heavy dollar sign',\n category: 'Symbols',\n aliases: ['heavy_dollar_sign'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⚕️',\n description: 'medical symbol',\n category: 'Symbols',\n aliases: ['medical_symbol'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '♻️',\n description: 'recycling symbol',\n category: 'Symbols',\n aliases: ['recycle'],\n tags: ['environment', 'green'],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '⚜️',\n description: 'fleur-de-lis',\n category: 'Symbols',\n aliases: ['fleur_de_lis'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '9.1',\n },\n {\n emoji: '🔱',\n description: 'trident emblem',\n category: 'Symbols',\n aliases: ['trident'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '📛',\n description: 'name badge',\n category: 'Symbols',\n aliases: ['name_badge'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔰',\n description: 'Japanese symbol for beginner',\n category: 'Symbols',\n aliases: ['beginner'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '⭕',\n description: 'hollow red circle',\n category: 'Symbols',\n aliases: ['o'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '✅',\n description: 'check mark button',\n category: 'Symbols',\n aliases: ['white_check_mark'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '☑️',\n description: 'check box with check',\n category: 'Symbols',\n aliases: ['ballot_box_with_check'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '✔️',\n description: 'check mark',\n category: 'Symbols',\n aliases: ['heavy_check_mark'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '❌',\n description: 'cross mark',\n category: 'Symbols',\n aliases: ['x'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '❎',\n description: 'cross mark button',\n category: 'Symbols',\n aliases: ['negative_squared_cross_mark'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '➰',\n description: 'curly loop',\n category: 'Symbols',\n aliases: ['curly_loop'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '➿',\n description: 'double curly loop',\n category: 'Symbols',\n aliases: ['loop'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '〽️',\n description: 'part alternation mark',\n category: 'Symbols',\n aliases: ['part_alternation_mark'],\n tags: [],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '✳️',\n description: 'eight-spoked asterisk',\n category: 'Symbols',\n aliases: ['eight_spoked_asterisk'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '✴️',\n description: 'eight-pointed star',\n category: 'Symbols',\n aliases: ['eight_pointed_black_star'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '❇️',\n description: 'sparkle',\n category: 'Symbols',\n aliases: ['sparkle'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '©️',\n description: 'copyright',\n category: 'Symbols',\n aliases: ['copyright'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '®️',\n description: 'registered',\n category: 'Symbols',\n aliases: ['registered'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '™️',\n description: 'trade mark',\n category: 'Symbols',\n aliases: ['tm'],\n tags: ['trademark'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '#️⃣',\n description: 'keycap: #',\n category: 'Symbols',\n aliases: ['hash'],\n tags: ['number'],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '*️⃣',\n description: 'keycap: *',\n category: 'Symbols',\n aliases: ['asterisk'],\n tags: [],\n unicode_version: '',\n ios_version: '9.1',\n },\n {\n emoji: '0️⃣',\n description: 'keycap: 0',\n category: 'Symbols',\n aliases: ['zero'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '1️⃣',\n description: 'keycap: 1',\n category: 'Symbols',\n aliases: ['one'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '2️⃣',\n description: 'keycap: 2',\n category: 'Symbols',\n aliases: ['two'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '3️⃣',\n description: 'keycap: 3',\n category: 'Symbols',\n aliases: ['three'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '4️⃣',\n description: 'keycap: 4',\n category: 'Symbols',\n aliases: ['four'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '5️⃣',\n description: 'keycap: 5',\n category: 'Symbols',\n aliases: ['five'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '6️⃣',\n description: 'keycap: 6',\n category: 'Symbols',\n aliases: ['six'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '7️⃣',\n description: 'keycap: 7',\n category: 'Symbols',\n aliases: ['seven'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '8️⃣',\n description: 'keycap: 8',\n category: 'Symbols',\n aliases: ['eight'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '9️⃣',\n description: 'keycap: 9',\n category: 'Symbols',\n aliases: ['nine'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🔟',\n description: 'keycap: 10',\n category: 'Symbols',\n aliases: ['keycap_ten'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔠',\n description: 'input latin uppercase',\n category: 'Symbols',\n aliases: ['capital_abcd'],\n tags: ['letters'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔡',\n description: 'input latin lowercase',\n category: 'Symbols',\n aliases: ['abcd'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔢',\n description: 'input numbers',\n category: 'Symbols',\n aliases: ['1234'],\n tags: ['numbers'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔣',\n description: 'input symbols',\n category: 'Symbols',\n aliases: ['symbols'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔤',\n description: 'input latin letters',\n category: 'Symbols',\n aliases: ['abc'],\n tags: ['alphabet'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🅰️',\n description: 'A button (blood type)',\n category: 'Symbols',\n aliases: ['a'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆎',\n description: 'AB button (blood type)',\n category: 'Symbols',\n aliases: ['ab'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🅱️',\n description: 'B button (blood type)',\n category: 'Symbols',\n aliases: ['b'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆑',\n description: 'CL button',\n category: 'Symbols',\n aliases: ['cl'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆒',\n description: 'COOL button',\n category: 'Symbols',\n aliases: ['cool'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆓',\n description: 'FREE button',\n category: 'Symbols',\n aliases: ['free'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: 'ℹ️',\n description: 'information',\n category: 'Symbols',\n aliases: ['information_source'],\n tags: [],\n unicode_version: '3.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆔',\n description: 'ID button',\n category: 'Symbols',\n aliases: ['id'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: 'Ⓜ️',\n description: 'circled M',\n category: 'Symbols',\n aliases: ['m'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🆕',\n description: 'NEW button',\n category: 'Symbols',\n aliases: ['new'],\n tags: ['fresh'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆖',\n description: 'NG button',\n category: 'Symbols',\n aliases: ['ng'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🅾️',\n description: 'O button (blood type)',\n category: 'Symbols',\n aliases: ['o2'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆗',\n description: 'OK button',\n category: 'Symbols',\n aliases: ['ok'],\n tags: ['yes'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🅿️',\n description: 'P button',\n category: 'Symbols',\n aliases: ['parking'],\n tags: [],\n unicode_version: '5.2',\n ios_version: '6.0',\n },\n {\n emoji: '🆘',\n description: 'SOS button',\n category: 'Symbols',\n aliases: ['sos'],\n tags: ['help', 'emergency'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆙',\n description: 'UP! button',\n category: 'Symbols',\n aliases: ['up'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🆚',\n description: 'VS button',\n category: 'Symbols',\n aliases: ['vs'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈁',\n description: 'Japanese “here” button',\n category: 'Symbols',\n aliases: ['koko'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈂️',\n description: 'Japanese “service charge” button',\n category: 'Symbols',\n aliases: ['sa'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈷️',\n description: 'Japanese “monthly amount” button',\n category: 'Symbols',\n aliases: ['u6708'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈶',\n description: 'Japanese “not free of charge” button',\n category: 'Symbols',\n aliases: ['u6709'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈯',\n description: 'Japanese “reserved” button',\n category: 'Symbols',\n aliases: ['u6307'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🉐',\n description: 'Japanese “bargain” button',\n category: 'Symbols',\n aliases: ['ideograph_advantage'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈹',\n description: 'Japanese “discount” button',\n category: 'Symbols',\n aliases: ['u5272'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈚',\n description: 'Japanese “free of charge” button',\n category: 'Symbols',\n aliases: ['u7121'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🈲',\n description: 'Japanese “prohibited” button',\n category: 'Symbols',\n aliases: ['u7981'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🉑',\n description: 'Japanese “acceptable” button',\n category: 'Symbols',\n aliases: ['accept'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈸',\n description: 'Japanese “application” button',\n category: 'Symbols',\n aliases: ['u7533'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈴',\n description: 'Japanese “passing grade” button',\n category: 'Symbols',\n aliases: ['u5408'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈳',\n description: 'Japanese “vacancy” button',\n category: 'Symbols',\n aliases: ['u7a7a'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '㊗️',\n description: 'Japanese “congratulations” button',\n category: 'Symbols',\n aliases: ['congratulations'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '㊙️',\n description: 'Japanese “secret” button',\n category: 'Symbols',\n aliases: ['secret'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🈺',\n description: 'Japanese “open for business” button',\n category: 'Symbols',\n aliases: ['u55b6'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🈵',\n description: 'Japanese “no vacancy” button',\n category: 'Symbols',\n aliases: ['u6e80'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔴',\n description: 'red circle',\n category: 'Symbols',\n aliases: ['red_circle'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🟠',\n description: 'orange circle',\n category: 'Symbols',\n aliases: ['orange_circle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟡',\n description: 'yellow circle',\n category: 'Symbols',\n aliases: ['yellow_circle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟢',\n description: 'green circle',\n category: 'Symbols',\n aliases: ['green_circle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🔵',\n description: 'blue circle',\n category: 'Symbols',\n aliases: ['large_blue_circle'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🟣',\n description: 'purple circle',\n category: 'Symbols',\n aliases: ['purple_circle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟤',\n description: 'brown circle',\n category: 'Symbols',\n aliases: ['brown_circle'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '⚫',\n description: 'black circle',\n category: 'Symbols',\n aliases: ['black_circle'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '6.0',\n },\n {\n emoji: '⚪',\n description: 'white circle',\n category: 'Symbols',\n aliases: ['white_circle'],\n tags: [],\n unicode_version: '4.1',\n ios_version: '6.0',\n },\n {\n emoji: '🟥',\n description: 'red square',\n category: 'Symbols',\n aliases: ['red_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟧',\n description: 'orange square',\n category: 'Symbols',\n aliases: ['orange_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟨',\n description: 'yellow square',\n category: 'Symbols',\n aliases: ['yellow_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟩',\n description: 'green square',\n category: 'Symbols',\n aliases: ['green_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟦',\n description: 'blue square',\n category: 'Symbols',\n aliases: ['blue_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟪',\n description: 'purple square',\n category: 'Symbols',\n aliases: ['purple_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '🟫',\n description: 'brown square',\n category: 'Symbols',\n aliases: ['brown_square'],\n tags: [],\n unicode_version: '12.0',\n ios_version: '13.0',\n },\n {\n emoji: '⬛',\n description: 'black large square',\n category: 'Symbols',\n aliases: ['black_large_square'],\n tags: [],\n unicode_version: '5.1',\n ios_version: '6.0',\n },\n {\n emoji: '⬜',\n description: 'white large square',\n category: 'Symbols',\n aliases: ['white_large_square'],\n tags: [],\n unicode_version: '5.1',\n ios_version: '6.0',\n },\n {\n emoji: '◼️',\n description: 'black medium square',\n category: 'Symbols',\n aliases: ['black_medium_square'],\n tags: [],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '◻️',\n description: 'white medium square',\n category: 'Symbols',\n aliases: ['white_medium_square'],\n tags: [],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '◾',\n description: 'black medium-small square',\n category: 'Symbols',\n aliases: ['black_medium_small_square'],\n tags: [],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '◽',\n description: 'white medium-small square',\n category: 'Symbols',\n aliases: ['white_medium_small_square'],\n tags: [],\n unicode_version: '3.2',\n ios_version: '6.0',\n },\n {\n emoji: '▪️',\n description: 'black small square',\n category: 'Symbols',\n aliases: ['black_small_square'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '▫️',\n description: 'white small square',\n category: 'Symbols',\n aliases: ['white_small_square'],\n tags: [],\n unicode_version: '',\n ios_version: '6.0',\n },\n {\n emoji: '🔶',\n description: 'large orange diamond',\n category: 'Symbols',\n aliases: ['large_orange_diamond'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔷',\n description: 'large blue diamond',\n category: 'Symbols',\n aliases: ['large_blue_diamond'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔸',\n description: 'small orange diamond',\n category: 'Symbols',\n aliases: ['small_orange_diamond'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔹',\n description: 'small blue diamond',\n category: 'Symbols',\n aliases: ['small_blue_diamond'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔺',\n description: 'red triangle pointed up',\n category: 'Symbols',\n aliases: ['small_red_triangle'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔻',\n description: 'red triangle pointed down',\n category: 'Symbols',\n aliases: ['small_red_triangle_down'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '💠',\n description: 'diamond with a dot',\n category: 'Symbols',\n aliases: ['diamond_shape_with_a_dot_inside'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔘',\n description: 'radio button',\n category: 'Symbols',\n aliases: ['radio_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔳',\n description: 'white square button',\n category: 'Symbols',\n aliases: ['white_square_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🔲',\n description: 'black square button',\n category: 'Symbols',\n aliases: ['black_square_button'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏁',\n description: 'chequered flag',\n category: 'Flags',\n aliases: ['checkered_flag'],\n tags: ['milestone', 'finish'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🚩',\n description: 'triangular flag',\n category: 'Flags',\n aliases: ['triangular_flag_on_post'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🎌',\n description: 'crossed flags',\n category: 'Flags',\n aliases: ['crossed_flags'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🏴',\n description: 'black flag',\n category: 'Flags',\n aliases: ['black_flag'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏳️',\n description: 'white flag',\n category: 'Flags',\n aliases: ['white_flag'],\n tags: [],\n unicode_version: '7.0',\n ios_version: '9.1',\n },\n {\n emoji: '🏳️🌈',\n description: 'rainbow flag',\n category: 'Flags',\n aliases: ['rainbow_flag'],\n tags: ['pride'],\n unicode_version: '6.0',\n ios_version: '10.0',\n },\n {\n emoji: '🏳️⚧️',\n description: 'transgender flag',\n category: 'Flags',\n aliases: ['transgender_flag'],\n tags: [],\n unicode_version: '13.0',\n ios_version: '14.0',\n },\n {\n emoji: '🏴☠️',\n description: 'pirate flag',\n category: 'Flags',\n aliases: ['pirate_flag'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇦🇨',\n description: 'flag: Ascension Island',\n category: 'Flags',\n aliases: ['ascension_island'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇦🇩',\n description: 'flag: Andorra',\n category: 'Flags',\n aliases: ['andorra'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇪',\n description: 'flag: United Arab Emirates',\n category: 'Flags',\n aliases: ['united_arab_emirates'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇫',\n description: 'flag: Afghanistan',\n category: 'Flags',\n aliases: ['afghanistan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇬',\n description: 'flag: Antigua & Barbuda',\n category: 'Flags',\n aliases: ['antigua_barbuda'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇮',\n description: 'flag: Anguilla',\n category: 'Flags',\n aliases: ['anguilla'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇱',\n description: 'flag: Albania',\n category: 'Flags',\n aliases: ['albania'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇲',\n description: 'flag: Armenia',\n category: 'Flags',\n aliases: ['armenia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇴',\n description: 'flag: Angola',\n category: 'Flags',\n aliases: ['angola'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇶',\n description: 'flag: Antarctica',\n category: 'Flags',\n aliases: ['antarctica'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇦🇷',\n description: 'flag: Argentina',\n category: 'Flags',\n aliases: ['argentina'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇸',\n description: 'flag: American Samoa',\n category: 'Flags',\n aliases: ['american_samoa'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇹',\n description: 'flag: Austria',\n category: 'Flags',\n aliases: ['austria'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇺',\n description: 'flag: Australia',\n category: 'Flags',\n aliases: ['australia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇼',\n description: 'flag: Aruba',\n category: 'Flags',\n aliases: ['aruba'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇦🇽',\n description: 'flag: Åland Islands',\n category: 'Flags',\n aliases: ['aland_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇦🇿',\n description: 'flag: Azerbaijan',\n category: 'Flags',\n aliases: ['azerbaijan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇦',\n description: 'flag: Bosnia & Herzegovina',\n category: 'Flags',\n aliases: ['bosnia_herzegovina'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇧',\n description: 'flag: Barbados',\n category: 'Flags',\n aliases: ['barbados'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇩',\n description: 'flag: Bangladesh',\n category: 'Flags',\n aliases: ['bangladesh'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇪',\n description: 'flag: Belgium',\n category: 'Flags',\n aliases: ['belgium'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇫',\n description: 'flag: Burkina Faso',\n category: 'Flags',\n aliases: ['burkina_faso'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇬',\n description: 'flag: Bulgaria',\n category: 'Flags',\n aliases: ['bulgaria'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇭',\n description: 'flag: Bahrain',\n category: 'Flags',\n aliases: ['bahrain'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇮',\n description: 'flag: Burundi',\n category: 'Flags',\n aliases: ['burundi'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇯',\n description: 'flag: Benin',\n category: 'Flags',\n aliases: ['benin'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇱',\n description: 'flag: St. Barthélemy',\n category: 'Flags',\n aliases: ['st_barthelemy'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇧🇲',\n description: 'flag: Bermuda',\n category: 'Flags',\n aliases: ['bermuda'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇳',\n description: 'flag: Brunei',\n category: 'Flags',\n aliases: ['brunei'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇴',\n description: 'flag: Bolivia',\n category: 'Flags',\n aliases: ['bolivia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇶',\n description: 'flag: Caribbean Netherlands',\n category: 'Flags',\n aliases: ['caribbean_netherlands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇧🇷',\n description: 'flag: Brazil',\n category: 'Flags',\n aliases: ['brazil'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇸',\n description: 'flag: Bahamas',\n category: 'Flags',\n aliases: ['bahamas'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇹',\n description: 'flag: Bhutan',\n category: 'Flags',\n aliases: ['bhutan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇻',\n description: 'flag: Bouvet Island',\n category: 'Flags',\n aliases: ['bouvet_island'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇧🇼',\n description: 'flag: Botswana',\n category: 'Flags',\n aliases: ['botswana'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇾',\n description: 'flag: Belarus',\n category: 'Flags',\n aliases: ['belarus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇧🇿',\n description: 'flag: Belize',\n category: 'Flags',\n aliases: ['belize'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇦',\n description: 'flag: Canada',\n category: 'Flags',\n aliases: ['canada'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇨',\n description: 'flag: Cocos (Keeling) Islands',\n category: 'Flags',\n aliases: ['cocos_islands'],\n tags: ['keeling'],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇨🇩',\n description: 'flag: Congo - Kinshasa',\n category: 'Flags',\n aliases: ['congo_kinshasa'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇫',\n description: 'flag: Central African Republic',\n category: 'Flags',\n aliases: ['central_african_republic'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇬',\n description: 'flag: Congo - Brazzaville',\n category: 'Flags',\n aliases: ['congo_brazzaville'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇭',\n description: 'flag: Switzerland',\n category: 'Flags',\n aliases: ['switzerland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇮',\n description: 'flag: Côte d’Ivoire',\n category: 'Flags',\n aliases: ['cote_divoire'],\n tags: ['ivory'],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇰',\n description: 'flag: Cook Islands',\n category: 'Flags',\n aliases: ['cook_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇱',\n description: 'flag: Chile',\n category: 'Flags',\n aliases: ['chile'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇲',\n description: 'flag: Cameroon',\n category: 'Flags',\n aliases: ['cameroon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇳',\n description: 'flag: China',\n category: 'Flags',\n aliases: ['cn'],\n tags: ['china'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇨🇴',\n description: 'flag: Colombia',\n category: 'Flags',\n aliases: ['colombia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇵',\n description: 'flag: Clipperton Island',\n category: 'Flags',\n aliases: ['clipperton_island'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇨🇷',\n description: 'flag: Costa Rica',\n category: 'Flags',\n aliases: ['costa_rica'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇺',\n description: 'flag: Cuba',\n category: 'Flags',\n aliases: ['cuba'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇻',\n description: 'flag: Cape Verde',\n category: 'Flags',\n aliases: ['cape_verde'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇼',\n description: 'flag: Curaçao',\n category: 'Flags',\n aliases: ['curacao'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇽',\n description: 'flag: Christmas Island',\n category: 'Flags',\n aliases: ['christmas_island'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇨🇾',\n description: 'flag: Cyprus',\n category: 'Flags',\n aliases: ['cyprus'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇨🇿',\n description: 'flag: Czechia',\n category: 'Flags',\n aliases: ['czech_republic'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇩🇪',\n description: 'flag: Germany',\n category: 'Flags',\n aliases: ['de'],\n tags: ['flag', 'germany'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇩🇬',\n description: 'flag: Diego Garcia',\n category: 'Flags',\n aliases: ['diego_garcia'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇩🇯',\n description: 'flag: Djibouti',\n category: 'Flags',\n aliases: ['djibouti'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇩🇰',\n description: 'flag: Denmark',\n category: 'Flags',\n aliases: ['denmark'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇩🇲',\n description: 'flag: Dominica',\n category: 'Flags',\n aliases: ['dominica'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇩🇴',\n description: 'flag: Dominican Republic',\n category: 'Flags',\n aliases: ['dominican_republic'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇩🇿',\n description: 'flag: Algeria',\n category: 'Flags',\n aliases: ['algeria'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇦',\n description: 'flag: Ceuta & Melilla',\n category: 'Flags',\n aliases: ['ceuta_melilla'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇪🇨',\n description: 'flag: Ecuador',\n category: 'Flags',\n aliases: ['ecuador'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇪',\n description: 'flag: Estonia',\n category: 'Flags',\n aliases: ['estonia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇬',\n description: 'flag: Egypt',\n category: 'Flags',\n aliases: ['egypt'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇭',\n description: 'flag: Western Sahara',\n category: 'Flags',\n aliases: ['western_sahara'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇪🇷',\n description: 'flag: Eritrea',\n category: 'Flags',\n aliases: ['eritrea'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇸',\n description: 'flag: Spain',\n category: 'Flags',\n aliases: ['es'],\n tags: ['spain'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇪🇹',\n description: 'flag: Ethiopia',\n category: 'Flags',\n aliases: ['ethiopia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇪🇺',\n description: 'flag: European Union',\n category: 'Flags',\n aliases: ['eu', 'european_union'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇫🇮',\n description: 'flag: Finland',\n category: 'Flags',\n aliases: ['finland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇫🇯',\n description: 'flag: Fiji',\n category: 'Flags',\n aliases: ['fiji'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇫🇰',\n description: 'flag: Falkland Islands',\n category: 'Flags',\n aliases: ['falkland_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇫🇲',\n description: 'flag: Micronesia',\n category: 'Flags',\n aliases: ['micronesia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇫🇴',\n description: 'flag: Faroe Islands',\n category: 'Flags',\n aliases: ['faroe_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇫🇷',\n description: 'flag: France',\n category: 'Flags',\n aliases: ['fr'],\n tags: ['france', 'french'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇬🇦',\n description: 'flag: Gabon',\n category: 'Flags',\n aliases: ['gabon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇧',\n description: 'flag: United Kingdom',\n category: 'Flags',\n aliases: ['gb', 'uk'],\n tags: ['flag', 'british'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇬🇩',\n description: 'flag: Grenada',\n category: 'Flags',\n aliases: ['grenada'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇪',\n description: 'flag: Georgia',\n category: 'Flags',\n aliases: ['georgia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇫',\n description: 'flag: French Guiana',\n category: 'Flags',\n aliases: ['french_guiana'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇬',\n description: 'flag: Guernsey',\n category: 'Flags',\n aliases: ['guernsey'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇬🇭',\n description: 'flag: Ghana',\n category: 'Flags',\n aliases: ['ghana'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇮',\n description: 'flag: Gibraltar',\n category: 'Flags',\n aliases: ['gibraltar'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇱',\n description: 'flag: Greenland',\n category: 'Flags',\n aliases: ['greenland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇬🇲',\n description: 'flag: Gambia',\n category: 'Flags',\n aliases: ['gambia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇳',\n description: 'flag: Guinea',\n category: 'Flags',\n aliases: ['guinea'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇵',\n description: 'flag: Guadeloupe',\n category: 'Flags',\n aliases: ['guadeloupe'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇬🇶',\n description: 'flag: Equatorial Guinea',\n category: 'Flags',\n aliases: ['equatorial_guinea'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇷',\n description: 'flag: Greece',\n category: 'Flags',\n aliases: ['greece'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇸',\n description: 'flag: South Georgia & South Sandwich Islands',\n category: 'Flags',\n aliases: ['south_georgia_south_sandwich_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇬🇹',\n description: 'flag: Guatemala',\n category: 'Flags',\n aliases: ['guatemala'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇺',\n description: 'flag: Guam',\n category: 'Flags',\n aliases: ['guam'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇼',\n description: 'flag: Guinea-Bissau',\n category: 'Flags',\n aliases: ['guinea_bissau'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇬🇾',\n description: 'flag: Guyana',\n category: 'Flags',\n aliases: ['guyana'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇭🇰',\n description: 'flag: Hong Kong SAR China',\n category: 'Flags',\n aliases: ['hong_kong'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇭🇲',\n description: 'flag: Heard & McDonald Islands',\n category: 'Flags',\n aliases: ['heard_mcdonald_islands'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇭🇳',\n description: 'flag: Honduras',\n category: 'Flags',\n aliases: ['honduras'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇭🇷',\n description: 'flag: Croatia',\n category: 'Flags',\n aliases: ['croatia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇭🇹',\n description: 'flag: Haiti',\n category: 'Flags',\n aliases: ['haiti'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇭🇺',\n description: 'flag: Hungary',\n category: 'Flags',\n aliases: ['hungary'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇨',\n description: 'flag: Canary Islands',\n category: 'Flags',\n aliases: ['canary_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇮🇩',\n description: 'flag: Indonesia',\n category: 'Flags',\n aliases: ['indonesia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇪',\n description: 'flag: Ireland',\n category: 'Flags',\n aliases: ['ireland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇱',\n description: 'flag: Israel',\n category: 'Flags',\n aliases: ['israel'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇲',\n description: 'flag: Isle of Man',\n category: 'Flags',\n aliases: ['isle_of_man'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇮🇳',\n description: 'flag: India',\n category: 'Flags',\n aliases: ['india'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇴',\n description: 'flag: British Indian Ocean Territory',\n category: 'Flags',\n aliases: ['british_indian_ocean_territory'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇮🇶',\n description: 'flag: Iraq',\n category: 'Flags',\n aliases: ['iraq'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇷',\n description: 'flag: Iran',\n category: 'Flags',\n aliases: ['iran'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇸',\n description: 'flag: Iceland',\n category: 'Flags',\n aliases: ['iceland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇮🇹',\n description: 'flag: Italy',\n category: 'Flags',\n aliases: ['it'],\n tags: ['italy'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇯🇪',\n description: 'flag: Jersey',\n category: 'Flags',\n aliases: ['jersey'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇯🇲',\n description: 'flag: Jamaica',\n category: 'Flags',\n aliases: ['jamaica'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇯🇴',\n description: 'flag: Jordan',\n category: 'Flags',\n aliases: ['jordan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇯🇵',\n description: 'flag: Japan',\n category: 'Flags',\n aliases: ['jp'],\n tags: ['japan'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇰🇪',\n description: 'flag: Kenya',\n category: 'Flags',\n aliases: ['kenya'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇬',\n description: 'flag: Kyrgyzstan',\n category: 'Flags',\n aliases: ['kyrgyzstan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇭',\n description: 'flag: Cambodia',\n category: 'Flags',\n aliases: ['cambodia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇮',\n description: 'flag: Kiribati',\n category: 'Flags',\n aliases: ['kiribati'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇲',\n description: 'flag: Comoros',\n category: 'Flags',\n aliases: ['comoros'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇳',\n description: 'flag: St. Kitts & Nevis',\n category: 'Flags',\n aliases: ['st_kitts_nevis'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇵',\n description: 'flag: North Korea',\n category: 'Flags',\n aliases: ['north_korea'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇷',\n description: 'flag: South Korea',\n category: 'Flags',\n aliases: ['kr'],\n tags: ['korea'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇰🇼',\n description: 'flag: Kuwait',\n category: 'Flags',\n aliases: ['kuwait'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇾',\n description: 'flag: Cayman Islands',\n category: 'Flags',\n aliases: ['cayman_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇰🇿',\n description: 'flag: Kazakhstan',\n category: 'Flags',\n aliases: ['kazakhstan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇦',\n description: 'flag: Laos',\n category: 'Flags',\n aliases: ['laos'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇧',\n description: 'flag: Lebanon',\n category: 'Flags',\n aliases: ['lebanon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇨',\n description: 'flag: St. Lucia',\n category: 'Flags',\n aliases: ['st_lucia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇮',\n description: 'flag: Liechtenstein',\n category: 'Flags',\n aliases: ['liechtenstein'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇰',\n description: 'flag: Sri Lanka',\n category: 'Flags',\n aliases: ['sri_lanka'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇷',\n description: 'flag: Liberia',\n category: 'Flags',\n aliases: ['liberia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇸',\n description: 'flag: Lesotho',\n category: 'Flags',\n aliases: ['lesotho'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇹',\n description: 'flag: Lithuania',\n category: 'Flags',\n aliases: ['lithuania'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇺',\n description: 'flag: Luxembourg',\n category: 'Flags',\n aliases: ['luxembourg'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇻',\n description: 'flag: Latvia',\n category: 'Flags',\n aliases: ['latvia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇱🇾',\n description: 'flag: Libya',\n category: 'Flags',\n aliases: ['libya'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇦',\n description: 'flag: Morocco',\n category: 'Flags',\n aliases: ['morocco'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇨',\n description: 'flag: Monaco',\n category: 'Flags',\n aliases: ['monaco'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇲🇩',\n description: 'flag: Moldova',\n category: 'Flags',\n aliases: ['moldova'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇪',\n description: 'flag: Montenegro',\n category: 'Flags',\n aliases: ['montenegro'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇫',\n description: 'flag: St. Martin',\n category: 'Flags',\n aliases: ['st_martin'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇲🇬',\n description: 'flag: Madagascar',\n category: 'Flags',\n aliases: ['madagascar'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇭',\n description: 'flag: Marshall Islands',\n category: 'Flags',\n aliases: ['marshall_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇲🇰',\n description: 'flag: North Macedonia',\n category: 'Flags',\n aliases: ['macedonia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇱',\n description: 'flag: Mali',\n category: 'Flags',\n aliases: ['mali'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇲',\n description: 'flag: Myanmar (Burma)',\n category: 'Flags',\n aliases: ['myanmar'],\n tags: ['burma'],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇳',\n description: 'flag: Mongolia',\n category: 'Flags',\n aliases: ['mongolia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇴',\n description: 'flag: Macao SAR China',\n category: 'Flags',\n aliases: ['macau'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇵',\n description: 'flag: Northern Mariana Islands',\n category: 'Flags',\n aliases: ['northern_mariana_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇶',\n description: 'flag: Martinique',\n category: 'Flags',\n aliases: ['martinique'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇲🇷',\n description: 'flag: Mauritania',\n category: 'Flags',\n aliases: ['mauritania'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇸',\n description: 'flag: Montserrat',\n category: 'Flags',\n aliases: ['montserrat'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇹',\n description: 'flag: Malta',\n category: 'Flags',\n aliases: ['malta'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇺',\n description: 'flag: Mauritius',\n category: 'Flags',\n aliases: ['mauritius'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇲🇻',\n description: 'flag: Maldives',\n category: 'Flags',\n aliases: ['maldives'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇼',\n description: 'flag: Malawi',\n category: 'Flags',\n aliases: ['malawi'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇽',\n description: 'flag: Mexico',\n category: 'Flags',\n aliases: ['mexico'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇾',\n description: 'flag: Malaysia',\n category: 'Flags',\n aliases: ['malaysia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇲🇿',\n description: 'flag: Mozambique',\n category: 'Flags',\n aliases: ['mozambique'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇦',\n description: 'flag: Namibia',\n category: 'Flags',\n aliases: ['namibia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇨',\n description: 'flag: New Caledonia',\n category: 'Flags',\n aliases: ['new_caledonia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇪',\n description: 'flag: Niger',\n category: 'Flags',\n aliases: ['niger'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇫',\n description: 'flag: Norfolk Island',\n category: 'Flags',\n aliases: ['norfolk_island'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇳🇬',\n description: 'flag: Nigeria',\n category: 'Flags',\n aliases: ['nigeria'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇮',\n description: 'flag: Nicaragua',\n category: 'Flags',\n aliases: ['nicaragua'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇱',\n description: 'flag: Netherlands',\n category: 'Flags',\n aliases: ['netherlands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇴',\n description: 'flag: Norway',\n category: 'Flags',\n aliases: ['norway'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇵',\n description: 'flag: Nepal',\n category: 'Flags',\n aliases: ['nepal'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇷',\n description: 'flag: Nauru',\n category: 'Flags',\n aliases: ['nauru'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇳🇺',\n description: 'flag: Niue',\n category: 'Flags',\n aliases: ['niue'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇳🇿',\n description: 'flag: New Zealand',\n category: 'Flags',\n aliases: ['new_zealand'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇴🇲',\n description: 'flag: Oman',\n category: 'Flags',\n aliases: ['oman'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇦',\n description: 'flag: Panama',\n category: 'Flags',\n aliases: ['panama'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇪',\n description: 'flag: Peru',\n category: 'Flags',\n aliases: ['peru'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇫',\n description: 'flag: French Polynesia',\n category: 'Flags',\n aliases: ['french_polynesia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇵🇬',\n description: 'flag: Papua New Guinea',\n category: 'Flags',\n aliases: ['papua_new_guinea'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇭',\n description: 'flag: Philippines',\n category: 'Flags',\n aliases: ['philippines'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇰',\n description: 'flag: Pakistan',\n category: 'Flags',\n aliases: ['pakistan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇱',\n description: 'flag: Poland',\n category: 'Flags',\n aliases: ['poland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇲',\n description: 'flag: St. Pierre & Miquelon',\n category: 'Flags',\n aliases: ['st_pierre_miquelon'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇵🇳',\n description: 'flag: Pitcairn Islands',\n category: 'Flags',\n aliases: ['pitcairn_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇵🇷',\n description: 'flag: Puerto Rico',\n category: 'Flags',\n aliases: ['puerto_rico'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇸',\n description: 'flag: Palestinian Territories',\n category: 'Flags',\n aliases: ['palestinian_territories'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇹',\n description: 'flag: Portugal',\n category: 'Flags',\n aliases: ['portugal'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇼',\n description: 'flag: Palau',\n category: 'Flags',\n aliases: ['palau'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇵🇾',\n description: 'flag: Paraguay',\n category: 'Flags',\n aliases: ['paraguay'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇶🇦',\n description: 'flag: Qatar',\n category: 'Flags',\n aliases: ['qatar'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇷🇪',\n description: 'flag: Réunion',\n category: 'Flags',\n aliases: ['reunion'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇷🇴',\n description: 'flag: Romania',\n category: 'Flags',\n aliases: ['romania'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇷🇸',\n description: 'flag: Serbia',\n category: 'Flags',\n aliases: ['serbia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇷🇺',\n description: 'flag: Russia',\n category: 'Flags',\n aliases: ['ru'],\n tags: ['russia'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇷🇼',\n description: 'flag: Rwanda',\n category: 'Flags',\n aliases: ['rwanda'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇦',\n description: 'flag: Saudi Arabia',\n category: 'Flags',\n aliases: ['saudi_arabia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇧',\n description: 'flag: Solomon Islands',\n category: 'Flags',\n aliases: ['solomon_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇨',\n description: 'flag: Seychelles',\n category: 'Flags',\n aliases: ['seychelles'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇩',\n description: 'flag: Sudan',\n category: 'Flags',\n aliases: ['sudan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇪',\n description: 'flag: Sweden',\n category: 'Flags',\n aliases: ['sweden'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇬',\n description: 'flag: Singapore',\n category: 'Flags',\n aliases: ['singapore'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇭',\n description: 'flag: St. Helena',\n category: 'Flags',\n aliases: ['st_helena'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇸🇮',\n description: 'flag: Slovenia',\n category: 'Flags',\n aliases: ['slovenia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇯',\n description: 'flag: Svalbard & Jan Mayen',\n category: 'Flags',\n aliases: ['svalbard_jan_mayen'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇸🇰',\n description: 'flag: Slovakia',\n category: 'Flags',\n aliases: ['slovakia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇱',\n description: 'flag: Sierra Leone',\n category: 'Flags',\n aliases: ['sierra_leone'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇲',\n description: 'flag: San Marino',\n category: 'Flags',\n aliases: ['san_marino'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇳',\n description: 'flag: Senegal',\n category: 'Flags',\n aliases: ['senegal'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇴',\n description: 'flag: Somalia',\n category: 'Flags',\n aliases: ['somalia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇷',\n description: 'flag: Suriname',\n category: 'Flags',\n aliases: ['suriname'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇸',\n description: 'flag: South Sudan',\n category: 'Flags',\n aliases: ['south_sudan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇹',\n description: 'flag: São Tomé & Príncipe',\n category: 'Flags',\n aliases: ['sao_tome_principe'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇻',\n description: 'flag: El Salvador',\n category: 'Flags',\n aliases: ['el_salvador'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇽',\n description: 'flag: Sint Maarten',\n category: 'Flags',\n aliases: ['sint_maarten'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇾',\n description: 'flag: Syria',\n category: 'Flags',\n aliases: ['syria'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇸🇿',\n description: 'flag: Eswatini',\n category: 'Flags',\n aliases: ['swaziland'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇦',\n description: 'flag: Tristan da Cunha',\n category: 'Flags',\n aliases: ['tristan_da_cunha'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇹🇨',\n description: 'flag: Turks & Caicos Islands',\n category: 'Flags',\n aliases: ['turks_caicos_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇩',\n description: 'flag: Chad',\n category: 'Flags',\n aliases: ['chad'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇹🇫',\n description: 'flag: French Southern Territories',\n category: 'Flags',\n aliases: ['french_southern_territories'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇬',\n description: 'flag: Togo',\n category: 'Flags',\n aliases: ['togo'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇭',\n description: 'flag: Thailand',\n category: 'Flags',\n aliases: ['thailand'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇯',\n description: 'flag: Tajikistan',\n category: 'Flags',\n aliases: ['tajikistan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇰',\n description: 'flag: Tokelau',\n category: 'Flags',\n aliases: ['tokelau'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇹🇱',\n description: 'flag: Timor-Leste',\n category: 'Flags',\n aliases: ['timor_leste'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇲',\n description: 'flag: Turkmenistan',\n category: 'Flags',\n aliases: ['turkmenistan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇳',\n description: 'flag: Tunisia',\n category: 'Flags',\n aliases: ['tunisia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇴',\n description: 'flag: Tonga',\n category: 'Flags',\n aliases: ['tonga'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇷',\n description: 'flag: Turkey',\n category: 'Flags',\n aliases: ['tr'],\n tags: ['turkey'],\n unicode_version: '8.0',\n ios_version: '9.1',\n },\n {\n emoji: '🇹🇹',\n description: 'flag: Trinidad & Tobago',\n category: 'Flags',\n aliases: ['trinidad_tobago'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇻',\n description: 'flag: Tuvalu',\n category: 'Flags',\n aliases: ['tuvalu'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇹🇼',\n description: 'flag: Taiwan',\n category: 'Flags',\n aliases: ['taiwan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇹🇿',\n description: 'flag: Tanzania',\n category: 'Flags',\n aliases: ['tanzania'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇺🇦',\n description: 'flag: Ukraine',\n category: 'Flags',\n aliases: ['ukraine'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇺🇬',\n description: 'flag: Uganda',\n category: 'Flags',\n aliases: ['uganda'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇺🇲',\n description: 'flag: U.S. Outlying Islands',\n category: 'Flags',\n aliases: ['us_outlying_islands'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇺🇳',\n description: 'flag: United Nations',\n category: 'Flags',\n aliases: ['united_nations'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🇺🇸',\n description: 'flag: United States',\n category: 'Flags',\n aliases: ['us'],\n tags: ['flag', 'united', 'america'],\n unicode_version: '6.0',\n ios_version: '6.0',\n },\n {\n emoji: '🇺🇾',\n description: 'flag: Uruguay',\n category: 'Flags',\n aliases: ['uruguay'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇺🇿',\n description: 'flag: Uzbekistan',\n category: 'Flags',\n aliases: ['uzbekistan'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇦',\n description: 'flag: Vatican City',\n category: 'Flags',\n aliases: ['vatican_city'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇻🇨',\n description: 'flag: St. Vincent & Grenadines',\n category: 'Flags',\n aliases: ['st_vincent_grenadines'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇪',\n description: 'flag: Venezuela',\n category: 'Flags',\n aliases: ['venezuela'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇬',\n description: 'flag: British Virgin Islands',\n category: 'Flags',\n aliases: ['british_virgin_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇮',\n description: 'flag: U.S. Virgin Islands',\n category: 'Flags',\n aliases: ['us_virgin_islands'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇳',\n description: 'flag: Vietnam',\n category: 'Flags',\n aliases: ['vietnam'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇻🇺',\n description: 'flag: Vanuatu',\n category: 'Flags',\n aliases: ['vanuatu'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇼🇫',\n description: 'flag: Wallis & Futuna',\n category: 'Flags',\n aliases: ['wallis_futuna'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇼🇸',\n description: 'flag: Samoa',\n category: 'Flags',\n aliases: ['samoa'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇽🇰',\n description: 'flag: Kosovo',\n category: 'Flags',\n aliases: ['kosovo'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇾🇪',\n description: 'flag: Yemen',\n category: 'Flags',\n aliases: ['yemen'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇾🇹',\n description: 'flag: Mayotte',\n category: 'Flags',\n aliases: ['mayotte'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '9.0',\n },\n {\n emoji: '🇿🇦',\n description: 'flag: South Africa',\n category: 'Flags',\n aliases: ['south_africa'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇿🇲',\n description: 'flag: Zambia',\n category: 'Flags',\n aliases: ['zambia'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🇿🇼',\n description: 'flag: Zimbabwe',\n category: 'Flags',\n aliases: ['zimbabwe'],\n tags: [],\n unicode_version: '6.0',\n ios_version: '8.3',\n },\n {\n emoji: '🏴',\n description: 'flag: England',\n category: 'Flags',\n aliases: ['england'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🏴',\n description: 'flag: Scotland',\n category: 'Flags',\n aliases: ['scotland'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n {\n emoji: '🏴',\n description: 'flag: Wales',\n category: 'Flags',\n aliases: ['wales'],\n tags: [],\n unicode_version: '11.0',\n ios_version: '12.1',\n },\n]\n","import { TextMatchTransformer } from '@lexical/markdown'\nimport { $createTextNode } from 'lexical'\n\nimport emojiList from '@/components/editor/utils/emoji-list'\n\nexport const EMOJI: TextMatchTransformer = {\n dependencies: [],\n export: () => null,\n importRegExp: /:([a-z0-9_]+):/,\n regExp: /:([a-z0-9_]+):/,\n replace: (textNode, [, name]) => {\n const emoji = emojiList.find((e) => e.aliases.includes(name))?.emoji\n if (emoji) {\n textNode.replace($createTextNode(emoji))\n }\n },\n trigger: ':',\n type: 'text-match',\n}\n","import { TextMatchTransformer } from '@lexical/markdown'\n\nimport {\n $createEquationNode,\n $isEquationNode,\n EquationNode,\n} from '@/components/editor/nodes/equation-node'\n\nexport const EQUATION: TextMatchTransformer = {\n dependencies: [EquationNode],\n export: (node) => {\n if (!$isEquationNode(node)) {\n return null\n }\n\n return `$${node.getEquation()}$`\n },\n importRegExp: /\\$([^$]+?)\\$/,\n regExp: /\\$([^$]+?)\\$$/,\n replace: (textNode, match) => {\n const [, equation] = match\n const equationNode = $createEquationNode(equation, true)\n textNode.replace(equationNode)\n },\n trigger: '$',\n type: 'text-match',\n}\n","import { ElementTransformer } from '@lexical/markdown'\nimport {\n $createHorizontalRuleNode,\n $isHorizontalRuleNode,\n HorizontalRuleNode,\n} from '@lexical/react/LexicalHorizontalRuleNode'\nimport { LexicalNode } from 'lexical'\n\nexport const HR: ElementTransformer = {\n dependencies: [HorizontalRuleNode],\n export: (node: LexicalNode) => {\n return $isHorizontalRuleNode(node) ? '***' : null\n },\n regExp: /^(---|\\*\\*\\*|___)\\s?$/,\n replace: (parentNode, _1, _2, isImport) => {\n const line = $createHorizontalRuleNode()\n\n // TODO: Get rid of isImport flag\n if (isImport || parentNode.getNextSibling() != null) {\n parentNode.replace(line)\n } else {\n parentNode.insertBefore(line)\n }\n\n line.selectNext()\n },\n type: 'element',\n}\n","import { TextMatchTransformer } from '@lexical/markdown'\n\nimport { $createImageNode, $isImageNode, ImageNode } from '@/components/editor/nodes/image-node'\n\nexport const IMAGE: TextMatchTransformer = {\n dependencies: [ImageNode],\n export: (node) => {\n if (!$isImageNode(node)) {\n return null\n }\n\n return `})`\n },\n importRegExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))/,\n regExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))$/,\n replace: (textNode, match) => {\n const [, altText, src] = match\n const imageNode = $createImageNode({\n altText,\n maxWidth: 800,\n src,\n })\n textNode.replace(imageNode)\n },\n trigger: ')',\n type: 'text-match',\n}\n","import { ElementTransformer } from '@lexical/markdown'\n\nimport {\n $createTweetNode,\n $isTweetNode,\n TweetNode,\n} from '@/components/editor/nodes/embeds/tweet-node'\n\nexport const TWEET: ElementTransformer = {\n dependencies: [TweetNode],\n export: (node) => {\n if (!$isTweetNode(node)) {\n return null\n }\n\n return `<tweet id=\"${node.getId()}\" />`\n },\n regExp: /<tweet id=\"([^\"]+?)\"\\s?\\/>\\s?$/,\n replace: (textNode, _1, match) => {\n const [, id] = match\n const tweetNode = $createTweetNode(id)\n textNode.replace(tweetNode)\n },\n type: 'element',\n}\n","import { $isParagraphNode, $isTextNode, LexicalNode } from 'lexical'\nimport {\n $convertFromMarkdownString,\n $convertToMarkdownString,\n ElementTransformer,\n CHECK_LIST,\n ELEMENT_TRANSFORMERS,\n MULTILINE_ELEMENT_TRANSFORMERS,\n TEXT_FORMAT_TRANSFORMERS,\n TEXT_MATCH_TRANSFORMERS,\n} from '@lexical/markdown'\nimport {\n $createTableCellNode,\n $createTableNode,\n $createTableRowNode,\n $isTableCellNode,\n $isTableNode,\n $isTableRowNode,\n TableCellHeaderStates,\n TableCellNode,\n TableNode,\n TableRowNode,\n} from '@lexical/table'\n\nimport { EMOJI } from '@/components/editor/transformers/markdown-emoji-transformer'\nimport { EQUATION } from '@/components/editor/transformers/markdown-equation-transofrmer'\nimport { HR } from '@/components/editor/transformers/markdown-hr-transformer'\nimport { IMAGE } from '@/components/editor/transformers/markdown-image-transformer'\nimport { TWEET } from '@/components/editor/transformers/markdown-tweet-transformer'\n\n// Very primitive table setup\nconst TABLE_ROW_REG_EXP = /^(?:\\|)(.+)(?:\\|)\\s?$/\nconst TABLE_ROW_DIVIDER_REG_EXP = /^(\\| ?:?-*:? ?)+\\|\\s?$/\n\nconst OTHER_MARKDOWN_TRANSFORMERS = [\n HR,\n IMAGE,\n EMOJI,\n EQUATION,\n TWEET,\n CHECK_LIST,\n ...ELEMENT_TRANSFORMERS,\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n]\n\nexport const TABLE: ElementTransformer = {\n dependencies: [TableNode, TableRowNode, TableCellNode],\n export: (node: LexicalNode) => {\n if (!$isTableNode(node)) {\n return null\n }\n\n const output: string[] = []\n\n for (const row of node.getChildren()) {\n const rowOutput = []\n if (!$isTableRowNode(row)) {\n continue\n }\n\n let isHeaderRow = false\n for (const cell of row.getChildren()) {\n // It's TableCellNode so it's just to make flow happy\n if ($isTableCellNode(cell)) {\n rowOutput.push(\n $convertToMarkdownString(OTHER_MARKDOWN_TRANSFORMERS, cell).replace(\n /\\n/g,\n '\\\\n'\n )\n )\n if (cell.__headerState === TableCellHeaderStates.ROW) {\n isHeaderRow = true\n }\n }\n }\n\n output.push(`| ${rowOutput.join(' | ')} |`)\n if (isHeaderRow) {\n output.push(`| ${rowOutput.map((_) => '---').join(' | ')} |`)\n }\n }\n\n return output.join('\\n')\n },\n regExp: TABLE_ROW_REG_EXP,\n replace: (parentNode, _1, match) => {\n // Header row\n if (TABLE_ROW_DIVIDER_REG_EXP.test(match[0])) {\n const table = parentNode.getPreviousSibling()\n if (!table || !$isTableNode(table)) {\n return\n }\n\n const rows = table.getChildren()\n const lastRow = rows[rows.length - 1]\n if (!lastRow || !$isTableRowNode(lastRow)) {\n return\n }\n\n // Add header state to row cells\n lastRow.getChildren().forEach((cell) => {\n if (!$isTableCellNode(cell)) {\n return\n }\n cell.setHeaderStyles(\n TableCellHeaderStates.ROW,\n TableCellHeaderStates.ROW\n )\n })\n\n // Remove line\n parentNode.remove()\n return\n }\n\n const matchCells = mapToTableCells(match[0])\n\n if (matchCells == null) {\n return\n }\n\n const rows = [matchCells]\n let sibling = parentNode.getPreviousSibling()\n let maxCells = matchCells.length\n\n while (sibling) {\n if (!$isParagraphNode(sibling)) {\n break\n }\n\n if (sibling.getChildrenSize() !== 1) {\n break\n }\n\n const firstChild = sibling.getFirstChild()\n\n if (!$isTextNode(firstChild)) {\n break\n }\n\n const cells = mapToTableCells(firstChild.getTextContent())\n\n if (cells == null) {\n break\n }\n\n maxCells = Math.max(maxCells, cells.length)\n rows.unshift(cells)\n const previousSibling = sibling.getPreviousSibling()\n sibling.remove()\n sibling = previousSibling\n }\n\n const table = $createTableNode()\n\n for (const cells of rows) {\n const tableRow = $createTableRowNode()\n table.append(tableRow)\n\n for (let i = 0; i < maxCells; i++) {\n tableRow.append(i < cells.length ? cells[i] : $createTableCell(''))\n }\n }\n\n const previousSibling = parentNode.getPreviousSibling()\n if (\n $isTableNode(previousSibling) &&\n getTableColumnsSize(previousSibling) === maxCells\n ) {\n previousSibling.append(...table.getChildren())\n parentNode.remove()\n } else {\n parentNode.replace(table)\n }\n\n table.selectEnd()\n },\n type: 'element',\n}\n\nfunction getTableColumnsSize(table: TableNode) {\n const row = table.getFirstChild()\n return $isTableRowNode(row) ? row.getChildrenSize() : 0\n}\n\nconst $createTableCell = (textContent: string): TableCellNode => {\n textContent = textContent.replace(/\\\\n/g, '\\n')\n const cell = $createTableCellNode(TableCellHeaderStates.NO_STATUS)\n $convertFromMarkdownString(textContent, OTHER_MARKDOWN_TRANSFORMERS, cell)\n return cell\n}\n\nconst mapToTableCells = (textContent: string): Array<TableCellNode> | null => {\n const match = textContent.match(TABLE_ROW_REG_EXP)\n if (!match || !match[1]) {\n return null\n }\n return match[1].split('|').map((text) => $createTableCell(text))\n}\n","import { useState } from \"react\";\nimport {\n CHECK_LIST,\n ELEMENT_TRANSFORMERS,\n MULTILINE_ELEMENT_TRANSFORMERS,\n TEXT_FORMAT_TRANSFORMERS,\n TEXT_MATCH_TRANSFORMERS,\n} from \"@lexical/markdown\";\n\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { CheckListPlugin } from \"@lexical/react/LexicalCheckListPlugin\";\nimport { ClearEditorPlugin } from \"@lexical/react/LexicalClearEditorPlugin\";\nimport { ClickableLinkPlugin } from \"@lexical/react/LexicalClickableLinkPlugin\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HashtagPlugin } from \"@lexical/react/LexicalHashtagPlugin\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\nimport { TablePlugin } from \"@lexical/react/LexicalTablePlugin\";\n\nimport { Separator } from \"@/components/ui/separator\";\n\nimport { BlockFormatDropDown } from \"@/components/editor/plugins/toolbar/block-format-toolbar-plugin\";\nimport { FormatBulletedList } from \"@/components/editor/plugins/toolbar/block-format/format-bulleted-list\";\nimport { FormatCheckList } from \"@/components/editor/plugins/toolbar/block-format/format-check-list\";\nimport { FormatCodeBlock } from \"@/components/editor/plugins/toolbar/block-format/format-code-block\";\nimport { FormatHeading } from \"@/components/editor/plugins/toolbar/block-format/format-heading\";\nimport { FormatNumberedList } from \"@/components/editor/plugins/toolbar/block-format/format-numbered-list\";\nimport { FormatParagraph } from \"@/components/editor/plugins/toolbar/block-format/format-paragraph\";\nimport { FormatQuote } from \"@/components/editor/plugins/toolbar/block-format/format-quote\";\nimport { BlockInsertPlugin } from \"@/components/editor/plugins/toolbar/block-insert-plugin\";\nimport { InsertCollapsibleContainer } from \"@/components/editor/plugins/toolbar/block-insert/insert-collapsible-container\";\nimport { InsertColumnsLayout } from \"@/components/editor/plugins/toolbar/block-insert/insert-columns-layout\";\nimport { InsertEmbeds } from \"@/components/editor/plugins/toolbar/block-insert/insert-embeds\";\nimport { InsertHorizontalRule } from \"@/components/editor/plugins/toolbar/block-insert/insert-horizontal-rule\";\nimport { InsertImage } from \"@/components/editor/plugins/toolbar/block-insert/insert-image\";\nimport { InsertInlineImage } from \"@/components/editor/plugins/toolbar/block-insert/insert-inline-image\";\nimport { InsertPageBreak } from \"@/components/editor/plugins/toolbar/block-insert/insert-page-break\";\nimport { InsertPoll } from \"@/components/editor/plugins/toolbar/block-insert/insert-poll\";\nimport { InsertTable } from \"@/components/editor/plugins/toolbar/block-insert/insert-table\";\nimport { ClearFormattingToolbarPlugin } from \"@/components/editor/plugins/toolbar/clear-formatting-toolbar-plugin\";\nimport { CodeLanguageToolbarPlugin } from \"@/components/editor/plugins/toolbar/code-language-toolbar-plugin\";\nimport { ElementFormatToolbarPlugin } from \"@/components/editor/plugins/toolbar/element-format-toolbar-plugin\";\nimport { FontBackgroundToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-background-toolbar-plugin\";\nimport { FontColorToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-color-toolbar-plugin\";\nimport { FontFamilyToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-family-toolbar-plugin\";\nimport { FontFormatToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-format-toolbar-plugin\";\nimport { FontSizeToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-size-toolbar-plugin\";\nimport { HistoryToolbarPlugin } from \"@/components/editor/plugins/toolbar/history-toolbar-plugin\";\nimport { LinkToolbarPlugin } from \"@/components/editor/plugins/toolbar/link-toolbar-plugin\";\nimport { SubSuperToolbarPlugin } from \"@/components/editor/plugins/toolbar/subsuper-toolbar-plugin\";\n\nimport { AutoLinkPlugin } from \"@/components/editor/plugins/auto-link-plugin\";\nimport { AutocompletePlugin } from \"@/components/editor/plugins/autocomplete-plugin\";\nimport { CodeActionMenuPlugin } from \"@/components/editor/plugins/code-action-menu-plugin\";\nimport { CodeHighlightPlugin } from \"@/components/editor/plugins/code-highlight-plugin\";\nimport { CollapsiblePlugin } from \"@/components/editor/plugins/collapsible-plugin\";\nimport { ComponentPickerMenuPlugin } from \"@/components/editor/plugins/component-picker-menu-plugin\";\nimport { ContextMenuPlugin } from \"@/components/editor/plugins/context-menu-plugin\";\nimport { DragDropPastePlugin } from \"@/components/editor/plugins/drag-drop-paste-plugin\";\nimport { DraggableBlockPlugin } from \"@/components/editor/plugins/draggable-block-plugin\";\nimport { AutoEmbedPlugin } from \"@/components/editor/plugins/embeds/auto-embed-plugin\";\nimport { FigmaPlugin } from \"@/components/editor/plugins/embeds/figma-plugin\";\nimport { TwitterPlugin } from \"@/components/editor/plugins/embeds/twitter-plugin\";\nimport { YouTubePlugin } from \"@/components/editor/plugins/embeds/youtube-plugin\";\nimport { EmojiPickerPlugin } from \"@/components/editor/plugins/emoji-picker-plugin\";\nimport { EmojisPlugin } from \"@/components/editor/plugins/emojis-plugin\";\nimport { EquationsPlugin } from \"@/components/editor/plugins/equations-plugin\";\nimport { ExcalidrawPlugin } from \"@/components/editor/plugins/excalidraw-plugin\";\nimport { FloatingLinkEditorPlugin } from \"@/components/editor/plugins/floating-link-editor-plugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"@/components/editor/plugins/floating-text-format-plugin\";\nimport { ImagesPlugin } from \"@/components/editor/plugins/images-plugin\";\nimport { InlineImagePlugin } from \"@/components/editor/plugins/inline-image-plugin\";\nimport { KeywordsPlugin } from \"@/components/editor/plugins/keywords-plugin\";\nimport { LayoutPlugin } from \"@/components/editor/plugins/layout-plugin\";\nimport { LinkPlugin } from \"@/components/editor/plugins/link-plugin\";\nimport { ListMaxIndentLevelPlugin } from \"@/components/editor/plugins/list-max-indent-level-plugin\";\nimport { MentionsPlugin } from \"@/components/editor/plugins/mentions-plugin\";\nimport { PageBreakPlugin } from \"@/components/editor/plugins/page-break-plugin\";\nimport { PollPlugin } from \"@/components/editor/plugins/poll-plugin\";\nimport { TabFocusPlugin } from \"@/components/editor/plugins/tab-focus-plugin\";\nimport { TableActionMenuPlugin } from \"@/components/editor/plugins/table-action-menu-plugin\";\nimport { TableCellResizerPlugin } from \"@/components/editor/plugins/table-cell-resizer-plugin\";\nimport { TableHoverActionsPlugin } from \"@/components/editor/plugins/table-hover-actions-plugin\";\nimport { ToolbarPlugin } from \"@/components/editor/plugins/toolbar/toolbar-plugin\";\nimport { ContentEditable } from \"@/components/editor/editor-ui/content-editable\";\n\nimport { AlignmentPickerPlugin } from \"@/components/editor/plugins/picker/alignment-picker-plugin\";\nimport { ParagraphPickerPlugin } from \"@/components/editor/plugins/picker/paragraph-picker-plugin\";\nimport { HeadingPickerPlugin } from \"@/components/editor/plugins/picker/heading-picker-plugin\";\nimport {\n DynamicTablePickerPlugin,\n TablePickerPlugin,\n} from \"@/components/editor/plugins/picker/table-picker-plugin\";\nimport { EmbedsPickerPlugin } from \"@/components/editor/plugins/picker/embeds-picker-plugin\";\nimport { CheckListPickerPlugin } from \"@/components/editor/plugins/picker/check-list-picker-plugin\";\nimport { NumberedListPickerPlugin } from \"@/components/editor/plugins/picker/numbered-list-picker-plugin\";\nimport { BulletedListPickerPlugin } from \"@/components/editor/plugins/picker/bulleted-list-picker-plugin\";\nimport { QuotePickerPlugin } from \"@/components/editor/plugins/picker/quote-picker-plugin\";\nimport { CodePickerPlugin } from \"@/components/editor/plugins/picker/code-picker-plugin\";\nimport { DividerPickerPlugin } from \"@/components/editor/plugins/picker/divider-picker-plugin\";\nimport { PageBreakPickerPlugin } from \"@/components/editor/plugins/picker/page-break-picker-plugin\";\nimport { ImagePickerPlugin } from \"@/components/editor/plugins/picker/image-picker-plugin\";\nimport { PollPickerPlugin } from \"@/components/editor/plugins/picker/poll-picker-plugin\";\nimport { EquationPickerPlugin } from \"@/components/editor/plugins/picker/equation-picker-plugin\";\nimport { CollapsiblePickerPlugin } from \"@/components/editor/plugins/picker/collapsible-picker-plugin\";\nimport { ColumnsLayoutPickerPlugin } from \"@/components/editor/plugins/picker/columns-layout-picker-plugin\";\n\nimport { EMOJI } from \"@/components/editor/transformers/markdown-emoji-transformer\";\nimport { EQUATION } from \"@/components/editor/transformers/markdown-equation-transofrmer\";\nimport { HR } from \"@/components/editor/transformers/markdown-hr-transformer\";\nimport { IMAGE } from \"@/components/editor/transformers/markdown-image-transformer\";\nimport { TABLE } from \"@/components/editor/transformers/markdown-table-transformer\";\nimport { TWEET } from \"@/components/editor/transformers/markdown-tweet-transformer\";\n\nexport const placeholder = \"\";\nconst maxLength = 50000000000;\n\nexport function Plugins({}) {\n const [floatingAnchorElem, setFloatingAnchorElem] =\n useState<HTMLDivElement | null>(null);\n\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem);\n }\n };\n\n return (\n <div className=\"relative w-full flex flex-col h-full max-w-full overflow-hidden\">\n <ToolbarPlugin>\n {({ blockType }) => (\n <div \n className=\"flex h-[42px] gap-1 pr-2 p-[5px] items-center border-b border-border-presentation-global-primary bg-background-presentation-form-header shadow-md backdrop-blur-[8px] rounded-[4px] overflow-x-auto overflow-y-hidden scrollbar-hide lg:overflow-x-visible min-w-0 max-w-full w-full flex-nowrap scroll-smooth overscroll-x-contain touch-pan-x\"\n onWheel={(e) => {\n const container = e.currentTarget;\n const canScrollHorizontally = container.scrollWidth > container.clientWidth;\n if (canScrollHorizontally && Math.abs(e.deltaY) > Math.abs(e.deltaX)) {\n e.preventDefault();\n container.scrollLeft += e.deltaY;\n }\n }}\n >\n <HistoryToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <BlockFormatDropDown>\n <FormatParagraph />\n <FormatHeading levels={[\"h1\", \"h2\", \"h3\"]} />\n <FormatNumberedList />\n <FormatBulletedList />\n <FormatCheckList />\n <FormatCodeBlock />\n <FormatQuote />\n </BlockFormatDropDown>\n \n {blockType === \"code\" ? (\n <CodeLanguageToolbarPlugin />\n ) : (\n <>\n <FontFamilyToolbarPlugin />\n <FontSizeToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <FontFormatToolbarPlugin format=\"bold\" />\n <FontFormatToolbarPlugin format=\"italic\" />\n <FontFormatToolbarPlugin format=\"underline\" />\n <FontFormatToolbarPlugin format=\"strikethrough\" />\n <ClearFormattingToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <SubSuperToolbarPlugin />\n <LinkToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <FontColorToolbarPlugin />\n <FontBackgroundToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <ElementFormatToolbarPlugin />\n <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n <BlockInsertPlugin>\n <InsertHorizontalRule />\n <InsertPageBreak />\n <InsertImage />\n <InsertInlineImage />\n <InsertCollapsibleContainer />\n <InsertTable />\n <InsertPoll />\n <InsertColumnsLayout />\n <InsertEmbeds />\n </BlockInsertPlugin>\n </>\n )}\n </div>\n )}\n </ToolbarPlugin>\n <div className=\"relative flex-1 min-h-0 bg-background-system-body-primary w-full overflow-x-hidden\">\n <AutoFocusPlugin />\n <RichTextPlugin\n contentEditable={\n <div className=\"w-full max-w-full overflow-x-hidden bg-background-system-body-primary\">\n <div className=\"w-full max-w-full overflow-x-hidden bg-background-system-body-primary\" ref={onRef}>\n <ContentEditable\n placeholder={placeholder}\n className=\"ContentEditable__root relative block !bg-background-system-body-primary !text-content-system-global-primary overflow-y-auto overflow-x-hidden w-full max-w-full px-2 md:px-12 py-4 focus:outline-none h-[calc(100vh-120px)] md:h-[calc(100vh-120px)]\"\n />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n\n <ClickableLinkPlugin />\n <CheckListPlugin />\n <HorizontalRulePlugin />\n <TablePlugin />\n <ListPlugin />\n <TabIndentationPlugin />\n <HashtagPlugin />\n <HistoryPlugin />\n\n <MentionsPlugin />\n <PageBreakPlugin />\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n <KeywordsPlugin />\n <EmojisPlugin />\n <ImagesPlugin />\n <InlineImagePlugin />\n <ExcalidrawPlugin />\n <TableCellResizerPlugin />\n <TableHoverActionsPlugin anchorElem={floatingAnchorElem} />\n <TableActionMenuPlugin\n anchorElem={floatingAnchorElem}\n cellMerge={true}\n />\n <PollPlugin />\n <LayoutPlugin />\n <EquationsPlugin />\n <CollapsiblePlugin />\n\n <AutoEmbedPlugin />\n <FigmaPlugin />\n <TwitterPlugin />\n <YouTubePlugin />\n\n <CodeHighlightPlugin />\n <CodeActionMenuPlugin anchorElem={floatingAnchorElem} />\n\n <MarkdownShortcutPlugin\n transformers={[\n TABLE,\n HR,\n IMAGE,\n EMOJI,\n EQUATION,\n TWEET,\n CHECK_LIST,\n ...ELEMENT_TRANSFORMERS,\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n ]}\n />\n <TabFocusPlugin />\n <AutocompletePlugin />\n <AutoLinkPlugin />\n <LinkPlugin />\n\n <ComponentPickerMenuPlugin\n baseOptions={[\n ParagraphPickerPlugin(),\n HeadingPickerPlugin({ n: 1 }),\n HeadingPickerPlugin({ n: 2 }),\n HeadingPickerPlugin({ n: 3 }),\n TablePickerPlugin(),\n CheckListPickerPlugin(),\n NumberedListPickerPlugin(),\n BulletedListPickerPlugin(),\n QuotePickerPlugin(),\n CodePickerPlugin(),\n DividerPickerPlugin(),\n PageBreakPickerPlugin(),\n PollPickerPlugin(),\n EmbedsPickerPlugin({ embed: \"figma\" }),\n EmbedsPickerPlugin({ embed: \"tweet\" }),\n EmbedsPickerPlugin({ embed: \"youtube-video\" }),\n EquationPickerPlugin(),\n ImagePickerPlugin(),\n CollapsiblePickerPlugin(),\n ColumnsLayoutPickerPlugin(),\n AlignmentPickerPlugin({ alignment: \"left\" }),\n AlignmentPickerPlugin({ alignment: \"center\" }),\n AlignmentPickerPlugin({ alignment: \"right\" }),\n AlignmentPickerPlugin({ alignment: \"justify\" }),\n ]}\n dynamicOptionsFn={DynamicTablePickerPlugin}\n />\n\n <ContextMenuPlugin />\n <DragDropPastePlugin />\n <EmojiPickerPlugin />\n\n <FloatingLinkEditorPlugin anchorElem={floatingAnchorElem} />\n <FloatingTextFormatToolbarPlugin anchorElem={floatingAnchorElem} />\n\n <ListMaxIndentLevelPlugin />\n </div>\n{/* <ActionsPlugin>\n <div className=\"clear-both flex items-center justify-between border-t p-1 overflow-auto gap-2\">\n <div className=\"flex justify-start flex-1\">\n <MaxLengthPlugin maxLength={maxLength} />\n <CharacterLimitPlugin maxLength={maxLength} charset=\"UTF-16\" />\n </div>\n <div>\n <CounterCharacterPlugin charset=\"UTF-16\" />\n </div>\n <div className=\"flex justify-end flex-1\">\n <SpeechToTextPlugin />\n <ShareContentPlugin />\n <ImportExportPlugin />\n <MarkdownTogglePlugin\n shouldPreserveNewLinesInMarkdown={true}\n transformers={[\n TABLE,\n HR,\n IMAGE,\n EMOJI,\n EQUATION,\n TWEET,\n CHECK_LIST,\n ...ELEMENT_TRANSFORMERS,\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n ]}\n />\n <EditModeTogglePlugin />\n <>\n <ClearEditorActionPlugin />\n <ClearEditorPlugin />\n </>\n <TreeViewPlugin />\n </div>\n </div>\n </ActionsPlugin> */}\n </div>\n );\n}\n","import { TextIcon } from \"lucide-react\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ParagraphPickerPlugin() {\n return new ComponentPickerOption('Paragraph', {\n icon: <TextIcon className=\"size-4\" />,\n keywords: ['normal', 'paragraph', 'p', 'text'],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n }),\n })\n}","import { ListTodoIcon } from \"lucide-react\";\nimport { INSERT_CHECK_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CheckListPickerPlugin() {\n return new ComponentPickerOption('Check List', {\n icon: <ListTodoIcon className=\"size-4\" />,\n keywords: ['check list', 'todo list'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined),\n })\n}","import { ListOrderedIcon } from \"lucide-react\";\nimport { INSERT_ORDERED_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function NumberedListPickerPlugin() {\n return new ComponentPickerOption('Numbered List', {\n icon: <ListOrderedIcon className=\"size-4\" />,\n keywords: ['numbered list', 'ordered list', 'ol'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined),\n })\n}","import { ListIcon } from \"lucide-react\";\n\nimport { INSERT_UNORDERED_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function BulletedListPickerPlugin() {\n return new ComponentPickerOption('Bulleted List', {\n icon: <ListIcon className=\"size-4\" />,\n keywords: ['bulleted list', 'unordered list', 'ul'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined),\n })\n}\n","import { QuoteIcon } from \"lucide-react\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createQuoteNode } from \"@lexical/rich-text\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function QuotePickerPlugin() {\n return new ComponentPickerOption('Quote', {\n icon: <QuoteIcon className=\"size-4\" />,\n keywords: ['block quote'],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createQuoteNode())\n }\n }),\n })\n }","import { $getSelection, $isRangeSelection } from \"lexical\"\nimport { CodeIcon } from \"lucide-react\"\n\nimport { $createCodeNode } from \"@lexical/code\"\nimport { $setBlocksType } from \"@lexical/selection\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CodePickerPlugin() {\n return new ComponentPickerOption('Code', {\n icon: <CodeIcon className=\"size-4\" />,\n keywords: ['javascript', 'python', 'js', 'codeblock'],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n\n if ($isRangeSelection(selection)) {\n if (selection.isCollapsed()) {\n $setBlocksType(selection, () => $createCodeNode())\n } else {\n // Will this ever happen?\n const textContent = selection.getTextContent()\n const codeNode = $createCodeNode()\n selection.insertNodes([codeNode])\n selection.insertRawText(textContent)\n }\n }\n }),\n })\n}","import { MinusIcon } from \"lucide-react\";\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from \"@lexical/react/LexicalHorizontalRuleNode\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function DividerPickerPlugin() {\n return new ComponentPickerOption('Divider', {\n icon: <MinusIcon className=\"size-4\" />,\n keywords: ['horizontal rule', 'divider', 'hr'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined),\n })\n}","import { ScissorsIcon } from \"lucide-react\";\n\nimport { INSERT_PAGE_BREAK } from \"@/components/editor/plugins/page-break-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function PageBreakPickerPlugin() {\n return new ComponentPickerOption('Page Break', {\n icon: <ScissorsIcon className=\"size-4\" />,\n keywords: ['page break', 'divider'],\n onSelect: (_, editor) => editor.dispatchCommand(INSERT_PAGE_BREAK, undefined),\n })\n}","import { ListChecksIcon } from \"lucide-react\";\n\nimport { InsertPollDialog } from \"@/components/editor/plugins/poll-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function PollPickerPlugin() {\n\n return new ComponentPickerOption('Poll', {\n icon: <ListChecksIcon className=\"size-4\" />,\n keywords: ['poll', 'vote'],\n onSelect: (_, editor, showModal) =>\n showModal('Insert Poll', (onClose) => (\n <InsertPollDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}","import { DiffIcon } from \"lucide-react\";\n\nimport { InsertEquationDialog } from \"@/components/editor/plugins/equations-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function EquationPickerPlugin() {\n\n return new ComponentPickerOption('Equation', {\n icon: <DiffIcon className=\"size-4\" />,\n keywords: ['equation', 'latex', 'math'],\n onSelect: (_, editor, showModal) =>\n showModal('Insert Equation', (onClose) => (\n <InsertEquationDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}","import { ImageIcon } from \"lucide-react\";\n\nimport { InsertImageDialog } from \"@/components/editor/plugins/images-plugin\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ImagePickerPlugin() {\n\n return new ComponentPickerOption('Image', {\n icon: <ImageIcon className=\"size-4\" />,\n keywords: ['image', 'photo', 'picture', 'file'],\n onSelect: (_, editor, showModal) =>\n showModal('Insert Image', (onClose) => (\n <InsertImageDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}","import { ListCollapseIcon } from \"lucide-react\";\n\nimport { INSERT_COLLAPSIBLE_COMMAND } from \"@/components/editor/plugins/collapsible-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CollapsiblePickerPlugin() {\n return new ComponentPickerOption('Collapsible', {\n icon: <ListCollapseIcon className=\"size-4\" />,\n keywords: ['collapse', 'collapsible', 'toggle'],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_COLLAPSIBLE_COMMAND, undefined),\n })\n}","import { Columns3Icon } from \"lucide-react\";\n\nimport { InsertLayoutDialog } from \"@/components/editor/plugins/layout-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ColumnsLayoutPickerPlugin() {\n\n return new ComponentPickerOption('Columns Layout', {\n icon: <Columns3Icon className=\"size-4\" />,\n keywords: ['columns', 'layout', 'grid'],\n onSelect: (_, editor, showModal) =>\n showModal('Insert Columns Layout', (onClose) => (\n <InsertLayoutDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}","import {\n InitialConfigType,\n LexicalComposer,\n} from \"@lexical/react/LexicalComposer\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { EditorState, SerializedEditorState } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\n// Dynamic import of r2wc for web component creation\n\nimport { FloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { SharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport { editorTheme } from \"@/components/editor/themes/editor-theme\";\nimport { TooltipProvider } from \"@/components/ui/tooltip\";\n\nimport { nodes } from \"./nodes\";\nimport { Plugins } from \"./plugins\";\n\nexport interface EditorProps {\n editorState?: EditorState;\n editorSerializedState?: SerializedEditorState;\n onChange?: (editorState: EditorState) => void;\n onSerializedChange?: (editorSerializedState: SerializedEditorState) => void;\n onHtmlChange?: (html: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nconst editorConfig: InitialConfigType = {\n namespace: \"Editor\",\n theme: editorTheme,\n nodes,\n onError: (error: Error) => {\n console.error(error);\n },\n};\n\nfunction Editor({\n editorState,\n editorSerializedState,\n onChange,\n onSerializedChange,\n onHtmlChange,\n placeholder,\n className,\n}: EditorProps) {\n return (\n <div className=\"overflow-hidden rounded-lg border border-border-system-global-secondary bg-background-system-body-primary shadow w-full h-full max-w-full\">\n <LexicalComposer\n initialConfig={{\n ...editorConfig,\n ...(editorState ? { editorState } : {}),\n ...(editorSerializedState\n ? { editorState: JSON.stringify(editorSerializedState) }\n : {}),\n }}\n >\n <TooltipProvider>\n <SharedAutocompleteContext>\n <FloatingLinkContext>\n <Plugins />\n {onHtmlChange ? (\n <HtmlChangePlugin onChange={onHtmlChange} />\n ) : null}\n <OnChangePlugin\n ignoreSelectionChange={true}\n onChange={(editorState) => {\n onChange?.(editorState);\n onSerializedChange?.(editorState.toJSON());\n }}\n />\n </FloatingLinkContext>\n </SharedAutocompleteContext>\n </TooltipProvider>\n </LexicalComposer>\n </div>\n );\n}\n\nfunction HtmlChangePlugin({ onChange }: { onChange: (html: string) => void }) {\n const [editor] = useLexicalComposerContext();\n\n editor.registerUpdateListener(() => {\n editor.update(() => {\n const html = $generateHtmlFromNodes(editor);\n onChange(html);\n });\n });\n\n return null;\n}\n\n// Create web component from React component (browser only)\nlet EditorWebComponent: any = null;\n\n// Async function to create web component\nasync function createWebComponent() {\n if (typeof window !== 'undefined' && typeof customElements !== 'undefined') {\n try {\n const r2wc = await import(\"@r2wc/react-to-web-component\");\n const r2wcFunction = r2wc.default || r2wc;\n \n EditorWebComponent = r2wcFunction(Editor, {\n props: {\n editorState: \"json\",\n editorSerializedState: \"json\",\n onChange: \"function\",\n onSerializedChange: \"function\",\n onHtmlChange: \"function\",\n },\n });\n\n // Register the web component only if not already defined\n if (!customElements.get(\"react-editor\")) {\n customElements.define(\"react-editor\", EditorWebComponent);\n }\n } catch (error) {\n console.warn(\"Failed to create web component:\", error);\n }\n }\n}\n\n// Initialize web component when in browser environment\nif (typeof window !== 'undefined') {\n createWebComponent();\n}\n\n// Export both the React component and the web component\nexport { Editor, EditorWebComponent };\n","import { EditorThemeClasses } from 'lexical'\n\nexport const editorTheme: EditorThemeClasses = {\n ltr: 'text-left',\n rtl: 'text-right',\n heading: {\n h1: 'scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl',\n h2: 'scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0',\n h3: 'scroll-m-20 text-2xl font-semibold tracking-tight',\n h4: 'scroll-m-20 text-xl font-semibold tracking-tight',\n h5: 'scroll-m-20 text-lg font-semibold tracking-tight',\n h6: 'scroll-m-20 text-base font-semibold tracking-tight',\n },\n paragraph: 'leading-7 [&:not(:first-child)]:mt-6',\n quote: 'mt-6 border-l-2 pl-6 italic',\n link: 'text-content-presentation-action-link-primary hover:underline hover:cursor-pointer',\n list: {\n checklist: 'relative',\n listitem: 'mx-8',\n listitemChecked:\n 'relative mx-2 px-6 list-none outline-none line-through before:content-[\"\"] before:w-4 before:h-4 before:top-0.5 before:left-0 before:cursor-pointer before:block before:bg-cover before:absolute before:border before:border-border-presentation-action-primary before:rounded before:bg-background-presentation-action-primary before:bg-no-repeat after:content-[\"\"] after:cursor-pointer after:border-white after:border-solid after:absolute after:block after:top-[6px] after:w-[3px] after:left-[7px] after:right-[7px] after:h-[6px] after:rotate-45 after:border-r-2 after:border-b-2 after:border-l-0 after:border-t-0',\n listitemUnchecked:\n 'relative mx-2 px-6 list-none outline-none before:content-[\"\"] before:w-4 before:h-4 before:top-0.5 before:left-0 before:cursor-pointer before:block before:bg-cover before:absolute before:border before:border-border-presentation-action-primary before:rounded',\n nested: {\n listitem: 'list-none before:hidden after:hidden',\n },\n ol: 'my-6 ml-6 list-decimal [&>li]:mt-2',\n olDepth: [\n 'list-outside !list-decimal',\n 'list-outside !list-[upper-roman]',\n 'list-outside !list-[lower-roman]',\n 'list-outside !list-[upper-alpha]',\n 'list-outside !list-[lower-alpha]',\n ],\n ul: 'm-0 p-0 list-outside',\n },\n hashtag: 'text-content-presentation-badge-blue bg-background-presentation-badge-blue rounded-md px-1',\n text: {\n bold: 'font-bold',\n code: 'bg-background-presentation-form-base p-1 rounded-md',\n italic: 'italic',\n strikethrough: 'line-through',\n subscript: 'sub',\n superscript: 'sup',\n underline: 'underline',\n underlineStrikethrough: 'underline line-through',\n },\n image: 'relative inline-block user-select-none cursor-default editor-image',\n inlineImage:\n 'relative inline-block user-select-none cursor-default inline-editor-image',\n keyword: 'text-content-presentation-badge-purple font-bold',\n code: 'font-mono text-sm block p-2 my-2 overflow-x-auto border border-border-system-global-secondary rounded-lg tab-size-2 relative',\n codeHighlight: {\n atrule: 'text-content-presentation-badge-purple',\n attr: 'text-content-presentation-badge-purple',\n boolean: 'text-content-presentation-badge-red',\n builtin: 'text-content-presentation-badge-green',\n cdata: 'text-content-system-global-secondary',\n char: 'text-content-presentation-badge-green',\n class: 'text-content-presentation-badge-rose',\n 'class-name': 'text-content-presentation-badge-rose',\n comment: 'text-content-system-global-secondary',\n constant: 'text-content-presentation-badge-red',\n deleted: 'text-content-presentation-badge-red',\n doctype: 'text-content-system-global-secondary',\n entity: 'text-content-presentation-badge-orange',\n function: 'text-content-presentation-badge-rose',\n important: 'text-content-presentation-badge-yellow',\n inserted: 'text-content-presentation-badge-green',\n keyword: 'text-content-presentation-badge-purple',\n namespace: 'text-content-presentation-badge-yellow',\n number: 'text-content-presentation-badge-red',\n operator: 'text-content-presentation-badge-orange',\n prolog: 'text-content-system-global-secondary',\n property: 'text-content-presentation-badge-red',\n punctuation: 'text-content-system-global-secondary/70',\n regex: 'text-content-presentation-badge-yellow',\n selector: 'text-content-presentation-badge-green',\n string: 'text-content-presentation-badge-green',\n symbol: 'text-content-presentation-badge-red',\n tag: 'text-content-presentation-badge-red',\n url: 'text-content-presentation-badge-orange',\n variable: 'text-content-presentation-badge-yellow',\n },\n characterLimit: '!bg-background-presentation-state-negative-primary/50',\n table: 'EditorTheme__table w-fit overflow-scroll border-collapse',\n tableCell:\n 'EditorTheme__tableCell w-24 relative border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right',\n tableCellActionButton:\n 'EditorTheme__tableCellActionButton bg-background-system-body-primary block border-0 rounded-2xl w-5 h-5 text-content-system-global-primary cursor-pointer',\n tableCellActionButtonContainer:\n 'EditorTheme__tableCellActionButtonContainer block right-1 top-1.5 absolute z-10 w-5 h-5',\n tableCellEditing: 'EditorTheme__tableCellEditing rounded-sm shadow-sm',\n tableCellHeader:\n 'EditorTheme__tableCellHeader bg-background-system-body-secondary border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right',\n tableCellPrimarySelected:\n 'EditorTheme__tableCellPrimarySelected border border-border-presentation-action-primary border-solid block h-[calc(100%-2px)] w-[calc(100%-2px)] absolute -left-[1px] -top-[1px] z-10 ',\n tableCellResizer:\n 'EditorTheme__tableCellResizer absolute -right-1 h-full w-2 cursor-ew-resize z-10 top-0',\n tableCellSelected: 'EditorTheme__tableCellSelected bg-background-system-body-secondary',\n tableCellSortedIndicator:\n 'EditorTheme__tableCellSortedIndicator block opacity-50 absolute bottom-0 left-0 w-full h-1 bg-background-system-body-secondary',\n tableResizeRuler:\n 'EditorTheme__tableCellResizeRuler block absolute w-[1px] h-full bg-background-presentation-action-primary top-0',\n tableRowStriping:\n 'EditorTheme__tableRowStriping m-0 border-t p-0 even:bg-background-system-body-secondary',\n tableSelected: 'EditorTheme__tableSelected ring-2 ring-border-presentation-state-focus ring-offset-2',\n tableSelection: 'EditorTheme__tableSelection bg-transparent',\n layoutItem: 'border border-dashed px-4 py-2',\n layoutContainer: 'grid gap-2.5 my-2.5 mx-0',\n autocomplete: 'text-content-system-global-secondary',\n blockCursor: '',\n embedBlock: {\n base: 'user-select-none',\n focus: 'ring-2 ring-border-presentation-state-focus ring-offset-2',\n },\n hr: 'p-0.5 border-none my-1 mx-0 cursor-pointer after:content-[\"\"] after:block after:h-0.5 after:bg-background-system-body-secondary selected:ring-2 selected:ring-border-presentation-state-focus selected:ring-offset-2 selected:user-select-none',\n indent: '[--lexical-indent-base-value:40px]',\n mark: '',\n markOverlap: '',\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Editor, EditorProps } from \"./editor\";\n\n/**\n * Client-only wrapper for the Editor component to prevent SSR issues\n * Use this component in Next.js applications to avoid HTMLElement errors\n */\nexport function EditorClient(props: EditorProps) {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n // Return null during SSR to prevent hydration mismatch\n if (!isClient) {\n return null;\n }\n\n return <Editor {...props} />;\n}\n\nexport type { EditorProps } from \"./editor\";"],"names":["r","n","createContext","t","e","getTheme","o","URL","URLSearchParams","append","search","toString","Error","s","window","document","createElement","m","a","c","u","tag","p","initialConfig","children","l","theme","namespace","nodes","onError","d","editorState","html","f","E","createEditor","editable","update","$getRoot","isEmpty","i","activeElement","$getSelection","getRootElement","select","parseEditorState","setEditorState","setEditable","jsx","Provider","value","useEffect","ignoreHistoryMergeTagChange","ignoreSelectionChange","onChange","registerUpdateListener","dirtyElements","dirtyLeaves","prevEditorState","tags","size","has","Context","isLinkEditMode","setIsLinkEditMode","FloatingLinkContext","useState","useFloatingLinkContext","useContext","_cb","_newSuggestion","SharedAutocompleteContext","context","useMemo","suggestion","listeners","Set","cb","add","delete","newSuggestion","listener","Array","from","useSharedAutocompleteContext","subscribe","publish","setSuggestion","cn","inputs","twMerge","clsx","TooltipProvider","delayDuration","props","jsxRuntime","TooltipPrimitive","getEditorState","read","$getNodeByKey","isSelected","$setSelection","useCallback","$isNodeSelection","clear","nodeKey","registerCommand","CLICK_COMMAND","getElementByKey","target","shiftKey","_config","hrSelected","addClassNamesToElement","f$3","getType","clone","__key","importJSON","y","updateFromJSON","importDOM","hr","conversion","x","priority","exportDOM","element","createDOM","getTextContent","isInline","updateDOM","decorate","this","node","h","elements","WeakMap","readTouch","touch","changedTouches","clientX","clientY","addListener","elementValues","get","handleTouchstart","start","handleTouchend","end","addEventListener","set","removeEventListener","deleteListener","uuid","Math","random","replace","substr","$search","selection","$isRangeSelection","isCollapsed","getNodes","anchor","$isTextNode","isSimpleText","$isAtNodeEnd","word","text","getTextContentSize","push","length","reverse","join","AutocompletePlugin","editor","useLexicalComposerContext","query","searchText","server","AutocompleteServer","console","time","response","timeEnd","autocompleteNodeKey","lastMatch","lastSuggestion","searchPromise","$clearSuggestion","autocompleteNode","isAttached","remove","dismiss","$handleAutocompleteIntent","textNode","$createTextNode","selectNext","$handleKeypressCommand","preventDefault","rootElem","mergeRegister","registerNodeTransform","AutocompleteNode","key","getKey","__uuid","hasMatch","match","promise","then","refSearchPromise","selectionCopy","$createAutocompleteNode","insertNodes","updateAsyncSuggestion","catch","KEY_TAB_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_RIGHT_COMMAND","_force","force","abs","constructor","__publicField","DICTIONARY","isDismissed","Promise","resolve","reject","setTimeout","searchTextLength","char0","charCodeAt","isCapitalized","caseInsensitiveSearchText","String","fromCharCode","substring","DATABASE","find","dictionaryWord","startsWith","autocompleteChunk","LATENCY","DecoratorNode","super","serializedNode","exportJSON","type","version","prevNode","dom","config","UUID","AutocompleteComponent","className","autocomplete","userAgentData","navigator","isMobile","mobile","innerWidth","innerHeight","jsxs","spellCheck","CAN_USE_DOM","documentMode","InputEvent","IS_CHROME","test","userAgent","invariant","cond","message","setDomHiddenUntilFound","hidden","$convertDetailsElement","domNode","$createCollapsibleContainerNode","open","CollapsibleContainerNode","ElementNode","__open","setAttribute","detailsDom","getOpen","toggleOpen","currentOpen","contentDom","isHTMLElement","removeAttribute","details","setOpen","getWritable","getLatest","isOpen","$isCollapsibleContainerNode","$convertCollapsibleContentElement","$createCollapsibleContentNode","CollapsibleContentNode","classList","containerNode","getParentOrThrow","callback","onbeforematch","domOnBeforeMatch","div","hasAttribute","isShadowRoot","$isCollapsibleContentNode","$convertSummaryElement","$createCollapsibleTitleNode","CollapsibleTitleNode","collapsibleContainer","summary","collapseAtStart","_selection","insertBefore","transform","$isCollapsibleTitleNode","insertNewAfter","_","restoreSelection","contentNode","getNextSibling","firstChild","getFirstChild","$isElementNode","paragraph","$createParagraphNode","insertAfter","__format","format","setFormat","canIndent","g","N","C","v","F","L","FORMAT_ELEMENT_COMMAND","current","base","focus","filter","Boolean","ref","style","textAlign","FigmaComponent","documentID","BlockWithAlignableContents","width","height","src","allowFullScreen","FigmaNode","DecoratorBlockNode","id","__id","$createFigmaNode","getId","_includeInert","_includeDirectionless","_editor","embedBlockTheme","embedBlock","$convertTweetElement","getAttribute","$createTweetNode","isTwitterScriptLoading","TweetComponent","loadingComponent","onLoad","tweetID","containerRef","useRef","previousTweetIDRef","isTweetLoading","setIsTweetLoading","createTweet","async","twttr","widgets","error","script","body","appendChild","onload","onerror","display","TweetNode","createTextNode","YouTubeComponent","videoID","frameBorder","allow","title","$convertYoutubeElement","$createYouTubeNode","YouTubeNode","iframe","EmojiNode","TextNode","__className","__text","inner","$createEmojiNode","setDetail","detail","setMode","mode","setStyle","getClassName","emojiText","$applyNodeReplacement","EquationComponent","React","lazy","$convertEquationElement","equation","inline","atob","$createEquationNode","EquationNode","__equation","__inline","getEquation","btoa","katex","render","displayMode","errorColor","output","strict","throwOnError","trust","span","setEquation","Suspense","fallback","equationNode","$isEquationNode","ExcalidrawComponent","$convertExcalidrawElement","excalidrawData","styleAttributes","getComputedStyle","heightStr","getPropertyValue","widthStr","parseInt","$createExcalidrawNode","ExcalidrawNode","data","__data","__width","__height","image","content","svg","querySelector","innerHTML","outerHTML","setData","getWidth","setWidth","getHeight","setHeight","ImageComponent","require","$convertImageElement","img","parentElement","tagName","previousSibling","isGoogleDocCheckboxImg","alt","altText","$createImageNode","ImageNode","maxWidth","showCaption","caption","captionsEnabled","__src","__altText","__maxWidth","__showCaption","__caption","__captionsEnabled","nestedEditor","getAltText","toJSON","getSrc","setWidthAndHeight","writable","setShowCaption","resizable","$isImageNode","InlineImageComponent","$convertInlineImageElement","HTMLImageElement","$createInlineImageNode","InlineImageNode","position","__position","setAltText","getShowCaption","getPosition","setPosition","payload","getPositionClassName","inlineImage","$isInlineImageNode","KeywordNode","$createKeywordNode","cursor","canInsertTextBefore","canInsertTextAfter","isTextEntity","keyword","$convertLayoutContainerElement","templateColumns","$createLayoutContainerNode","LayoutContainerNode","__templateColumns","gridTemplateColumns","layoutContainer","json","canBeEmpty","getTemplateColumns","setTemplateColumns","$isLayoutContainerNode","LayoutItemNode","layoutItem","$createLayoutItemNode","$isLayoutItemNode","$convertMentionElement","textContent","$createMentionNode","MentionNode","mentionName","__mention","setTextContent","cssText","mentionNode","toggleDirectionless","PageBreakComponent","setSelected","clearSelection","useLexicalNodeSelection","$onDelete","event","deleteSelection","forEach","PageBreakNode","$isPageBreakNode","pbElem","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","$createPageBreakNode","figure","$convertPageBreakElement","COMMAND_PRIORITY_HIGH","el","pageBreakAfter","PollComponent","createPollOption","uid","votes","cloneOption","option","$convertPollElement","question","options","$createPollNode","JSON","parse","PollNode","__question","__options","addOption","self","deleteOption","index","indexOf","splice","setOptionText","clonedOption","toggleVote","clientID","votesClone","voteIndex","stringify","elem","HeadingNode","ParagraphNode","QuoteNode","ListNode","ListItemNode","LinkNode","OverflowNode","HashtagNode","TableNode","TableCellNode","TableRowNode","CodeNode","CodeHighlightNode","HorizontalRuleNode","AutoLinkNode","defaultSelection","contains","preventScroll","registerCheckList","newTab","disabled","sanitizeUrl","getURL","getTarget","parentNode","isHTMLAnchorElement","href","button","metaKey","ctrlKey","registerRootListener","Object","setPrototypeOf","bind","__proto__","arguments","call","apply","concat","state","resetErrorBoundary","onReset","reset","prototype","create","getDerivedStateFromError","setState","componentDidCatch","componentDidUpdate","resetKeys","some","is","onResetKeysChange","fallbackRender","FallbackComponent","isValidElement","Component","border","color","padding","registerLexicalTextEntity","RegExp","alpha","alphanumeric","hashChars","hasNodes","$createHashtagNode","exec","k","Date","now","_nodeMap","$isRootNode","offset","__mode","M","z","isComposing","S","__parent","undoStack","redoStack","delay","externalHistoryState","pop","dispatchCommand","COMMAND_PRIORITY_EDITOR","CLEAR_EDITOR_COMMAND","CAN_REDO_COMMAND","getNode","hasStrictIndent","dependencies","export","regExp","transformers","registerMarkdownShortcuts","useLayoutEffect","initialValueFn","isEditable","registerEditableListener","contentEditable","placeholder","ErrorBoundary","getDecorators","registerDecoratorListener","keys","_onError","createPortal","registerRichText","location","origin","protocol","functionId","args","setTextNodeRange","insertRawText","stopImmediatePropagation","w","maxIndent","isBefore","$normalizeSelection__EXPERIMENTAL","INDENT_CONTENT_COMMAND","map","$getNearestBlockElementAncestorOrThrow","getIndent","max","COMMAND_PRIORITY_CRITICAL","hasCellMerge","hasCellBackgroundColor","hasTabHandler","hasHorizontalScroll","getBackgroundColor","setBackgroundColor","Separator","forwardRef","orientation","decorative","SeparatorPrimitive","Root","displayName","activeEditor","$updateToolbar","blockType","setBlockType","showModal","ToolbarContext","useToolbarContext","useUpdateToolbarHandler","SELECTION_CHANGE_COMMAND","blockTypeToBlockName","label","icon","TextIcon","h1","Heading1Icon","h2","Heading2Icon","h3","Heading3Icon","number","ListOrderedIcon","bullet","ListIcon","check","ListTodoIcon","code","CodeIcon","quote","QuoteIcon","Button","is_loading","variant","asChild","as","Tag","buttonType","containerClassName","Slot","buttonVariants","cloneElement","LoadingIcon","iconVariants","cva","variants","XL","defaultVariants","viewBox","fill","xmlns","PrimeStyle","BlueSecStyle","YelSecStyle","RedSecStyle","BorderStyle","PrimeContStyle","BlueContStyle","RedContStyle","true","compoundVariants","ToolTipRoot","TooltipTrigger","Trigger","TooltipContent","sideOffset","Portal","Content","TooltipArrow","Arrow","tooltipStyles","primary","highlight","Tooltip","onOpenChange","toolTipSide","contentAlign","avoidCollisions","tip","side","align","Select","SelectPrimitive","SelectGroup","Group","SelectValue","Value","SelectTrigger","errors","PopoverTriggerStyles","ScrollUpButton","ScrollDownButton","SelectContent","SelectContentStyles","Viewport","Label","SelectItem","active","Item","SelectItemStyles","ItemText","SystemStyle","PresentationStyle","Default","Warning","Negative","BlockFormatDropDown","anchorNode","$findMatchingParent","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","elementKey","$isListNode","parentList","$getNearestNodeOfType","getListType","$isHeadingNode","getTag","onValueChange","BLOCK_FORMAT_VALUE","FormatBulletedList","onPointerDown","INSERT_UNORDERED_LIST_COMMAND","$setBlocksType","FormatCheckList","INSERT_CHECK_LIST_COMMAND","FormatCodeBlock","$createCodeNode","codeNode","selection$1","FormatHeading","levels","level","headingSize","$createHeadingNode","FormatNumberedList","INSERT_ORDERED_LIST_COMMAND","FormatParagraph","FormatQuote","$createQuoteNode","Dialog","DialogPrimitive","DialogPortal","DialogClose","Close","DialogOverlay","Overlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","Title","useEditorModal","modalContent","setModalContent","onClose","getContent","closeOnClickOutside","BlockInsertPlugin","modal","Fragment","PlusIcon","Description","INSERT_COLLAPSIBLE_COMMAND","createCommand","CollapsiblePlugin","$onEscapeUp","container","getFirstDescendant","$onEscapeDown","getLastChild","titleParagraph","contentParagraph","getLastDescendant","getChildren","child","DELETE_CHARACTER_COMMAND","topLevelElement","getTopLevelElement","getPreviousSibling","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ARROW_LEFT_COMMAND","INSERT_PARAGRAPH_COMMAND","titleNode","selectEnd","utils","$insertNodeToNearestRoot","InsertCollapsibleContainer","onPointerUp","ChevronRightIcon","Icon","ChevronDownIcon","SelectScrollUpButton","SelectScrollDownButton","ItemIndicator","CheckIcon","ChevronUpIcon","LAYOUTS","InsertLayoutDialog","layout","setLayout","buttonLabel","item","defaultValue","onClick","INSERT_LAYOUT_COMMAND","UPDATE_LAYOUT_COMMAND","LayoutPlugin","$onEscape","before","descendant","template","itemsCount","getItemsCountFromTemplate","selectStart","prevItemsCount","getChildAtIndex","every","trim","split","InsertColumnsLayout","Columns3Icon","b","setRefElement","R","getElementById","getBoundingClientRect","top","scrollIntoView","block","I","bottom","A","close","anchorElementRef","resolution","menuRenderFn","onSelectOption","shouldSplitNodeWithQuery","commandPriority","preselectFirstItem","O","matchingString","P","slice","replaceableString","splitText","T","KEY_ENTER_COMMAND","selectOptionAndCleanUp","selectedIndex","setHighlightedIndex","onOpen","anchorClassName","left","getRect","offsetHeight","pageYOffset","pageXOffset","right","isConnected","overflow","overflowY","overflowX","requestAnimationFrame","ResizeObserver","capture","passive","observe","unobserve","onSelect","embedConfigs","onOpenEmbedModalForConfig","getMenuOptions","menuCommandPriority","parseUrl","registerMutationListener","updateTags","skipInitialization","__url","insertNode","Command","CommandPrimitive","CommandList","List","CommandGroup","CommandSeparator","CommandItem","Input","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","INSERT_FIGMA_COMMAND","FigmaPlugin","figmaNode","INSERT_TWEET_COMMAND","TwitterPlugin","tweetNode","INSERT_YOUTUBE_COMMAND","YouTubePlugin","youTubeNode","YoutubeEmbedConfig","contentName","exampleUrl","YoutubeIcon","result","keywords","url","EmbedConfigs","TwitterIcon","FigmaIcon","AutoEmbedDialog","embedConfig","setText","embedResult","setEmbedResult","validateText","timeoutId","clearTimeout","debounce","inputText","urlMatch","URL_MATCHER","parseResult","AutoEmbedPlugin","LexicalAutoEmbedPlugin","activeEmbedConfig","embedFn","dismissFn","AutoEmbedOption","PopoverPortal","InsertEmbeds","INSERT_EMBED_COMMAND","InsertHorizontalRule","INSERT_HORIZONTAL_RULE_COMMAND","ScissorsIcon","LabelPrimitive","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","INSERT_IMAGE_COMMAND","InsertImageUriDialogBody","setSrc","isDisabled","htmlFor","InsertImageUploadedDialogBody","files","reader","FileReader","readAsDataURL","loadImage","accept","InsertImageDialog","hasModifier","handler","altKey","ImagesPlugin","imageNode","lexical","$insertNodes","$wrapNodeInElement","DRAGSTART_COMMAND","$getImageNodeInSelection","dataTransfer","TRANSPARENT_IMAGE","setDragImage","$onDragStart","DRAGOVER_COMMAND","canDropImage","$onDragover","DROP_COMMAND","dragData","getData","getDragImageData","range","targetWindow","nodeType","defaultView","ownerDocument","domSelection","getSelection","getDOMSelection","caretRangeFromPoint","rangeParent","collapse","rangeOffset","getRangeAt","getDragSelection","rangeSelection","$createRangeSelection","applyDOMRange","$onDrop","HTMLElement","closest","InsertImage","ImageIcon","Checkbox","CheckboxPrimitive","Indicator","INSERT_INLINE_IMAGE_COMMAND","InsertInlineImageDialog","checked","onCheckedChange","handleOnClick","InlineImagePlugin","InsertInlineImage","FileImageIcon","INSERT_PAGE_BREAK","PageBreakPlugin","pgBreak","InsertPageBreak","SquareSplitVerticalIcon","INSERT_POLL_COMMAND","InsertPollDialog","setQuestion","PollPlugin","pollNode","InsertPoll","ListChecksIcon","InsertTableDialog","rows","setRows","columns","setColumns","setIsDisabled","row","Number","column","INSERT_TABLE_COMMAND","InsertTable","TableIcon","ClearFormattingToolbarPlugin","clearFormatting","$isTableSelection","extractedNodes","extract","idx","extractedTextNode","__style","$isQuoteNode","$isDecoratorBlockNode","cellEditorConfig","cellEditorPlugins","CODE_LANGUAGE_OPTIONS","lang","friendlyName","entries","CODE_LANGUAGE_FRIENDLY_NAME_MAP","getCodeLanguageOptions","CodeLanguageToolbarPlugin","codeLanguage","setCodeLanguage","selectedElementKey","setSelectedElementKey","$isCodeNode","language","getLanguage","CODE_LANGUAGE_MAP","onCodeLanguageSelect","setLanguage","getLanguageFriendlyName","toggleVariants","default","outline","sm","lg","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","getSelectedNode","focusNode","isBackward","ELEMENT_FORMAT_OPTIONS","iconRTL","name","center","justify","ElementFormatToolbarPlugin","elementFormat","setElementFormat","matchingParent","$isLinkNode","getFormatType","OUTDENT_CONTENT_COMMAND","ColorPicker","stopCloseOnClickSelf","rest","HexColorPicker","maxLength","stopPropagation","currentTarget","FontBackgroundToolbarPlugin","bgColor","setBgColor","$getSelectionStyleValueForProperty","applyStyleText","styles","skipHistoryStack","$patchStyleText","onBgColorSelect","PaintBucketIcon","FontColorToolbarPlugin","fontColor","setFontColor","onFontColorSelect","FONT_FAMILY_OPTIONS","FontFamilyToolbarPlugin","fontFamily","setFontFamily","handleClick","TypeIcon","iconClasses","bold","italic","underline","strikethrough","FontFormatToolbarPlugin","setIsSelected","hasFormat","iconClass","FORMAT_TEXT_COMMAND","FontSizeToolbarPlugin","fontSize","setFontSize","updateFontSize","newSize","min","HistoryToolbarPlugin","setIsEditable","canUndo","setCanUndo","canRedo","setCanRedo","CAN_UNDO_COMMAND","UNDO_COMMAND","REDO_COMMAND","SUPPORTED_URL_PROTOCOLS","parsedUrl","urlRegExp","validateUrl","LinkToolbarPlugin","isLink","setIsLink","KEY_MODIFIER_COMMAND","TOGGLE_LINK_COMMAND","COMMAND_PRIORITY_NORMAL","insertLink","SubSuperToolbarPlugin","isSubscript","setIsSubscript","isSuperscript","setIsSuperscript","U","$isLineBreakNode","shift","D","attributes","getFormat","getDetail","getStyle","setURL","getRel","rel","setRel","setTarget","matchers","getIsUnlinked","isEmailURI","$isAutoLinkNode","setIsUnlinked","markDirty","MATCHERS","createLinkMatcherWithRegExp","AutoLinkPlugin","LexicalAutoLinkPlugin","useDebounce","fn","ms","maxWait","funcRef","CopyButton","getCodeDOMNode","isCopyCompleted","setCopyCompleted","removeSuccessIcon","codeDOMNode","$getNearestNodeFromDOMNode","clipboard","writeText","err","CircleCheckIcon","CopyIcon","CodeActionMenuContainer","anchorElem","setLang","isShown","setShown","shouldListenMouseMove","setShouldListenMouseMove","codeSetRef","codeDOMNodeRef","debouncedOnMouseMove","isOutside","getMouseInfo","_lang","maybeCodeNode","editorElemY","editorElemRight","cancel","mutations","codeFriendlyName","CodeActionMenuPlugin","CodeHighlightPlugin","registerCodeHighlighting","R$2","KEY_ESCAPE_COMMAND","minLength","leadOffset","LexicalTypeaheadMenuPlugin","ComponentPickerMenuPlugin","baseOptions","dynamicOptionsFn","queryString","setQueryString","checkForTriggerMatch","useBasicTypeaheadTriggerMatch","regex","selectedOption","nodeToRemove","closeMenu","onQueryChange","triggerFn","onKeyDown","LexicalContextMenuPlugin","ContextMenuOption","MenuOption","ContextMenuPlugin","setIsOpen","defaultOptions","_node","COPY_COMMAND","CUT_COMMAND","DataTransfer","permissions","alert","types","dataString","ClipboardEvent","clipboardData","PASTE_COMMAND","items","readText","ancestorNodeWithRootAsParent","getParents","at","setOptions","targetNode","onWillOpen","newOptions","_options","setMenuRef","marginLeft","userSelect","ACCEPTABLE_IMAGE_TYPES","DragDropPastePlugin","DRAG_DROP_PASTE","filesResult","mediaFileReader","flatMap","file","isMimeType","b$1","_x","_y","equals","calcDeltaXTo","calcDeltaYTo","calcHorizontalDistanceTo","calcVerticalDistance","calcDistanceTo","sqrt","pow","B","_top","_right","_left","_bottom","reason","isOnBottomSide","isOnLeftSide","isOnRightSide","isOnTopSide","intersectsWith","generateNewRect","fromLTRB","fromLWTH","fromPoints","fromDOM","parseFloat","marginTop","marginBottom","previousElementSibling","nextElementSibling","getChildrenKeys","floor","K","Y","H","$","opacity","lineHeight","isNaN","pageY","draggable","onDragStart","onDragEnd","menuRef","targetLineRef","menuComponent","targetLineComponent","isOnMenu","onElementChanged","_editable","DraggableBlockPlugin","DraggableBlockPlugin_EXPERIMENTAL","execCommand","Plus","GripVerticalIcon","EmojiOption","emoji","EmojiPickerPlugin","emojis","setEmojis","emojiOptions","aliases","Map","$findAndTransformEmoji","emojiData","emojiStyle","emojiNode","$textNodeTransform","EmojisPlugin","useEmojis","destructive","secondary","ghost","link","Comp","Textarea","KatexRenderer","onDoubleClick","katexElementRef","katexElement","role","tabIndex","KatexEquationAlterer","onConfirm","initialEquation","setInline","onCheckboxChange","INSERT_EQUATION_COMMAND","InsertEquationDialog","onEquationConfirm","EquationsPlugin","Excalidraw","ExcalidrawModal","onSave","initialElements","initialAppState","initialFiles","onDelete","excaliDrawModelRef","excalidrawAPI","excalidrawAPIRefCallback","refValue","setRefValue","useCallbackRefState","discardModalOpen","setDiscardModalOpen","setElements","setFiles","modalOverlayElement","clickOutsideHandler","currentModalRef","ShowDiscardDialog","DialogTrigger","els","fls","initialData","appState","isLoading","isDeleted","getAppState","exportBackground","exportScale","exportWithDarkMode","isBindingEnabled","viewBackgroundColor","viewModeEnabled","zenModeEnabled","zoom","INSERT_EXCALIDRAW_COMMAND","ExcalidrawPlugin","isModalOpen","setModalOpen","excalidrawNode","setFloatingElemPositionForLinkEditor","targetRect","floatingElem","verticalGap","horizontalOffset","scrollerElem","floatingElemRect","anchorElementRect","editorScrollerRect","FloatingLinkEditor","editorRef","inputRef","linkUrl","setLinkUrl","editedLinkUrl","setEditedLinkUrl","lastSelection","setLastSelection","$updateLinkEditor","linkParent","editorElem","nativeSelection","rootElement","domRect","handleLinkSubmission","linkNode","$createLinkNode","__rel","__target","__title","X","Check","Pencil","Trash","FloatingLinkEditorPlugin","setActiveEditor","focusLinkNode","focusAutoLinkNode","badNode","autoLinkNode","_payload","newEditor","useFloatingLinkEditorToolbar","TextFormatFloatingToolbar","isBold","isItalic","isUnderline","isCode","isStrikethrough","popupCharStylesEditorRef","mouseMoveListener","buttons","pointerEvents","elementUnderMouse","elementFromPoint","mouseUpListener","$updateTextFormatFloatingToolbar","popupCharStylesEditorElem","rangeRect","domRange","rect","firstElementChild","getDOMRangeRect","setFloatingElemPosition","SubscriptIcon","SuperscriptIcon","FloatingTextFormatToolbarPlugin","isText","setIsText","setIsBold","setIsItalic","setIsUnderline","setIsStrikethrough","setIsCode","updatePopup","$isCodeHighlightNode","$isParagraphNode","rawTextContent","useFloatingTextFormatToolbar","KEYWORDS_REGEX","KeywordsPlugin","$createKeywordNode_","useLexicalTextEntity","matchArr","hashtagLength","startOffset","$toggleLink","objectKlassEquals","LinkPlugin","LexicalLinkPlugin","$shouldPreventIndent","maxDepth","elementNodesInSelection","nodesInSelection","getElementNodesInSelection","totalDepth","elementNode","$getListDepth","$isListItemNode","ListMaxIndentLevelPlugin","PUNC","PUNCTUATION","TRIGGERS","VALID_CHARS","AtSignMentionsRegex","AtSignMentionsRegexAliasRegex","mentionsCache","dummyMentionsData","dummyLookupService","string","results","mention","toLowerCase","includes","getPossibleQueryMatch","minMatchLength","maybeLeadingWhitespace","checkForAtSignMentions","MentionTypeaheadOption","picture","MentionsPlugin","mentionString","setResults","cachedResults","newResults","useMentionLookupService","checkForSlashTriggerMatch","CircleUserRoundIcon","nodeToReplace","checkForMentionMatch","lastTabKeyDownTimestamp","hasRegisteredKeyDownListener","TabFocusPlugin","timeStamp","FOCUS_COMMAND","computeSelectionCount","selectionShape","getShape","toX","fromX","toY","fromY","$cellContainsEmptyParagraph","cell","getChildrenSize","getFirstChildOrThrow","currentCellBackgroundColor","$getNodeTriplet","$isTableCellNode","TableActionMenu","tableCellNode","_tableCellNode","setIsMenuOpen","contextRef","cellMerge","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","backgroundColor","nodeMutations","currentSelectionCounts","__colSpan","__rowSpan","$canUnmerge","menuButtonElement","dropDownElement","rootEleRect","menuButtonRect","dropDownElementRect","margin","leftPosition","topPosition","handleClickOutside","clearTableSelection","tableNode","$getTableNodeFromLexicalNodeOrThrow","tableElement","tableObserver","getTableObserverFromTableElement","$clearHighlight","mergeTableCellsAtSelection","firstCell","setColSpan","setRowSpan","lastDescendant","$selectLastDescendant","insertTableRowAtSelection","shouldInsertAfter","$insertTableRow__EXPERIMENTAL","insertTableColumnAtSelection","$insertTableColumn__EXPERIMENTAL","deleteTableRowAtSelection","$deleteTableRow__EXPERIMENTAL","deleteTableAtSelection","deleteTableColumnAtSelection","$deleteTableColumn__EXPERIMENTAL","toggleTableRowIsHeader","tableRowIndex","$getTableRowIndexFromTableCellNode","tableRows","tableRow","$isTableRowNode","newStyle","getHeaderStyles","TableCellHeaderStates","ROW","tableCell","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","$getTableColumnIndexFromTableCellNode","COLUMN","tableCells","toggleRowStriping","setRowStriping","getRowStriping","handleCellBackgroundColor","mergeCellButton","$unmergeCell","__headerState","TableCellActionMenuContainer","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","tableCellNodeFromSelection","$getTableCellNodeFromLexicalNode","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","prevTableCellDOM","TableActionMenuPlugin","useLexicalEditable","TableCellResizer","targetRef","resizerRef","tableRectRef","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","getColWidths","numColumns","getColumnCount","setColWidths","onMouseMove","isMouseDownOnEvent","getDOMCellFromTarget","onMouseDown","onMouseUp","removeRootListener","prevRootElement","isHeightChanging","direction","updateRowHeight","heightChange","getRowSpan","rowCells","getCellNodeHeight","Infinity","newHeight","domCellNode","clientHeight","updateColumnWidth","widthChange","tableMap","$computeTableMapSkipCellCheck","columnIndex","getCellColumnIndex","colWidths","newColWidths","newWidth","mouseUpHandler","calculateZoomLevel","toggleResize","resizerStyles","zoneWidth","tableRect","getResizers","TableCellResizerPlugin","bodyRef","setBodyRef","TableHoverActionsContainer","isShownRow","setShownRow","isShownColumn","setShownColumn","tableSetRef","tableCellDOMNodeRef","tableDOMNode","hoveredRowNode","hoveredColumnNode","tableDOMElement","maybeTableCell","table","$isTableNode","rowCount","colCount","rowIndex","colIndex","tableElemWidth","tableElemY","tableElemRight","tableElemLeft","tableElemBottom","tableElemHeight","editorElemLeft","tableResizeObserver","disconnect","tableKey","insertAction","insertRow","maybeTableNode","TableHoverActionsPlugin","ToolbarPlugin","ariaActiveDescendant","ariaAutoComplete","ariaControls","ariaDescribedBy","ariaErrorMessage","ariaExpanded","ariaInvalid","ariaLabel","ariaLabelledBy","ariaMultiline","ariaOwns","ariaRequired","autoCapitalize","q","setRootElement","ContentEditable","placeholderClassName","LexicalContentEditable","ComponentPickerOption","keyboardShortcut","AlignmentPickerPlugin","alignment","AlignIcons","AlignLeftIcon","AlignCenterIcon","AlignRightIcon","AlignJustifyIcon","HeadingPickerPlugin","HeadingIcons","DynamicTablePickerPlugin","tableMatch","colOptions","EmbedsPickerPlugin","embed","emojiList","description","category","unicode_version","ios_version","skin_tones","EMOJI","importRegExp","trigger","EQUATION","HR","$isHorizontalRuleNode","_1","_2","isImport","line","$createHorizontalRuleNode","IMAGE","TWEET","$isTweetNode","TABLE_ROW_REG_EXP","TABLE_ROW_DIVIDER_REG_EXP","OTHER_MARKDOWN_TRANSFORMERS","CHECK_LIST","ELEMENT_TRANSFORMERS","MULTILINE_ELEMENT_TRANSFORMERS","TEXT_FORMAT_TRANSFORMERS","TEXT_MATCH_TRANSFORMERS","TABLE","rowOutput","isHeaderRow","$convertToMarkdownString","lastRow","matchCells","mapToTableCells","sibling","maxCells","cells","unshift","$createTableNode","$createTableRowNode","$createTableCell","getTableColumnsSize","$createTableCellNode","NO_STATUS","Plugins","floatingAnchorElem","setFloatingAnchorElem","onWheel","scrollWidth","clientWidth","deltaY","deltaX","scrollLeft","AutoFocusPlugin","RichTextPlugin","_floatingAnchorElem","LexicalErrorBoundary","ClickableLinkPlugin","CheckListPlugin","HorizontalRulePlugin","TablePlugin","ListPlugin","TabIndentationPlugin","HashtagPlugin","HistoryPlugin","MarkdownShortcutPlugin","MinusIcon","DiffIcon","ListCollapseIcon","editorConfig","ltr","rtl","heading","h4","h5","h6","list","checklist","listitem","listitemChecked","listitemUnchecked","nested","ol","olDepth","ul","hashtag","subscript","superscript","underlineStrikethrough","codeHighlight","atrule","attr","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","important","inserted","operator","prolog","property","punctuation","selector","symbol","variable","characterLimit","tableCellActionButton","tableCellActionButtonContainer","tableCellEditing","tableCellHeader","tableCellPrimarySelected","tableCellResizer","tableCellSelected","tableCellSortedIndicator","tableResizeRuler","tableRowStriping","tableSelected","tableSelection","blockCursor","indent","mark","markOverlap","Editor","editorSerializedState","onSerializedChange","onHtmlChange","LexicalComposer","HtmlChangePlugin","OnChangePlugin","$generateHtmlFromNodes","EditorWebComponent","customElements","r2wc","import","r2wcFunction","exports","define","warn","createWebComponent","_window","createRange","anchorOffset","setStart","setEnd","isClient","setIsClient","DOMRect","isDOMNode"],"mappings":"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C,GAAe,KAAfO,GAAqBqD,EAAmB,EAC1C,OAAOH,EAAQ,MAEX,MAAAI,EAAQtD,EAAWuD,WAAW,GAC9BC,EAAgBF,GAAS,IAAMA,GAAS,GACxCG,EAA4BD,EAC9BE,OAAOC,aAAaL,EAAQ,IAAMtD,EAAW4D,UAAU,GACvD5D,EACE8B,EAAQ5E,KAAK2G,SAASC,KACzBC,GACCA,EAAeC,WAAWP,IAA8B,MAE5D,QAAc,IAAV3B,EACF,OAAOoB,EAAQ,MAEjB,MAGMe,GAHmBT,EACrBE,OAAOC,aAAa7B,EAAMyB,WAAW,GAAK,IAAMzB,EAAM8B,UAAU,GAChE9B,GACuC8B,UAAUP,GACrD,OACSH,EADiB,KAAtBe,EACa,KAEFA,IACd/G,KAAKgH,aAOZ,EAIF,MAAMnB,GAAa,CACjB,cACA,YACA,YACA,aACA,aACA,gBACA,cACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,aACA,aACA,cACA,YACA,YACA,aACA,aACA,cACA,YACA,YACA,cACA,YACA,YACA,cACA,aACA,YACA,aACA,aACA,YACA,eACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,aACA,gBACA,YACA,YACA,cACA,aACA,YACA,cACA,YACA,YACA,aACA,cACA,YACA,YACA,eACA,eACA,aACA,YACA,aACA,aACA,aACA,cACA,YACA,aACA,YACA,YACA,eACA,aACA,aACA,cACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,gBACA,eACA,aACA,aACA,iBACA,YACA,YACA,aACA,YACA,YACA,eACA,YACA,cACA,YACA,YACA,YACA,aACA,aACA,gBACA,cACA,aACA,aACA,YACA,eACA,YACA,YACA,YACA,eACA,aACA,YACA,cACA,iBACA,aACA,aACA,YACA,gBACA,cACA,YACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,aACA,eACA,YACA,aACA,YACA,eACA,aACA,gBACA,YACA,cACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,cACA,eACA,eACA,YACA,YACA,aACA,YACA,aACA,cACA,YACA,cACA,aACA,iBACA,aACA,cACA,YACA,cACA,aACA,aACA,YACA,gBACA,YACA,iBACA,aACA,aACA,cACA,aACA,YACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,aACA,cACA,cACA,YACA,eACA,YACA,gBACA,YACA,aACA,cACA,aACA,YACA,aACA,aACA,eACA,cACA,YACA,aACA,YACA,cACA,aACA,iBACA,YACA,aACA,YACA,aACA,aACA,aACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,eACA,YACA,YACA,aACA,cACA,cACA,aACA,gBACA,aACA,aACA,cACA,YACA,aACA,YACA,aACA,YACA,cACA,gBACA,aACA,YACA,YACA,aACA,YACA,eACA,aACA,aACA,eACA,YACA,aACA,aACA,gBACA,YACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,cACA,YACA,aACA,YACA,aACA,YACA,iBACA,YACA,YACA,YACA,YACA,cACA,aACA,aACA,gBACA,gBACA,YACA,eACA,YACA,aACA,cACA,eACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,YACA,YACA,YACA,gBACA,kBACA,aACA,gBACA,YACA,YACA,eACA,YACA,gBACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,gBACA,YACA,YACA,YACA,aACA,YACA,YACA,aACA,gBACA,YACA,cACA,YACA,YACA,gBACA,cACA,YACA,YACA,YACA,gBACA,YACA,aACA,cACA,aACA,cACA,eACA,iBACA,cACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,aACA,cACA,cACA,YACA,YACA,aACA,YACA,cACA,aACA,aACA,eACA,YACA,cACA,YACA,YACA,eACA,YACA,YACA,cACA,aACA,gBACA,YACA,iBACA,YACA,aACA,cACA,YACA,YACA,YACA,gBACA,YACA,YACA,cACA,cACA,YACA,YACA,YACA,eACA,iBACA,YACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,gBACA,aACA,cACA,YACA,aACA,YACA,cACA,YACA,cACA,aACA,YACA,gBACA,aACA,YACA,YACA,YACA,YACA,eACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,aACA,YACA,YACA,aACA,YACA,eACA,eACA,YACA,eACA,YACA,aACA,cACA,YACA,eACA,aACA,YACA,YACA,aACA,eACA,aACA,cACA,cACA,YACA,cACA,YACA,aACA,YACA,YACA,eACA,cACA,cACA,aACA,cACA,YACA,YACA,YACA,cACA,eACA,YACA,aACA,cACA,YACA,cACA,YACA,YACA,eACA,aACA,cACA,cACA,aACA,cACA,gBACA,cACA,YACA,cACA,eACA,kBACA,cACA,YACA,cACA,YACA,aACA,aACA,aACA,YACA,eACA,YACA,YACA,aACA,aACA,YACA,gBACA,iBACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,cACA,kBACA,YACA,YACA,cACA,eACA,aACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,YACA,eACA,YACA,YACA,aACA,YACA,aACA,cACA,YACA,YACA,aACA,aACA,aACA,cACA,aACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,gBACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,aACA,cACA,YACA,YACA,YACA,aACA,YACA,YACA,cACA,cACA,YACA,aACA,gBACA,YACA,YACA,aACA,YACA,cACA,YACA,YACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,YACA,aACA,gBACA,YACA,aACA,YACA,YACA,eACA,cACA,eACA,YACA,eACA,YACA,YACA,YACA,YACA,cACA,aACA,YACA,aACA,YACA,aACA,aACA,cACA,aACA,iBACA,YACA,YACA,YACA,YACA,cACA,aACA,eACA,aACA,aACA,YACA,eACA,cACA,cACA,YACA,cACA,eACA,aACA,gBACA,YACA,YACA,aACA,cACA,YACA,cACA,cACA,cACA,cACA,aACA,eACA,YACA,YACA,YACA,YACA,cACA,gBACA,YACA,YACA,aACA,eACA,YACA,cACA,gBACA,YACA,YACA,YACA,YACA,cACA,eACA,gBACA,aACA,YACA,YACA,iBACA,eACA,cACA,YACA,cACA,aACA,YACA,aACA,aACA,YACA,aACA,cACA,cACA,cACA,YACA,YACA,YACA,YACA,cACA,cACA,cACA,aACA,YACA,cACA,YACA,YACA,aACA,YACA,YACA,eACA,YACA,YACA,eACA,iBACA,cACA,YACA,YACA,YACA,gBACA,YACA,aACA,YACA,YACA,YACA,aACA,aACA,cACA,aACA,aACA,YACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eACA,YACA,cACA,aACA,YACA,cACA,gBACA,eACA,gBACA,YACA,cACA,qBACA,aACA,aACA,aACA,YACA,YACA,aACA,YACA,YACA,cACA,eACA,YACA,cACA,gBACA,eACA,aACA,aACA,cACA,YACA,YACA,cACA,YACA,mBACA,YACA,eACA,YACA,cACA,YACA,YACA,YACA,aACA,aACA,eACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,aACA,aACA,YACA,cACA,aACA,YACA,YACA,eACA,YACA,aACA,YACA,aACA,cACA,gBACA,iBACA,aACA,eACA,aACA,aACA,eACA,gBACA,aACA,cACA,aACA,aACA,YACA,aACA,aACA,eACA,cACA,eACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,cACA,YACA,cACA,cACA,cACA,eACA,aACA,aACA,aACA,eACA,cACA,YACA,cACA,aACA,aACA,cACA,YACA,YACA,YACA,aACA,YACA,cACA,cACA,YACA,eACA,YACA,aACA,aACA,aACA,gBACA,gBACA,gBACA,aACA,YACA,eACA,aACA,YACA,YACA,YACA,YACA,eACA,YACA,gBACA,cACA,aACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,aACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,gBACA,eACA,eACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,eACA,aACA,YACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,cACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,eACA,aACA,YACA,YACA,cACA,eACA,cACA,YACA,aACA,aACA,iBACA,cACA,eACA,YACA,YACA,eACA,YACA,YACA,YACA,iBACA,YACA,eACA,gBACA,eACA,YACA,YACA,YACA,aACA,cACA,YACA,YACA,cACA,YACA,cACA,YACA,aACA,aACA,iBACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,aACA,YACA,cACA,cACA,YACA,cACA,cACA,YACA,YACA,aACA,cACA,YACA,cACA,eACA,aACA,aACA,aACA,cACA,aACA,aACA,YACA,YACA,aACA,YACA,YACA,eACA,cACA,eACA,eACA,eACA,cACA,eACA,YACA,YACA,eACA,aACA,eACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,cACA,eACA,cACA,cACA,cACA,YACA,aACA,YACA,YACA,eACA,aACA,cACA,cACA,YACA,cACA,eACA,eACA,aACA,eACA,aACA,aACA,YACA,YACA,aACA,eACA,cACA,eACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,cACA,aACA,aACA,aACA,eACA,cACA,eACA,aACA,aACA,YACA,eACA,YACA,cACA,YACA,YACA,aACA,YACA,YACA,cACA,cACA,eACA,gBACA,cACA,cACA,YACA,eACA,eACA,YACA,iBACA,cACA,iBACA,cACA,aACA,aACA,aACA,YACA,YACA,aACA,eACA,iBACA,YACA,YACA,iBACA,aACA,aACA,YACA,YACA,YACA,cACA,aACA,aACA,YACA,YACA,YACA,iBACA,YACA,YACA,cACA,aACA,cACA,aACA,YACA,YACA,YACA,aACA,eACA,cACA,aACA,eACA,eACA,YACA,aACA,eACA,YACA,iBACA,YACA,aACA,YACA,YACA,YACA,cACA,aACA,YACA,YACA,YACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,YACA,YACA,cACA,eACA,iBACA,YACA,YACA,aACA,cACA,eACA,aACA,YACA,gBACA,YACA,YACA,cACA,aACA,aACA,cACA,eACA,YACA,aACA,aACA,YACA,cACA,aACA,YACA,cACA,cACA,YACA,cACA,eACA,YACA,aACA,YACA,eACA,aACA,aACA,YACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YACA,eACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,cACA,cACA,aACA,YACA,aACA,gBACA,aACA,YACA,YACA,YACA,YACA,gBACA,YACA,cACA,gBACA,YACA,YACA,cACA,YACA,eACA,aACA,YACA,gBACA,YACA,YACA,aACA,YACA,cACA,aACA,YACA,aACA,eACA,YACA,aACA,aACA,cACA,cACA,YACA,YACA,iBACA,cACA,eACA,aACA,YACA,cACA,YACA,aACA,cACA,cACA,YACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,eACA,YACA,aACA,gBACA,YACA,cACA,gBACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,cACA,cACA,iBACA,aACA,YACA,YACA,cACA,cACA,YACA,cACA,YACA,cACA,eACA,YACA,YACA,gBACA,YACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,gBACA,eACA,eACA,aACA,aACA,YACA,cACA,YACA,YACA,eACA,cACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,aACA,aACA,aACA,aACA,cACA,eACA,eACA,YACA,aACA,YACA,aACA,iBACA,cACA,YACA,aACA,aACA,eACA,gBACA,aACA,eACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,gBACA,iBACA,YACA,aACA,YACA,aACA,aACA,eACA,YACA,aACA,cACA,aACA,cACA,YACA,cACA,YACA,YACA,aACA,eACA,aACA,eACA,eACA,aACA,YACA,aACA,iBACA,eACA,eACA,YACA,aACA,YACA,gBACA,eACA,gBACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,eACA,aACA,YACA,aACA,YACA,aACA,aACA,YACA,aACA,aACA,cACA,YACA,cACA,YACA,aACA,aACA,aACA,aACA,cACA,eACA,YACA,gBACA,YACA,eACA,gBACA,aACA,YACA,YACA,cACA,aACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,gBACA,aACA,aACA,cACA,aACA,aACA,eACA,YACA,YACA,cACA,YACA,cACA,YACA,YACA,cACA,YACA,aACA,cACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,cACA,YACA,YACA,gBACA,aACA,aACA,YACA,gBACA,eACA,aACA,cACA,aACA,YACA,eACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,aACA,aACA,YACA,eACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,aACA,YACA,eACA,YACA,cACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,aACA,YACA,aACA,YACA,gBACA,gBACA,YACA,gBACA,aACA,eACA,aACA,eACA,cACA,aACA,cACA,YACA,YACA,cACA,aACA,YACA,aACA,aACA,gBACA,YACA,aACA,aACA,cACA,cACA,cACA,gBACA,YACA,cACA,eACA,gBACA,YACA,cACA,aACA,aACA,YACA,cACA,aACA,aACA,aACA,YACA,aACA,YACA,cACA,gBACA,aACA,aACA,aACA,eACA,YACA,cACA,cACA,aACA,cACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,iBACA,YACA,YACA,aACA,cACA,YACA,YACA,aACA,aACA,aACA,YACA,aACA,eACA,YACA,YACA,YACA,YACA,YACA,aACA,gBACA,YACA,YACA,aACA,cACA,aACA,gBACA,YACA,cACA,YACA,YACA,YACA,eACA,aACA,YACA,aACA,iBACA,mBACA,YACA,aACA,YACA,aACA,eACA,aACA,aACA,aACA,eACA,aACA,aACA,aACA,eACA,eACA,aACA,cACA,cACA,cACA,YACA,cACA,gBACA,gBACA,YACA,aACA,YACA,YACA,YACA,YACA,aACA,cACA,cACA,cACA,aACA,aACA,aACA,cACA,YACA,iBACA,aACA,YACA,cACA,YACA,aACA,cACA,aACA,gBACA,cACA,aACA,cACA,YACA,YACA,YACA,aACA,kBACA,YACA,eACA,cACA,YACA,aACA,YACA,aACA,aACA,YACA,eACA,aACA,cACA,gBACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,cACA,cACA,YACA,eACA,YACA,cACA,aACA,cACA,YACA,YACA,gBACA,YACA,YACA,cACA,aACA,YACA,YACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,gBACA,YACA,aACA,eACA,YACA,YACA,cACA,YACA,aACA,YACA,iBACA,YACA,eACA,eACA,YACA,YACA,eACA,eACA,cACA,cACA,YACA,YACA,iBACA,aACA,cACA,YACA,cACA,YACA,eACA,gBACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,gBACA,aACA,aACA,aACA,YACA,YACA,eACA,aACA,aACA,aACA,YACA,YACA,YACA,eACA,YACA,aACA,eACA,aACA,aACA,kBACA,aACA,cACA,cACA,cACA,cACA,aACA,aACA,eACA,cACA,cACA,aACA,kBACA,YACA,YACA,aACA,YACA,aACA,YACA,gBACA,cACA,aACA,aACA,aACA,gBACA,gBACA,YACA,YACA,aACA,cACA,aACA,YACA,aACA,aACA,kBACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,cACA,aACA,YACA,aACA,aACA,gBACA,aACA,eACA,YACA,YACA,YACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,YACA,YACA,aACA,cACA,cACA,cACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,cACA,cACA,eACA,eACA,aACA,YACA,aACA,eACA,YACA,eACA,YACA,cACA,aACA,aACA,YACA,YACA,eACA,aACA,YACA,YACA,YACA,YACA,aACA,YACA,YACA,YACA,eACA,YACA,YACA,cACA,iBACA,aACA,YACA,cACA,YACA,cACA,YACA,YACA,eACA,aACA,aACA,YACA,cACA,kBACA,aACA,YACA,YACA,aACA,aACA,eACA,eACA,aACA,YACA,aACA,aACA,eACA,YACA,aACA,aACA,aACA,YACA,YACA,cACA,cACA,YACA,YACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,cACA,eACA,cACA,gBACA,YACA,aACA,aACA,YACA,eACA,aACA,YACA,YACA,iBACA,YACA,YACA,YACA,cACA,cACA,aACA,eACA,YACA,cACA,eACA,YACA,YACA,aACA,aACA,YACA,YACA,aACA,cACA,YACA,gBACA,aACA,cACA,gBACA,YACA,YACA,iBACA,aACA,aACA,cACA,aACA,YACA,YACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,aACA,YACA,aACA,YACA,YACA,cACA,aACA,YACA,aACA,cACA,eACA,cACA,cACA,cACA,eACA,YACA,eACA,YACA,YACA,YACA,cACA,YACA,YACA,cACA,YACA,gBACA,YACA,YACA,YACA,cACA,aACA,YACA,cACA,iBACA,YACA,cACA,eACA,YACA,cACA,cACA,aACA,YACA,YACA,cACA,YACA,eACA,cACA,YACA,YACA,YACA,YACA,aACA,aACA,cACA,eACA,cACA,cACA,YACA,aACA,YACA,YACA,eACA,eACA,cACA,cACA,aACA,aACA,cACA,YACA,eACA,YACA,aACA,YACA,cACA,eACA,YACA,YACA,cACA,cACA,cACA,eACA,aACA,gBACA,aACA,YACA,cACA,cACA,YACA,aACA,cACA,eACA,aACA,mBACA,aACA,eACA,gBACA,aACA,aACA,aACA,YACA,aACA,cACA,YACA,YACA,kBACA,YACA,YACA,gBACA,aACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,gBACA,cACA,eACA,YACA,cACA,YACA,aACA,aACA,eACA,aACA,eACA,aACA,YACA,cACA,aACA,cACA,cACA,cACA,eACA,YACA,eACA,YACA,cACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,YACA,YACA,cACA,cACA,YACA,aACA,YACA,cACA,eACA,cACA,YACA,cACA,gBACA,YACA,eACA,eACA,aACA,YACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,aACA,aACA,gBACA,aACA,YACA,aACA,cACA,YACA,YACA,aACA,cACA,aACA,aACA,YACA,cACA,cACA,YACA,gBACA,aACA,aACA,YACA,YACA,aACA,cACA,cACA,YACA,aACA,aACA,cACA,YACA,cACA,aACA,eACA,aACA,eACA,cACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,YACA,aACA,YACA,gBACA,YACA,cACA,eACA,cACA,YACA,aACA,gBACA,aACA,cACA,YACA,YACA,aACA,cACA,YACA,kBACA,aACA,cACA,gBACA,aACA,eACA,aACA,YACA,YACA,YACA,kBCn8EK,MAAMtB,WAAyB0C,EAAAA,cAmCpC,WAAAtB,CAAYtE,EAAcmD,GACxB0C,MAAM1C,GA3BRoB,EAAA5F,KAAA,UA4BEA,KAAK0E,OAASrD,CAAA,CA1BhB,YAAOtC,CAAMkB,GACX,OAAO,IAAIsE,GAAiBtE,EAAKyE,OAAQzE,EAAKjB,MAAK,CAGrD,cAAOF,GACE,MAA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D,GAAe,EAAGD,QAC7CG,GAAAA,EAAAA,gBAAgBF,GAAc,CACjC,MAAAhyB,EAASgyB,EAAY/xB,YAEvB,IAACI,EAAAA,YAAYL,GACf,MAAM,IAAIl0B,MACR,+EAIJimD,EAAal9C,KAAKyjB,IAAI25B,EAAAA,cAAcjyB,GAAU,EAAG+xB,EAAU,CAI/D,OAAOA,EAAaJ,CACtB,CAEO,SAASQ,IAAyBR,SACvCA,EAAW,IAIL,MAACz7C,GAAUC,IASV,OAPP9H,EAAAA,UAAU,IACD6H,EAAOtE,gBACZsmB,EAAAA,uBACA,IAAMw5B,GAAqBC,GAC3Bp5B,EAAAA,2BAED,CAACriB,EAAQy7C,IACL,IACT,CClDA,MAAMvR,GAA6B76B,EAAAA,KACjC,IAAMjM,mCAAO,kDAYT84C,GALwB,CAE5BC,YALA,gEAQiCA,YAE7BC,GAAW,CAAC,KAAKt8C,KAAK,IAGtBu8C,GAAc,KAAOD,GAAWF,GAAO,OAevCI,GAAsB,IAAIl+B,OAC9B,gBAEEg+B,GACA,QAEAC,IAhBF,kBAIAH,GACA,OAMA,cAiBIK,GAAgC,IAAIn+B,OACxC,gBAEEg+B,GACA,QAEAC,GALF,cAeIG,OAAoBjL,IAEpBkL,GAAoB,CACxB,eACA,aACA,sBACA,uBACA,sBACA,gBACA,iBACA,2BACA,iBACA,uBACA,aACA,eACA,2BACA,UACA,QACA,eACA,OACA,OACA,eACA,QACA,eACA,iBACA,aACA,QACA,WACA,SACA,kBACA,kBACA,gBACA,cACA,eACA,OACA,QACA,iBACA,eACA,YACA,cACA,oBACA,kBACA,iBACA,YACA,UACA,aACA,iBACA,YACA,QACA,wBACA,cACA,cACA,OACA,QACA,SACA,WACA,eACA,iBACA,iBACA,wBACA,cACA,kBACA,gBACA,gBACA,eACA,gBACA,uBACA,YACA,uBACA,eACA,eACA,YACA,cACA,iBACA,cACA,eACA,iBACA,iBACA,gBACA,2BACA,0BACA,gBACA,iBACA,gBACA,mBACA,sBACA,aACA,kBACA,QACA,gBACA,cACA,eACA,aACA,OACA,aACA,aACA,gBACA,iBACA,YACA,cACA,SACA,eACA,gBACA,kBACA,kBACA,KACA,eACA,gBACA,QACA,QACA,WACA,YACA,gBACA,aACA,WACA,kBACA,iBACA,YACA,iBACA,SACA,YACA,OACA,YACA,OACA,WACA,aACA,SACA,iBACA,aACA,eACA,cACA,QACA,gBACA,gBACA,OACA,QACA,UACA,UACA,sBACA,UACA,OACA,QACA,aACA,cACA,yBACA,oBACA,iBACA,eACA,cACA,cACA,eACA,aACA,mBACA,sBACA,SACA,eACA,WACA,WACA,QACA,aACA,WACA,iBACA,YACA,gBACA,OACA,eACA,SACA,cACA,QACA,aACA,cACA,oBACA,QACA,iBACA,cACA,aACA,kBACA,gBACA,YACA,SACA,mBACA,kBACA,OACA,iBACA,aACA,eACA,YACA,aACA,kBACA,cACA,SACA,WACA,QACA,eACA,SACA,mBACA,cACA,aACA,eACA,gBACA,YACA,gBACA,SACA,YACA,aACA,WACA,QACA,UACA,mBACA,oBACA,cACA,gBACA,8BACA,mBACA,QACA,SACA,WACA,iBACA,gBACA,cACA,WACA,iBACA,QACA,kBACA,cACA,SACA,YACA,aACA,WACA,gBACA,WACA,aACA,WACA,WACA,mBACA,aACA,SACA,cACA,kBACA,eACA,gBACA,eACA,aACA,eACA,aACA,gBACA,cACA,SACA,gBACA,cACA,kBACA,YACA,iBACA,QACA,eACA,cACA,aACA,iBACA,WACA,eACA,MACA,gBACA,OACA,QACA,gBACA,eACA,cACA,YACA,aACA,YACA,aACA,gBACA,eACA,aACA,SACA,0BACA,kBACA,WACA,UACA,cACA,oBACA,aACA,iBACA,SACA,UACA,eACA,iBACA,iBACA,kBACA,eACA,WACA,cACA,QACA,QACA,QACA,SACA,QACA,OACA,OACA,eACA,mBACA,cACA,gBACA,kBACA,WACA,gBACA,MACA,WACA,cACA,QACA,eACA,aACA,iBACA,QACA,eACA,YACA,iBACA,OACA,aACA,cACA,iBACA,gBACA,OACA,cACA,QACA,cACA,cACA,qBACA,WACA,eACA,cACA,SACA,eACA,gBACA,UACA,iBACA,iBACA,iBACA,WACA,YACA,iBACA,UACA,eACA,YACA,WACA,oBACA,aACA,gBACA,YACA,YACA,eACA,cACA,QACA,gBACA,YACA,eACA,cACA,mBACA,UACA,aACA,UACA,QACA,eACA,QACA,QACA,kBACA,eACA,SACA,UACA,eACA,YACA,eACA,SACA,kBACA,aACA,iBACA,kBACA,MACA,QACA,cACA,cACA,iBACA,4BACA,aACA,SACA,UACA,OACA,aACA,QACA,aACA,QACA,iBACA,aACA,oBACA,iBACA,WACA,QACA,gBACA,gBACA,SACA,cACA,OACA,aACA,cACA,gBACA,WAGIC,GAAqB,CACzB,MAAAhnD,CAAOinD,EAAgB10C,GACrB1E,WAAW,KACT,MAAMq5C,EAAUH,GAAkB9xC,OAAQkyC,GACxCA,EAAQC,cAAcC,SAASJ,EAAOG,gBAExC70C,EAAS20C,IACR,IAAG,GA2DV,SAASI,GAAsBv9C,GACtB,OA5BT,SACEA,EACAw9C,GAEI,IAAAh7C,EAAQq6C,GAAoB59B,KAAKjf,GAKrC,GAHc,OAAVwC,IACMA,EAAAs6C,GAA8B79B,KAAKjf,IAE/B,OAAVwC,EAAgB,CAIZ,MAAAi7C,EAAyBj7C,EAAM,GAE/BqwB,EAAiBrwB,EAAM,GACzB,GAAAqwB,EAAe1yB,QAAUq9C,EACpB,MAAA,CACLhT,WAAYhoC,EAAM2X,MAAQsjC,EAAuBt9C,OACjD0yB,iBACAG,kBAAmBxwB,EAAM,GAE7B,CAEK,OAAA,IACT,CAGSk7C,CAAuB19C,EAAM,EACtC,CAEA,MAAM29C,WAA+BjS,GAInC,WAAAnoC,CAAYk+B,EAAcmc,GACxB94C,MAAM28B,GAJRj+B,EAAA5F,KAAA,QACA4F,EAAA5F,KAAA,WAIEA,KAAK6jC,KAAOA,EACZ7jC,KAAKggD,QAAUA,CAAA,EAIZ,SAASC,KACR,MAACt9C,GAAUC,KAEVqqC,EAAaC,GAAkBrxC,EAAAA,SAAwB,MACxD0jD,EA1ER,SAAiCW,GAC/B,MAAOX,EAASY,GAActkD,EAAAA,SAAwB,IAwB/C,OAtBPf,EAAAA,UAAU,KACF,MAAAslD,EAAgBjB,GAAcv+C,IAAIs/C,GAEnB,MAAjBA,EAKkB,OAAlBE,SAEyB,IAAlBA,GAKGjB,GAAAj+C,IAAIg/C,EAAe,MACdb,GAAAhnD,OAAO6nD,EAAgBG,IAC1BlB,GAAAj+C,IAAIg/C,EAAeG,GACjCF,EAAWE,MAPXF,EAAWC,IAPXD,EAAW,KAgBZ,CAACD,IAEGX,CACT,CAgDkBe,CAAwBrT,GAElCsT,EAA4BnT,GAA8B,IAAK,CACnET,UAAW,IAGP9wB,EAAUzf,EAAAA,QACd,IACEmjD,EACG36B,IACEqU,GACC,IAAI8mB,GACF9mB,IACAt+B,IAAC6lD,EAAoBA,oBAAA,CAAA54C,UAAU,aAGpCutB,MAAM,EA/fsB,GAggBjC,CAACoqB,IAGG3qB,EAAiB32B,EAAAA,YACrB,CACEqvC,EACAmT,EACAjT,KAEA7qC,EAAO3I,OAAO,KACN,MAAAggB,EAAcN,GAAmB4zB,EAAezJ,MAClD4c,GACFA,EAAcj/C,QAAQwY,GAExBA,EAAYzf,SACFizC,OAGd,CAAC7qC,IAEG+9C,EAAuBziD,EAAAA,YAC1BmE,GAEoB,OADAm+C,EAA0Bn+C,EAAMO,GAE1C,KAEFg9C,GAAsBv9C,GAE/B,CAACm+C,EAA2B59C,IAG9B,aACG0Q,EAAAA,SAAS,CAAAC,SAAW3Y,EAAAA,IAAA,MAAA,CAAIxB,wBAEvBA,SAAAuE,EAAA/C,IAACkyC,GAAA,CACCY,cAAeP,EACftY,iBACA8Y,UAAWgT,EACX7kC,UACA8Y,aAAc,CACZF,GACEgB,gBAAeD,yBAAwBE,yBAElCjB,EAAiBtnB,SAAWoyC,EAAQh9C,OACvCshB,EAAAA,eACElpB,IAAC,MAAI,CAAAiN,UAAU,uCACbzO,SAAAuE,EAAA/C,IAAC68B,GAAA,CACCmW,UAAY51C,IACI,YAAVA,EAAEyM,KACJzM,EAAEoM,iBACFuxB,EACoB,OAAlBD,GACKA,EAAgB,EAAI5Z,EAAQtZ,QAC3BsZ,EAAQtZ,OACVsZ,EAAQtZ,OAAS,IAEJ,cAAVxK,EAAEyM,MACXzM,EAAEoM,iBACFuxB,EACoB,OAAlBD,GACKA,EAAgB,GAAK5Z,EAAQtZ,OAC9B,KAKVpJ,SAAAwB,EAAAA,IAAC+8B,IACCv+B,SAACwB,EAAAA,IAAAi9B,GAAA,CACEz+B,WAAQyrB,IAAI,CAAClJ,EAAQa,IACpB7e,EAAA0K,KAAC0vB,GAAA,CAECj9B,MAAO6gB,EAAOmoB,KACdhN,SAAU,KACRrB,EAAuB9Z,IAEzB9T,UAAW,4BACT6tB,IAAkBlZ,EACd,6CACA,mBAGLpjB,SAAA,CAAOuiB,EAAAskC,QACPtkC,EAAOmoB,OAZHnoB,EAAOlX,cAmBxBiwB,EAAiBtnB,SAEnB,QAKd,CC9qBA,IAAIwzC,GAA0B,EAC1BC,IAA+B,EAe5B,SAASC,KACR,MAACl+C,GAAUC,IA0BV,OAxBP9H,EAAAA,UAAU,KACH8lD,KAhBAnoD,OAAAwI,iBACL,UACCsZ,IAEmB,QAAdA,EAAM/V,MACRm8C,GAA0BpmC,EAAMumC,aAGpC,GAUiCF,IAAA,GAG1Bj+C,EAAOtE,gBACZ0iD,EAAAA,cACCxmC,IACO5Y,MAAAA,EAAYtH,EAAAA,gBASX,OARHuH,EAAAA,kBAAkBD,IAElBg/C,GAjCkB,IAkClBpmC,EAAMumC,2BAEQn/C,EAAU5C,UAGrB,GAxCc,IA4CxB,CAAC4D,IAEG,IACT,CCYA,SAASq+C,GAAsBr/C,GAIvB,MAAAs/C,EAAiBt/C,EAAUu/C,WAC1B,MAAA,CACL1gB,QAASygB,EAAeE,IAAMF,EAAeG,MAAQ,EACrD9gB,KAAM2gB,EAAeI,IAAMJ,EAAeK,MAAQ,EAEtD,CAeA,SAASC,GAA4BC,GAC/B,GAA2B,IAA3BA,EAAKC,kBACA,OAAA,EAEH,MAAAv1C,EAAas1C,EAAKE,uBACpB,SAACrE,EAAiBA,iBAAAnxC,KAAgBA,EAAWhS,UAInD,CAaA,SAASynD,GAA2Bh/C,GAClC,OAAOA,EAAO/E,iBAAiBC,KAAK,KAC5B8D,MAAAA,EAAYtH,EAAAA,gBAClB,GAAIuH,EAAkBA,kBAAAD,IAAcw/B,EAAAA,kBAAkBx/B,GAAY,CAChE,MAAO6/C,GAAQI,kBAAgBjgD,EAAUI,QACrC8/C,GAAAA,EAAAA,iBAAiBL,GACnB,OAAOA,EAAKn8B,oBACd,CAEK,OAAA,MAEX,CAUA,SAASy8B,IAAgBryB,QACvBA,EACAsyB,cAAeC,EAAAC,cACfA,EAAAC,WACAA,EAAAC,UACAA,IAEM,MAACx/C,GAAUC,IACXw/C,EAAc9yC,SAA8B,OAC3CyyC,EAAeM,GAAuBxmD,EAAAA,SAASmmD,IAC/CM,EAAiBC,GAAyB1mD,WAAS,CACxD2kC,QAAS,EACTF,KAAM,KAEDkiB,EAAeC,GAAoB5mD,EAAAA,UAAS,IAC5C6mD,EAAgBC,GAAqB9mD,EAAAA,UAAS,IAC9C+mD,EAAiBt9B,GAAsBzpB,EAAAA,SAC5C,IAAM8lD,GAA2Bh/C,IAAW,IAG9C7H,EAAAA,UAAU,IACD6H,EAAOw0B,yBACZxZ,EAAAA,cACCklC,IAEiD,YAA9CA,EAAcjiD,IAAImhD,EAAct9C,YAGzB9B,EAAA/E,iBAAiBC,KAAK,KACPwkD,EAAAN,EAAc53C,eAEjBmb,EAAAq8B,GAA2Bh/C,IAAW,MAG7D,CAAE00B,oBAAoB,IAEvB,CAAC10B,EAAQo/C,IAEZjnD,EAAAA,UAAU,KACD6H,EAAA/E,iBAAiBC,KAAK,KACrB8D,MAAAA,EAAYtH,EAAAA,gBAEd8mC,GAAAA,EAAAA,kBAAkBx/B,GAAY,CAC1B,MAAAmhD,EAAyB9B,GAAsBr/C,GAC/B4gD,EAAAvB,GAAsBr/C,IAC5C8gD,EACEK,EAAuBtiB,QAAU,GAAKsiB,EAAuBxiB,KAAO,EACtE,CAGFqiB,EA1GN,WACQhhD,MAAAA,EAAYtH,EAAAA,gBAEf,GAAAuH,EAAAA,kBAAkBD,KAAeA,EAAUE,eAC3Cs/B,EAAAA,kBAAkBx/B,KAAeA,EAAUI,OAAOse,GAAG1e,EAAU0L,SAC9DzL,EAAAA,kBAAkBD,KAAew/B,oBAAkBx/B,GAE9C,OAAA,EAET,MAAO6/C,GAAQI,kBAAgBjgD,EAAUI,QACzC,OAAOy/C,EAAKuB,UAAY,GAAKvB,EAAKwB,UAAY,CAChD,CA+FwBC,OAEnB,CAACtgD,IAEJ7H,EAAAA,UAAU,KACR,MAAMooD,EAAoBhB,EAAW/0C,QAC/Bg2C,EAAkBf,EAAYj1C,QAC9B4sC,EAAcp3C,EAAOrI,iBAE3B,GACuB,MAArB4oD,GACmB,MAAnBC,GACe,MAAfpJ,EACA,CACM,MAAAqJ,EAAcrJ,EAAY9lB,wBAC1BovB,EAAiBH,EAAkBjvB,wBACzCkvB,EAAgB11C,MAAM+kC,QAAU,IAC1B,MAAA8Q,EAAsBH,EAAgBlvB,wBACtCsvB,EAAS,EACX,IAAAC,EAAeH,EAAentB,MAAQqtB,EAExC,GAAAC,EAAeF,EAAoBx1C,MAAQrV,OAAOyP,YAClDs7C,EAAeF,EAAoBx1C,MAAQs1C,EAAYltB,MACvD,CACA,MAAM3e,EACJ8rC,EAAextB,KAAOytB,EAAoBx1C,MAAQy1C,EACpDC,GAAgBjsC,EAAW,EAAIgsC,EAAShsC,GAAY9e,OAAOw9B,WAAA,CAE7DktB,EAAgB11C,MAAMooB,KAAO,GAAG2tB,EAAe/qD,OAAOw9B,gBAEtD,IAAIwtB,EAAcJ,EAAenvB,IACjC,GAAIuvB,EAAcH,EAAoBv1C,OAAStV,OAAO0P,YAAa,CAC3D,MAAAoP,EAAW8rC,EAAe/uB,OAASgvB,EAAoBv1C,OAC7D01C,GAAelsC,EAAW,EAAIgsC,EAAShsC,GAAY9e,OAAOu9B,WAAA,CAE5DmtB,EAAgB11C,MAAMymB,IAAM,GAAGuvB,IAAehrD,OAAOu9B,eAAW,GAEjE,CAACksB,EAAYE,EAAaz/C,IAE7B7H,EAAAA,UAAU,KACR,SAAS4oD,EAAmBnpC,GAED,MAAvB6nC,EAAYj1C,SACU,MAAtB+0C,EAAW/0C,SACVi1C,EAAYj1C,QAAQ+Q,SAAS3D,EAAM/b,SACnC0jD,EAAW/0C,QAAQ+Q,SAAS3D,EAAM/b,SAEnCyjD,GAAc,EAChB,CAKF,OAFOxpD,OAAAwI,iBAAiB,QAASyiD,GAE1B,IAAMjrD,OAAO0I,oBAAoB,QAASuiD,IAChD,CAACzB,EAAeC,IAEb,MAAAyB,EAAsB1lD,EAAAA,YAAY,KACtC0E,EAAO3I,OAAO,KACR,GAAA+nD,EAAcp+C,aAAc,CACxB,MAAAigD,EAAYC,sCAAoC9B,GAChD+B,EAAenhD,EAAOpE,gBAC1BqlD,EAAUn/C,UAGZ,IAAKq/C,EACG,MAAA,IAAIvrD,MAAM,wCAGZ,MAAAwrD,EAAgBC,mCAAiCF,GACjC,OAAlBC,GACFA,EAAcE,kBAGhBL,EAAU/Z,YACUwY,EAAAN,EAAc53C,YAAW,CAG9BlQ,EAAAA,WACRo5B,iBAEV,CAAC1wB,EAAQo/C,IAENmC,EAA6B,KACjCvhD,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBACd8mC,GAAAA,EAAAA,kBAAkBx/B,GAAY,CAChC,MAAM6+B,QAAEA,EAAAF,KAASA,GAAS0gB,GAAsBr/C,GAC1CpI,EAAQoI,EAAUG,WACxB,IAAIqiD,EAAkC,KACtC,IAAA,IAAShqD,EAAI,EAAGA,EAAIZ,EAAMgJ,OAAQpI,IAAK,CAC/B,MAAA8F,EAAO1G,EAAMY,GACf0nD,GAAAA,EAAAA,iBAAiB5hD,GACnB,GAAkB,OAAdkkD,EAAoB,CACtBlkD,EAAKmkD,WAAW5jB,GAAS6jB,WAAW/jB,GACxB6jB,EAAAlkD,EAER,IAAAiM,EADYq1C,GAA4BthD,IAI1Co9C,EAAAA,iBAAkBnxC,EAAajM,EAAKkM,kBAEpCD,EAAWtI,QACb,MACSi+C,GAAAA,EAAAA,iBAAiBsC,GAAY,CACtB5C,GAA4BthD,IAE1CkkD,EAAU/rD,UAAU6H,EAAK2wB,eAE3B3wB,EAAK2D,QAAO,CAEhB,CAEgB,OAAdugD,IACkC,IAAhCA,EAAU1C,mBACF0C,EAAA/rD,OAAOkU,EAAAA,wBApM7B,SAA+BrM,GACvB,MAAAqkD,EAAiBrkD,EAAK0wB,oBACxB3uB,EAAAA,YAAYsiD,GACdA,EAAe/pD,SACN6R,EAAAA,eAAek4C,GACxBA,EAAe/yB,YACa,OAAnB+yB,GACTA,EAAergD,YAEnB,CA6LUsgD,CAAsBJ,IAEhB10B,GAAA,KAWR+0B,EAA4BvmD,EAAAA,YAC/BwmD,IACC9hD,EAAO3I,OAAO,KACZ0qD,EAAAA,8BAA8BD,GACtBh1B,OAGZ,CAAC9sB,EAAQ8sB,IAGLk1B,EAA+B1mD,EAAAA,YAClCwmD,IACC9hD,EAAO3I,OAAO,KACZ,IAAA,IAASG,EAAI,EAAGA,EAAImoD,EAAgB9hB,QAASrmC,IAC3CyqD,EAAAA,iCAAiCH,GAE3Bh1B,OAGZ,CAAC9sB,EAAQ8sB,EAAS6yB,EAAgB9hB,UAG9BqkB,EAA4B5mD,EAAAA,YAAY,KAC5C0E,EAAO3I,OAAO,KACkB8qD,kCACtBr1B,OAET,CAAC9sB,EAAQ8sB,IAENs1B,EAAyB9mD,EAAAA,YAAY,KACzC0E,EAAO3I,OAAO,KACM6pD,sCAAoC9B,GAC5Cn+C,SAEU+/C,IACZl0B,OAET,CAAC9sB,EAAQo/C,EAAe4B,EAAqBl0B,IAE1Cu1B,EAA+B/mD,EAAAA,YAAY,KAC/C0E,EAAO3I,OAAO,KACqBirD,qCACzBx1B,OAET,CAAC9sB,EAAQ8sB,IAENy1B,EAAyBjnD,EAAAA,YAAY,KACzC0E,EAAO3I,OAAO,KACN,MAAA4pD,EAAYC,sCAAoC9B,GAEhDoD,EAAgBC,qCAAmCrD,GAEnDsD,EAAYzB,EAAUhzB,cAE5B,GAAIu0B,GAAiBE,EAAU9iD,QAAU4iD,EAAgB,EACjD,MAAA,IAAI5sD,MAAM,kDAGZ,MAAA+sD,EAAWD,EAAUF,GAEvB,IAACI,EAAAA,gBAAgBD,GACb,MAAA,IAAI/sD,MAAM,sBAGlB,MAAMitD,EACJzD,EAAc0D,kBAAoBC,EAAsBA,sBAAAC,IAC1DL,EAAS10B,cAAcnW,QAASmrC,IAC1B,IAAC/D,EAAAA,iBAAiB+D,GACd,MAAA,IAAIrtD,MAAM,uBAGRqtD,EAAAC,gBAAgBL,EAAUE,EAAAA,sBAAsBC,OAGxChC,IACZl0B,OAET,CAAC9sB,EAAQo/C,EAAe4B,EAAqBl0B,IAE1Cq2B,EAA4B7nD,EAAAA,YAAY,KAC5C0E,EAAO3I,OAAO,KACN,MAAA4pD,EAAYC,sCAAoC9B,GAEhDgE,EACJC,wCAAsCjE,GAElCsD,EAAYzB,EAAUhzB,cAKxB,GAAAm1B,GAJkBzkD,KAAKyjB,OACtBsgC,EAAUzgC,IAAK+b,GAAQA,EAAI/P,cAAcruB,UAGLwjD,EAAmB,EACpD,MAAA,IAAIxtD,MAAM,kDAGlB,MAAMitD,EACJzD,EAAc0D,kBAAoBC,EAAsBA,sBAAAO,OAC1D,IAAA,IAAStuD,EAAI,EAAGA,EAAI0tD,EAAU9iD,OAAQ5K,IAAK,CACnC,MAAA2tD,EAAWD,EAAU1tD,GAEvB,IAAC4tD,EAAAA,gBAAgBD,GACb,MAAA,IAAI/sD,MAAM,sBAGZ,MAAA2tD,EAAaZ,EAAS10B,cACxB,GAAAm1B,GAAoBG,EAAW3jD,OAEjC,SAGI,MAAAqjD,EAAYM,EAAWH,GAEzB,IAAClE,EAAAA,iBAAiB+D,GACd,MAAA,IAAIrtD,MAAM,uBAGRqtD,EAAAC,gBAAgBL,EAAUE,EAAAA,sBAAsBO,OAAM,CAE9CtC,IACZl0B,OAET,CAAC9sB,EAAQo/C,EAAe4B,EAAqBl0B,IAE1C02B,EAAoBloD,EAAAA,YAAY,KACpC0E,EAAO3I,OAAO,KACR,GAAA+nD,EAAcp+C,aAAc,CACxB,MAAAigD,EAAYC,sCAAoC9B,GAClD6B,GACFA,EAAUwC,gBAAgBxC,EAAUyC,iBACtC,CAEkB1C,IACZl0B,OAET,CAAC9sB,EAAQo/C,EAAe4B,EAAqBl0B,IAE1C62B,EAA4BroD,EAAAA,YAC/BpD,IACC8H,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBAClB,GAAIuH,EAAkBA,kBAAAD,IAAcw/B,EAAAA,kBAAkBx/B,GAAY,CAChE,MAAO6/C,GAAQI,kBAAgBjgD,EAAUI,QAKrCo/B,GAJA0gB,EAAAA,iBAAiBL,IACnBA,EAAKl8B,mBAAmBzqB,GAGtBsmC,EAAAA,kBAAkBx/B,GAAY,CAC1BpI,MAAAA,EAAQoI,EAAUG,WAExB,IAAA,IAAS3H,EAAI,EAAGA,EAAIZ,EAAMgJ,OAAQpI,IAAK,CAC/B,MAAA8F,EAAO1G,EAAMY,GACf0nD,EAAAA,iBAAiB5hD,IACnBA,EAAKqlB,mBAAmBzqB,EAC1B,CACF,CACF,KAIN,CAAC8H,IAGH,IAAI4jD,EAAsC,YACtCpE,IACEK,UAEC1qB,GAAY,CAAAjB,SAAU,IAAMqtB,IAA8B/qD,SAE3D,gBAEOupD,YAEN5qB,GAAY,CAAAjB,SAAU,KAjL3Bl0B,EAAO3I,OAAO,KACCwsD,oBAgLkDrtD,SAE7D,sCAOFA,SAACwB,EAAAA,IAAA68B,GAAA,CACCr+B,SAACwB,EAAAA,IAAA+8B,GAAA,CACCv+B,gBAACy+B,GACE,CAAAz+B,SAAA,CAAAotD,IACDn+C,KAAC0vB,GAAY,CAAAlwB,UAAU,uBAAuBzO,SAAA,CAAA,mBAE5CuE,EAAA/C,IAAC4pC,GAAA,CACC3jB,MAAOgiC,EACP3nD,SAAUqrD,EACV7/B,OAAM9rB,IAAC4qC,EAAAA,gBAAgB,CAAA39B,UAAU,sBAGpCkwB,GAAY,CAAAjB,SAAU,IAAMsvB,IAAqBhtD,SAElD,8BACC0+B,GAAiB,WACjBC,GAAY,CAAAjB,SAAU,IAAM2tB,GAA0B,GAAQrrD,SAAA,CAAA,SACtD,IACmB,IAAzBmpD,EAAgBhiB,KACb,MACA,GAAGgiB,EAAgBhiB,YAAa,IAAI,kBAGzCxI,GAAY,CAAAjB,SAAU,IAAM2tB,GAA0B,GAAOrrD,SAAA,CAAA,SACrD,IACmB,IAAzBmpD,EAAgBhiB,KACb,MACA,GAAGgiB,EAAgBhiB,YAAa,IAAI,iBAGzCzI,GAAiB,WACjBC,GAAY,CAAAjB,SAAU,IAAM8tB,GAA6B,GAAQxrD,SAAA,CAAA,SACzD,IACsB,IAA5BmpD,EAAgB9hB,QACb,SACA,GAAG8hB,EAAgB9hB,kBAAmB,IAAI,iBAG/C1I,GAAY,CAAAjB,SAAU,IAAM8tB,GAA6B,GAAOxrD,SAAA,CAAA,SACxD,IACsB,IAA5BmpD,EAAgB9hB,QACb,SACA,GAAG8hB,EAAgB9hB,kBAAmB,IAAI,iBAG/C3I,GAAiB,UACjBC,GAAY,CAAAjB,SAAU,IAAMmuB,IAAgC7rD,SAE7D,wBACC2+B,GAAY,CAAAjB,SAAU,IAAMguB,IAA6B1rD,SAE1D,qBACC2+B,GAAY,CAAAjB,SAAU,IAAMkuB,IAA0B5rD,SAEvD,uBACC0+B,GAAiB,IACjBzvB,EAAAA,KAAA0vB,GAAA,CAAYjB,SAAU,IAAMquB,IACzB/rD,SAAA,EAAA4oD,EAAc0E,cAAgBf,EAAAA,sBAAsBC,OACtDD,wBAAsBC,IAClB,SACA,MAAO,IAAI,gBAGhBv9C,EAAAA,KAAA0vB,GAAA,CAAYjB,SAAU,IAAMivB,IACzB3sD,SAAA,EAAA4oD,EAAc0E,cAAgBf,EAAAA,sBAAsBO,UACtDP,wBAAsBO,OAClB,SACA,MAAO,IAAI,2BAQ7B,CAEA,SAASS,IAA6Btb,WACpCA,EAAA+W,UACAA,IAKM,MAACx/C,GAAUC,IAEX+jD,EAAgBr3C,SAAO,MACvBs3C,EAAct3C,SAAO,OACpBu3C,EAAY5E,GAAiBpmD,EAAAA,UAAS,IAEtCkmD,EAAe+E,GAAwBjrD,EAAAA,SAC5C,MAGIkrD,EAAY9oD,EAAAA,YAAY,KAC5B,MAAM+oD,EAAOL,EAAcx5C,QACrBxL,EAAYtH,EAAAA,gBACZy/C,EAAkBrhD,OAAOqlC,eACzB1jC,EAAgB1B,SAAS0B,cAE3BuH,GAAa,MAAbA,GAA6B,MAARqlD,EAEvB,YADAF,EAAqB,MAIjB,MAAA/M,EAAcp3C,EAAOrI,iBAGzB,GAAAsH,oBAAkBD,IACF,OAAhBo4C,GACoB,OAApBD,GACAC,EAAY77B,SAAS47B,EAAgBvtB,YACrC,CACA,MAAM06B,EAA6BC,EAAAA,iCACjCvlD,EAAUI,OAAO4gB,WAGnB,GAAkC,MAA9BskC,EAEF,YADAH,EAAqB,MAQvB,GAA8B,MAJCnkD,EAAOpE,gBACpC0oD,EAA2BxiD,UAK3B,YADAqiD,EAAqB,MAIvBA,EAAqBG,EAA0B,MACrC7sD,GACV0sD,EAAqB,OAEtB,CAACnkD,IAEJ7H,EAAAA,UAAU,IACD6H,EAAOzH,uBAAuB,KAC5ByH,EAAA/E,iBAAiBC,KAAK,KACjBkpD,SAKhBjsD,EAAAA,UAAU,KACR,MAAMqsD,EAAgBR,EAAcx5C,QAEhC,GAAiB,MAAjBg6C,GAA0C,MAAjBpF,EAAuB,CAClD,MAAMqF,EAAmBzkD,EAAOpE,gBAAgBwjD,EAAct9C,UAE9D,GAAwB,MAApB2iD,EAA0B,CACtB,MAAAC,EAAgBD,EAAiBnzB,wBACjCqzB,EAAWH,EAAclzB,wBACzBszB,EAAanc,EAAWnX,wBAExBC,EAAMmzB,EAAcnzB,IAAMqzB,EAAWrzB,IAAM,EAC3C2B,EACJwxB,EAAcnxB,MAAQoxB,EAASx5C,MAAQ,GAAKy5C,EAAW1xB,KAEzDsxB,EAAc15C,MAAM+kC,QAAU,IAC9B2U,EAAc15C,MAAM9B,UAAY,aAAakqB,QAAW3B,MAAG,MAE3DizB,EAAc15C,MAAM+kC,QAAU,IAC9B2U,EAAc15C,MAAM9B,UAAY,+BAClC,GAED,CAACg7C,EAAe5E,EAAep/C,EAAQyoC,IAEpC,MAAAoc,EAAmBl4C,SAAOyyC,GAW9B,OATFjnD,EAAAA,UAAU,KACJ0sD,EAAiBr6C,UAAY40C,GAC/BE,GAAc,GAGhBuF,EAAiBr6C,QAAU40C,GAC1B,CAACyF,EAAkBzF,IAGpBrkD,EAAA/C,IAAC,MAAA,CACCiN,UAAU,0EACV4F,IAAKm5C,EAEJxtD,SAAiB,SAChBiP,EAAAA,KAAC4vB,IAAQ5uB,KAAMy9C,EAAYv8B,aAAc23B,EACvC9oD,SAAA,GAACwB,IAAAu9B,GAAA,CAAepQ,SAAO,EACrB3uB,SAAAuE,EAAA/C,IAAC,SAAA,CACC0M,KAAK,SACLO,UAAU,oEACV+qB,QAAU56B,IACRA,EAAE6sC,kBACFqd,GAAe4E,IAEjBr5C,IAAKo5C,EAELztD,WAAAwB,IAACm3B,EAAAA,gBAAgB,CAAAlqB,UAAU,kBAG/BjN,IAACw9B,GAAe,CAAAvwB,UAAU,gBACxBzO,SAAAuE,EAAA/C,IAACmnD,GAAA,CACCI,WAAY0E,EACZ3E,gBACAxyB,QAAS,IAAMwyB,GAAc,GAC7BF,gBACAI,oBAOd,CAEO,SAASsF,IAAsBrc,WACpCA,EAAA+W,UACAA,GAAY,IAKZ,MAAM/+B,EAAaskC,KAEnB,OAAKtc,EAIEvnB,EAAAA,aACLT,EACE1lB,EAAA/C,IAAC+rD,GAAA,CACCtb,aACA+W,cAEA,KACJ/W,GAVO,IAYX,CCtrBA,SAASuc,IAAiBhlD,OAAEA,IACpB,MAAAilD,EAAYt4C,SAA2B,MACvCu4C,EAAav4C,SAA8B,MAC3Cw4C,EAAex4C,SAA0B,MAEzCy4C,EAAmBz4C,SAA6B,OAC/C04C,EAAiBC,GACtBpsD,EAAAA,SAA+B,OAE1BqsD,EAAYC,GAAoBtsD,EAAAA,SAA8B,OAC9DusD,EAAaC,GAAqBxsD,EAAAA,UAAkB,IACpDysD,EAAmBC,GACxB1sD,EAAAA,SAAwC,MAEpC2sD,EAAavqD,EAAAA,YAAY,KAC7BkqD,EAAiB,MACjBP,EAAUz6C,QAAU,KACpBo7C,EAAwB,MACxBR,EAAiB56C,QAAU,KAC3B26C,EAAa36C,QAAU,MACtB,IAMHrS,EAAAA,UAAU,IACD6H,EAAO2B,sBAAsBoZ,EAAWA,UAACkmC,IAC1C,GAAAA,EAAU6E,eACL,OAAA7E,EAGH,MAAA8E,EAAa9E,EAAU+E,iBAItB,OADP/E,EAAUgF,aAAa/rD,MAAM6rD,GAAY7/B,KArCtB,KAsCZ+6B,IAER,CAACjhD,IAEJ7H,EAAAA,UAAU,KACF,MAAA+tD,EAAetuC,IACnBrU,WAAW,KACT,MAAM1H,EAAS+b,EAAM/b,OAErB,GAAI8pD,EACoBL,EAAA,CACpB1oD,EAAGgb,EAAM/Z,QACTtB,EAAGqb,EAAM9Z,eAKb,GADkB4nD,EA9BG,CAAC9tC,KACK,GAAvBA,EAAMqhC,SA6BQkN,CAAmBvuC,MACjCstC,EAAW16C,SAAW06C,EAAW16C,QAAQ+Q,SAAS1f,IAIlDopD,EAAUz6C,UAAY3O,GAAQ,CAChCopD,EAAUz6C,QAAU3O,EACd,MAAAgjD,EAAOuH,uBAAqBvqD,GAE9BgjD,GAAQ0G,IAAe1G,EACzB7+C,EAAO3I,OAAO,KACN,MAAA+nD,EAAgBlX,EAAAA,2BAA2B2W,EAAKvkC,MACtD,IAAK8kC,EACG,MAAA,IAAIxpD,MAAM,gDAGZ,MAAAqrD,EACJC,sCAAoC9B,GAChC+B,EAAenhD,EAAOpE,gBAAgBqlD,EAAUn/C,UAEtD,IAAKq/C,EACG,MAAA,IAAIvrD,MAAM,8CAGlBqvD,EAAUz6C,QAAU3O,EACPspD,EAAA36C,QAAU22C,EAAa7vB,wBACpCk0B,EAAiB3G,KAEF,MAARA,GACEgH,GACb,GAED,IAGCQ,EAAc,KAClB9iD,WAAW,KACTmiD,GAAkB,IACjB,IAGCY,EAAY,KAChB/iD,WAAW,KACTmiD,GAAkB,IACjB,IAGCa,EAAqBvmD,EAAOqc,qBAChC,CAAC+6B,EAAaoP,KACKA,GAAAhoD,oBAAoB,YAAa0nD,GACjCM,GAAAhoD,oBAAoB,YAAa6nD,GACjCG,GAAAhoD,oBAAoB,UAAW8nD,GACnClP,GAAA94C,iBAAiB,YAAa4nD,GAC9B9O,GAAA94C,iBAAiB,YAAa+nD,GAC9BjP,GAAA94C,iBAAiB,UAAWgoD,KAI7C,MAAO,KACcC,MAEpB,CAAChB,EAAYI,EAAmB3lD,EAAQ6lD,IAErC,MAAAY,EAAoBC,GACN,WAAdA,EAMAC,EAAkBrrD,EAAAA,YACrBsrD,IACC,IAAKrB,EACG,MAAA,IAAI3vD,MAAM,2CAGXoK,EAAA3I,OACL,KACQ,MAAA+nD,EAAgBlX,EAAAA,2BAA2Bqd,EAAWjrC,MACxD,IAAC4kC,EAAAA,iBAAiBE,GACd,MAAA,IAAIxpD,MAAM,gDAGZ,MAAAqrD,EAAYC,sCAAoC9B,GAEhDoD,EACJC,EAAAA,mCAAmCrD,GACnCA,EAAcyH,aACd,EAEInE,EAAYzB,EAAUhzB,cAE5B,GAAIu0B,GAAiBE,EAAU9iD,QAAU4iD,EAAgB,EACjD,MAAA,IAAI5sD,MAAM,kDAGZ,MAAA+sD,EAAWD,EAAUF,GAEvB,IAACI,EAAAA,gBAAgBD,GACb,MAAA,IAAI/sD,MAAM,sBAGd,IAAAwV,EAASu3C,EAASrwC,YACtB,QAAe,IAAXlH,EAAsB,CAClB,MAAA07C,EAAWnE,EAAS10B,cAC1B7iB,EAASzM,KAAK2lC,OACTwiB,EAAS7kC,IACT48B,GAASkI,EAAkBlI,EAAM7+C,IAAWgnD,KAEjD,CAGF,MAAMC,EAAYtoD,KAAKyjB,IAAIhX,EAASw7C,EAvKvB,IAwKbjE,EAASpwC,UAAU00C,IAErB,CAAE5wD,IAAK,2BAGX,CAACkvD,EAAYvlD,IAGT+mD,EAAoB,CACxBlI,EACA17B,KAEA,MAAM+jC,EAAc/jC,EAAavnB,gBAAgBijD,EAAK/8C,UACtD,OAAOolD,GAAaC,cAgBhBC,EAAoB9rD,EAAAA,YACvB+rD,IACC,IAAK9B,EACG,MAAA,IAAI3vD,MAAM,2CAEXoK,EAAA3I,OACL,KACQ,MAAA+nD,EAAgBlX,EAAAA,2BAA2Bqd,EAAWjrC,MACxD,IAAC4kC,EAAAA,iBAAiBE,GACd,MAAA,IAAIxpD,MAAM,gDAGZ,MAAAqrD,EAAYC,sCAAoC9B,IAC/CkI,GAAYC,EAAAA,8BACjBtG,EACA,KACA,MAEIuG,EA/Ba,EACzBpI,EACAkI,KAEA,IAAA,IAAStpB,EAAM,EAAGA,EAAMspB,EAAS1nD,OAAQo+B,IACvC,IAAA,IAASE,EAAS,EAAGA,EAASopB,EAAStpB,GAAKp+B,OAAQs+B,IAClD,GAAIopB,EAAStpB,GAAKE,GAAQ2gB,OAASO,EAC1B,OAAAlhB,GAwBaupB,CAAmBrI,EAAekI,GACtD,QAAoB,IAAhBE,EACI,MAAA,IAAI5xD,MAAM,6CAGZ,MAAA8xD,EAAYzG,EAAU6E,eAC5B,IAAK4B,EACH,OAEI,MAAAv8C,EAAQu8C,EAAUF,GACxB,QAAc,IAAVr8C,EACF,OAEI,MAAAw8C,EAAe,IAAID,GACnBE,EAAWjpD,KAAKyjB,IAAIjX,EAAQk8C,EApOnB,IAqOfM,EAAaH,GAAeI,EAC5B3G,EAAUgF,aAAa0B,IAEzB,CAAEtxD,IAAK,2BAGX,CAACkvD,EAAYvlD,IAGT6nD,EAAiBvsD,EAAAA,YACpBorD,IACO,MAAAjtB,EAAW7hB,IAIf,GAHAA,EAAMpW,iBACNoW,EAAMqqB,mBAEDsjB,EACG,MAAA,IAAI3vD,MAAM,2CAGlB,GAAIwvD,EAAiB56C,QAAS,CAC5B,MAAQ5N,EAAAA,EAAGL,EAAAA,GAAM6oD,EAAiB56C,QAElC,GAAmB,OAAf+6C,EACF,OAEI,MAAA/P,EAAOsS,EAAAA,mBAAmBlwC,EAAM/b,QAElC,GAAA4qD,EAAiBC,GAAY,CACzB,MAAAE,GAAgBhvC,EAAM9Z,QAAUvB,GAAKi5C,EAC3CmR,EAAgBC,EAAY,KACvB,CACC,MAAAS,GAAezvC,EAAM/Z,QAAUjB,GAAK44C,EAC1C4R,EAAkBC,EAAW,CAGpBxB,IACF9vD,SAAAyI,oBAAoB,UAAWi7B,EAAO,GAG5C,OAAAA,GAET,CAAC8rB,EAAYM,EAAYuB,EAAmBT,IAGxCoB,EAAezsD,EAAAA,YAClBorD,GACE9uC,IAIC,GAHAA,EAAMpW,iBACNoW,EAAMqqB,mBAEDsjB,EACG,MAAA,IAAI3vD,MAAM,2CAGlBwvD,EAAiB56C,QAAU,CACzB5N,EAAGgb,EAAM/Z,QACTtB,EAAGqb,EAAM9Z,SAEXwnD,EAAsBF,EAAiB56C,SACvCo7C,EAAwBc,GAExB3wD,SAASuI,iBAAiB,UAAWupD,EAAenB,KAExD,CAACnB,EAAYsC,IAiETG,EA9Dc1sD,EAAAA,YAAY,KAC9B,GAAIiqD,EAAY,CACR,MAAAn6C,OAAEA,QAAQD,EAAOomB,IAAAA,EAAA2B,KAAKA,GAC1BqyB,EAAWjrC,KAAKgX,wBACZkkB,EAAOsS,EAAAA,mBAAmBvC,EAAWjrC,MACrC2tC,EAAY,GACZzlB,EAAS,CACb7Q,OAAQ,CACNsuB,gBAAiB,OACjBzqC,OAAQ,aACRpK,OAAQ,GAAG68C,MACX/0B,KAAM,GAAGp9B,OAAOw9B,YAAcJ,MAC9B3B,IAAQz7B,OAAOu9B,YAAc9B,EAAMnmB,EAAS68C,EAAY,EAAnD,KACL98C,MAAO,GAAGA,OAEZooB,MAAO,CACL0sB,gBAAiB,OACjBzqC,OAAQ,aACRpK,OAAQ,GAAGA,MACX8nB,KAASp9B,OAAOw9B,YAAcJ,EAAO/nB,EAAQ88C,EAAY,EAAnD,KACN12B,IAAK,GAAGz7B,OAAOu9B,YAAc9B,MAC7BpmB,MAAO,GAAG88C,QAIRC,EAAY/C,EAAa36C,QA0BxB,OAxBHm7C,GAAqBN,GAAmB6C,IACtCzB,EAAiBd,IACnBnjB,EAAOmjB,GAAmBzyB,KAAO,GAC/Bp9B,OAAOw9B,YAAc40B,EAAUh1B,SAE1BsP,EAAAmjB,GAAmBp0B,IAAM,GAC9Bz7B,OAAOu9B,YAAcgyB,EAAgB9oD,EAAIi5C,MAEpChT,EAAAmjB,GAAmBv6C,OAAS,MACnCo3B,EAAOmjB,GAAmBx6C,MAAQ,GAAG+8C,EAAU/8C,YAE/Cq3B,EAAOmjB,GAAmBp0B,IAAM,GAC9Bz7B,OAAOu9B,YAAc60B,EAAU32B,QAE1BiR,EAAAmjB,GAAmBzyB,KAAO,GAC/Bp9B,OAAOw9B,YAAc+xB,EAAgBzoD,EAAI44C,MAEpChT,EAAAmjB,GAAmBx6C,MAAQ,MAClCq3B,EAAOmjB,GAAmBv6C,OAAS,GAAG88C,EAAU98C,YAG3Co3B,EAAAmjB,GAAmB1F,gBAAkB,kDAGvCzd,CAAA,CAGF,MAAA,CACL7Q,OAAQ,KACRuB,KAAM,KACNK,MAAO,KACPhC,IAAK,OAEN,CAACg0B,EAAYI,EAAmBN,GAEb8C,GAGpB,SAAAnwD,IAAC,OAAI6S,IAAKq6C,EACP1uD,SAAc,UAASivD,GAEpB1qD,EAAA0K,KAAA0nB,EAAAA,SAAA,CAAA32B,SAAA,CAAAuE,EAAA/C,IAAC,MAAA,CACCiN,UAAU,gCACV6F,MAAOk9C,EAAcz0B,YAAS,EAC9B8yB,YAAa0B,EAAa,WAE5BhtD,EAAA/C,IAAC,MAAA,CACCiN,UAAU,gCACV6F,MAAOk9C,EAAcr2B,aAAU,EAC/B00B,YAAa0B,EAAa,gBAMtC,CAEO,SAASK,KACR,MAACpoD,GAAUC,IACXwgB,EAAaskC,MACZsD,EAASC,GAAcpvD,EAAAA,SAA6B,MAMpD,OAJPf,EAAAA,UAAU,KACRmwD,EAAWvyD,SAASsX,OACnB,IAEI5T,EAAAA,QACL,IACEgnB,GAAc4nC,EACVnnC,EAAAA,mBAAc8jC,GAAiB,CAAAhlD,WAAoBqoD,GACnD,KACN,CAACroD,EAAQygB,EAAY4nC,GAEzB,CC9YA,SAASE,IAA2B9f,WAClCA,IAIM,MAACzoC,GAAUC,IACXwgB,EAAaskC,MACZyD,EAAYC,GAAevvD,EAAAA,UAAkB,IAC7CwvD,EAAeC,GAAkBzvD,EAAAA,UAAkB,IACnD2vC,EAAuBC,GAC5B5vC,EAAAA,UAAkB,IACb0b,EAAUK,GAAe/b,EAAAA,SAAS,CAAA,GACnC0vD,EAAcj8C,EAAAA,OAAyB,IAAA/S,KACvCivD,EAAsBl8C,SAA2B,MAEjDs8B,EAAuB1B,GAC1B3vB,IACC,MAAMsxB,UAAEA,EAAA4f,aAAWA,GA2MzB,SAAsBlxC,GAIpB,MAAM/b,EAAS+b,EAAM/b,OAEjB,GAAAA,GAAUA,aAAkBkgC,YAAa,CAC3C,MAAM+sB,EAAejtD,EAAOmgC,QAC1B,wDAUK,MAAA,CAAEkN,YANP4f,GACAjtD,EAAOmgC,QAAqB,qCAC5BngC,EAAOmgC,QAAqB,wCAC5BngC,EAAOmgC,QAAqB,kCAGV8sB,eAAa,CAEjC,MAAO,CAAE5f,WAAW,EAAM4f,aAAc,KAE5C,CAjO0C3f,CAAavxB,GAEjD,GAAIsxB,EAGF,OAFAuf,GAAY,QACZE,GAAe,GAIjB,IAAKG,EACH,OAGFD,EAAoBr+C,QAAUs+C,EAE9B,IAAIC,EAAuC,KACvCC,EAA0C,KAC1CC,EAAsC,KAkC1C,GAhCAjpD,EAAO3I,OAAO,KACN,MAAA6xD,EAAiBhhB,6BAA2B4gB,GAE9C5J,GAAAA,EAAAA,iBAAiBgK,GAAiB,CACpC,MAAMC,EAAQt/B,EAAAA,oBAAoBq/B,EAAiB5rD,GACjD8rD,EAAAA,aAAa9rD,IAEX,IAAC8rD,EAAAA,aAAaD,GAChB,OAKF,GAFAF,EAAkBjpD,EAAOpE,gBAAgButD,GAAOrnD,UAE5CmnD,EAAiB,CACb,MAAAI,EAAWF,EAAMrK,kBACjBwK,EACHH,EAAoBv4B,gBAAgB,IACpCkuB,kBAEGyK,EAAW9G,qCAAmCyG,GAC9CM,EACJnG,wCAAsC6F,GAEpCK,IAAaF,EAAW,EACTN,EAAAG,EACRM,IAAaF,EAAW,IACbN,EAAAE,EACtB,CACF,IAIAD,EAAiB,CACb,MACJ99C,MAAOs+C,EACPltD,EAAGmtD,EACHn2B,MAAOo2B,EACPz2B,KAAM02B,EACNj4B,OAAQk4B,EACRz+C,OAAQ0+C,GACLb,EAAqC33B,yBAElC/0B,EAAG+sC,EAAapW,KAAM62B,GAC5BthB,EAAWnX,wBAETy3B,GACFJ,GAAe,GACfF,GAAY,GACAxzC,EAAA,CACV7J,OAtFY,GAuFZ8nB,KAAM02B,EAAgBG,EACtBx4B,IAAKs4B,EAAkBvgB,EAAc,EACrCn+B,MAAOs+C,KAEAT,IACTL,GAAe,GACfF,GAAY,GACAxzC,EAAA,CACV7J,OAAQ0+C,EACR52B,KAAMy2B,EAAiBI,EAAiB,EACxCx4B,IAAKm4B,EAAapgB,EAClBn+B,MAlGY,KAoGhB,GAGJ,GACA,KAKI6+C,EAAsBvwD,EAAAA,QAAQ,IAC3B,IAAIo6B,eAAe,KACxB40B,GAAY,GACZE,GAAe,KAEhB,IAEHxwD,EAAAA,UAAU,KACR,GAAK0wC,EAML,OAFS9yC,SAAAuI,iBAAiB,YAAa2qC,GAEhC,KACLwf,GAAY,GACZE,GAAe,GACf1f,EAAqBO,SACZzzC,SAAAyI,oBAAoB,YAAayqC,KAE3C,CAACJ,EAAuBI,IAE3B9wC,EAAAA,UAAU,IACDuJ,EAAAA,cACL1B,EAAOw0B,yBACLzZ,EAAAA,UACC0uB,IACQzpC,EAAA/E,iBAAiBC,KAAK,KAC3B,IAAA,MAAY2G,EAAK6C,KAASxK,MAAMC,KAAKsvC,GAAY,CACzC,MAAAwf,EAAkBjpD,EAAOpE,gBAAgBiG,GAC/C,OAAQ6C,GACN,IAAK,UACSkkD,EAAAp+C,QAAQ1Q,IAAI+H,GACCinC,EAAA8f,EAAYp+C,QAAQ5R,KAAO,GAChDqwD,GACFe,EAAoBh2B,QAAQi1B,GAE9B,MAEF,IAAK,YACSL,EAAAp+C,QAAQzQ,OAAO8H,GACFinC,EAAA8f,EAAYp+C,QAAQ5R,KAAO,GAEpDoxD,EAAoBC,aACRrB,EAAAp+C,QAAQsN,QAASoyC,IACrB,MAAA/I,EAAenhD,EAAOpE,gBAAgBsuD,GACxC/I,GACF6I,EAAoBh2B,QAAQmtB,KAOpC,KAIN,CAAEzsB,oBAAoB,KAGzB,CAAC10B,EAAQgqD,IAEN,MAAAG,EAAgBC,IACpBpqD,EAAO3I,OAAO,KACZ,GAAIwxD,EAAoBr+C,QAAS,CAC/B,MAAM6/C,EAAiBniB,EAAAA,2BACrB2gB,EAAoBr+C,SAEtB6/C,GAAgBz7B,YACZw7B,GAC4BrI,kCAC9B0G,GAAY,KAEqBxG,qCACjC0G,GAAe,GACjB,KAKN,OAAKloC,EAMA1lB,EAAA0K,KAAA0nB,WAAA,CAAA32B,SAAA,CACCgyD,GAAAztD,EAAA/C,IAAC,SAAA,CACCiN,UACE,4MAEF6F,MAAO,IAAK8J,GACZob,QAAS,IAAMm6B,GAAa,GAE5B3zD,WAAAwB,IAACo1B,EAAAA,SAAS,CAAAnoB,UAAU,cAGvByjD,GACC3tD,EAAA/C,IAAC,SAAA,CACCiN,UACE,+MAEF6F,MAAO,IAAK8J,GACZob,QAAS,IAAMm6B,GAAa,GAE5B3zD,WAAAwB,IAACo1B,EAAAA,SAAS,CAAAnoB,UAAU,iBAxBnB,IA6BX,CA0BO,SAASqlD,IAAwB7hB,WACtCA,IAIA,MAAMhoB,EAAaskC,KAEnB,OAAKtc,GAIEhoB,EACHS,EAAAA,mBACGqnC,IAA2B9f,eAC5BA,GANG,IASX,CC1RO,SAAS8hB,IAAc/zD,SAC5BA,IAMM,MAACwJ,GAAUC,KAEVkjB,EAAc80B,GAAmB/+C,EAAAA,SAAS8G,IAC1CqjB,EAAWC,GAAgBpqB,EAAAA,SAAiB,cAE5Cg0B,EAAO3J,GAAaoJ,KAgBzB,OAZFx0B,EAAAA,UAAU,IACDgrB,EAAaznB,gBAClBioB,EAAAA,yBACA,CAAC20B,EAAUC,KACTN,EAAgBM,IACT,GAETl2B,EAAAA,2BAED,CAACriB,IAGFjF,EAAA0K,KAAC+d,GAAA,CACCL,eACAC,eAhBmB,OAiBnBC,YACAC,eACAC,YAEC/sB,SAAA,CAAA02B,EAEA12B,EAAS,CAAE6sB,gBAIlB,CC7C6W,MAAMptB,GAAE,oBAAoBH,aAAQ,IAASA,OAAOC,eAAU,IAASD,OAAOC,SAASC,cAAcb,EAACorB,gBAAC/oB,YAA+nC,MAAM05B,GAAEh7B,aAAroC,UAAY8J,OAAO5K,EAAEo1D,qBAAqBr1D,EAAEs1D,iBAAiBjzD,EAAEkzD,aAAax0D,EAAEy0D,gBAAgB7zD,EAAE8zD,iBAAiBz0D,EAAE00D,aAAah1D,EAAEi1D,YAAY10D,EAAE20D,UAAU9zD,EAAE+zD,eAAe95B,EAAE+5B,cAAc30D,EAAE40D,SAAStuD,EAAEuuD,aAAaj0D,EAAEk0D,eAAehhD,EAAEnF,UAAU2c,EAAEnW,GAAGlP,EAAEk2C,KAAKtoC,EAAE,UAAUzE,WAAWuE,GAAE,EAAGa,MAAMvN,EAAEm1C,SAASpoC,EAAE,cAAc67B,KAAKzU,GAAGN,GAAG,MAAMzS,EAAE0sC,GAAGr2D,EAACkE,SAAC9D,EAAEqrB,cAActB,EAAElqB,cAAGE,IAAIA,GAAGA,EAAE8lC,eAAe9lC,EAAE8lC,cAAcD,YAAY5lC,EAAEk2D,eAAen2D,GAAGC,EAAEk2D,eAAe,OAAQ,CAACl2D,IAAIw8B,EAAEt8B,EAACmE,QAAE,IAAI,YAAYrE,GAAG,OAAOD,IAAIC,EAAE0iB,QAAS1iB,IAAgB,mBAAOA,EAAEA,EAAED,GAAG,MAAMC,IAAIA,EAAEoV,QAAQrV,KAAM,CAA7F,CAA+Fi8B,EAAEjS,GAAI,CAACA,EAAEiS,IAAW,OAAAn7B,GAAG,KAAKo1D,EAAEj2D,EAAEqrB,cAAcrrB,EAAEsrB,yBAA0BtrB,IAAIi2D,EAAEj2D,MAAQ,CAACA,IAAIqB,MAAE,MAAM,CAAC,wBAAwBkoB,EAAExpB,OAAE,EAAO,oBAAoBwpB,EAAEnnB,EAAE,OAAO,gBAAgBmnB,EAAEzoB,OAAE,EAAO,mBAAmBY,KAAK,MAAMX,EAAE,CAAC,oBAAoBA,GAAG,CAAE,EAAC,gBAAgBwoB,GAAG,aAAaxU,IAAItU,OAAE,KAAU,MAAMO,EAAE,CAAC,eAAeA,GAAG,CAAA,EAAG,aAAaa,EAAE,kBAAkBi6B,EAAE,iBAAiB56B,EAAE,YAAYqoB,EAAE/hB,OAAE,EAAO,iBAAiB+hB,QAAG,EAAO,gBAAgBznB,EAAEk0D,eAAehhD,EAAEnF,UAAU2c,EAAEjB,gBAAgBhC,EAAE,cAAcwnB,EAAE16B,GAAGlP,EAAEsO,IAAI+mB,EAAE6gB,KAAK9zB,EAAExU,OAAE,EAAOzE,WAAWuE,EAAEa,MAAMvN,EAAEm1C,SAASpoC,KAAKonB,GAAG,GAAc,SAASp7B,GAAElB,GAAUA,OAAAA,EAAE6F,iBAAiBC,KAAKrF,EAAAA,yBAAET,EAAEgqB,eAAe,CAAC,MAAMxiB,GAAE1G,EAAAA,WAAK,SAAWf,EAAEqC,GAAQ,MAACopB,YAAY1qB,KAAKlB,GAAGG,GAAGF,GAAGG,IAAI,OAAO0B,EAAC2O,KAACtP,WAAE,CAACK,SAAS,CAACC,MAAEy6B,GAAE,CAAClxB,OAAO/K,KAAKD,EAAE6V,IAAIrT,IAAI,MAAMtB,GAAGO,EAAAA,IAAE2T,GAAE,CAACpK,OAAO/K,EAAE6c,QAAQ5b,MAAM,GAAC,SAASkU,IAAG0H,QAAQ1c,EAAE4K,OAAOxI,IAAUtB,MAAAA,EAAE,SAASd,GAAQ,MAACD,EAAEqC,GAAGxC,EAAAA,SAAG,IAAIsB,GAAElB,IAAK,OAAOa,GAAG,KAAK,SAASd,IAAUA,MAAAA,EAAEmB,GAAElB,GAAGoC,EAAErC,EAAE,CAAC,OAAOA,IAAIiB,gBAAEhB,EAAEmD,uBAAwB,KAAKpD,MAAOC,EAAEsrB,yBAA0B,KAAKvrB,QAAU,CAACC,IAAID,CAAC,CAAvL,CAAyLqC,IAAIvC,EAAEK,GAAGN,EAAAA,SAAEwC,EAAEipB,cAAiBtrB,GAAAA,kBAAG,KAAKG,EAAEkC,EAAEipB,cAAcjpB,EAAEkpB,yBAA0BtrB,IAAIE,EAAEF,MAAQ,CAACoC,KAAKtB,EAAS,OAAA,KAAK,IAAIY,EAAE,KAAW,MAAA,mBAAmB1B,EAAE0B,EAAE1B,EAAEH,GAAG,OAAOG,IAAI0B,EAAE1B,GAAG,OAAO0B,EAAE,KAAKL,MAAE,MAAM,CAAC,eAAc,EAAGD,SAASM,GAAG,CCC3vE,SAASy0D,IACd3qC,YAAAA,EAAAA,UACA3b,EAAAumD,qBACAA,IAGE,OAAAzwD,EAAA/C,IAACyzD,GAAA,CACCxmD,UACEA,GACA,iOAEF,mBAAkB2b,EAClBA,YACE7lB,EAAA/C,IAAC,MAAA,CACCiN,UACEumD,GACA,0IAGDh1D,SAAAoqB,KAKX,CC7BO,MAAM8qC,WAA8BvgB,GAmBzC,WAAAnoC,CACEgL,EACAkL,GAcA3U,MAAMyJ,GAjCR/K,EAAA5F,KAAA,SAEA4F,EAAA5F,KAAA,QAEA4F,EAAA5F,KAAA,YAEA4F,EAAA5F,KAAA,oBAEA4F,EAAA5F,KAAA,YA0BEA,KAAK2Q,MAAQA,EACR3Q,KAAAk5B,SAAWrd,EAAQqd,UAAY,GACpCl5B,KAAKymB,KAAO5K,EAAQ4K,KACpBzmB,KAAKsuD,iBAAmBzyC,EAAQyyC,iBAChCtuD,KAAK62B,SAAWhb,EAAQgb,SAAS1X,KAAKnf,KAAI,ECvCvC,SAASuuD,IAAsBC,UACpCA,IAIA,OAAO,IAAIH,GAAsB,SAASG,IAAa,CACrD/nC,KAAO/oB,EAAA/C,IAAA8zD,GAAA,CAAWD,cAClBt1B,SAAU,CAAC,QAAS,UAAWs1B,GAC/B33B,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBrV,EAAAA,uBAAwBshD,IAErD,CAEA,SAASC,IAAWD,UAClBA,IAIA,OAAQA,GACN,IAAK,OACI,SAAA7zD,IAAC+zD,EAAcA,cAAA,CAAA9mD,UAAU,WAClC,IAAK,SACI,SAAAjN,IAACg0D,EAAgBA,gBAAA,CAAA/mD,UAAU,WACpC,IAAK,QACI,SAAAjN,IAACi0D,EAAeA,eAAA,CAAAhnD,UAAU,WACnC,IAAK,UACI,SAAAjN,IAACk0D,EAAiBA,iBAAA,CAAAjnD,UAAU,WAEzC,CC1BO,SAASknD,IACdl3D,EAAAA,IAIA,OAAO,IAAIy2D,GAAsB,WAAWz2D,IAAK,CAC/C6uB,KAAO/oB,EAAA/C,IAAAo0D,GAAA,CAAan3D,EAAAA,IACpBshC,SAAU,CAAC,UAAW,SAAU,IAAIthC,KACpCi/B,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBACduH,EAAAA,kBAAkBD,IACpBA,EAAA8rB,eAAe9rB,EAAW,IAAMysB,EAAAA,mBAAmB,IAAIx2B,SAIjE,CAEA,SAASm3D,IAAen3D,EAAAA,IACtB,OAAQA,GACN,KAAK,EACI,SAAA+C,IAACisB,EAAaA,aAAA,CAAAhf,UAAU,WACjC,KAAK,EACI,SAAAjN,IAACmsB,EAAaA,aAAA,CAAAlf,UAAU,WACjC,KAAK,EACI,SAAAjN,IAACqsB,EAAaA,aAAA,CAAApf,UAAU,WAErC,CChBgB,SAAAonD,IAAyB/hB,YAACA,IACxC,MAAMpxB,EAAwC,GAE9C,GAAmB,MAAfoxB,EACK,OAAApxB,EAGH,MAAAozC,EAAahiB,EAAYroC,MAAM,iCAErC,GAAmB,OAAfqqD,EAAqB,CACjB,MAAA3uB,EAAO2uB,EAAW,GAClBC,EAAaD,EAAW,GAC1B,CAACA,EAAW,IACZ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAIrqC,IAAIpe,QAEhCqV,EAAAvZ,QACH4sD,EAAWtqC,IACX4b,GACC,IAAI6tB,GAAsB,GAAG/tB,KAAQE,UAAiB,CACpD/Z,KAAM9rB,EAAAA,IAAC,IAAE,CAAAiN,UAAU,eACnBsxB,SAAU,CAAC,SACXrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBue,EAAsBA,qBAAA,CAAEN,UAASF,YAGlE,CAGK,OAAAzkB,CACT,CCtCO,SAASszC,IAAmBC,MACjCA,IAIA,MAAM51B,EAAcJ,GAAaxyB,KAC9Ba,GAAWA,EAAOJ,OAAS+nD,GAG9B,OAAO,IAAIf,GAAsB,SAAS70B,EAAYV,cAAe,CACnErS,KAAM+S,EAAY/S,KAClByS,SAAU,IAAIM,EAAYN,SAAU,SACpCrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBqY,GAAsBpB,EAAYnyB,OAE/D,CCxBA,MAAegoD,GAAA,CACb,CACEC,YAAa,gBACb1b,MAAO,KACP2b,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,8BACbC,SAAU,oBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QAAS,MAAO,QACvBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kCACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QAAS,MAAO,QAAS,WAChCk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,oBACVtb,QAAS,CAAC,WAAY,aACtB34C,KAAM,CAAC,QAAS,QAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,MAAO,YACdk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,oBACVtb,QAAS,CAAC,kCACV34C,KAAM,CAAC,QACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,oBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,oBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,oBACVtb,QAAS,CAAC,gCACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,6BACbC,SAAU,oBACVtb,QAAS,CAAC,gCACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,QAAS,UAChBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UAAW,SAClBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,oBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,UAAW,QAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,SACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,OAAQ,OACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,yBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,0BACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,OAAQ,OAAQ,aACvBk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,OAAQ,QACfk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,QAAS,QAChBk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OAAQ,YACfk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WAAY,OACnBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,cAAe,YACtBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,WAAY,YAAa,OAChCk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,UAAW,cAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,QAAS,QAChBk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,oBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SAAU,UAAW,QAC5Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,yBACV34C,KAAM,CAAC,OAAQ,QAAS,WACxBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,MAAO,QACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,MAAO,MAAO,WACrBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,oBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SAAU,WACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,cACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,OAAQ,QAClB34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,MAAO,WACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,6BACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QAAS,OAAQ,SACxBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,QAAS,QAAS,OAAQ,SACjCk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OAAQ,SAAU,UACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,oBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,SAAU,UACjBk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,SAAU,OAAQ,QAC5B34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,oBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,8BACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,MAAO,QACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,SAAU,QAAS,UAC1Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SAAU,OAAQ,QACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QAAS,YAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,cACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,oBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,oBACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,gBACbC,SAAU,oBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,oBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,oBACVtb,QAAS,CAAC,OAAQ,aAClB34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,oBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,OAAQ,OAAQ,QACvBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,OACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,oBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,oBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,UACP0b,YAAa,uBACbC,SAAU,oBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,qBACbC,SAAU,oBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,oBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,oBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,MACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,oCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,IACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,OAAQ,eAClB34C,KAAM,CAAC,WAAY,QACnBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UAAW,SAClBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,KACV34C,KAAM,CAAC,UAAW,SAClBk0D,gBAAiB,GACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,+BACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gCACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,6BACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,gBAAiB,MAC3B34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,+BACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,KAAM,YAChB34C,KAAM,CAAC,UAAW,MAClBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,KAAM,cAChB34C,KAAM,CAAC,aAAc,QACrBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,IACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,cAAe,QACzB34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,gBAAiB,YAAa,SACxC34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SAAU,YACjBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SAAU,OAAQ,QACzBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SAAU,YACjBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OAAQ,QAAS,SAAU,WAClCk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,OAAQ,QAAS,UACxBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,OAAQ,MAAO,SACtBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,WAAY,SAAU,OAC7Bk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBAAsB,gBAChC34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OAAQ,OAAQ,UACvBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,cAAe,UACzB34C,KAAM,CAAC,OAAQ,OAAQ,UACvBk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,gBAAiB,YAC3B34C,KAAM,CAAC,OAAQ,OAAQ,UACvBk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,sBAAuB,2BACjC34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,mBAAoB,aAC9B34C,KAAM,CAAC,eACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,qBAAsB,eAChC34C,KAAM,CAAC,eACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,UAAW,UAClBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UAAW,UAClBk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,UAAW,UAClBk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,cACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,SAAU,aACjBk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SAAU,aACjBk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,WACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,QACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,WACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,iBAAkB,OAC5B34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,MAAO,OACdk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,MAAO,OACdk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,MACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,2BACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,6BACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,QAAS,WAAY,WAC5Bk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,WAAY,WACnBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,kBAAmB,mBAC7B34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,WACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,MACbC,SAAU,gBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,UACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,YACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,OACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iCACbC,SAAU,gBACVtb,QAAS,CAAC,kCACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,8BACbC,SAAU,gBACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gCACbC,SAAU,gBACVtb,QAAS,CAAC,iCACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,8BACbC,SAAU,gBACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,2BACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,6BACbC,SAAU,gBACVtb,QAAS,CAAC,8BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,SAAU,WACpB34C,KAAM,CAAC,WAAY,UAAW,YAC9Bk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,WAAY,UAAW,YAC9Bk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,WAAY,UAAW,YAC9Bk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,gBAAiB,UAC3B34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,MACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,QACbC,SAAU,gBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,MACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,cACbC,SAAU,gBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,oBAAqB,kBAC/B34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,sBAAuB,oBACjC34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,MACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,MAAO,WACdk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,MAAO,WACdk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,SACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,MAAO,WACdk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,2BACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,kBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,eACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,2BACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,QACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,cACPk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,WACP0b,YAAa,uBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,2BACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,8BACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,yBACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,OACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,cACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,cACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,cACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,WACP0b,YAAa,gCACbC,SAAU,gBACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,OACbC,YAAY,GAEd,CACE9b,MAAO,WACP0b,YAAa,8BACbC,SAAU,gBACVtb,QAAS,CAAC,6BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,WACP0b,YAAa,kCACbC,SAAU,gBACVtb,QAAS,CAAC,iCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,MACbC,YAAY,GAEd,CACE9b,MAAO,KACP0b,YAAa,SACbC,SAAU,gBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OAAQ,UAAW,SAC1Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,WACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,2BACbC,SAAU,gBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,gCACbC,SAAU,gBACVtb,QAAS,CAAC,6BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,+BACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,iCACbC,SAAU,gBACVtb,QAAS,CAAC,8BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,WACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,WACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,8BACbC,SAAU,gBACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,6BACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,+BACbC,SAAU,gBACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,WACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,WACP0b,YAAa,6BACbC,SAAU,gBACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,kCACbC,SAAU,gBACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,iCACbC,SAAU,gBACVtb,QAAS,CAAC,8BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,cACP0b,YAAa,mCACbC,SAAU,gBACVtb,QAAS,CAAC,gCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,mBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,wBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,oBACbC,SAAU,gBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,yBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,0BACbC,SAAU,gBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,2BACbC,SAAU,gBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,WACP0b,YAAa,4BACbC,SAAU,gBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,gBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,gBACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,gBACVtb,QAAS,CAAC,uBACV34C,KAAM,CAAC,QAAS,QAAS,QACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,gBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,gBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,OAAQ,UACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,KACbC,SAAU,mBACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,mBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,mBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,QACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,OAAQ,cAClB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,gBACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,mBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,YACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,YACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,UAAW,WACrB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,mBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,MAAO,SACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,MAAO,YACjB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,mBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,SAAU,UACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,mBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,mBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,mBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,mBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,mBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,mBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,mBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,mBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,mBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,mBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,mBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,mBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,mBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,YAAa,SAAU,YACjC34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,eACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,eACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,eACVtb,QAAS,CAAC,uBACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,GACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,eACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,eACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,eACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,eACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OAAQ,YACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,eACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,eACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,QAAS,aAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,eACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SAAU,SAAU,eAC3Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,SAAU,YACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,eACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,eACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,eACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,eACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,eACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,4BACbC,SAAU,eACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,SAAU,UACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,eACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,eACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,eACVtb,QAAS,CAAC,QAAS,SACnB34C,KAAM,CAAC,MAAO,QACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,eACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,8BACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,QAAS,QAAS,iBACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,QAAS,QAAS,iBACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QAAS,QAAS,iBACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,QAAS,SAAU,iBAC1Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,sBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,wBACbC,SAAU,kBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,kBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,kBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,kBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,MAAO,WACjB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,kBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,MAAO,aACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,0BACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,OAAQ,YAClB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,QAAS,SAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OAAQ,UACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,OACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,0BACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,QACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,kBACVtb,QAAS,CAAC,OAAQ,uBAClB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,kBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,kBACVtb,QAAS,CAAC,gCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,cACbC,SAAU,kBACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,WACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,kBACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,mBACbC,SAAU,kBACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,UAAW,SAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,kBACVtb,QAAS,CAAC,iCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,yBACbC,SAAU,kBACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,wBACbC,SAAU,kBACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,MACbC,SAAU,kBACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,kBACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,UAAW,QAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,kBACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,2BACbC,SAAU,kBACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,kBACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,eACbC,SAAU,kBACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,YAAa,WACpBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,kBACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SAAU,OAAQ,WACzBk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,SAAU,aACjBk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,uBACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,kBACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,kBACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,kBACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,aACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WAAY,eACnBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,aACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,aACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QAAS,YAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UAAW,WAAY,aAC9Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,oBACbC,SAAU,aACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QAAS,UAAW,UAC3Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,OAAQ,UACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,cACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,aACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,aACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,aACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,aACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,aACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,aACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,aACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,2BACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,aACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,aACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,aACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OAAQ,aACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,OAAQ,aAAc,WAC7Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OAAQ,YACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,aACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,aACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,aACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,aACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,aACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,aACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,aACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,UAAW,SAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,aACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,aACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,aACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,aACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QAAS,UAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,QAAS,UACnB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,YAAa,QACvB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UAAW,QAAS,WAC3Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OAAQ,QAAS,SACxBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,MAAO,UACdk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,YAAa,UAAW,aAAc,cAC7Ck0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UAAW,WAAY,WAC9Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QAAS,UAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,gBACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,QAAS,gBAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SAAU,OACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,QAAS,aAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,aAAc,UACrBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OAAQ,YACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QAAS,aACnB34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,CAAC,QAAS,QAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UAAW,UAClBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SAAU,QACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,kBAAmB,WAC7B34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,UACVtb,QAAS,CAAC,kCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OAAQ,aAClB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,gBACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SAAU,SACjBk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,QAAS,UACnB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kCACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mCACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,OAAQ,UAClB34C,KAAM,CAAC,WAAY,QACnBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WAAY,YACnBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,4BACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,8BACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,QAAS,WAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,OACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WAAY,WACnBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,OAAQ,YACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,QAAS,UAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,UAAW,aAAc,eAChCk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SAAU,WAAY,UAC7Bk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,SAAU,YACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,MACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,MACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,UACPk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,aACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,CAAC,iBACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SAAU,YACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,QAAS,aAChBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,UACVtb,QAAS,CAAC,6BACV34C,KAAM,CAAC,UACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iCACbC,SAAU,UACVtb,QAAS,CAAC,2BACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,KACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,MACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,6BACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,CAAC,OAAQ,SACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,CAAC,OAAQ,OACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,OACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,QACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,SACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,cAAe,0BACzB34C,KAAM,CAAC,QACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,mBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,cAAe,SACtBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,KACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,KACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,oBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,UACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,aACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,UACPk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,YACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,KACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,KACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,KACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,wBACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,OACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,WACbC,SAAU,UACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,OACV34C,KAAM,CAAC,OAAQ,aACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,YACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,yBACbC,SAAU,UACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,mCACbC,SAAU,UACVtb,QAAS,CAAC,MACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,mCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,6BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,6BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,mCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,oCACbC,SAAU,UACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,2BACbC,SAAU,UACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sCACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,+BACbC,SAAU,UACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,UACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,cACbC,SAAU,UACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,UACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,IACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,6BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,IACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,6BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,GACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,uBACbC,SAAU,UACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,0BACbC,SAAU,UACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,4BACbC,SAAU,UACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,qBACbC,SAAU,UACVtb,QAAS,CAAC,mCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,eACbC,SAAU,UACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,sBACbC,SAAU,UACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,CAAC,YAAa,UACpBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,KACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,MACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,SACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,QAEf,CACE7b,MAAO,SACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,QACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,6BACbC,SAAU,QACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,0BACbC,SAAU,QACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,6BACbC,SAAU,QACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,8BACbC,SAAU,QACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gCACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,CAAC,WACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iCACbC,SAAU,QACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,4BACbC,SAAU,QACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,0BACbC,SAAU,QACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,2BACbC,SAAU,QACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,KAAM,kBAChB34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SAAU,UACjBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,KAAM,MAChB34C,KAAM,CAAC,OAAQ,WACfk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,0BACbC,SAAU,QACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,+CACbC,SAAU,QACVtb,QAAS,CAAC,wCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,4BACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iCACbC,SAAU,QACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uCACbC,SAAU,QACVtb,QAAS,CAAC,kCACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,0BACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,CAAC,SACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iCACbC,SAAU,QACVtb,QAAS,CAAC,4BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,8BACbC,SAAU,QACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gCACbC,SAAU,QACVtb,QAAS,CAAC,2BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,6BACbC,SAAU,QACVtb,QAAS,CAAC,sBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,4BACbC,SAAU,QACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,yBACbC,SAAU,QACVtb,QAAS,CAAC,oBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,+BACbC,SAAU,QACVtb,QAAS,CAAC,wBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oCACbC,SAAU,QACVtb,QAAS,CAAC,+BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,aACbC,SAAU,QACVtb,QAAS,CAAC,QACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,oBACbC,SAAU,QACVtb,QAAS,CAAC,eACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,UACPk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,0BACbC,SAAU,QACVtb,QAAS,CAAC,mBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,8BACbC,SAAU,QACVtb,QAAS,CAAC,uBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,uBACbC,SAAU,QACVtb,QAAS,CAAC,kBACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,OACP0b,YAAa,sBACbC,SAAU,QACVtb,QAAS,CAAC,MACV34C,KAAM,CAAC,OAAQ,SAAU,WACzBk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,mBACbC,SAAU,QACVtb,QAAS,CAAC,cACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iCACbC,SAAU,QACVtb,QAAS,CAAC,yBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,kBACbC,SAAU,QACVtb,QAAS,CAAC,aACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,+BACbC,SAAU,QACVtb,QAAS,CAAC,0BACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,4BACbC,SAAU,QACVtb,QAAS,CAAC,qBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,wBACbC,SAAU,QACVtb,QAAS,CAAC,iBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,qBACbC,SAAU,QACVtb,QAAS,CAAC,gBACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,eACbC,SAAU,QACVtb,QAAS,CAAC,UACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,OACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,MACjBC,YAAa,OAEf,CACE7b,MAAO,iBACP0b,YAAa,gBACbC,SAAU,QACVtb,QAAS,CAAC,WACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,iBACP0b,YAAa,iBACbC,SAAU,QACVtb,QAAS,CAAC,YACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,QAEf,CACE7b,MAAO,iBACP0b,YAAa,cACbC,SAAU,QACVtb,QAAS,CAAC,SACV34C,KAAM,GACNk0D,gBAAiB,OACjBC,YAAa,kHCltgBJE,GAA8B,CACzC9sC,aAAc,GACdC,OAAQ,IAAM,KACd8sC,aAAc,iBACd7sC,OAAQ,iBACRvhB,QAAS,CAACuC,GAAa,CAAA8/B,MACf,MAAA+P,EAAQyb,GAAUzoD,KAAM7O,GAAMA,EAAEk8C,QAAQyL,SAAS7b,KAAQ+P,MAC3DA,GACO7vC,EAAAvC,QAAQwC,kBAAgB4vC,KAGrCic,QAAS,IACTxoD,KAAM,cCTKyoD,GAAiC,CAC5CjtC,aAAc,CAACvQ,IACfwQ,OAAS7iB,GACFuT,GAAgBvT,GAId,IAAIA,EAAKwS,iBAHP,KAKXm9C,aAAc,eACd7sC,OAAQ,gBACRvhB,QAAS,CAACuC,EAAUa,KACZ,MAAA,CAAGsN,GAAYtN,EACf2O,EAAelB,GAAoBH,GAAU,GACnDnO,EAASvC,QAAQ+R,IAEnBs8C,QAAS,IACTxoD,KAAM,cCjBK0oD,GAAyB,CACpCltC,aAAc,CAAC9E,IACf+E,OAAS7iB,GACA+vD,GAAsB/vD,GAAQ,MAAQ,KAE/C8iB,OAAQ,wBACRvhB,QAAS,CAACkd,EAAYuxC,EAAIC,EAAIC,KAC5B,MAAMC,EAAOC,KAGTF,GAA2C,MAA/BzxC,EAAWzS,iBACzByS,EAAWld,QAAQ4uD,GAEnB1xC,EAAWhT,aAAa0kD,GAG1BA,EAAKnsD,cAEPoD,KAAM,WCtBKipD,GAA8B,CACzCztC,aAAc,CAAC/M,IACfgN,OAAS7iB,GACFgX,GAAahX,GAIX,KAAKA,EAAKyW,iBAAiBzW,EAAK2W,YAH9B,KAKXg5C,aAAc,kCACd7sC,OAAQ,mCACRvhB,QAAS,CAACuC,EAAUa,KAClB,MAAS,CAAAgR,EAAS5H,GAAOpJ,EACnB23B,EAAY1mB,GAAiB,CACjCD,UACAG,SAAU,IACV/H,QAEFjK,EAASvC,QAAQ+6B,IAEnBszB,QAAS,IACTxoD,KAAM,cCjBKkpD,GAA4B,CACvC1tC,aAAc,CAACxS,IACfyS,OAAS7iB,G/IwMJ,SACLA,GAEA,OAAOA,aAAgBoQ,EACzB,C+I3MSmgD,CAAavwD,GAIX,cAAcA,EAAKsO,cAHjB,KAKXwU,OAAQ,iCACRvhB,QAAS,CAACuC,EAAUksD,EAAIrrD,KAChB,MAAA,CAAGwJ,GAAMxJ,EACT6zB,EAAY1pB,GAAiBX,GACnCrK,EAASvC,QAAQi3B,IAEnBpxB,KAAM,WCQFopD,GAAoB,wBACpBC,GAA4B,yBAE5BC,GAA8B,CAClCZ,GACAO,GACAX,GACAG,GACAS,GACAK,EAAAA,cACGC,EAAAA,wBACAC,EAAAA,kCACAC,EAAAA,4BACAC,EAAAA,yBAGQC,GAA4B,CACvCpuC,aAAc,CAACnF,EAAAA,UAAWE,EAAAA,aAAcD,iBACxCmF,OAAS7iB,IACH,IAAC8rD,EAAAA,aAAa9rD,GACT,OAAA,KAGT,MAAM8S,EAAmB,GAEd,IAAA,MAAA4tB,KAAO1gC,EAAK2wB,cAAe,CACpC,MAAMsgC,EAAY,GACd,IAAC3L,EAAAA,gBAAgB5kB,GACnB,SAGF,IAAIwwB,GAAc,EACP,IAAA,MAAA3P,KAAQ7gB,EAAI/P,cAEjBixB,EAAAA,iBAAiBL,KACT0P,EAAA5uD,KACR8uD,2BAAyBT,GAA6BnP,GAAMhgD,QAC1D,MACA,QAGAggD,EAAKiF,gBAAkBf,EAAAA,sBAAsBC,MACjCwL,GAAA,IAKpBp+C,EAAOzQ,KAAK,KAAK4uD,EAAUzuD,KAAK,YAC5B0uD,GACKp+C,EAAAzQ,KAAK,KAAK4uD,EAAUtsC,IAAK9Y,GAAM,OAAOrJ,KAAK,WACpD,CAGK,OAAAsQ,EAAOtQ,KAAK,OAErBsgB,OAAQ0tC,GACRjvD,QAAS,CAACkd,EAAYuxC,EAAIrrD,KAExB,GAAI8rD,GAA0BhoD,KAAK9D,EAAM,IAAK,CACtCknD,MAAAA,EAAQptC,EAAWuS,qBACzB,IAAK66B,IAAUC,EAAAA,aAAaD,GAC1B,OAGIxrB,MAAAA,EAAOwrB,EAAMl7B,cACbygC,EAAU/wB,EAAKA,EAAK/9B,OAAS,GACnC,IAAK8uD,IAAY9L,EAAAA,gBAAgB8L,GAC/B,OAgBF,OAZAA,EAAQzgC,cAAcnW,QAAS+mC,IACxBK,EAAAA,iBAAiBL,IAGjBA,EAAAqE,gBACHH,EAAAA,sBAAsBC,IACtBD,wBAAsBC,YAK1BjnC,EAAW9a,QACX,CAGF,MAAM0tD,EAAaC,GAAgB3sD,EAAM,IAEzC,GAAkB,MAAd0sD,EACF,OAGI,MAAAhxB,EAAO,CAACgxB,GACV,IAAAE,EAAU9yC,EAAWuS,qBACrBwgC,EAAWH,EAAW/uD,OAE1B,KAAOivD,GACAnU,EAAAA,iBAAiBmU,IAIY,IAA9BA,EAAQ/P,mBALE,CASR,MAAAv1C,EAAaslD,EAAQrlD,gBAEvB,IAACnK,EAAAA,YAAYkK,GACf,MAGF,MAAMwlD,EAAQH,GAAgBrlD,EAAWtM,kBAEzC,GAAa,MAAT8xD,EACF,MAGFD,EAAWnwD,KAAKyjB,IAAI0sC,EAAUC,EAAMnvD,QACpC+9B,EAAKqxB,QAAQD,GACPj8C,MAAAA,EAAkB+7C,EAAQvgC,qBAChCugC,EAAQ5tD,SACE6R,EAAAA,CAAA,CAGNq2C,MAAAA,EAAQ8F,EAAAA,mBAEd,IAAA,MAAWF,KAASpxB,EAAM,CAClB,MAAAglB,EAAWuM,EAAAA,sBACjB/F,EAAM1zD,OAAOktD,GAEb,IAAA,IAASnrD,EAAI,EAAGA,EAAIs3D,EAAUt3D,IACnBmrD,EAAAltD,OAAO+B,EAAIu3D,EAAMnvD,OAASmvD,EAAMv3D,GAAK23D,GAAiB,IACjE,CAGI,MAAAr8C,EAAkBiJ,EAAWuS,qBAEjC86B,EAAAA,aAAat2C,IAcnB,SAA6Bq2C,GACrB,MAAAnrB,EAAMmrB,EAAM3/C,gBAClB,OAAOo5C,EAAgBA,gBAAA5kB,GAAOA,EAAI8gB,kBAAoB,CACxD,CAhBMsQ,CAAoBt8C,KAAqBg8C,GAEzCh8C,EAAgBrd,UAAU0zD,EAAMl7B,eAChClS,EAAW9a,UAEX8a,EAAWld,QAAQsqD,GAGrBA,EAAMv6B,aAERlqB,KAAM,WAQR,MAAMyqD,GAAoBr4C,IACVA,EAAAA,EAAYjY,QAAQ,OAAQ,MACpC,MAAAggD,EAAOwQ,EAAAA,qBAAqBtM,EAAAA,sBAAsBuM,WAEjD,oCADoBx4C,EAAak3C,GAA6BnP,GAC9DA,GAGH+P,GAAmB93C,IACjB,MAAA7U,EAAQ6U,EAAY7U,MAAM6rD,IAChC,OAAK7rD,GAAUA,EAAM,GAGdA,EAAM,GAAG8uB,MAAM,KAAK9O,IAAKxiB,GAAS0vD,GAAiB1vD,IAFjD,MC5EK,SAAA8vD,OACd,MAAOC,EAAoBC,GACzBv2D,EAAAA,SAAgC,MAShC,SAAAuM,KAAC,MAAI,CAAAR,UAAU,kEACbzO,SAAA,CAAAwB,EAAAA,IAACuyD,GACE,CAAA/zD,SAAA,EAAG6sB,eACStoB,EAAA0K,KAAC,MAAA,CACTR,UAAU,kVACVyqD,QAAUt6D,IACR,MAAMs4B,EAAYt4B,EAAE8sC,cACUxU,EAAUiiC,YAAcjiC,EAAUkiC,aACnCjxD,KAAKoE,IAAI3N,EAAEy6D,QAAUlxD,KAAKoE,IAAI3N,EAAE06D,UAC3D16D,EAAEoM,iBACFksB,EAAUqiC,YAAc36D,EAAEy6D,SAI/Br5D,SAAA,CAAAuE,EAAA/C,IAACusC,GAAqB,IACrBvsC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,qDAC3C0kB,GACC,CAAAnzB,SAAA,CAAAuE,EAAA/C,IAAC4zB,GAAgB,UAChBP,GAAc,CAAAC,OAAQ,CAAC,KAAM,KAAM,cACnCI,GAAmB,UACnBf,GAAmB,UACnBI,GAAgB,UAChBE,GAAgB,UAChBY,GAAY,CAAA,MAGA,SAAdxI,EACErrB,EAAAA,IAAAwnC,GAAA,CAA0B,GAGzBzkC,EAAA0K,KAAA0nB,WAAA,CAAA32B,SAAA,CAAAuE,EAAA/C,IAACkrC,GAAwB,UACxBe,GAAsB,IACtBjsC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,gDAC5CjN,IAAC4rC,GAAwB,CAAA95B,OAAO,WAChC9R,IAAC4rC,GAAwB,CAAA95B,OAAO,aAChC9R,IAAC4rC,GAAwB,CAAA95B,OAAO,gBAChC9R,IAAC4rC,GAAwB,CAAA95B,OAAO,wBAC/Bw0B,GAA6B,IAC7BtmC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,oDAC3C0gC,GAAsB,UACtBP,GAAkB,IAClBptC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,oDAC3C49B,GAAuB,UACvBV,GAA4B,IAC1BnqC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,oDAC7Co8B,GAA2B,IAC3BrpC,EAAAA,IAAA4qB,GAAA,CAAUE,YAAY,WAAW7d,UAAU,qDAC3CgoB,GACC,CAAAz2B,SAAA,CAAAuE,EAAA/C,IAACkgC,GAAqB,UACrB+E,GAAgB,UAChBhB,GAAY,UACZW,GAAkB,UAClB7N,GAA2B,UAC3BqP,GAAY,UACZZ,GAAW,UACXxM,GAAoB,UACpBgH,GAAa,CAAA,gBAO1BvyB,KAAC,MAAI,CAAAR,UAAU,qFACbzO,SAAA,CAAAuE,EAAA/C,IAACg4D,GAAgB,IACjBj1D,EAAA/C,IAACi4D,GAAA,CACCtvC,gBACG5lB,EAAA/C,IAAA,MAAA,CAAIiN,UAAU,wEACbzO,eAAC,MAAI,CAAAyO,UAAU,wEAAwE4F,IA3EpFqlD,IACe,OAAxBA,GACFT,EAAsBS,IA0EM15D,SAAAuE,EAAA/C,IAACuzD,GAAA,CACf3qC,YApFO,GAqFP3b,UAAU,6PAKpB4b,cAAesvC,WAGhBC,GAAoB,UACpBC,GAAgB,UAChBC,GAAqB,UACrBC,GAAY,UACZC,GAAW,UACXC,GAAqB,UACrBC,GAAc,UACdC,GAAc,UAEdrT,GAAe,UACfvgB,GAAgB,MACjB/kC,IAAC24C,GAAqB,CAAAlI,WAAY+mB,UACjC1U,GAAe,UACfjJ,GAAa,UACblY,GAAa,UACbgD,GAAkB,UAClB+Y,GAAiB,UACjB0S,GAAuB,MACxBpwD,IAACsyD,GAAwB,CAAA7hB,WAAY+mB,IACrCz0D,EAAA/C,IAAC8sD,GAAA,CACCrc,WAAY+mB,EACZhQ,WAAW,UAEZliB,GAAW,UACXnN,GAAa,UACbgjB,GAAgB,UAChB3lB,GAAkB,UAElBiK,GAAgB,UAChB/B,GAAY,UACZG,GAAc,UACdG,GAAc,UAEd4T,GAAoB,MACrB5xC,IAAC2xC,GAAqB,CAAAlB,WAAY+mB,IAElCz0D,EAAA/C,IAAC44D,GAAA,CACCvwC,aAAc,CACZiuC,GACAlB,GACAO,GACAX,GACAG,GACAS,GACAK,EAAAA,cACGC,EAAAA,wBACAC,EAAAA,kCACAC,EAAAA,4BACAC,EAAAA,iCAGNnQ,GAAe,UACfn+C,GAAmB,UACnBsnC,GAAe,UACfiU,GAAW,IAEZvgD,EAAA/C,IAACmyC,GAAA,CACCC,YAAa,CCrQd,IAAIshB,GAAsB,YAAa,CAC5C5nC,OAAM9rB,IAAC+rB,EAAAA,SAAS,CAAA9e,UAAU,WAC1BsxB,SAAU,CAAC,SAAU,YAAa,IAAK,QACvCrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBACduH,EAAAA,kBAAkBD,IACL8rB,iBAAA9rB,EAAW,IAAM2K,EAAAA,4BDgQ9BwiD,GAAoB,CAAEl3D,EAAG,IACzBk3D,GAAoB,CAAEl3D,EAAG,IACzBk3D,GAAoB,CAAEl3D,EAAG,ITzQ5B,IAAIy2D,GAAsB,QAAS,CACxC5nC,OAAM9rB,IAACqmC,EAAAA,UAAU,CAAAp5B,UAAU,WAC3BsxB,SAAU,CAAC,QAAS,OAAQ,cAAe,OAAQ,WACnDrC,SAAU,CAAC/qB,EAAGnJ,EAAQujB,IACpBA,EAAU,eAAiBuJ,GACxB90B,EAAAA,IAAA0lC,GAAA,CAAkBva,aAAcnjB,EAAQ8sB,eWNxC,IAAI4+B,GAAsB,aAAc,CAC7C5nC,OAAM9rB,IAAC2sB,EAAAA,aAAa,CAAA1f,UAAU,WAC9BsxB,SAAU,CAAC,aAAc,aACzBrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBoL,EAAAA,+BAA2B,KCJ/C,IAAI0gC,GAAsB,gBAAiB,CAChD5nC,OAAM9rB,IAACusB,EAAAA,gBAAgB,CAAAtf,UAAU,WACjCsxB,SAAU,CAAC,gBAAiB,eAAgB,MAC5CrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgB+L,EAAAA,iCAA6B,KCHjD,IAAI+/B,GAAsB,gBAAiB,CAChD5nC,OAAM9rB,IAACysB,EAAAA,SAAS,CAAAxf,UAAU,WAC1BsxB,SAAU,CAAC,gBAAiB,iBAAkB,MAC9CrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBiL,EAAAA,mCAA+B,KCHnD,IAAI6gC,GAAsB,QAAS,CACxC5nC,OAAM9rB,IAAC+sB,EAAAA,UAAU,CAAA9f,UAAU,WAC3BsxB,SAAU,CAAC,eACXrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBACduH,EAAAA,kBAAkBD,IACL8rB,iBAAA9rB,EAAW,IAAM8sB,EAAAA,wBCNjC,IAAI4/B,GAAsB,OAAQ,CACvC5nC,OAAM9rB,IAAC6sB,EAAAA,SAAS,CAAA5f,UAAU,WAC1BsxB,SAAU,CAAC,aAAc,SAAU,KAAM,aACzCrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO3I,OAAO,KACN2H,MAAAA,EAAYtH,EAAAA,gBAEduH,GAAAA,EAAAA,kBAAkBD,GAChBA,GAAAA,EAAUE,cACG4rB,iBAAA9rB,EAAW,IAAMksB,EAAAA,uBAC3B,CAEC,MAAApU,EAAc9X,EAAU/B,iBACxBkuB,EAAWD,EAAAA,kBACPE,EAAA7oB,YAAY,CAAC4oB,IACvBnsB,EAAU0iB,cAAc5K,EAAW,MClBtC,IAAI40C,GAAsB,UAAW,CAC1C5nC,OAAM9rB,IAAC64D,EAAAA,UAAU,CAAA5rD,UAAU,WAC3BsxB,SAAU,CAAC,kBAAmB,UAAW,MACzCrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgBuY,QAAgC,KCJpD,IAAIuzB,GAAsB,aAAc,CAC7C5nC,OAAM9rB,IAACogC,EAAAA,aAAa,CAAAnzB,UAAU,WAC9BsxB,SAAU,CAAC,aAAc,WACzBrC,SAAU,CAAC/qB,EAAGnJ,IAAWA,EAAO4f,gBAAgBkd,QAAmB,KCF9D,IAAI4uB,GAAsB,OAAQ,CACvC5nC,OAAM9rB,IAACylC,EAAAA,eAAe,CAAAx4B,UAAU,WAChCsxB,SAAU,CAAC,OAAQ,QACnBrC,SAAU,CAAC/qB,EAAGnJ,EAAQujB,IACpBA,EAAU,cAAgBuJ,GACvB90B,EAAAA,IAAAolC,GAAA,CAAiBja,aAAcnjB,EAAQ8sB,eT8QpC0/B,GAAmB,CAAEC,MAAO,UAC5BD,GAAmB,CAAEC,MAAO,UAC5BD,GAAmB,CAAEC,MAAO,kBUrR/B,IAAIf,GAAsB,WAAY,CAC3C5nC,OAAM9rB,IAAC84D,EAAAA,SAAS,CAAA7rD,UAAU,WAC1BsxB,SAAU,CAAC,WAAY,QAAS,QAChCrC,SAAU,CAAC/qB,EAAGnJ,EAAQujB,IACpBA,EAAU,kBAAoBuJ,GAC3B90B,EAAAA,IAAAi7C,GAAA,CAAqB9vB,aAAcnjB,EAAQ8sB,eCJ3C,IAAI4+B,GAAsB,QAAS,CACxC5nC,OAAM9rB,IAACkkC,EAAAA,UAAU,CAAAj3B,UAAU,WAC3BsxB,SAAU,CAAC,QAAS,QAAS,UAAW,QACxCrC,SAAU,CAAC/qB,EAAGnJ,EAAQujB,IACpBA,EAAU,eAAiBuJ,GACxB90B,EAAAA,IAAAuhC,GAAA,CAAkBpW,aAAcnjB,EAAQ8sB,eCPxC,IAAI4+B,GAAsB,cAAe,CAC9C5nC,OAAM9rB,IAAC+4D,EAAAA,iBAAiB,CAAA9rD,UAAU,WAClCsxB,SAAU,CAAC,WAAY,cAAe,UACtCrC,SAAU,CAAC/qB,EAAGnJ,IACZA,EAAO4f,gBAAgB0N,QAA4B,KCHhD,IAAIo+B,GAAsB,iBAAkB,CACjD5nC,OAAM9rB,IAACi5B,EAAAA,aAAa,CAAAhsB,UAAU,WAC9BsxB,SAAU,CAAC,UAAW,SAAU,QAChCrC,SAAU,CAAC/qB,EAAGnJ,EAAQujB,IACpBA,EAAU,wBAA0BuJ,GACjC90B,EAAAA,IAAA03B,GAAA,CAAmBvM,aAAcnjB,EAAQ8sB,ebqRtC8+B,GAAsB,CAAEC,UAAW,SACnCD,GAAsB,CAAEC,UAAW,WACnCD,GAAsB,CAAEC,UAAW,UACnCD,GAAsB,CAAEC,UAAW,aAErCxhB,iBAAkBgiB,WAGnBjhB,GAAkB,UAClB4B,GAAoB,UACpBkE,GAAkB,MAEnBl5C,IAACggD,GAAyB,CAAAvP,WAAY+mB,MACtCx3D,IAACgiD,GAAgC,CAAAvR,WAAY+mB,UAE5CvT,GAAyB,CAAA,QA0ClC,Cc9TA,MAAM+U,GAAkC,CACtCr6D,UAAW,SACXD,MC5B6C,CAC7Cu6D,IAAK,YACLC,IAAK,aACLC,QAAS,CACPntC,GAAI,iEACJE,GAAI,6EACJE,GAAI,oDACJgtC,GAAI,mDACJC,GAAI,mDACJC,GAAI,sDAEN5nD,UAAW,uCACXob,MAAO,8BACPotB,KAAM,qFACNqf,KAAM,CACJC,UAAW,WACXC,SAAU,OACVC,gBACE,kmBACFC,kBACE,oQACFC,OAAQ,CACNH,SAAU,wCAEZI,GAAI,qCACJC,QAAS,CACP,6BACA,mCACA,mCACA,mCACA,oCAEFC,GAAI,wBAENC,QAAS,6FACTvyD,KAAM,CACJ+jC,KAAM,YACN5e,KAAM,sDACN6e,OAAQ,SACRE,cAAe,eACfsuB,UAAW,MACXC,YAAa,MACbxuB,UAAW,YACXyuB,uBAAwB,0BAE1BtgD,MAAO,qEACPuD,YACE,4EACFQ,QAAS,mDACTgP,KAAM,+HACNwtC,cAAe,CACbC,OAAQ,yCACRC,KAAM,yCACNC,QAAS,sCACTC,QAAS,wCACTC,MAAO,uCACPC,KAAM,wCACNC,MAAO,uCACP,aAAc,uCACdC,QAAS,uCACTC,SAAU,sCACVC,QAAS,sCACTC,QAAS,uCACTC,OAAQ,yCACRC,SAAU,uCACVC,UAAW,yCACXC,SAAU,wCACVv9C,QAAS,yCACTjf,UAAW,yCACX2tB,OAAQ,sCACR8uC,SAAU,yCACVC,OAAQ,uCACRC,SAAU,sCACVC,YAAa,0CACb7oB,MAAO,yCACP8oB,SAAU,wCACV7W,OAAQ,wCACR8W,OAAQ,sCACRp9D,IAAK,sCACLmgC,IAAK,yCACLk9B,SAAU,0CAEZC,eAAgB,wDAChBxK,MAAO,2DACPlG,UACE,4HACF2Q,sBACE,4JACFC,+BACE,0FACFC,iBAAkB,qDAClBC,gBACE,kKACFC,yBACE,wLACFC,iBACE,yFACFC,kBAAmB,qEACnBC,yBACE,iIACFC,iBACE,kHACFC,iBACE,0FACFC,cAAe,uFACfC,eAAgB,6CAChB79C,WAAY,iCACZP,gBAAiB,2BACjBjR,aAAc,uCACdsvD,YAAa,GACbvoD,WAAY,CACVxB,KAAM,mBACNC,MAAO,6DAEThO,GAAI,iPACJ+3D,OAAQ,qCACRC,KAAM,GACNC,YAAa,IDxFb/9D,SACAC,QAAUsW,IACR7M,QAAQ6M,MAAMA,KAIlB,SAASynD,IAAO79D,YACdA,EAAA89D,sBACAA,EAAAv8D,SACAA,EAAAw8D,mBACAA,EAAAC,aACAA,EACAn0C,YAAAA,EAAAA,UACA3b,IAGE,SAAAjN,IAAC,MAAI,CAAAiN,UAAU,4IACbzO,SAAAuE,EAAA/C,IAACg9D,GAAA,CACCz+D,cAAe,IACVy6D,MACCj6D,EAAc,CAAEA,eAAgB,CAAC,KACjC89D,EACA,CAAE99D,YAAaqiB,KAAKiB,UAAUw6C,IAC9B,CAAA,GAGNr+D,SAACwB,EAAAA,IAAA4C,GAAA,CACCpE,SAACwB,EAAAA,IAAAuB,GAAA,CACC/C,gBAACyC,GACC,CAAAzC,SAAA,CAAAuE,EAAA/C,IAACu3D,GAAQ,IACRwF,IACC/8D,IAACi9D,GAAiB,CAAA38D,SAAUy8D,IAC1B,KACJh6D,EAAA/C,IAACk9D,GAAA,CACC78D,uBAAuB,EACvBC,SAAWvB,IACTuB,IAAWvB,GACUA,IAAAA,EAAYid,uBASnD,CAEA,SAASihD,IAAiB38D,SAAEA,IACpB,MAAC0H,GAAUC,IASV,OAPPD,EAAOzH,uBAAuB,KAC5ByH,EAAO3I,OAAO,KACNL,MAAAA,EAAOm+D,yBAAuBn1D,GACpC1H,EAAStB,OAIN,IACT,CAGIo+D,QAAAA,mBAA0B,KA8BR,oBAAXt/D,QA3BXkX,iBACE,GAAsB,oBAAXlX,QAAoD,oBAAnBu/D,eACtC,IACI,MAAAC,QAAaC,OAAO,gCACpBC,EAAeF,EAAKj1B,SAAWi1B,EAErCG,QAAAL,mBAAqBI,EAAaZ,GAAQ,CACxC95D,MAAO,CACL/D,YAAa,OACb89D,sBAAuB,OACvBv8D,SAAU,WACVw8D,mBAAoB,WACpBC,aAAc,cAKbM,eAAep3D,IAAI,iBACPo3D,eAAAK,OAAO,eAAgBN,kCAEjCjoD,GACC7M,QAAAq1D,KAAK,kCAAmCxoD,EAAK,CAG3D,CAIqByoD,a3DpHkmK,UAAY18C,QAAQ9jB,EAAE01C,cAAc71C,EAAEg9B,eAAe38B,EAAE09B,OAAOh+B,EAAE83B,QAAQr2B,EAAEu7B,aAAax6B,EAAEuzC,UAAU9zC,EAAEg8B,gBAAgBrR,EAAEuQ,gBAAgB/nB,EAAEhU,EAAAA,qBAAE0zB,OAAOltB,EAAEw1B,mBAAmBhB,GAAE,IAAU,MAAC/R,GAAGlqB,KAAKk9B,EAAET,GAAG3nB,EAAC/Q,SAAC,MAAMoR,EAAE,SAASlV,EAAEH,EAAEK,EAAEN,GAAGkC,GAAEnB,SAASsX,UAAK,GAAQ5W,GAAE,GAAI,MAAMe,GAAGrC,IAAIiB,EAAEmG,EAAAA,OAAErF,GAAEnB,SAASC,cAAc,OAAO,MAAMH,EAAE0H,cAAG,KAAK,GAAG,OAAOnH,EAAEoU,cAAS,IAASxV,EAAE,OAAOoB,EAAEoU,QAAQM,MAAMymB,IAAIn7B,EAAEoU,QAAQM,MAAM6mB,OAAax8B,MAAAA,EAAEqC,EAAEG,iBAAiB1C,EAAEmB,EAAEoU,QAAQ3U,EAAEZ,EAAEsU,WAAc,GAAA,OAAOpU,GAAG,OAAOC,EAAE,CAAC,MAAM89B,KAAK17B,EAAE+5B,IAAIp7B,EAAEgV,MAAMjV,EAAEkV,OAAOtU,GAAG1B,EAAE+9B,UAAUl9B,EAAEG,EAAEoU,QAAQ4oB,aAAa,GAAGn+B,EAAE6V,MAAMymB,IAAI,GAAGp7B,EAAEF,EAAE,GAAGQ,EAAEX,OAAOu9B,YAAY,OAAOp+B,EAAE6V,MAAMooB,KAAK,GAAG17B,EAAE1B,OAAOw9B,gBAAgBr+B,EAAE6V,MAAMM,OAAO,GAAGtU,MAAM7B,EAAE6V,MAAMK,MAAM,GAAGjV,MAAM,OAAOL,EAAE,CAACA,EAAEiV,MAAMymB,IAAI,GAAGp7B,IAAI,MAAMf,EAAES,EAAEy7B,wBAAwBh8B,EAAEF,EAAEgW,OAAOpW,EAAEI,EAAE+V,MAAM/U,EAAEjB,EAAEm8B,wBAAwB95B,EAAExC,EAAEoB,EAAEm9B,QAAQt+B,EAAE6V,MAAMooB,KAAK,GAAG98B,EAAEm9B,MAAMv+B,EAAEc,OAAOw9B,kBAAkBn9B,EAAEb,EAAEQ,OAAO0P,aAAarP,EAAEb,EAAEc,EAAEu7B,SAASx7B,EAAEC,EAAEm7B,IAAIj8B,EAAEwB,IAAI7B,EAAE6V,MAAMymB,IAAI,GAAGp7B,EAAEb,EAAEwB,GAAGL,EAAEX,OAAOu9B,YAAY,OAAO,CAACp+B,EAAEu+B,cAActpB,GAAEjV,EAAEK,GAAGN,EAAES,OAAOR,IAAIA,EAAE4R,aAAa,KAAK,kBAAkBzQ,EAAEoU,QAAQvV,EAAEE,EAAE0R,aAAa,gBAAgB,iBAAiB,GAAI,CAACrP,EAAEpC,EAAEqB,EAAEnB,EAAEN,IAAIsB,EAAC6B,UAAE,KAAWhD,MAAAA,EAAEqC,EAAEG,iBAAiB,OAAO,OAAOvC,GAAGS,IAAI,KAAYV,OAAAA,GAAGA,EAAEiS,gBAAgB,iBAAiB,MAAMhS,EAAEgB,EAAEoU,QAAepV,OAAAA,GAAGA,EAAEo+B,cAAcp+B,EAAE6L,SAAS7L,EAAEgS,gBAAgB,SAAU,CAAC5P,EAAE3B,EAAET,IAAI,MAAMe,EAAEoH,EAAAA,YAAGpI,IAAWC,OAAAA,IAAID,GAAGF,EAAE,QAAS,CAACG,EAAEH,KAArxK,SAAWG,EAAEH,EAAEK,EAAEN,GAAQ,MAACyB,GAAGtB,IAAImB,EAAAA,UAAG,KAAQ,GAAA,MAAMrB,GAAG,MAAMG,EAAE,CAAOD,MAAAA,EAAEsB,EAAEkB,iBAAiBvC,EAAE,MAAMD,EAAE,SAASA,GAASF,IAAAA,EAAEic,iBAAiB/b,GAAG,MAAMG,EAAE,aAAaL,EAAE2f,SAAS5f,EAAE,gBAAgB,GAAG,UAAUC,EAAE2f,SAAS,OAAO7e,SAASsX,KAAajY,IAAAA,IAAAA,EAAED,EAAEC,EAAEA,EAAEwd,kBAAkB3d,EAAEic,iBAAiB9b,KAAKE,GAAG,WAAWL,EAAE2f,WAAW5f,EAAE+Q,KAAK9Q,EAAEw+B,SAASx+B,EAAEy+B,UAAUz+B,EAAE0+B,WAAkBv+B,OAAAA,EAAE,OAAOW,SAASsX,IAAI,CAApS,CAAsSlY,GAAGY,SAASsX,KAAK,IAAI7V,GAAE,EAAGpB,EAAEi8B,GAAEp9B,EAAEG,GAAG,MAAMS,EAAE,WAAW2B,IAAI1B,OAAO89B,sBAAuB,WAAWt+B,IAAIkC,GAAE,CAAE,GAAIA,GAAE,GAAUrC,MAAAA,EAAEk9B,GAAEp9B,EAAEG,GAAGD,IAAIiB,IAAIA,EAAEjB,EAAE,MAAMH,GAAGA,EAAEG,GAAG,EAAEgB,EAAE,IAAI09B,eAAev+B,GAAU,OAAAQ,OAAOwI,iBAAiB,SAAShJ,GAAGS,SAASuI,iBAAiB,SAASzI,EAAE,CAACi+B,SAAQ,EAAGC,SAAQ,IAAK59B,EAAE69B,QAAQ/+B,GAAG,KAAKkB,EAAE89B,UAAUh/B,GAAGa,OAAO0I,oBAAoB,SAASlJ,GAAGS,SAASyI,oBAAoB,SAAS3I,GAAE,GAAI,GAAI,CAACZ,EAAEwB,EAAEzB,EAAEM,EAAEF,GAAG,CAA2+Is8B,CAAEt8B,EAAEgB,EAAEoU,QAAQ3U,EAAEM,GAAG,MAAMD,EAAEE,EAAEoU,QAAe,OAAA,MAAMtU,IAAIgU,GAAEhU,EAAEZ,GAAG,MAAMN,GAAGA,EAAES,OAAOS,IAAIE,CAAC,CAAhuC,CAAkuCi8B,EAAET,EAAEhQ,EAAEhlB,GAAG21B,EAAEh1B,cAAG,KAAKq0B,EAAE,MAAM,MAAMn7B,GAAG,OAAO47B,GAAG57B,KAAM,CAACA,EAAE47B,IAAIlpB,EAAE5L,EAACjC,YAAEnG,IAAIy8B,EAAEz8B,GAAG,MAAMH,GAAG,OAAOq9B,GAAGr9B,EAAEG,IAAK,CAACH,EAAEq9B,IAAW/7B,OAAAA,EAAC6B,UAAE,KAAWhD,MAAAA,EAAEkqB,EAAE9mB,uBAAwB,KAAK8mB,EAAEpkB,iBAAiBC,KAAM,KAAK,IAAImkB,EAAEoB,aAAa,YAAY8R,IAAI,MAAMp9B,EAAEkqB,EAAEw2C,SAAS//D,OAAOV,EAAED,EAAEY,SAAS+/D,cAAcxgE,EAAEO,EAAAA,gBAAIb,EAAE,SAASG,GAAG,IAAIC,EAAE,KAAK,OAAOD,EAAE8F,iBAAiBC,KAAM,KAAW/F,MAAAA,EAAEU,kBAAIM,oBAAEhB,KAAKC,EAAE,SAASD,GAAG,MAAMC,EAAED,EAAEiK,OAAU,GAAA,SAAShK,EAAEsP,KAAY,OAAA,KAAWzP,MAAAA,EAAEG,EAAE4qB,UAAU,IAAI/qB,EAAEqK,eAAsB,OAAA,KAAK,MAAMhK,EAAEF,EAAE4pB,OAAO,OAAO/pB,EAAEgI,iBAAiBu1B,MAAM,EAAEl9B,EAAE,CAAtK,CAAwKH,MAAOC,CAAC,CAAjQ,CAAmQiqB,GAAG,IAAIlpB,EAAAA,kBAAEb,KAAKA,EAAE4J,eAAe,OAAOlK,GAAG,OAAOI,EAAE,YAAYm9B,IAAU97B,MAAAA,EAAEQ,EAAEjC,EAAEqqB,GAAMpqB,GAAAA,EAAEwB,EAAEA,EAAE67B,eAAe,MAAM,OAAO77B,IAAatB,EAAiKkqB,EAArJ,IAAuJ5oB,EAAEwzC,aAAlJ90C,EAAE8F,iBAAiBC,KAAM,KAAW/F,MAAAA,EAAEU,EAAAA,gBAAOM,GAAAA,oBAAEhB,GAAG,CAAC,MAAMC,EAAED,EAAEiK,OAAO4gB,UAAUsO,qBAAqB,OAAOx3B,cAAE1B,IAAIA,EAAEugB,cAAc,CAAO,OAAA,KAAuB,CAAC,MAAM1gB,EAAE,SAASE,EAAEC,EAAEH,GAASK,MAAAA,EAAEY,EAAAA,gBAAEjB,GAAG,GAAG,OAAOK,IAAIA,EAAE4J,qBAAqB,MAAMlK,EAAEM,EAAEs0B,WAAWnzB,EAAEtB,EAAEqC,EAAElC,EAAEygE,aAAa,GAAG,MAAM/gE,GAAG,MAAMwC,EAAU,OAAA,EAAI,IAACpC,EAAE4gE,SAAShhE,EAAEyB,GAAGrB,EAAE6gE,OAAOjhE,EAAEwC,EAAE,OAAOrC,GAAS,OAAA,CAAE,CAAO,OAAA,CAAE,CAArM,CAAuMsB,EAAEwzC,WAAW70C,EAAED,GAAM,GAAA,OAAOF,EAAE,OAAOuC,EAAE,IAAI2R,EAAE,CAACgqB,QAAQ,IAAI/9B,EAAEk8B,wBAAwBrvB,MAAMxL,SAAS0T,MAAKlU,EAAEA,EAAEkU,IAAG3S,GAAGA,IAAI,CAAhgB,IAASrC,EAA4fqC,EAAE+6B,QAAU,MAAM,KAAKp9B,MAAO,CAACkqB,EAAEpoB,EAAEhC,EAAEo9B,EAAEE,EAAEppB,IAAI7S,EAAAA,UAAG,IAAI+oB,EAAEqB,yBAA0BvrB,IAAIA,GAAGo9B,MAAQ,CAAClT,EAAEkT,IAAI,OAAOF,GAAG,OAAOhT,GAAG,OAAO/U,EAAEE,QAAQ,KAAK0mB,EAAAA,IAAEyB,GAAE,CAACd,MAAMU,EAAER,WAAWM,EAAEryB,OAAOqf,EAAEyS,iBAAiBxnB,EAAE4O,QAAQ9jB,EAAE48B,aAAax6B,EAAE06B,0BAAyB,EAAGD,eAAe38B,EAAE68B,gBAAgB/nB,EAAEgoB,mBAAmBhB,GAAG,uDhG4Lj/P,SACL9zB,GAEA,OAAOA,aAAgBkU,EACzB,4EQHO,SACLlU,GAEA,OAAOA,aAAgBgc,EACzB,kIqJhMO,SAAsBxe,GAC3B,MAAOo7D,EAAUC,GAAej9D,EAAAA,UAAS,GAOzC,OALAf,EAAAA,UAAU,KACRg+D,GAAY,IACX,IAGED,QAIGtB,GAAQ,IAAG95D,IAHV,IAIX,wH3Dd+4I,UAAYoe,QAAQ9jB,EAAEq3C,WAAWn3C,EAAEw3B,QAAQr2B,EAAEu8B,OAAOh+B,EAAEi9B,eAAez6B,EAAEw6B,aAAa57B,EAAE68B,gBAAgB98B,EAAEg8B,gBAAgBj8B,EAAEL,EAAC8M,qBAACmnB,OAAO7zB,IAAI,MAAMgB,GAAG9B,KAAKysB,EAAE1qB,GAAGqG,EAACrE,SAAC,MAAMk4B,EAAE96B,EAAEqW,OAAO,MAAM/P,EAAE,SAASxH,EAAEH,EAAEK,EAAEmB,GAAG0T,GAAEpU,SAASsX,UAAK,GAAQrY,GAAE,GAAI,MAAMwC,GAAGrC,IAAIiB,EAAEmG,EAACoQ,OAACxC,GAAEpU,SAASC,cAAc,OAAO,MAAMG,EAAEiU,cAAG,KAAK,GAAG,OAAOhU,EAAEoU,cAAS,IAAS/T,EAAE,OAAOL,EAAEoU,QAAQM,MAAMymB,IAAIn7B,EAAEoU,QAAQM,MAAM6mB,OAAax8B,MAAAA,EAAEqC,EAAEG,iBAAiB1C,EAAEmB,EAAEoU,QAAQrU,EAAElB,EAAEsU,WAAc,GAAA,OAAOpU,GAAG,OAAOC,EAAE,CAAC,MAAM89B,KAAK17B,EAAE+5B,IAAI17B,EAAEsV,MAAMjV,EAAEkV,OAAOnV,GAAGb,EAAE+9B,UAAUr8B,EAAEV,EAAEoU,QAAQ4oB,aAAa,GAAGn+B,EAAE6V,MAAMymB,IAAI,GAAG17B,EAAEiB,EAAE,GAAG9B,EAAEc,OAAOu9B,YAAY,OAAOp+B,EAAE6V,MAAMooB,KAAK,GAAG17B,EAAE1B,OAAOw9B,gBAAgBr+B,EAAE6V,MAAMM,OAAO,GAAGnV,MAAMhB,EAAE6V,MAAMK,MAAM,GAAGjV,MAAM,OAAOC,EAAE,CAACA,EAAE2U,MAAMymB,IAAI,GAAG17B,IAAI,MAAMT,EAAEe,EAAEm7B,wBAAwBh8B,EAAEF,EAAEgW,OAAO3U,EAAErB,EAAE+V,MAAM/U,EAAEjB,EAAEm8B,wBAAwB95B,EAAEf,EAAEL,EAAEm9B,QAAQt+B,EAAE6V,MAAMooB,KAAK,GAAG98B,EAAEm9B,MAAM98B,EAAEX,OAAOw9B,kBAAkBz9B,EAAEP,EAAEQ,OAAO0P,aAAa3P,EAAEP,EAAEc,EAAEu7B,SAAS97B,EAAEO,EAAEm7B,IAAIj8B,EAAEW,IAAIhB,EAAE6V,MAAMymB,IAAI,GAAG17B,EAAEP,EAAEW,GAAGjB,EAAEc,OAAOu9B,YAAY,OAAO,CAACp+B,EAAEu+B,cAAclpB,GAAErV,EAAEK,GAAGmB,EAAEhB,OAAOR,IAAIA,EAAE4R,aAAa,KAAK,kBAAkBzQ,EAAEoU,QAAQvV,EAAEE,EAAE0R,aAAa,gBAAgB,iBAAiB,GAAI,CAACrP,EAAEpC,EAAEJ,EAAEM,EAAEmB,IAAIwT,EAAAA,UAAG,KAAW9U,MAAAA,EAAEqC,EAAEG,iBAAiB,OAAO,OAAOvC,GAAGe,IAAI,KAAYhB,OAAAA,GAAGA,EAAEiS,gBAAgB,iBAAiB,MAAMhS,EAAEgB,EAAEoU,QAAepV,OAAAA,GAAGA,EAAEo+B,cAAcp+B,EAAE6L,SAAS7L,EAAEgS,gBAAgB,SAAU,CAAC5P,EAAErB,EAAEf,IAAI,MAAMS,EAAEuU,EAAC9O,YAAEnG,IAAWC,OAAAA,IAAID,GAAGF,EAAE,QAAS,CAACG,EAAEH,KAA3hJ,SAAWG,EAAEH,EAAEK,EAAEmB,GAAQ,MAACzB,GAAGG,IAAI8U,YAAG,KAAQ,GAAA,MAAMhV,GAAG,MAAMG,EAAE,CAAOD,MAAAA,EAAEH,EAAE2C,iBAAiBvC,EAAE,MAAMD,EAAE,SAASA,GAASF,IAAAA,EAAEic,iBAAiB/b,GAAG,MAAMG,EAAE,aAAaL,EAAE2f,SAASne,EAAE,gBAAgB,GAAG,UAAUxB,EAAE2f,SAAS,OAAO7e,SAASsX,KAAajY,IAAAA,IAAAA,EAAED,EAAEC,EAAEA,EAAEwd,kBAAkB3d,EAAEic,iBAAiB9b,KAAKE,GAAG,WAAWL,EAAE2f,WAAWne,EAAEsP,KAAK9Q,EAAEw+B,SAASx+B,EAAEy+B,UAAUz+B,EAAE0+B,WAAkBv+B,OAAAA,EAAE,OAAOW,SAASsX,IAAI,CAApS,CAAsSlY,GAAGY,SAASsX,KAAK,IAAI7V,GAAE,EAAGpB,EAAEi8B,GAAEp9B,EAAEG,GAAG,MAAMe,EAAE,WAAWqB,IAAI1B,OAAO89B,sBAAuB,WAAWt+B,IAAIkC,GAAE,CAAE,GAAIA,GAAE,GAAUrC,MAAAA,EAAEk9B,GAAEp9B,EAAEG,GAAGD,IAAIiB,IAAIA,EAAEjB,EAAE,MAAMsB,GAAGA,EAAEtB,GAAG,EAAEU,EAAE,IAAIg+B,eAAev+B,GAAU,OAAAQ,OAAOwI,iBAAiB,SAAShJ,GAAGS,SAASuI,iBAAiB,SAASnI,EAAE,CAAC29B,SAAQ,EAAGC,SAAQ,IAAKl+B,EAAEm+B,QAAQ/+B,GAAG,KAAKY,EAAEo+B,UAAUh/B,GAAGa,OAAO0I,oBAAoB,SAASlJ,GAAGS,SAASyI,oBAAoB,SAASrI,GAAE,GAAI,GAAI,CAAClB,EAAED,EAAEyB,EAAEnB,EAAEF,GAAG,CAAivHs8B,CAAEt8B,EAAEgB,EAAEoU,QAAQrU,EAAEN,GAAG,MAAMK,EAAEE,EAAEoU,QAAe,OAAA,MAAMtU,IAAIoU,GAAEpU,EAAEZ,GAAG,MAAMmB,GAAGA,EAAEhB,OAAOS,IAAIE,CAAC,CAAhuC,CAAkuCwrB,EAAE1qB,EAAEf,EAAEF,GAAGo8B,EAAEjoB,EAAC9O,YAAE,KAAKpE,EAAE,MAAM,MAAMT,GAAG,OAAOmrB,GAAGnrB,KAAM,CAACA,EAAEmrB,IAAIgQ,EAAExnB,EAAAA,YAAGjV,IAAI+B,EAAE/B,GAAG,MAAMH,GAAG,OAAO4sB,GAAG5sB,EAAEG,IAAK,CAACH,EAAE4sB,IAAI2Q,EAAEnoB,EAAC9O,YAAEnG,IAAIA,EAAEqM,iBAAiB,MAAMlM,GAAGA,EAAEH,GAAG,MAAMC,EAAEH,EAAC6yD,mBAAC3yD,EAAE0G,QAAQ+1B,EAAE,CAACuB,QAAQ,IAAI,IAAIijC,QAAQjhE,EAAE0I,QAAQzI,EAAED,EAAE2I,QAAQ1I,EAAE,EAAE,MAAO,CAACw8B,EAAEt8B,IAAI6wC,EAAE/7B,EAAAA,YAAGjV,IAAI,OAAOysB,GAAG,MAAMwP,EAAE5mB,SAAS,MAAMrV,EAAE0G,QAAQ/E,EAACu/D,UAAClhE,EAAE0G,UAAUu1B,EAAE5mB,QAAQ+Q,SAASpmB,EAAE0G,SAASw2B,KAAM,CAACA,EAAEzQ,IAAW3X,OAAAA,EAAC9R,UAAE,KAAWhD,MAAAA,EAAE8B,EAAEU,iBAAoBxC,GAAAA,EAASA,OAAAA,EAAEmJ,iBAAiB,cAAci0B,GAAG,IAAIp9B,EAAEqJ,oBAAoB,cAAc+zB,IAAK,CAACt7B,EAAEs7B,IAAItoB,EAAAA,UAAG,KAAKlU,SAASuI,iBAAiB,QAAQ6nC,GAAG,IAAIpwC,SAASyI,oBAAoB,QAAQ2nC,IAAK,CAAClvC,EAAEkvC,IAAI,OAAOvpC,EAAE4N,SAAS,OAAOoX,GAAG,OAAO3qB,EAAE,KAAKi6B,EAAAA,IAAE7R,GAAE,CAACwS,MAAMQ,EAAEN,WAAWnQ,EAAE5hB,OAAO/I,EAAE66B,iBAAiBl1B,EAAEsc,QAAQ9jB,EAAE48B,aAAa,CAAC78B,EAAEC,IAAIgB,EAAEjB,EAAEC,EAAE,CAACw3C,WAAWz3C,IAAIi8B,EAAE5mB,QAAQrV,KAAK88B,eAAez6B,EAAE26B,gBAAgBj8B,GAAG","x_google_ignoreList":[0,1,2,7,8,19,20,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,76,77,116,122,124,127,144,153]}