diff --git a/js/Audios-0teLnv5A.chunk.mjs b/js/Audios-0teLnv5A.chunk.mjs
new file mode 100644
index 00000000..2df2d9e9
--- /dev/null
+++ b/js/Audios-0teLnv5A.chunk.mjs
@@ -0,0 +1,179 @@
+(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".viewer-media[data-v-5f21e994]{--media-accent-color: var(--color-primary-element);--media-accent-text-color: var(--color-primary-element-text);--media-font-family: var(--font-face);color-scheme:dark;display:block;z-index:20050;align-self:center;justify-self:center;width:600px;max-width:calc(100vw - 4 * var(--default-clickable-area))}")),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
+import{d as S,k as B,q as A,A as u,u as Y,B as t,s as T,D as L,h as I}from"./store-DT5_o2He.chunk.mjs";import{c as M,a as q,s as l,b as D,S as E,d as N,e as w,f as y,r as c,g as R,h as x,M as p,P as z,p as C,i as U,j as V,k as W,l as K,v as $,m as H,n as F,o as O,q as _,t as G,u as J,w as Q,x as X,y as Z,z as ee}from"./status-announcer-CVr4lyr6.chunk.mjs";import{_ as ae}from"./_plugin-vue_export-helper-D8VWKLTF.chunk.mjs";import"./useViewerProps-BgGfCZKj.chunk.mjs";import"./index-CYLQ9VQv.chunk.mjs";import"./useViewerSettings--11i6Fi5.chunk.mjs";import"./mdi-Cw2wacGo.chunk.mjs";const{PlayerElement:ie}=M({features:q});var te=class extends ie{static{this.tagName="audio-player"}};l(te);const de=D(`
+
+
+
+
+
+
+
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`);\n//#endregion\nexport { template };\n","//#region src/define/audio/skin.css?inline\nvar skin_default = \"@property --media-slider-fill{syntax:\\\"\\\";inherits:true;initial-value:0%}@property --media-slider-buffer{syntax:\\\"\\\";inherits:true;initial-value:0%}video-player,live-video-player,media-i18n,media-dialog,media-alert-dialog,media-error-dialog,media-controls{display:contents}media-container video,media-container [slot=poster]{width:100%;height:100%;display:block}media-container video::-webkit-media-text-track-container{z-index:1;scale:.98;translate:0 var(--media-caption-track-y,0);transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);font-family:inherit}:host{width:100%;display:grid}:host(:focus){outline:none!important}::slotted(video),::slotted(audio){margin:0!important}@layer base{:where(.media-skin){text-align:start;text-transform:none;letter-spacing:normal;font-style:normal;font-weight:400}:where(.media-skin),:where(.media-skin) *,:where(.media-skin) :before,:where(.media-skin) :after{box-sizing:border-box;border:0 solid;margin:0;padding:0}:where(.media-skin) button{font:inherit;color:inherit;text-transform:none;letter-spacing:inherit;appearance:none;background:0 0}:where(.media-skin) img,:where(.media-skin) svg,:where(.media-skin) media-icon{max-width:100%;display:block}:where(.media-skin) svg[fill=currentColor]{fill:currentColor}:where(.media-skin) svg[fill=none]{fill:none}:where(.media-skin) svg[stroke=currentColor]{stroke:currentColor}:where(.media-skin) video{border-radius:inherit;object-fit:var(--media-object-fit,contain);object-position:var(--media-object-position,center);width:100%;max-width:100%;height:100%;display:block}:where(.media-skin) media-icon>svg{width:100%;height:100%}:where(.media-skin) media-tooltip-group,:where(.media-skin) media-dialog,:where(.media-skin) media-alert-dialog,:where(.media-skin) media-error-dialog,:where(.media-skin) media-controls{display:contents}:where(.media-skin) [hidden][hidden]{display:none!important}@media (prefers-reduced-motion:no-preference){.media-skin{interpolate-size:allow-keywords}}@supports not selector(:popover-open){:where(.media-skin) [popover]:not([data-open],[data-ending-style]){display:none!important}.media-skin:is([data-preset=audio],[data-preset=live-audio]){overflow:visible!important}}}@layer components{:where(.media-skin[data-theme=default]) .media-status-announcer{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:where(.media-skin[data-theme=default]) .media-container,:where(.media-skin[data-theme=default]).media-container{isolation:isolate;border-radius:var(--media-video-border-radius);background-color:var(--media-background);width:100%;min-width:0;height:100%;min-height:0;font-family:var(--media-font-family,\\\"Inter Variable\\\", Inter, ui-sans-serif, system-ui, sans-serif);font-size:calc(var(--media-spacing) * 3.25);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;outline-offset:-4px;transition-property:outline-offset,outline-color;transition-duration:.15s;transition-duration:var(--media-duration-fast);--spacing:var(--media-spacing);outline:2px solid #0000;line-height:1.5;transition-timing-function:cubic-bezier(0,0,.2,1);display:block;position:relative;overflow:clip;container:media-root/inline-size}:where(.media-skin[data-theme=default]) .media-container:after,:where(.media-skin[data-theme=default]).media-container:after{pointer-events:none;z-index:10;border-radius:inherit;content:\\\"\\\";border-style:solid;border-width:1px;border-color:var(--media-frame-border);position:absolute;inset:0}:where(.media-skin[data-theme=default]) .media-container:focus-visible,:where(.media-skin[data-theme=default]).media-container:focus-visible{outline-offset:2px;outline-color:var(--media-ring)}:where(.media-skin[data-theme=default]) .media-container:fullscreen:after,:where(.media-skin[data-theme=default]).media-container:fullscreen:after{content:\\\"\\\";display:none}.media-container>slot::slotted(video),:scope.media-container>slot::slotted(video){border-radius:inherit;object-fit:var(--media-object-fit,contain);object-position:var(--media-object-position,center);width:100%;max-width:100%;height:100%;margin:0;display:block}:where(.media-skin[data-theme=default]) .media-button{width:var(--media-control-size);height:var(--media-control-size);cursor:pointer;touch-action:manipulation;border-radius:var(--media-control-radius);text-align:center;min-height:0;color:inherit;outline-offset:-2px;transition-property:background-color,color,outline-offset,scale;transition-duration:var(--media-duration);will-change:scale;-webkit-user-select:none;user-select:none;corner-shape:var(--media-control-corner-shape);background-color:#0000;border-style:solid;border-width:0;outline:2px solid #0000;flex-shrink:0;place-items:center;padding:0;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}@media (hover:hover){:where(.media-skin[data-theme=default]) .media-button:not([aria-disabled=true]):hover{background-color:var(--media-accent);color:var(--media-accent-foreground)}}:where(.media-skin[data-theme=default]) .media-button:focus-visible{outline-offset:2px;outline-color:var(--media-ring)}:where(.media-skin[data-theme=default]) .media-button:not([aria-disabled=true]):active{scale:.97}:where(.media-skin[data-theme=default]) .media-button[aria-disabled=true]{cursor:not-allowed;opacity:.5}@media (prefers-reduced-motion:reduce){:where(.media-skin[data-theme=default]) .media-button{will-change:auto;transition-property:background-color,color;scale:1}}:where(.media-skin[data-theme=default]) .media-button:where(:focus-visible,[aria-expanded=true],[data-highlighted]):where(:not([aria-disabled=true])){background-color:var(--media-accent);color:var(--media-accent-foreground)}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-actions{gap:calc(var(--media-spacing) * 2);flex-shrink:0;display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-backdrop{display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-close{height:var(--media-control-size);width:auto;padding-inline:calc(var(--media-spacing) * 3);flex:none;font-weight:500;background-color:var(--media-primary)!important;color:var(--media-primary-foreground)!important}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-content{align-items:center;gap:calc(var(--media-spacing) * 2);flex-direction:row;flex:1;min-height:0;display:flex;overflow:visible}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-description{overflow-wrap:anywhere;opacity:.7;margin:0}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-popup{z-index:50;align-items:center;gap:calc(var(--media-spacing) * 3);background-color:var(--media-background);width:100%;height:100%;max-height:none;padding-inline:calc(var(--media-spacing) * 5);color:var(--media-controls-foreground);-webkit-backdrop-filter:var(--media-backdrop-filter-dialog);backdrop-filter:var(--media-backdrop-filter-dialog);transition-property:opacity,filter;transition-duration:.15s;transition-duration:var(--media-duration-slower);border-radius:9999px;outline-style:none;flex-direction:row;padding-block:0;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:absolute;inset:0;translate:none}@media (forced-colors:active){:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-popup{outline-offset:2px;outline:2px solid #0000}}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-popup:not([data-open]){display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-popup:is([data-starting-style],[data-ending-style]){opacity:0;filter:blur(var(--media-hidden-popup-blur))}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-dialog-title{font-size:calc(var(--media-spacing) * 3.25);margin:0;font-weight:600;line-height:1.25}:where(.media-skin[data-theme=default]) .media-popup{color:inherit;border-style:solid;border-width:0;margin:0;overflow:visible}:where(.media-skin[data-theme=default]) .media-popup[data-ending-style]{transform:none}:where(.media-skin[data-theme=default]) .media-popup[data-starting-style]{transform:translate(var(--media-popup-translate-x-distance,0), var(--media-popup-translate-y-distance,0))}:where(.media-skin[data-theme=default]) .media-popup[data-side=bottom]{transform-origin:top;--media-popup-translate-y-distance:calc(var(--media-popup-translate-distance) * -1)}:where(.media-skin[data-theme=default]) .media-popup[data-side=left]{transform-origin:100%;--media-popup-translate-x-distance:var(--media-popup-translate-distance)}:where(.media-skin[data-theme=default]) .media-popup[data-side=right]{transform-origin:0;--media-popup-translate-x-distance:calc(var(--media-popup-translate-distance) * -1)}:where(.media-skin[data-theme=default]) .media-popup[data-side=top]{transform-origin:bottom;--media-popup-translate-y-distance:var(--media-popup-translate-distance)}:where(.media-skin[data-theme=default]) .media-popup:is([data-starting-style],[data-ending-style]){scale:var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);opacity:0;filter:blur(var(--media-hidden-popup-blur))}:where(.media-skin[data-theme=default]) .media-popup-safe-area:before{pointer-events:auto;content:\\\"\\\";position:absolute}:where(.media-skin[data-theme=default]) .media-popup-safe-area[data-side=bottom]:before{content:\\\"\\\";height:var(--media-popup-side-offset);inset-inline:0;bottom:100%}:where(.media-skin[data-theme=default]) .media-popup-safe-area[data-side=left]:before{content:\\\"\\\";width:var(--media-popup-side-offset);inset-block:0;left:100%}:where(.media-skin[data-theme=default]) .media-popup-safe-area[data-side=right]:before{content:\\\"\\\";width:var(--media-popup-side-offset);inset-block:0;right:100%}:where(.media-skin[data-theme=default]) .media-popup-safe-area[data-side=top]:before{content:\\\"\\\";height:var(--media-popup-side-offset);inset-inline:0;top:100%}:where(.media-skin[data-theme=default]) .media-popup-transition{transition-property:opacity,filter,transform,scale;transition-duration:var(--media-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.media-skin[data-theme=default]) .media-popup-transition[data-ending-style]{transition-duration:var(--media-duration-instant)}:where(.media-skin[data-theme=default]) .media-tooltip{border-radius:var(--media-control-radius);padding-inline:calc(var(--media-spacing) * 2.5);padding-block:var(--media-spacing);font-size:calc(var(--media-spacing) * 3.25);white-space:nowrap;--media-popup-side-offset:var(--media-tooltip-side-offset)}:where(.media-skin[data-theme=default]) .media-tooltip[data-open]{align-items:center;gap:var(--media-spacing);display:flex}:where(.media-skin[data-theme=default]) .media-tooltip-shortcut{border-radius:var(--media-spacing);background-color:var(--media-muted);text-align:center;min-width:1.5em;font-family:inherit;font-size:calc(var(--media-spacing) * 2.75);padding:.1em;font-weight:600;line-height:1.25}:where(.media-skin[data-theme=default]) .media-popup-surface{background-color:var(--media-popover);color:var(--media-popover-foreground);box-shadow:0 0 0 1px var(--media-surface-border,var(--media-border)), var(--media-shadow-surface);-webkit-backdrop-filter:var(--media-backdrop-filter-surface);backdrop-filter:var(--media-backdrop-filter-surface)}:where(.media-skin[data-theme=default]) .media-popup-surface:after{content:\\\"\\\";z-index:10;pointer-events:none;border-radius:inherit;box-shadow:var(--media-shadow-surface-inset);position:absolute;inset:0}:where(.media-skin[data-theme=default]) .media-button-icon{width:var(--media-icon-size,calc(var(--media-spacing) * 4.5));height:var(--media-icon-size,calc(var(--media-spacing) * 4.5));filter:drop-shadow(0 1px 0 var(--media-shadow-current-color));transition-property:opacity,scale;transition-duration:.15s;transition-duration:var(--media-duration);text-shadow:inherit;grid-row-start:1;grid-column-start:1;transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.media-skin[data-theme=default]) .media-seek-button-backward-icon{scale:-1 1}:where(.media-skin[data-theme=default]) .media-seek-button-backward-label{left:-1px}:where(.media-skin[data-theme=default]) .media-seek-button-content{display:grid;position:relative}:where(.media-skin[data-theme=default]) .media-seek-button-forward-label{right:-1px}:where(.media-skin[data-theme=default]) .media-seek-button-label{letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:.7em;font-weight:500;position:absolute;bottom:-3px}:where(.media-skin[data-theme=default]) .media-mute-button-high-icon{opacity:0}:where(:where(.media-skin[data-theme=default]) .media-mute-button):not([data-muted]):not([data-volume-level=low]) .media-mute-button-high-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-mute-button-low-icon{opacity:0}:where(:where(.media-skin[data-theme=default]) .media-mute-button):not([data-muted])[data-volume-level=low] .media-mute-button-low-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-mute-button-off-icon{opacity:0}:where(:where(.media-skin[data-theme=default]) .media-mute-button)[data-muted] .media-mute-button-off-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-slider-buffer{pointer-events:none;position:absolute;inset:0}:where(.media-skin[data-theme=default]) .media-slider-buffer:before{border-radius:var(--media-control-radius);content:\\\"\\\";background-color:currentColor;width:100%;height:100%;position:absolute}@supports (color:color-mix(in lab, red, red)){:where(.media-skin[data-theme=default]) .media-slider-buffer:before{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}:where(.media-skin[data-theme=default]) .media-slider-buffer[data-orientation=horizontal]{left:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));right:max(calc(100% - var(--media-slider-buffer,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(-1px 0)}:where(.media-skin[data-theme=default]) .media-slider-buffer[data-orientation=horizontal]:before{content:\\\"\\\";min-width:var(--media-spacing);left:0}:where(.media-skin[data-theme=default]) .media-slider-buffer[data-orientation=vertical]{bottom:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));top:max(calc(100% - var(--media-slider-buffer,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(0 -1px)}:where(.media-skin[data-theme=default]) .media-slider-buffer[data-orientation=vertical]:before{content:\\\"\\\";min-height:var(--media-spacing);bottom:0}:where(.media-skin[data-theme=default]) .media-slider-fill{pointer-events:none;position:absolute;inset:0}:where(.media-skin[data-theme=default]) .media-slider-fill:before{border-radius:var(--media-control-radius);content:\\\"\\\";background-color:var(--media-primary);width:100%;height:100%;position:absolute}:where(.media-skin[data-theme=default]) .media-slider-fill[data-orientation=horizontal]{left:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));right:max(calc(100% - var(--media-slider-fill,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(-1px 0)}:where(:where(.media-skin[data-theme=default]) .media-slider)[data-dragging] .media-slider-fill[data-orientation=horizontal]{left:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));right:max(calc(100% - var(--media-slider-pointer,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(-1px 0)}:where(.media-skin[data-theme=default]) .media-slider-fill[data-orientation=horizontal]:before{content:\\\"\\\";min-width:var(--media-spacing);left:0}:where(.media-skin[data-theme=default]) .media-slider-fill[data-orientation=vertical]{bottom:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));top:max(calc(100% - var(--media-slider-fill,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(0 -1px)}:where(:where(.media-skin[data-theme=default]) .media-slider)[data-dragging] .media-slider-fill[data-orientation=vertical]{bottom:calc(var(--media-slider-chapter-start,0%) + var(--media-spacing) * var(--media-chapter-inset-start,0));top:max(calc(100% - var(--media-slider-pointer,0%)), calc(100% - var(--media-slider-chapter-end,100%) + var(--media-spacing) * var(--media-chapter-inset-end,0)));clip-path:inset(0 -1px)}:where(.media-skin[data-theme=default]) .media-slider-fill[data-orientation=vertical]:before{content:\\\"\\\";min-height:var(--media-spacing);bottom:0}:where(.media-skin[data-theme=default]) .media-slider-thumb{top:50%;left:var(--media-slider-fill,0%);z-index:10;width:calc(var(--media-spacing) * 3);height:calc(var(--media-spacing) * 3);border-radius:var(--media-control-radius);box-shadow:0 0 #0000, 0 0 #0000, 0 0 #0000, 0 0 #0000, var(--media-shadow-thumb);outline-offset:-4px;transition-property:opacity,height,width,outline-offset,scale;transition-duration:.15s;transition-duration:var(--media-duration-slider);-webkit-user-select:none;user-select:none;background-color:#fff;outline:4px solid #0000;transition-timing-function:cubic-bezier(0,0,.2,1);position:absolute;translate:-50% -50%}:where(:where(.media-skin[data-theme=default]) .media-slider)[data-dragging] .media-slider-thumb{scale:.9}:where(.media-skin[data-theme=default]) .media-slider-thumb:after{pointer-events:none;inset:calc(var(--media-spacing) * -1);border-radius:inherit;opacity:0;transition-property:opacity,scale;transition-duration:.15s;transition-duration:var(--media-duration);content:\\\"\\\";transition-timing-function:cubic-bezier(0,0,.2,1);position:absolute;scale:.5;box-shadow:0 0 #0000,0 0 #0000,0 0 #0000,0 0 #0000,0 0 0 2px}@media (hover:hover){:where(.media-skin[data-theme=default]) .media-slider-thumb:hover{outline-offset:0px;outline-color:currentColor}@supports (color:color-mix(in lab, red, red)){:where(.media-skin[data-theme=default]) .media-slider-thumb:hover{outline-color:color-mix(in oklab, currentcolor 15%, transparent)}}}:where(.media-skin[data-theme=default]) .media-slider-thumb:focus-visible{outline-offset:0px;outline-color:currentColor}@supports (color:color-mix(in lab, red, red)){:where(.media-skin[data-theme=default]) .media-slider-thumb:focus-visible{outline-color:color-mix(in oklab, currentcolor 15%, transparent)}}:where(.media-skin[data-theme=default]) .media-slider-thumb:focus-visible:after{content:\\\"\\\";opacity:1;scale:1}:where(:where(.media-skin[data-theme=default]) .media-slider)[data-dragging] .media-slider-thumb[data-orientation=horizontal]{left:var(--media-slider-pointer)}:where(.media-skin[data-theme=default]) .media-slider-thumb[data-orientation=vertical]{top:calc(100% - var(--media-slider-fill,0%));left:50%}:where(:where(.media-skin[data-theme=default]) .media-slider)[data-dragging] .media-slider-thumb[data-orientation=vertical]{top:calc(100% - var(--media-slider-pointer))}:where(.media-skin[data-theme=default]) .media-slider-track{isolation:isolate;-webkit-user-select:none;user-select:none;border-radius:9999px;width:100%;position:relative}:where(.media-skin[data-theme=default]) .media-slider-track:before{pointer-events:none;border-radius:var(--media-control-radius);content:\\\"\\\";background-color:currentColor;position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){:where(.media-skin[data-theme=default]) .media-slider-track:before{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}:where(.media-skin[data-theme=default]) .media-slider-track[data-orientation=horizontal]{height:var(--media-spacing)}:where(.media-skin[data-theme=default]) .media-slider-track[data-orientation=vertical]{height:100%;width:var(--media-spacing)}:where(.media-skin[data-theme=default]) .media-slider{cursor:pointer;transition-property:--media-slider-fill,--media-slider-buffer;transition-duration:.15s;transition-duration:var(--media-duration-slider);border-radius:9999px;outline-style:none;flex:1;justify-content:center;align-items:center;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}@media (forced-colors:active){:where(.media-skin[data-theme=default]) .media-slider{outline-offset:2px;outline:2px solid #0000}}:where(.media-skin[data-theme=default]) .media-slider[data-disabled]{pointer-events:none}:where(.media-skin[data-theme=default]) .media-slider[data-dragging]{transition-duration:0s}:where(.media-skin[data-theme=default]) .media-slider[data-orientation=horizontal]{height:var(--media-slider-height,calc(var(--media-spacing) * 8));min-width:calc(var(--media-spacing) * 18)}:where(.media-skin[data-theme=default]) .media-slider[data-orientation=vertical]{height:calc(var(--media-spacing) * 18);width:calc(var(--media-spacing) * 8);min-width:0}:where(.media-skin[data-theme=default]) .media-volume-slider-thumb{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-volume-popover{border-radius:var(--media-control-radius);padding-inline:0;padding-block:calc(var(--media-spacing) * 3);--media-popup-side-offset:var(--media-popover-side-offset)}:where(.media-skin[data-theme=default]) .media-volume-popover[data-side=right]{padding:0;padding-inline:calc(var(--media-spacing) * 3);--media-popover-side-offset:0rem;border-radius:0;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:#0000!important}:where(.media-skin[data-theme=default]) .media-volume-popover[data-side=right]:after{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default]) .media-play-button-pause-icon{scale:var(--media-hidden-icon-scale) var(--media-hidden-icon-scale);opacity:0}:where(:where(.media-skin[data-theme=default]) .media-play-button)[data-started]:not([data-paused]):not([data-ended]) .media-play-button-pause-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-play-button-play-icon{scale:var(--media-hidden-icon-scale) var(--media-hidden-icon-scale);opacity:0}:where(:where(.media-skin[data-theme=default]) .media-play-button):not([data-ended]):not([data-started]) .media-play-button-play-icon,:where(:where(.media-skin[data-theme=default]) .media-play-button):not([data-ended])[data-paused] .media-play-button-play-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-play-button-restart-icon{scale:var(--media-hidden-icon-scale) var(--media-hidden-icon-scale);opacity:0}:where(:where(.media-skin[data-theme=default]) .media-play-button)[data-ended] .media-play-button-restart-icon{opacity:1;scale:1}:where(.media-skin[data-theme=default]) .media-buffering-indicator{pointer-events:none;color:var(--media-controls-foreground);place-content:center;display:none;position:absolute;inset:0}:where(.media-skin[data-theme=default]) .media-buffering-indicator:not([data-visible]){--media-spinner-animation:none}:where(.media-skin[data-theme=default]) .media-buffering-indicator:before{background-color:var(--media-backdrop);content:\\\"\\\";-webkit-backdrop-filter:var(--media-backdrop-filter-indicator);backdrop-filter:var(--media-backdrop-filter-indicator);position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){:where(.media-skin[data-theme=default]) .media-buffering-indicator:before{background-color:color-mix(in oklab, var(--media-backdrop) 35%, transparent)}}:where(.media-skin[data-theme=default]) .media-buffering-indicator[data-visible]{display:grid}:where(.media-skin[data-theme=default]) .media-buffering-indicator-spinner-icon{z-index:30;width:var(--media-icon-size,calc(var(--media-spacing) * 4.5));height:var(--media-icon-size,calc(var(--media-spacing) * 4.5));filter:drop-shadow(0 1px 0 var(--media-shadow-current-color));position:relative}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-play-button{display:inline-flex;position:relative}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-play-button-buffering-indicator{z-index:20;border-radius:var(--media-control-radius);color:inherit!important}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-play-button-buffering-indicator:before{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-play-button-buffering-indicator[data-visible]{background-color:var(--media-controls)}:where(.media-skin[data-theme=default]) .media-playback-rate-button{font-variant-numeric:tabular-nums}:where(.media-skin[data-theme=default]) .media-playback-rate-button:after{content:attr(data-rate) \\\"×\\\";width:4ch}:where(.media-skin[data-theme=default]) .media-menu-item-indicator{opacity:0;flex-shrink:0;margin-inline-start:auto;margin-inline-end:calc(var(--media-spacing) * -1)}:where(:where(.media-skin[data-theme=default]) .media-menu-radio-item)[aria-checked=true] .media-menu-item-indicator{opacity:1}:where(.media-skin[data-theme=default]) .media-menu-radio-item{cursor:pointer;justify-content:space-between;align-items:center;gap:calc(var(--media-spacing) * 1.5);border-radius:var(--media-menu-item-radius);padding-inline:calc(var(--media-spacing) * 2);padding-block:calc(var(--media-spacing) * 1.5);text-align:start;white-space:nowrap;color:inherit;font-variant-numeric:tabular-nums;outline-offset:-2px;transition-property:background-color,color;transition-duration:.15s;transition-duration:var(--media-duration-fast);-webkit-user-select:none;user-select:none;text-shadow:0 1px 0 var(--media-shadow-current-color);outline:2px solid #0000;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex;position:relative}:where(.media-skin[data-theme=default]) .media-menu-radio-item:focus-visible{outline-offset:2px;outline-color:var(--media-ring)}:where(.media-skin[data-theme=default]) .media-menu-radio-item[aria-disabled=true]{pointer-events:none;cursor:not-allowed;opacity:.5}:where(.media-skin[data-theme=default]) .media-menu-radio-item[data-availability=unavailable],:where(.media-skin[data-theme=default]) .media-menu-radio-item[data-availability=unsupported]{display:none}:where(.media-skin[data-theme=default]) .media-menu-radio-item:where(:focus-visible,[aria-expanded=true],[data-highlighted]):where(:not([aria-disabled=true])){background-color:var(--media-accent);color:var(--media-accent-foreground)}@supports (top:anchor(top)){:where(.media-skin[data-theme=default]) .media-menu-radio-item{transition-duration:var(--media-duration-instant)}:where(.media-skin[data-theme=default]) .media-menu-radio-item[data-highlighted]{anchor-name:--media-menu-item-highlight-anchor}:where(.media-skin[data-theme=default]) .media-menu-radio-item:where(:focus-visible,[aria-expanded=true],[data-highlighted]):where(:not([aria-disabled=true])){transition-duration:var(--media-duration-slow);background-color:#0000}}:where(.media-skin[data-theme=default]) .media-menu-radio-item-icon{width:var(--media-icon-size,calc(var(--media-spacing) * 4.5));height:var(--media-icon-size,calc(var(--media-spacing) * 4.5));color:var(--media-muted-foreground);filter:drop-shadow(0 1px 0 var(--media-shadow-current-color));flex-shrink:0}:where(:where(.media-skin[data-theme=default]) .media-menu-radio-item):where(:focus-visible,[aria-expanded=true],[data-highlighted]):where(:not([aria-disabled=true])) .media-menu-radio-item-icon{color:inherit}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup{color:inherit;border-style:solid;border-width:0;margin:0;overflow:visible}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-ending-style]{transform:none}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-starting-style]{transform:translate(var(--media-popup-translate-x-distance,0), var(--media-popup-translate-y-distance,0))}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-side=bottom]{transform-origin:top;--media-popup-translate-y-distance:calc(var(--media-popup-translate-distance) * -1)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-side=left]{transform-origin:100%;--media-popup-translate-x-distance:var(--media-popup-translate-distance)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-side=right]{transform-origin:0;--media-popup-translate-x-distance:calc(var(--media-popup-translate-distance) * -1)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup[data-side=top]{transform-origin:bottom;--media-popup-translate-y-distance:var(--media-popup-translate-distance)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup:is([data-starting-style],[data-ending-style]){scale:var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);opacity:0;filter:blur(var(--media-hidden-popup-blur))}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup-surface{background-color:var(--media-popover);color:var(--media-popover-foreground);box-shadow:0 0 0 1px var(--media-surface-border,var(--media-border)), var(--media-shadow-surface);-webkit-backdrop-filter:var(--media-backdrop-filter-surface);backdrop-filter:var(--media-backdrop-filter-surface)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-popup-surface:after{content:\\\"\\\";z-index:10;pointer-events:none;border-radius:inherit;box-shadow:var(--media-shadow-surface-inset);position:absolute;inset:0}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content{max-height:inherit;overscroll-behavior:none;transition-property:translate,filter;transition-duration:.15s;transition-duration:var(--media-duration-menu);anchor-scope:--media-menu-item-highlight-anchor;outline-style:none;transition-timing-function:cubic-bezier(0,0,.2,1);position:absolute;overflow:auto}@media (forced-colors:active){:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content{outline-offset:2px;outline:2px solid #0000}}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:not([data-submenu]){inset-inline:var(--media-spacing);top:var(--media-spacing);gap:calc(var(--media-spacing) * .5);flex-direction:column;display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:not([data-submenu])[data-child-open]{filter:blur(var(--media-hidden-blur));translate:-100%}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:not([data-submenu])[data-child-open]:before{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content[data-submenu]{z-index:10;max-height:inherit;padding:var(--media-spacing);inset-inline:0;top:0}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:not([data-submenu])[data-child-open]:where(:dir(rtl),[dir=rtl],[dir=rtl] *){translate:100%}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:is([data-starting-style],[data-ending-style]):before{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content[data-submenu]:is([data-starting-style],[data-ending-style]){pointer-events:none;filter:blur(var(--media-hidden-blur));overflow:hidden;translate:100%}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content[data-submenu]:is([data-starting-style],[data-ending-style]):where(:dir(rtl),[dir=rtl],[dir=rtl] *){translate:-100%}@supports (top:anchor(top)){:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:before{content:\\\"\\\";position-anchor:--media-menu-item-highlight-anchor;inset:anchor(inside);overflow-anchor:none;pointer-events:none;border-radius:var(--media-menu-item-radius);background-color:var(--media-accent);transition:inset var(--media-duration-fast) ease-in-out;position:absolute}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:has([data-highlighted=\\\"\\\"]):before{content:\\\"\\\";transition-duration:0s}}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-content:is([data-starting-style],[data-ending-style]) :before{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-popup{height:var(--media-menu-height);max-height:min(var(--media-menu-available-height,calc(var(--media-spacing) * 56)), calc(var(--media-spacing) * 56));width:var(--media-menu-width);max-width:var(--media-menu-available-width);min-width:calc(var(--media-spacing) * 44);overscroll-behavior:none;border-radius:var(--media-popup-radius);padding:var(--media-spacing);transition-property:opacity,filter,transform,scale;transition-duration:var(--media-duration-fast);--media-popup-side-offset:var(--media-popover-side-offset);border-style:solid;border-width:0;margin:0;transition-timing-function:cubic-bezier(0,0,.2,1);overflow:hidden!important}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-popup:is([data-starting-style],[data-ending-style]){transition-property:opacity,filter,transform,scale;transition-duration:var(--media-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-radio-group{max-height:inherit;gap:calc(var(--media-spacing) * .5);anchor-scope:--media-menu-item-highlight-anchor;flex-direction:column;display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-radio-group:is([data-starting-style],[data-ending-style]):before{content:\\\"\\\";display:none}@supports (top:anchor(top)){:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-radio-group:before{content:\\\"\\\";position-anchor:--media-menu-item-highlight-anchor;inset:anchor(inside);overflow-anchor:none;pointer-events:none;border-radius:var(--media-menu-item-radius);background-color:var(--media-accent);transition:inset var(--media-duration-fast) ease-in-out;position:absolute}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-radio-group:has([data-highlighted=\\\"\\\"]):before{content:\\\"\\\";transition-duration:0s}}:where(.media-skin[data-theme=default][data-preset=audio]) .media-menu-radio-group:is([data-starting-style],[data-ending-style]) :before{content:\\\"\\\";display:none}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-settings-menu-popup{min-width:0!important}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider{cursor:pointer;transition-property:--media-slider-fill,--media-slider-buffer;transition-duration:.15s;transition-duration:var(--media-duration-slider);border-radius:9999px;outline-style:none;flex:1;justify-content:center;align-items:center;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}@media (forced-colors:active){:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider{outline-offset:2px;outline:2px solid #0000}}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider[data-disabled]{pointer-events:none}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider[data-dragging]{transition-duration:0s}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider[data-orientation=horizontal]{height:var(--media-slider-height,calc(var(--media-spacing) * 8));min-width:calc(var(--media-spacing) * 18)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider[data-orientation=vertical]{height:calc(var(--media-spacing) * 18);width:calc(var(--media-spacing) * 8);min-width:0}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview{height:var(--media-spacing);min-width:var(--media-slider-preview-max-width);--media-slider-preview-max-height:var(--media-slider-preview-max-width);--media-slider-preview-max-width:min(calc(var(--media-spacing) * 32), 100cqi);position:relative}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview:before{pointer-events:none;z-index:1;width:var(--media-spacing);height:var(--media-spacing);border-radius:var(--media-control-radius);opacity:0;transition-property:opacity,scale;transition-duration:.15s;transition-duration:var(--media-duration-slow);content:\\\"\\\";background-color:currentColor;transition-timing-function:cubic-bezier(0,0,.2,1);position:absolute;top:50%;left:50%;translate:-50% -50%;scale:.5}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview[data-pointing]:not([data-dragging]):before{content:\\\"\\\";opacity:1;scale:1}@container media-root (width>=30rem){:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview{--media-slider-preview-max-width:min(calc(var(--media-spacing) * 40), 100cqi)}}@container media-root (width>=42rem){:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview{--media-slider-preview-max-width:min(calc(var(--media-spacing) * 48), 100cqi)}}:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider-preview-content{max-width:var(--media-slider-preview-max-width);transform-origin:bottom;translate:-50% var(--media-hidden-preview-offset);scale:var(--media-hidden-preview-scale) var(--media-hidden-preview-scale);opacity:0;filter:blur(var(--media-hidden-blur));transition-property:filter,opacity,scale;transition-duration:.15s;transition-duration:var(--media-duration);transition-timing-function:cubic-bezier(0,0,.2,1);position:absolute}:where(.media-skin[data-theme=default][data-preset=audio]) :where(.media-slider):has(:focus-visible) .media-slider-preview-content,:where(.media-skin[data-theme=default][data-preset=audio]) :where(.media-slider-preview)[data-pointing] .media-slider-preview-content{opacity:1;filter:none;scale:1}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-preview-content{bottom:calc(100% + var(--media-slider-preview-label-offset));font-variant-numeric:tabular-nums;left:50%}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-thumb{opacity:0}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-thumb[data-interactive]{opacity:1}@media (pointer:fine){@media (hover:hover){:where(:where(.media-skin[data-theme=default][data-preset=audio]) .media-slider):hover .audio-time-slider-thumb{opacity:1;scale:1}}}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-value{font-variant-numeric:tabular-nums}:where(.media-skin[data-theme=default][data-preset=audio]) .media-tooltip{border-radius:var(--media-control-radius);padding-inline:calc(var(--media-spacing) * 2.5);padding-block:var(--media-spacing);font-size:calc(var(--media-spacing) * 3.25);white-space:nowrap;--media-popup-side-offset:var(--media-tooltip-side-offset)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-tooltip[data-open]{align-items:center;gap:var(--media-spacing);display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-content{z-index:20;border-radius:var(--media-controls-radius);background-color:var(--media-controls);padding:calc(var(--media-spacing) * .5);color:var(--media-controls-foreground);box-shadow:0 0 0 1px var(--media-surface-border,var(--media-border)), var(--media-shadow-surface);-webkit-backdrop-filter:var(--media-backdrop-filter-surface);backdrop-filter:var(--media-backdrop-filter-surface);text-shadow:0 1px 0 var(--media-shadow-current-color);align-items:center;display:flex;position:relative}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-content:after{content:\\\"\\\";z-index:10;pointer-events:none;border-radius:inherit;box-shadow:var(--media-shadow-surface-inset);position:absolute;inset:0}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-content:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}@container media-root (width>=32rem){:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-content{padding:var(--media-spacing)}}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-end{align-items:center;gap:1px;display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-end:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-start{align-items:center;gap:1px;display:flex}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-controls-start:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}@container media-root (width<32rem){:where(.media-skin[data-theme=default][data-preset=audio]) .audio-seek-button{display:none}}@container audio-time-controls (width<16rem){:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-remaining-value{display:none}}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-group{align-items:center;gap:calc(var(--media-spacing) * 2.5);min-width:0;padding-inline:calc(var(--media-spacing) * 3);flex:1;display:flex;container:audio-time-controls/inline-size}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-time-slider-group:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}:where(.media-skin[data-theme=default][data-preset=audio]) .media-time-toggle{cursor:pointer;font-variant-numeric:tabular-nums;outline-offset:-2px;transition-property:outline-color,outline-offset;transition-duration:.15s;transition-duration:var(--media-duration-fast);border-radius:.25rem;outline:2px solid #0000;transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-time-toggle:focus-visible{outline-offset:2px;outline-color:var(--media-ring)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-time-toggle[aria-disabled=true]{cursor:not-allowed;opacity:.5}:where(.media-skin[data-theme=default][data-preset=audio]) .media-time-value{font-variant-numeric:tabular-nums;transition-property:opacity;transition-duration:.15s;transition-duration:var(--media-duration-slow);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.media-skin[data-theme=default][data-preset=audio]) .media-time-value[data-unavailable]{opacity:.5}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-skin,:where(.media-skin[data-theme=default][data-preset=audio]).audio-skin{background-color:#0000!important;height:auto!important;overflow:visible!important}:where(.media-skin[data-theme=default][data-preset=audio]) .audio-skin:after,:where(.media-skin[data-theme=default][data-preset=audio]).audio-skin:after{content:\\\"\\\";display:none}}@layer utilities;@layer base.theme{.media-skin{--media-background:oklch(0% 0 0);--media-foreground:oklch(100% 0 0);--media-controls:oklch(0% 0 0/.35);--media-controls-foreground:var(--media-foreground);--media-popover:oklch(100% 0 0/.1);--media-popover-foreground:var(--media-foreground);--media-primary:var(--media-accent-color,var(--media-default-accent-color));--media-primary-foreground:var(--media-accent-text-color,var(--media-default-accent-text-color));--media-accent:var(--media-accent-color,color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));--media-accent-foreground:var(--media-accent-text-color,currentColor);--media-muted:oklch(100% 0 0/.15);--media-muted-foreground:oklch(100% 0 0/.65);--media-border:oklch(0% 0 0/.1);--media-ring:oklch(100% 0 0);--media-backdrop:oklch(0% 0 0);--media-live-color:oklch(65% .22 27);--media-shadow-surface:0 1px 3px 0 oklch(0% 0 0/.15), 0 1px 2px -1px oklch(0% 0 0/.15);--media-shadow-surface-inset:inset 0 1px 0 0 #ffffff1a, inset 0 0 0 1px #ffffff0d;--media-shadow-thumb:0 0 0 1px #0000001a, 0 1px 3px 0 #00000059, 0 1px 2px -1px #00000059;--media-shadow-tooltip:0 0 0 1px var(--media-border), var(--media-shadow-surface);--media-shadow-separator:0 1px 0 0 oklch(100% 0 0/.075);--media-shadow-current-color:oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));--media-shadow-subtle-current-color:color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);--media-text-shadow-dialog:0 1px 0 #00000040;--media-backdrop-filter-surface:blur(16px) saturate(110%);--media-backdrop-filter-indicator:blur(8px);--media-backdrop-filter-dialog:blur(16px) saturate(110%);--media-control-corner-shape:round;--media-control-radius:99px;--media-control-size:calc(var(--media-spacing) * 9);--media-controls-radius:var(--media-control-radius);--media-default-accent-color:oklch(100% 0 0);--media-default-accent-text-color:oklch(0% 0 0);--media-duration-instant:50ms;--media-duration-fast:.1s;--media-duration:.15s;--media-duration-slow:.2s;--media-duration-slower:.25s;--media-duration-controls:.1s;--media-duration-dialog:.35s;--media-duration-indicator:var(--media-duration-slower);--media-duration-menu:.25s;--media-duration-slider:var(--media-duration-fast);--media-delay-dialog:.1s;--media-hidden-scale:.95;--media-hidden-blur:8px;--media-hidden-offset:calc(var(--media-spacing) * 1);--media-hidden-icon-scale:0;--media-hidden-indicator-scale:.9;--media-hidden-indicator-offset:-25%;--media-hidden-playback-scale:.85;--media-hidden-popup-scale:.95;--media-hidden-popup-blur:4px;--media-hidden-preview-scale:.8;--media-hidden-preview-offset:calc(var(--media-spacing) * 2);--media-hidden-seek-offset:60%;--media-menu-item-radius:calc(var(--media-spacing) * 2);--media-popover-boundary-offset:calc(var(--media-spacing) * 3);--media-popover-side-offset:calc(var(--media-spacing) * 3);--media-popup-radius:calc(var(--media-spacing) * 3);--media-popup-translate-distance:calc(var(--media-spacing) * 2);--media-tooltip-boundary-offset:var(--media-popover-boundary-offset);--media-tooltip-side-offset:var(--media-popover-side-offset);--media-dialog-radius:calc(var(--media-spacing) * 7);--media-dialog-width:calc(100% - var(--media-spacing) * 6);--media-dialog-max-width:calc(var(--media-spacing) * 72);--media-slider-preview-label-offset:calc(var(--media-spacing) * 10.5);--media-video-border-radius:var(--media-border-radius,28px);--media-scale:1;--media-scrollbar-thumb-color:color-mix(in oklab, currentColor 30%, transparent);--media-spacing:calc(var(--media-scale-unit,16px) * var(--media-scale) / 4);scrollbar-color:var(--media-scrollbar-thumb-color) transparent;scrollbar-width:thin}@supports (color:contrast-color(red)){.media-skin{--media-primary-foreground:var(--media-accent-text-color,contrast-color(var(--media-primary)));--media-accent-foreground:var(--media-accent-text-color,contrast-color(var(--media-accent-color,var(--media-internal-accent-text-fallback,oklch(0% 0 0)))))}}@supports (color:oklch(from red l c h)){.media-skin{--media-shadow-subtle-current-color:oklch(from var(--media-shadow-current-color) l c h / calc(alpha * .4))}}@supports (color:oklch(from currentColor l c h)){.media-skin{--media-scrollbar-thumb-color:oklch(from currentColor l c h / .3)}}.media-skin::-webkit-scrollbar-thumb{background:var(--media-scrollbar-thumb-color);border-radius:9999px}.media-skin:fullscreen{--media-object-fit:contain;--media-video-border-radius:0}@media (width>=1280px){.media-skin:fullscreen{--media-scale:1.25}}@media (width>=1536px){.media-skin:fullscreen{--media-scale:1.5}}@media (width>=1920px){.media-skin:fullscreen{--media-scale:1.75}}}@layer base.preset{.media-skin:is([data-preset=audio],[data-preset=live-audio]){--media-background:oklch(100% 0 0);--media-foreground:oklch(0% 0 0);--media-controls:oklch(100% 0 0/.5);--media-controls-foreground:var(--media-foreground);--media-popover:var(--media-controls);--media-popover-foreground:var(--media-foreground);--media-surface-border:oklch(0% 0 0/.05);--media-primary:var(--media-accent-color,var(--media-foreground));--media-border:oklch(0% 0 0/.1);--media-ring:var(--media-foreground);--media-default-accent-color:oklch(0% 0 0);--media-default-accent-text-color:oklch(100% 0 0);--media-internal-accent-text-fallback:oklch(100% 0 0);--media-popover-boundary-offset:calc(var(--media-spacing) * 2);--media-popover-side-offset:calc(var(--media-spacing) * 3);--media-slider-preview-label-offset:calc(var(--media-spacing) * 10)}@supports (color:light-dark(red, red)){.media-skin:is([data-preset=audio],[data-preset=live-audio]){--media-background:light-dark(oklch(100% 0 0),oklch(0% 0 0));--media-foreground:light-dark(oklch(0% 0 0),oklch(100% 0 0));--media-controls:light-dark(oklch(100% 0 0/.5),oklch(0% 0 0/.4));--media-border:light-dark(oklch(0% 0 0/.1),oklch(100% 0 0/.1));--media-default-accent-color:light-dark(oklch(0% 0 0),oklch(100% 0 0));--media-default-accent-text-color:light-dark(oklch(100% 0 0),oklch(0% 0 0));--media-internal-accent-text-fallback:light-dark(oklch(100% 0 0),oklch(0% 0 0))}}.media-skin:is([data-preset=audio],[data-preset=live-audio])[data-theme=neutral]{--media-controls:var(--media-background);--media-popover:var(--media-background);--media-controls-radius:calc(var(--media-spacing) * 3.5);--media-popover-boundary-offset:calc(var(--media-spacing) * 3)}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.media-skin:is([data-preset=audio],[data-preset=live-audio]){--media-controls:var(--media-background);--media-surface-border:oklch(0% 0 0/.05)}@supports (color:light-dark(red, red)){.media-skin:is([data-preset=audio],[data-preset=live-audio]){--media-surface-border:light-dark(oklch(0% 0 0/.05),#0000)}}}}@layer base.preferences{@media (pointer:fine) and (prefers-reduced-motion:no-preference){.media-skin:not([data-controls-visible]){--media-duration-controls:.3s}}@media (pointer:coarse) and (prefers-reduced-motion:no-preference){.media-skin:not([data-controls-visible]){--media-duration-controls:.15s}}@media (prefers-reduced-motion:reduce){.media-skin{--media-duration-fast:var(--media-duration-instant);--media-duration:var(--media-duration-instant);--media-duration-slow:var(--media-duration-instant);--media-duration-slower:var(--media-duration-instant);--media-duration-controls:var(--media-duration-instant);--media-duration-dialog:var(--media-duration-instant);--media-duration-indicator:var(--media-duration-instant);--media-duration-menu:0s;--media-duration-slider:0s;--media-delay-dialog:0s;--media-hidden-scale:1;--media-hidden-blur:0px;--media-hidden-offset:0px;--media-hidden-icon-scale:1;--media-hidden-indicator-scale:1;--media-hidden-indicator-offset:0px;--media-hidden-playback-scale:1;--media-hidden-popup-scale:1;--media-hidden-popup-blur:0px;--media-hidden-preview-scale:1;--media-hidden-preview-offset:0px;--media-hidden-seek-offset:0px;--media-popup-translate-distance:0px;--media-spinner-animation:none;--media-icon-airplay-fill-animation:none;--media-icon-airplay-triangle-animation:none}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.media-skin{--media-popover:var(--media-background);--media-scrollbar-thumb-color:color-mix(in oklab, currentColor 80%, transparent);--media-backdrop-filter-surface:none;--media-backdrop-filter-indicator:none;--media-backdrop-filter-dialog:none;--media-shadow-surface-inset:inset 0 1px 0 0 #ffffff40, inset 0 0 0 1px #ffffff20;scrollbar-width:auto}@supports (color:oklch(from currentColor l c h)){.media-skin{--media-scrollbar-thumb-color:oklch(from currentColor l c h / .8)}}}@media (forced-colors:active){.media-skin{--media-border:CanvasText;--media-frame-border:CanvasText;--media-popover:Canvas;--media-popover-foreground:CanvasText;--media-ring:CanvasText;--media-shadow-surface-inset:inset 0 1px 0 0 CanvasText, inset 0 0 0 1px CanvasText}}}\\n\";\n//#endregion\nexport { skin_default as default };\n","import { SkinElement } from \"../skin.js\";\nimport { template } from \"../../internal/skins/default-audio/template.js\";\nimport skin_default from \"../../define/audio/skin2.js\";\nimport { createShadowStyle } from \"@videojs/utils/dom\";\n//#region src/presets/audio/skin.ts\n/** Packaged default audio UI registered as ``. */\nvar AudioSkinElement = class extends SkinElement {\n\tstatic {\n\t\tthis.tagName = \"audio-skin\";\n\t}\n\tstatic {\n\t\tthis.styles = createShadowStyle(skin_default);\n\t}\n\tstatic {\n\t\tthis.template = template;\n\t}\n};\n//#endregion\nexport { AudioSkinElement };\n","//#region ../icons/dist/html/default/seek.js\nconst seekIcon = \"\";\n//#endregion\nexport { seekIcon };\n","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { rateText } from \"../../../i18n/text/playback.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/playback-rate-button/core.ts\n/** @internal */\nvar PlaybackRateButtonCore = class PlaybackRateButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false,\n\t\tmenuTrigger: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn rateText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { rate: state.rate };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({ rate: media.playbackRate });\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tcycle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (this.#props.menuTrigger) return;\n\t\tconst { playbackRates, playbackRate } = media;\n\t\tif (playbackRates.length === 0) return;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx === -1 ? playbackRates.find((r) => r > playbackRate) ?? playbackRates[0] : playbackRates[(idx + 1) % playbackRates.length];\n\t\tmedia.setPlaybackRate(next);\n\t}\n};\n//#endregion\nexport { PlaybackRateButtonCore };\n","//#region src/core/ui/playback-rate-button/data.ts\n/** @internal */\nconst PlaybackRateButtonDataAttrs = { \n/** Current playback rate. */\nrate: \"data-rate\" };\n//#endregion\nexport { PlaybackRateButtonDataAttrs };\n","//#region src/core/i18n/text/seek.ts\nconst prefix = \"seek.\";\nconst forwardText = {\n\tkey: `${prefix}forward`,\n\ttext: \"Seek forward {seconds} seconds\"\n};\nconst backwardText = {\n\tkey: `${prefix}backward`,\n\ttext: \"Seek backward {seconds} seconds\"\n};\n//#endregion\nexport { backwardText, forwardText };\n","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { backwardText, forwardText } from \"../../../i18n/text/seek.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/seek-button/core.ts\n/** @internal */\nvar SeekButtonCore = class SeekButtonCore {\n\tstatic defaultProps = {\n\t\tseconds: 30,\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tseeking: false,\n\t\tdirection: \"forward\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...SeekButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, SeekButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn state.direction === \"backward\" ? backwardText : forwardText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { seconds: Math.abs(this.#props.seconds) };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst direction = this.#props.seconds < 0 ? \"backward\" : \"forward\";\n\t\tthis.state.patch({\n\t\t\tseeking: media.seeking,\n\t\t\tdirection\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tasync seek(media) {\n\t\tif (this.#props.disabled) return;\n\t\tawait media.seek(media.currentTime + this.#props.seconds);\n\t}\n};\n//#endregion\nexport { SeekButtonCore };\n","//#region src/core/ui/seek-button/data.ts\n/** @internal */\nconst SeekButtonDataAttrs = {\n\t/** Present when a seek is in progress. */\n\tseeking: \"data-seeking\",\n\t/** Indicates the seek direction: `\"forward\"` or `\"backward\"`. */\n\tdirection: \"data-direction\"\n};\n//#endregion\nexport { SeekButtonDataAttrs };\n","import { playerContext } from \"../../player/context.js\";\nimport { PlayerController } from \"../../player/controller.js\";\nimport { MediaButtonElement } from \"../media-button-element.js\";\nimport { SeekButtonCore, SeekButtonDataAttrs } from \"@videojs/core\";\nimport { selectTime } from \"@videojs/core/dom\";\n//#region src/ui/seek-button/element.ts\nvar SeekButtonElement = class extends MediaButtonElement {\n\tconstructor(..._args) {\n\t\tsuper(..._args);\n\t\tthis.seconds = SeekButtonCore.defaultProps.seconds;\n\t\tthis.core = new SeekButtonCore();\n\t\tthis.stateAttrMap = SeekButtonDataAttrs;\n\t\tthis.mediaState = new PlayerController(this, playerContext, selectTime);\n\t\tthis.hotkeyAction = \"seekStep\";\n\t}\n\tstatic {\n\t\tthis.tagName = \"media-seek-button\";\n\t}\n\tstatic {\n\t\tthis.properties = {\n\t\t\t...MediaButtonElement.properties,\n\t\t\tseconds: { type: Number }\n\t\t};\n\t}\n\tget hotkeyValue() {\n\t\treturn this.seconds;\n\t}\n\tactivate(state) {\n\t\tthis.core.seek(state);\n\t}\n};\n//#endregion\nexport { SeekButtonElement };\n","import { safeDefine } from \"../../registration/safe-define.js\";\nimport { SeekButtonElement } from \"../../ui/seek-button/element.js\";\n//#region src/define/ui/seek-button.ts\nsafeDefine(SeekButtonElement);\n//#endregion\n","import { playerContext } from \"../../player/context.js\";\nimport { PlayerController } from \"../../player/controller.js\";\nimport { MediaButtonElement } from \"../media-button-element.js\";\nimport { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from \"@videojs/core\";\nimport { applyElementProps, selectPlaybackRate } from \"@videojs/core/dom\";\n//#region src/ui/playback-rate-button/element.ts\nvar PlaybackRateButtonElement = class extends MediaButtonElement {\n\tconstructor(..._args) {\n\t\tsuper(..._args);\n\t\tthis.commandfor = void 0;\n\t\tthis.core = new PlaybackRateButtonCore();\n\t\tthis.stateAttrMap = PlaybackRateButtonDataAttrs;\n\t\tthis.mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n\t\tthis.hotkeyAction = \"speedUp\";\n\t}\n\tstatic {\n\t\tthis.tagName = \"media-playback-rate-button\";\n\t}\n\tstatic {\n\t\tthis.properties = {\n\t\t\tlabel: { type: String },\n\t\t\tdisabled: { type: Boolean },\n\t\t\tcommandfor: { type: String }\n\t\t};\n\t}\n\tactivate(state, event) {\n\t\tif (this.commandfor) {\n\t\t\tif (event instanceof KeyboardEvent) this.click();\n\t\t\treturn;\n\t\t}\n\t\tthis.core.cycle(state);\n\t}\n\tgetIsButtonDisabled() {\n\t\tconst media = this.mediaState.value;\n\t\tif (super.getIsButtonDisabled()) return true;\n\t\tif (this.commandfor && media && media.playbackRates.length === 0) return true;\n\t\treturn false;\n\t}\n\twillUpdate(changed) {\n\t\tsuper.willUpdate(changed);\n\t\tif (changed.has(\"commandfor\")) {\n\t\t\tif (this.commandfor) this.setAttribute(\"commandfor\", this.commandfor);\n\t\t\telse this.removeAttribute(\"commandfor\");\n\t\t}\n\t}\n\tupdate(changed) {\n\t\tsuper.update(changed);\n\t\tif (!this.mediaState.value || !this.commandfor) return;\n\t\tapplyElementProps(this, { \"aria-disabled\": this.getIsButtonDisabled() ? \"true\" : void 0 });\n\t}\n};\n//#endregion\nexport { PlaybackRateButtonElement };\n","import { safeDefine } from \"../../registration/safe-define.js\";\nimport { PlaybackRateButtonElement } from \"../../ui/playback-rate-button/element.js\";\n//#region src/define/ui/playback-rate-button.ts\nsafeDefine(PlaybackRateButtonElement);\n//#endregion\n","import { checkIcon } from \"../../../icons/dist/html/default/check.js\";\nimport { pauseIcon } from \"../../../icons/dist/html/default/pause.js\";\nimport { playIcon } from \"../../../icons/dist/html/default/play.js\";\nimport { restartIcon } from \"../../../icons/dist/html/default/restart.js\";\nimport { seekIcon } from \"../../../icons/dist/html/default/seek.js\";\nimport { spinnerIcon } from \"../../../icons/dist/html/default/spinner.js\";\nimport { volumeHighIcon } from \"../../../icons/dist/html/default/volume-high.js\";\nimport { volumeLowIcon } from \"../../../icons/dist/html/default/volume-low.js\";\nimport { volumeOffIcon } from \"../../../icons/dist/html/default/volume-off.js\";\nimport { registerIcons } from \"../../../icons/element/register/index.js\";\nimport \"../../../define/ui/container.js\";\nimport \"../../../define/ui/buffering-indicator.js\";\nimport \"../../../define/ui/error-dialog.js\";\nimport \"../../../define/ui/dialog-backdrop.js\";\nimport \"../../../define/ui/dialog-popup.js\";\nimport \"../../../define/ui/dialog-title.js\";\nimport \"../../../define/ui/dialog-description.js\";\nimport \"../../../define/ui/dialog-close.js\";\nimport \"../../../define/ui/controls.js\";\nimport \"../../../define/ui/controls-content.js\";\nimport \"../../../define/ui/tooltip-group.js\";\nimport \"../../../define/ui/controls-group.js\";\nimport \"../../../define/ui/tooltip.js\";\nimport \"../../../define/ui/tooltip-label.js\";\nimport \"../../../define/ui/tooltip-shortcut.js\";\nimport \"../../../define/ui/seek-button.js\";\nimport \"../../../define/ui/play-button.js\";\nimport \"../../../define/ui/time-slider.js\";\nimport \"../../../define/ui/slider-track.js\";\nimport \"../../../define/ui/slider-buffer.js\";\nimport \"../../../define/ui/slider-fill.js\";\nimport \"../../../define/ui/slider-thumb.js\";\nimport \"../../../define/ui/slider-preview.js\";\nimport \"../../../define/ui/slider-value.js\";\nimport \"../../../define/ui/mute-button.js\";\nimport \"../../../define/ui/volume-popover.js\";\nimport \"../../../define/ui/volume-slider.js\";\nimport \"../../../define/ui/time.js\";\nimport \"../../../define/ui/menu.js\";\nimport \"../../../define/ui/menu-content.js\";\nimport \"../../../define/ui/menu-radio-item.js\";\nimport \"../../../define/ui/menu-item-indicator.js\";\nimport \"../../../define/ui/playback-rate-radio-group.js\";\nimport \"../../../define/ui/hotkey.js\";\nimport \"../../../define/ui/status-announcer.js\";\nimport \"../../../define/ui/playback-rate-button.js\";\n//#region src/internal/skins/default-audio/register.ts\nregisterIcons(\"default\", {\n\tcheck: checkIcon,\n\tpause: pauseIcon,\n\tplay: playIcon,\n\trestart: restartIcon,\n\tseek: seekIcon,\n\tspinner: spinnerIcon,\n\t\"volume-high\": volumeHighIcon,\n\t\"volume-low\": volumeLowIcon,\n\t\"volume-off\": volumeOffIcon\n});\n//#endregion\n","import { safeDefine } from \"../../registration/safe-define.js\";\nimport { AudioSkinElement } from \"../../presets/audio/skin.js\";\nimport \"../../internal/skins/default-audio/register.js\";\n//#region src/define/audio/skin.ts\nsafeDefine(AudioSkinElement);\n//#endregion\n","import '../assets/Audios.css';\nimport { defineComponent, openBlock, createElementBlock, unref, createElementVNode, normalizeStyle, withModifiers, toDisplayString } from \"vue\";\nimport { u as useVideojsAdapter, a as useMediaPlayer, p as playerLanguage } from \"./useVideojsAdapter.mjs\";\nimport { t } from \"./index.mjs\";\nimport \"@videojs/html/audio/player\";\nimport \"@videojs/html/audio/skin\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _hoisted_1 = [\"lang\"];\nconst _hoisted_2 = { ref: \"player\" };\nconst _hoisted_3 = [\"autoplay\", \"src\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n name: \"ViewerAudios\"\n },\n __name: \"Audios\",\n props: {\n file: {},\n files: {},\n maxHeight: {},\n maxWidth: {},\n editing: { type: Boolean },\n isSidebarShown: { type: Boolean },\n shown: { type: Boolean },\n turns: {},\n localSource: {},\n comparison: {},\n embedded: { type: Boolean }\n },\n emits: [\"loaded\", \"errored\", \"update:canSwipe\", \"update:editing\", \"update:playing\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const adapter = useVideojsAdapter();\n const {\n onFail,\n donePlaying,\n doneLoading,\n onPause,\n onPlay,\n src\n } = useMediaPlayer(true, props, emit, adapter);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"media-i18n\", { lang: unref(playerLanguage) }, [\n createElementVNode(\"audio-player\", _hoisted_2, [\n createElementVNode(\"audio-skin\", {\n class: \"viewer-media\",\n tabindex: \"-1\",\n style: normalizeStyle({ maxWidth: __props.maxWidth > 0 ? `${__props.maxWidth}px` : void 0 })\n }, [\n createElementVNode(\"audio\", {\n ref: \"audio\",\n autoplay: !__props.embedded,\n src: unref(src),\n preload: \"metadata\",\n onErrorCapture: _cache[0] || (_cache[0] = withModifiers(\n //@ts-ignore\n (...args) => unref(onFail) && unref(onFail)(...args),\n [\"prevent\", \"stop\"]\n )),\n onEnded: _cache[1] || (_cache[1] = //@ts-ignore\n (...args) => unref(donePlaying) && unref(donePlaying)(...args)),\n onPause: _cache[2] || (_cache[2] = //@ts-ignore\n (...args) => unref(onPause) && unref(onPause)(...args)),\n onPlay: _cache[3] || (_cache[3] = //@ts-ignore\n (...args) => unref(onPlay) && unref(onPlay)(...args)),\n onCanplay: _cache[4] || (_cache[4] = //@ts-ignore\n (...args) => unref(doneLoading) && unref(doneLoading)(...args))\n }, toDisplayString(unref(t)(\"Your browser does not support audio.\")), 41, _hoisted_3)\n ], 4)\n ], 512)\n ], 8, _hoisted_1);\n };\n }\n});\nconst Audios = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-5f21e994\"]]);\nexport {\n Audios as default\n};\n//# sourceMappingURL=Audios.mjs.map\n"],"names":["PlayerElement","createPlayer","audioFeatures","AudioPlayerElement","safeDefine","template","createTemplate","skin_default","AudioSkinElement","SkinElement","createShadowStyle","seekIcon","PlaybackRateButtonCore","createState","#props","#media","props","defaults","state","custom","resolveLabel","rateText","media","resolveText","playbackRates","playbackRate","idx","next","r","PlaybackRateButtonDataAttrs","prefix","forwardText","backwardText","SeekButtonCore","direction","SeekButtonDataAttrs","SeekButtonElement","MediaButtonElement","_args","PlayerController","playerContext","selectTime","PlaybackRateButtonElement","selectPlaybackRate","event","changed","applyElementProps","registerIcons","checkIcon","pauseIcon","playIcon","restartIcon","spinnerIcon","volumeHighIcon","volumeLowIcon","volumeOffIcon","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_main","defineComponent","__props","__emit","emit","adapter","useVideojsAdapter","onFail","donePlaying","doneLoading","onPause","onPlay","src","useMediaPlayer","_ctx","_cache","openBlock","createElementBlock","unref","playerLanguage","createElementVNode","normalizeStyle","withModifiers","args","toDisplayString","t","Audios","_export_sfc"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]}
\ No newline at end of file
diff --git a/js/Audios-0teLnv5A.chunk.mjs.map.license b/js/Audios-0teLnv5A.chunk.mjs.map.license
new file mode 120000
index 00000000..a3d508e4
--- /dev/null
+++ b/js/Audios-0teLnv5A.chunk.mjs.map.license
@@ -0,0 +1 @@
+Audios-0teLnv5A.chunk.mjs.license
\ No newline at end of file
diff --git a/js/ImageEditor-CC5NAjCj.chunk.mjs b/js/ImageEditor-CC5NAjCj.chunk.mjs
new file mode 100644
index 00000000..c643c0a9
--- /dev/null
+++ b/js/ImageEditor-CC5NAjCj.chunk.mjs
@@ -0,0 +1,65 @@
+(function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode('.image-editor.viewer__image-editor[data-v-7d237de6]{position:fixed;inset:0;z-index:10102}.glass-surface[data-v-ffbdec7e]{background:var(--editor-glass);-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);box-shadow:0 12px 40px #00000073}.glass-surface--opaque[data-v-ffbdec7e]{background:var(--editor-glass-opaque)}.glass-surface--card[data-v-ffbdec7e]{border-radius:20px}.glass-surface--strip[data-v-ffbdec7e]{border-radius:16px}.glass-surface--pill[data-v-ffbdec7e]{border-radius:var(--border-radius-pill, 100px)}.editor-slider[data-v-b180b2e1]{display:flex;align-items:center;--slider-thumb-size: 14px;gap:calc(var(--default-grid-baseline) * 3);width:100%}.editor-slider__track[data-v-b180b2e1]{position:relative;display:flex;flex:1}.editor-slider__origin[data-v-b180b2e1]{position:absolute;inset-block:4px;width:2px;margin-inline-start:-1px;border-radius:1px;background:var(--color-border-maxcontrast)}.editor-slider input[type=range][data-v-b180b2e1]{appearance:none;position:relative;flex:1;height:20px;margin:0;background:linear-gradient(var(--color-border-dark),var(--color-border-dark)) center/100% 2px no-repeat;cursor:ew-resize}.editor-slider input[type=range][data-v-b180b2e1]::-webkit-slider-thumb{appearance:none;width:var(--slider-thumb-size);height:var(--slider-thumb-size);border-radius:50%;background:var(--color-main-text);box-shadow:0 1px 4px #0006}.editor-slider input[type=range][data-v-b180b2e1]::-moz-range-thumb{width:var(--slider-thumb-size);height:var(--slider-thumb-size);border:none;border-radius:50%;background:var(--color-main-text);box-shadow:0 1px 4px #0006}.editor-slider input[type=range][data-v-b180b2e1]:focus-visible{outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}.editor-slider output[data-v-b180b2e1]{display:flex;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px;text-align:end;font-variant-numeric:tabular-nums}.icon-tab[data-v-92c91076]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:max(64px,var(--default-clickable-area, 44px));min-height:var(--default-clickable-area, 44px);padding:calc(var(--default-grid-baseline) * 2) var(--default-grid-baseline);border:none;border-radius:var(--border-radius-large, 12px);background:transparent;color:var(--color-text-maxcontrast);font:inherit;letter-spacing:.01em;cursor:pointer;transition:background-color .12s ease,color .12s ease}.icon-tab[data-v-92c91076]:hover:not(:disabled){background-color:var(--color-background-hover);color:var(--color-main-text)}.icon-tab[data-v-92c91076]:focus-visible{outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}.icon-tab--active[data-v-92c91076]{background:var(--editor-active);color:var(--color-main-text);box-shadow:inset 0 0 0 1px var(--color-border),0 4px 16px #0000004d}.icon-tab--icon-only[data-v-92c91076]{min-width:var(--default-clickable-area, 44px);padding:0}.icon-tab[data-v-92c91076]:disabled{opacity:.5;cursor:default}@container editor (max-width: 600px){.icon-tab[data-v-92c91076]{min-width:var(--default-clickable-area, 44px);padding:var(--default-grid-baseline) 2px}.icon-tab--icon-only[data-v-92c91076]{padding:0}}.adjust-panel[data-v-1450b457]{display:flex;flex-direction:column;align-items:center;gap:calc(var(--default-grid-baseline) * 2);width:100%}.adjust-panel__tabs[data-v-1450b457]{display:flex;align-items:center;justify-content:safe center;gap:calc(var(--default-grid-baseline) * 2);max-width:100%;overflow-x:auto;padding:2px;scrollbar-width:thin;scrollbar-color:var(--color-border-dark) transparent}.adjust-panel__tabs[data-v-1450b457]>*{flex-shrink:0}.adjust-panel__tabs[data-v-1450b457]::-webkit-scrollbar{height:6px}.adjust-panel__tabs[data-v-1450b457]::-webkit-scrollbar-thumb{background:var(--color-border-dark);border-radius:3px}.adjust-panel__tabs[data-v-1450b457]::-webkit-scrollbar-track{background:transparent}.annotate-panel[data-v-f1bf58b5]{display:flex;flex-direction:column;align-items:center;gap:calc(var(--default-grid-baseline) * 2);width:100%}.annotate-panel__row[data-v-f1bf58b5]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:calc(var(--default-grid-baseline) * 2)}.annotate-panel__divider[data-v-f1bf58b5]{width:1px;height:24px;background-color:var(--color-border)}.annotate-panel__option[data-v-f1bf58b5]{display:flex;align-items:center;gap:var(--default-grid-baseline)}.annotate-panel__dot[data-v-f1bf58b5]{display:block;border-radius:50%;box-shadow:0 0 0 1px var(--color-border-maxcontrast)}.annotate-panel__glyph[data-v-f1bf58b5]{font-family:Helvetica,Arial,sans-serif;line-height:1;text-shadow:0 0 2px rgba(0,0,0,.6)}.crop-panel[data-v-091ea9a4]{display:flex;flex-direction:column;align-items:center;gap:calc(var(--default-grid-baseline) * 2);width:100%}.crop-panel__row[data-v-091ea9a4]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:calc(var(--default-grid-baseline) * 2)}.crop-panel__divider[data-v-091ea9a4]{width:1px;height:24px;background-color:var(--color-border)}.filter-strip[data-v-ceab69b4]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline) * 2);padding:calc(var(--default-grid-baseline) * 2);overflow-y:auto;max-height:100%}.filter-strip[data-v-ceab69b4]>*{flex-shrink:0}.filter-strip[data-v-ceab69b4]{scrollbar-width:thin;scrollbar-color:var(--color-border-dark) transparent}.filter-strip[data-v-ceab69b4]::-webkit-scrollbar{width:6px;height:6px}.filter-strip[data-v-ceab69b4]::-webkit-scrollbar-thumb{background:var(--color-border-dark);border-radius:3px}.filter-strip img[data-v-ceab69b4]{width:64px;aspect-ratio:4/3;object-fit:cover;border-radius:var(--border-radius-large, 12px)}.filter-strip[data-v-ceab69b4]::-webkit-scrollbar-track{background:transparent}.redact-panel[data-v-ca1eeeeb]{display:flex;align-items:center;justify-content:center;gap:calc(var(--default-grid-baseline) * 2)}.redact-panel__divider[data-v-ca1eeeeb]{inline-size:1px;block-size:24px;background:var(--color-border)}.select-panel[data-v-6c179f9e]{display:flex;align-items:center;justify-content:center}.select-panel__hint[data-v-6c179f9e]{font-size:12px;opacity:.65}.sticker-panel[data-v-02765a0d]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:calc(var(--default-grid-baseline) * 2)}.sticker-panel .sticker-panel__emoji[data-v-02765a0d]{font-size:22px;line-height:1}.editor-card[data-v-25ead0dc]{display:flex;flex-direction:column;align-items:center;gap:calc(var(--default-grid-baseline) * 2);min-width:min(420px,92cqw);max-width:min(680px,94cqw);padding:calc(var(--default-grid-baseline) * 3) calc(var(--default-grid-baseline) * 5)}@container editor (max-width: 600px){.editor-card[data-v-25ead0dc]{min-width:0;width:100%;max-width:none;padding-inline:calc(var(--default-grid-baseline) * 3)}}.editor-sidebar[data-v-54ce7748]{padding:var(--default-grid-baseline)}.editor-sidebar__nav[data-v-54ce7748]{display:flex;flex-direction:column;align-items:stretch;gap:calc(var(--default-grid-baseline) * 2)}.editor-topbar__stay[data-v-da1c3a53]{margin-inline-end:auto}.editor-topbar[data-v-da1c3a53]{display:flex;align-items:center;justify-content:space-between;block-size:max(var(--header-height, 50px),var(--default-clickable-area) + var(--default-grid-baseline) * 2);gap:calc(var(--default-grid-baseline) * 2);padding-block:0;padding-inline:calc(var(--default-grid-baseline) * 6) var(--editor-header-margin)}.editor-topbar__history[data-v-da1c3a53]{display:flex;align-items:center;gap:2px;padding:2px;border-radius:var(--border-radius-pill, 100px);background:var(--editor-glass);-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border)}.editor-topbar__separator[data-v-da1c3a53]{width:1px;height:20px;background-color:var(--color-border)}.editor-topbar__zoom[data-v-da1c3a53]{min-width:48px;border:none;background:transparent;color:var(--color-text-maxcontrast);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;padding:0 4px}.editor-topbar__zoom[data-v-da1c3a53]:hover:not(:disabled){color:var(--color-main-text)}.editor-topbar__zoom[data-v-da1c3a53]:focus-visible{outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}.editor-topbar__zoom[data-v-da1c3a53]:disabled{cursor:default;opacity:.4}.editor-topbar__spacer[data-v-da1c3a53],.editor-topbar__actions[data-v-da1c3a53]{flex:1;display:flex;align-items:center;gap:var(--default-grid-baseline)}.editor-topbar__actions[data-v-da1c3a53]{justify-content:flex-end}.editor-topbar__save[data-v-da1c3a53]{display:flex}.editor-topbar__save--split[data-v-da1c3a53]{gap:1px}.editor-topbar__save--split[data-v-da1c3a53]>.button-vue{border-start-end-radius:0;border-end-end-radius:0}.editor-topbar__save--split[data-v-da1c3a53] .action-item__menutoggle{border-start-start-radius:0;border-end-start-radius:0}@container editor (max-width: 600px){.editor-topbar[data-v-da1c3a53]{padding-inline:calc(var(--default-grid-baseline) * 2) var(--editor-header-margin)}.editor-topbar__zoom[data-v-da1c3a53]{min-width:34px}.editor-topbar__spacer[data-v-da1c3a53]{display:none}.editor-topbar__actions[data-v-da1c3a53]{flex:none}.editor-topbar__history[data-v-da1c3a53]{min-width:0;gap:0;padding:0;overflow-x:auto;scrollbar-width:none}.editor-topbar__history[data-v-da1c3a53]::-webkit-scrollbar{display:none}}.floating-toolbar[data-v-b2b848a3]{position:absolute;display:flex;align-items:center;gap:2px;padding:2px;transform:translate(-50%);z-index:1}.floating-toolbar__color[data-v-b2b848a3]{display:flex;align-items:center;justify-content:center;inline-size:var(--default-clickable-area, 34px);block-size:var(--default-clickable-area, 34px)}.floating-toolbar__color input[data-v-b2b848a3]{inline-size:20px;block-size:20px;padding:0;border:none;border-radius:50%;background:transparent;cursor:pointer}.floating-toolbar__color input[data-v-b2b848a3]::-webkit-color-swatch-wrapper{padding:0}.floating-toolbar__color input[data-v-b2b848a3]::-webkit-color-swatch{border:1px solid var(--color-border-maxcontrast);border-radius:50%}.text-overlay[data-v-9a528a49]{position:absolute;line-height:1;padding:0;margin:0;border:none;border-radius:2px;background:transparent;outline:1.5px solid var(--color-primary-element, #5b5cf0);outline-offset:4px;box-shadow:0 0 0 4px #00000026;caret-color:var(--color-primary-element, #5b5cf0);resize:none;overflow:hidden;white-space:pre;z-index:1}@property --default-clickable-area{syntax: ""; inherits: true; initial-value: 34px;}@property --default-grid-baseline{syntax: ""; inherits: true; initial-value: 4px;}.image-editor[data-v-c8e207c9]{--color-main-text: #f2f2f7;--color-main-background: #141416;--color-text-maxcontrast: color-mix(in srgb, var(--color-main-text) 75%, transparent);--color-background-hover: color-mix(in srgb, var(--color-primary-element) 8%, transparent);--color-element-hover: var(--color-background-hover);--color-background-dark: color-mix(in srgb, var(--color-main-text) 14%, transparent);--color-border: color-mix(in srgb, var(--color-main-text) 10%, transparent);--color-border-dark: color-mix(in srgb, var(--color-main-text) 25%, transparent);--color-border-maxcontrast: color-mix(in srgb, var(--color-main-text) 50%, transparent);--editor-active: color-mix(in srgb, var(--color-primary-element) 25%, transparent);--editor-glass: color-mix(in srgb, var(--color-main-background) 60%, transparent);--editor-glass-opaque: color-mix(in srgb, var(--color-main-background) 85%, transparent);--editor-header-margin: calc((var(--header-height, 50px) - var(--default-clickable-area)) / 2);--default-font-size: var(--font-size-small, 13px);font-size:var(--default-font-size);position:relative;height:100%;width:100%;overflow:hidden;color:var(--color-main-text);background-color:var(--color-main-background);container:editor/size}.image-editor[data-v-c8e207c9],.image-editor[data-v-c8e207c9] *,.image-editor[data-v-c8e207c9] *:before,.image-editor[data-v-c8e207c9] *:after{box-sizing:border-box}.image-editor[data-v-c8e207c9] button,.image-editor[data-v-c8e207c9] input,.image-editor[data-v-c8e207c9] select,.image-editor[data-v-c8e207c9] textarea{font-family:inherit}.image-editor__shell[data-v-c8e207c9]{position:relative;height:100%;width:100%}.image-editor[data-v-c8e207c9]:before{content:"";position:absolute;inset:-10%;background-image:var(--editor-backdrop);background-size:cover;background-position:center;filter:blur(64px) saturate(1.3) brightness(.55);transform:scale(1.15)}.image-editor[data-v-c8e207c9] .action-item__popper{--editor-popper-offset: 4px}.image-editor[data-v-c8e207c9] .action-item__popper[data-popper-placement^=bottom] .v-popper__wrapper{margin-block-start:calc(-1 * var(--editor-popper-offset))}.image-editor[data-v-c8e207c9] .action-item__popper[data-popper-placement^=top] .v-popper__wrapper{margin-block-end:calc(-1 * var(--editor-popper-offset))}.image-editor[data-v-c8e207c9] .action-item__popper ul[role=menu]{list-style:none;margin:0;padding:0;max-height:min(600px,80vh);overflow-y:auto}.image-editor__frame[data-v-c8e207c9]{position:relative;height:100%;width:100%;overflow:hidden;background:#0e0e128c;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}.image-editor__viewport[data-v-c8e207c9]{position:absolute;inset:0;padding:calc(var(--header-height, 50px) + var(--default-grid-baseline)) 16px 16px}@container editor (max-width: 600px){.image-editor__viewport[data-v-c8e207c9]{padding:calc(var(--header-height, 50px) + var(--default-grid-baseline)) 8px 8px}.image-editor .image-editor__controls[data-v-c8e207c9]{inset-inline:8px;transform:none;min-width:0;max-width:none;width:auto}.image-editor .image-editor__strip[data-v-c8e207c9]{flex-direction:row;inset-inline:8px;inset-block-start:auto;inset-block-end:calc(var(--default-grid-baseline) * 4);transform:none;max-height:none;overflow-x:auto;overflow-y:hidden}.image-editor .image-editor__rail[data-v-c8e207c9]{inset-inline-start:var(--default-grid-baseline);inset-block-start:calc(var(--header-height, 50px) + var(--default-grid-baseline) * 3);transform:none;max-height:calc(100% - 240px);overflow-y:auto}}.image-editor__stage[data-v-c8e207c9]{position:relative;height:100%;width:100%}.image-editor__canvas[data-v-c8e207c9]{height:100%;width:100%;touch-action:none}.image-editor__topbar[data-v-c8e207c9]{position:absolute;inset-block-start:0;inset-inline:0;background:linear-gradient(rgba(8,8,12,.5),transparent)}.image-editor__rail[data-v-c8e207c9]{position:absolute;inset-inline-start:calc(var(--default-grid-baseline) * 4);inset-block-start:50%;transform:translateY(-50%)}.image-editor__controls[data-v-c8e207c9]{position:absolute;inset-block-end:calc(var(--default-grid-baseline) * 5);inset-inline-start:50%;transform:translate(-50%)}.image-editor__strip[data-v-c8e207c9]{position:absolute;inset-inline-end:calc(var(--default-grid-baseline) * 4);inset-block-start:50%;transform:translateY(-50%);max-height:calc(100% - 160px)}.image-editor .hidden-visually[data-v-c8e207c9]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.image-editor__loading[data-v-c8e207c9]{position:absolute;inset:0;margin:auto}.image-editor[data-v-c8e207c9] .loading-icon svg{animation:editor-spin-c8e207c9 var(--animation-duration, .8s) linear infinite}.image-editor__error[data-v-c8e207c9]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--default-grid-baseline) * 3);text-align:center;padding:calc(var(--default-grid-baseline) * 4)}.image-editor__error p[data-v-c8e207c9]{margin:0;opacity:.85}@keyframes editor-spin-c8e207c9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.material-design-icon[data-v-11acdb77]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart *{box-sizing:border-box;line-height:1.15}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-size:16px;display:flex;flex-direction:column;height:420px;color:#222427;border:1px solid #d9d9d9;border-radius:5px;background:#fff}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-emoji{padding:6px;position:relative;display:inline-block;font-size:0;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-emoji span{display:inline-block}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-emoji .emoji-mart-emoji span{width:38px;height:38px;font-size:32px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-native{font-family:"Segoe UI Emoji",Segoe UI Symbol,Segoe UI,"Apple Color Emoji",Twemoji Mozilla,"Noto Color Emoji",EmojiOne Color,"Android Emoji";word-break:keep-all}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-image{background-size:6100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-image.emoji-set-apple{background-image:url(https://unpkg.com/emoji-datasource-apple@15.0.1/img/apple/sheets-256/64.png)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-image.emoji-set-facebook{background-image:url(https://unpkg.com/emoji-datasource-facebook@15.0.1/img/facebook/sheets-256/64.png)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-image.emoji-set-google{background-image:url(https://unpkg.com/emoji-datasource-google@15.0.1/img/google/sheets-256/64.png)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-type-image.emoji-set-twitter{background-image:url(https://unpkg.com/emoji-datasource-twitter@15.0.1/img/twitter/sheets-256/64.png)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-bar{border:0 solid #d9d9d9}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-bar:first-child{border-bottom-width:1px;border-top-left-radius:5px;border-top-right-radius:5px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-bar:last-child{border-top-width:1px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-scroll{position:relative;overflow-y:scroll;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchors{display:flex;flex-direction:row;justify-content:space-between;padding:0 6px;color:#858585;line-height:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchor{position:relative;display:block;flex:1 1 auto;text-align:center;padding:12px 4px;overflow:hidden;transition:color .1s ease-out;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchor:hover,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchor-selected{color:#464646}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchor-selected .emoji-mart-anchor-bar{bottom:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchor-bar{position:absolute;bottom:-3px;left:0;width:100%;height:3px;background-color:#464646}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchors i{display:inline-block;width:100%;max-width:22px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-anchors svg{fill:currentColor;max-height:18px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .scroller{height:250px;position:relative;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-search{margin-top:6px;padding:0 6px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-search input{font-size:16px;display:block;width:100%;padding:.2em .6em;border-radius:25px;border:1px solid #d9d9d9;outline:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-search-results{height:250px;overflow-y:scroll}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category{position:relative}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category .emoji-mart-emoji span{z-index:1;position:relative;text-align:center;cursor:default}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-emoji-selected:before{z-index:0;content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f4f4f4;border-radius:100%;opacity:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-emoji-selected:before{opacity:1}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category-label{position:sticky;top:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-static .emoji-mart-category-label{z-index:2;position:relative}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-category-label h3{display:block;font-size:16px;width:100%;font-weight:500;padding:5px 6px;background-color:#fff;background-color:#fffffff2}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-emoji{position:relative;display:inline-block;font-size:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-no-results{font-size:14px;text-align:center;padding-top:70px;color:#858585}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-no-results .emoji-mart-category-label{display:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-no-results .emoji-mart-no-results-label{margin-top:.2em}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-no-results .emoji-mart-emoji:hover:before{content:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview{position:relative;height:70px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-emoji,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-data,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-skins{position:absolute;top:50%;transform:translateY(-50%)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-emoji{left:12px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-data{left:68px;right:12px;word-break:break-all}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-skins{right:30px;text-align:right}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-name{font-size:14px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-shortname{font-size:12px;color:#888}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-shortname+.emoji-mart-preview-shortname,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-shortname+.emoji-mart-preview-emoticon,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-emoticon+.emoji-mart-preview-emoticon{margin-left:.5em}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-preview-emoticon{font-size:11px;color:#bbb}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-title span{display:inline-block;vertical-align:middle}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-title .emoji-mart-emoji{padding:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-title-label{color:#999a9c;font-size:21px;font-weight:300}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatches{font-size:0;padding:2px 0;border:1px solid #d9d9d9;border-radius:12px;background-color:#fff}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch{width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch-selected:after{opacity:.75}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch{display:inline-block;width:0;vertical-align:middle;transition-property:width,padding;transition-duration:.125s;transition-timing-function:ease-out}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(1){transition-delay:0s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(2){transition-delay:.03s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(3){transition-delay:.06s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(4){transition-delay:.09s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(5){transition-delay:.12s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch:nth-child(6){transition-delay:.15s}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch-selected{position:relative;width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-swatch-selected:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background-color:#fff;border-radius:100%;pointer-events:none;opacity:0;transition:opacity .2s ease-out}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin{display:inline-block;width:100%;padding-top:100%;max-width:12px;border-radius:100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-1{background-color:#ffc93a}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-2{background-color:#fadcbc}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-3{background-color:#e0bb95}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-4{background-color:#bf8f68}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-5{background-color:#9b643d}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-skin-tone-6{background-color:#594539}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller{position:relative}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.direction-horizontal{display:flex}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller__slot{flex:auto 0 0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart-search .hidden{display:none;visibility:hidden}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart{background-color:var(--color-main-background)!important;border:0;color:var(--color-main-text)!important;display:flex!important}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart button{border:none;background:transparent;font-size:inherit}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-bar,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchors,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-search,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-search input,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-category,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-category-label,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-category-label span,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-skin-swatches{background-color:transparent!important;border-color:var(--color-border)!important;color:inherit!important}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchors{padding-block:0;padding-inline:calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchor{border-radius:0;margin:0!important;padding:0!important;height:var(--clickable-area-small);min-width:var(--clickable-area-small)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchor:hover{background-color:var(--color-background-hover)}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchor:focus-visible{outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-anchor div{display:grid;place-content:center}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-scroll{padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0 calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-category{display:grid;grid-template-columns:repeat(8,1fr);justify-items:stretch}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-category.emoji-mart-no-results{grid-template-columns:1fr;font-size:inherit;color:var(--color-text-maxcontrast)!important}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart div.emoji-mart-category-label{grid-column:span 8;justify-self:stretch}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart h3.emoji-mart-category-label{display:flex;align-items:center;height:var(--default-clickable-area);margin:0;padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0;-webkit-user-select:none;user-select:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji{aspect-ratio:1/1;text-align:center;margin:0!important;padding:0!important}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji:hover,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji:focus-visible,.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji.emoji-mart-emoji-selected{background-color:var(--color-background-hover)!important;border:none;border-radius:var(--border-radius-element);box-shadow:none!important;outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji:before{display:none}.nc-emoji-picker-container[data-v-11acdb77] .emoji-mart .emoji-mart-emoji span{cursor:pointer}.search__wrapper[data-v-11acdb77]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);align-items:end;padding-block:var(--default-grid-baseline);padding-inline:calc(2 * var(--default-grid-baseline))}.row-selected button[data-v-11acdb77],.row-selected span[data-v-11acdb77]{vertical-align:middle}.emoji-delete[data-v-11acdb77]{vertical-align:top;margin-inline-start:-21px;margin-top:-3px}.material-design-icon[data-v-fab7cffe]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.color-picker[data-v-fab7cffe]{display:flex;overflow:hidden;align-content:flex-end;flex-direction:column;justify-content:space-between;padding:var(--border-radius-element);min-width:calc(4 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--clearable[data-v-fab7cffe]{min-width:calc(5 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--advanced-fields[data-v-fab7cffe]{min-width:264px}.color-picker__clear[data-v-fab7cffe]{color:var(--color-main-text)}.color-picker__clear[data-v-fab7cffe]:hover:not(:has(:checked)){color:var(--color-text-maxcontrast)}.color-picker__simple[data-v-fab7cffe]{display:grid;grid-template-columns:repeat(auto-fit,var(--default-clickable-area));grid-auto-rows:var(--default-clickable-area)}.color-picker__simple-color-circle[data-v-fab7cffe]{display:flex;align-items:center;justify-content:center;width:calc(var(--default-clickable-area) - 10px);height:calc(var(--default-clickable-area) - 10px);min-height:calc(var(--default-clickable-area) - 10px);margin:auto;padding:0;color:#fff;border:1px solid rgba(0,0,0,.25);border-radius:50%;font-size:16px}.color-picker__simple-color-circle[data-v-fab7cffe]:focus-within{outline:2px solid var(--color-main-text)}.color-picker__simple-color-circle[data-v-fab7cffe]:hover{opacity:.6}.color-picker__simple-color-circle--active[data-v-fab7cffe]{width:calc(var(--default-clickable-area) - 6px);height:calc(var(--default-clickable-area) - 6px);min-height:calc(var(--default-clickable-area) - 6px);transition:all .1s ease-in-out;opacity:1!important}.color-picker__advanced[data-v-fab7cffe]{box-shadow:none!important}.color-picker__navigation[data-v-fab7cffe]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);justify-content:space-between;margin-top:calc(2 * var(--default-grid-baseline))}[data-v-fab7cffe] .vc-chrome{width:unset;background-color:var(--color-main-background)}[data-v-fab7cffe] .vc-chrome-color-wrap{width:30px;height:30px}[data-v-fab7cffe] .vc-chrome-active-color{border-radius:17px}[data-v-fab7cffe] .vc-chrome-body{padding:14px 0 0;background-color:var(--color-main-background)}[data-v-fab7cffe] .vc-chrome-body .vc-input__input{--input-border-radius: var(--border-radius-element);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;height:var(--default-clickable-area);margin:0;padding-inline:calc(var(--border-radius-element) + var(--input-border-width-offset));padding-block:var(--input-border-width-offset);border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast);border-radius:var(--input-border-radius);font-size:var(--default-font-size);color:var(--color-main-text);box-shadow:none}[data-v-fab7cffe] .vc-chrome-body .vc-input__input:active:not([disabled]),[data-v-fab7cffe] .vc-chrome-body .vc-input__input:hover:not([disabled]),[data-v-fab7cffe] .vc-chrome-body .vc-input__input:focus:not([disabled]){--input-border-width-offset: 0px;border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important}[data-v-fab7cffe] .vc-chrome-body .vc-input__input:active:not([disabled])+.vc-input__label,[data-v-fab7cffe] .vc-chrome-body .vc-input__input:hover:not([disabled])+.vc-input__label,[data-v-fab7cffe] .vc-chrome-body .vc-input__input:focus:not([disabled])+.vc-input__label{color:var(--color-main-text)}[data-v-fab7cffe] .vc-chrome-body .vc-input__label{position:absolute;inset-inline:var(--border-width-input-focused, 2px);inset-block-start:calc(-1.5 * var(--font-size-small, 13px) / 2);max-width:fit-content;margin-inline:calc(var(--border-radius-element) - var(--default-grid-baseline));margin-block:0;padding-inline:var(--default-grid-baseline);font-family:var(--font-face);font-size:var(--font-size-small, 13px);line-height:1.5;font-weight:var(--font-weight-element, 500);color:var(--color-text-maxcontrast);background-color:var(--color-main-background);pointer-events:none}[data-v-fab7cffe] .vc-chrome-toggle-btn{display:flex;justify-content:center;align-items:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin-inline-start:6px;filter:var(--background-invert-if-dark)}[data-v-fab7cffe] .vc-chrome-toggle-icon{width:24px;height:24px;margin:0}[data-v-fab7cffe] .vc-chrome-toggle-icon-highlight{width:var(--default-clickable-area);height:var(--default-clickable-area);inset:0}[data-v-fab7cffe] .vc-chrome-saturation-wrap{border-radius:3px}[data-v-fab7cffe] .vc-chrome-saturation-circle{width:20px;height:20px}.slide-enter-from[data-v-fab7cffe]{transform:translate(-50%);opacity:0}.slide-enter-to[data-v-fab7cffe],.slide-leave-from[data-v-fab7cffe]{transform:translate(0);opacity:1}.slide-leave-to[data-v-fab7cffe]{transform:translate(-50%);opacity:0}.slide-enter-active[data-v-fab7cffe],.slide-leave-active[data-v-fab7cffe]{transition:all 50ms ease-in-out}.material-design-icon[data-v-3e2324b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-separator[data-v-3e2324b7]{height:0;margin:5px 10px 5px 15px;border-bottom:1px solid var(--color-border-dark);cursor:default}')),document.head.appendChild(a)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
+import{S as uu,K as qa,d as Ae,k as p,q as k,M as rt,X as I,v as He,B as j,a0 as ha,A as S,D as G,x as T,E as Fe,H as Sa,o as _u,m as ae,W as Y,bq as zr,bo as lu,ab as Rt,F as qe,ae as Re,u as Se,Y as wt,a1 as Pe,y as yt,I as pr,b2 as $e,z as da,r as ao,br as gu,au as Hr,L as hu,c as ce,aJ as du,C as Oe,b3 as io,b4 as ro,aw as Rr,f as ht,bs as fu,bt as Fu,bu as cu,bv as mu,J as ie,s as br,a8 as no,aU as pu,G as Qa,w as We,V as ci,N as oo,Q as he,bc as so,a5 as uo,j as bu,aM as yu,h as Ha,l as Ir}from"./store-DT5_o2He.chunk.mjs";import{t as ku,a as wu,s as vi}from"./useViewerSettings--11i6Fi5.chunk.mjs";import{i as Du,F as vu,G as xu,H as Cu,J as Eu,d as ju,K as Bu,N as je,L as qu,M as Su,D as _o,q as Au,O as Mu,P as Pu,a as si}from"./mdi-Cw2wacGo.chunk.mjs";import{N as lo,_ as Lu,e as Tu,r as zu,w as Hu}from"./mount-Cgy6RMm9.chunk.mjs";import{d as Or,C as Gr,a as Wr,b as Vt}from"./colors-BZJDam4m.chunk.mjs";import{N as ya}from"./NcActionButton-B2udyVne.chunk.mjs";import{_ as Ru}from"./_plugin-vue_export-helper-D8VWKLTF.chunk.mjs";import"./index-CYLQ9VQv.chunk.mjs";import"./handlerEvents-DFeChEGA.chunk.mjs";import"./NcEmptyContent-DtnE526h.chunk.mjs";import"./livePhotoUtils-C4mNnUu-.chunk.mjs";import"./canDownload-C1jVjD_-.chunk.mjs";function Iu(a,e={},t={}){let{container:i}=t;"container"in e&&typeof e.container=="string"&&(i??=e.container);const r=(typeof i=="string"&&document.querySelector(i)||document.body).appendChild(document.createElement("div"));return new Promise((n,o)=>{const s=uu(a,{...e,container:null,onClose(...u){const _=u.length>1?u:u[0];s.unmount(),r.remove(),n(_)},"onVue:unmounted":()=>{s.unmount(),r.remove(),o(new Error("Dialog was unmounted without close event"))}});s.mount(r)})}const Ou=["role"],Gu={key:0,class:"notecard__heading"},Wu={class:"notecard__text"},Vu=Ae({__name:"NcNoteCard",props:{heading:{default:void 0},showAlert:{type:Boolean},text:{default:void 0},type:{default:"warning"}},setup(a){const e=a,t=Fe(()=>e.showAlert||e.type==="error"),i=Fe(()=>{switch(e.type){case"error":return Eu;case"success":return Cu;case"info":return xu;default:return vu}});return(r,n)=>(p(),k("div",{class:He(["notecard",{[`notecard--${a.type}`]:a.type,"notecard--legacy":j(Du)}]),role:t.value?"alert":"note"},[rt(r.$slots,"icon",{},()=>[I(j(ha),{path:i.value,class:He(["notecard__icon",{"notecard__icon--heading":a.heading}]),inline:""},null,8,["path","class"])],!0),S("div",null,[a.heading?(p(),k("p",Gu,G(a.heading),1)):T("",!0),rt(r.$slots,"default",{},()=>[S("p",Wu,G(a.text),1)],!0)])],10,Ou))}}),go=qa(Vu,[["__scopeId","data-v-6be9fa31"]]);var Nu=["textContent"],$u=["innerHTML"],Uu=Ae({__name:"GenericDialog",props:{name:{},text:{},html:{},buttons:{},severity:{}},emits:["close"],setup(a,{emit:e}){const t=a,i=e,r=Fe(()=>t.buttons?.map(o=>({...o,callback(){o.callback(),i("close",!0)}}))),n=()=>`${t.name}: ${t.text}`;return Sa(()=>window.addEventListener("unload",n)),_u(()=>window.removeEventListener("unload",n)),(o,s)=>(p(),ae(j(lo),{dialogClasses:"nc-generic-dialog",buttons:r.value,name:a.name,message:a.text,"onUpdate:open":s[0]||(s[0]=u=>o.$emit("close",!1))},{default:Y(()=>[a.severity?(p(),ae(j(go),{key:0,type:a.severity},{default:Y(()=>[S("p",{textContent:G(a.text)},null,8,Nu)]),_:1},8,["type"])):T("",!0),a.html?(p(),k("div",{key:1,innerHTML:a.html},null,8,$u)):T("",!0)]),_:1},8,["buttons","name","message"]))}}),Yu=class{#e;#t;#a;#i;constructor(a,e,t=[],i){this.#e=a,this.#t=e,this.#a=t,this.#i=i}async show(){if(!await Iu(Uu,{buttons:this.#a,name:this.#e,text:this.#t,severity:this.#i}))throw new Error("Dialog closed")}};async function ho(a){a={labelConfirm:ku("Confirm"),...a};const{promise:e,resolve:t}=Promise.withResolvers(),i=[{label:a.labelConfirm,variant:"primary",callback(){t(!0)}}];return a.labelReject&&i.unshift({label:a.labelReject,callback(){t(!1)}}),await new Yu(a.name,a.text,i,a.severity).show(),e}const Xu=Math.PI/180;function Ku(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}const Tt=typeof zr<"u"?zr:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},W={_global:Tt,version:"10.3.3",isBrowser:Ku(),isUnminified:/param/.test(function(a){}.toString()),dblClickWindow:400,getAngle(a){return W.angleDeg?a*Xu:a},enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,_renderBackend:"web",legacyTextRendering:!1,pixelRatio:typeof window<"u"&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging(){return W.DD.isDragging},isTransforming(){var a,e;return(e=(a=W.Transformer)===null||a===void 0?void 0:a.isTransforming())!==null&&e!==void 0?e:!1},isDragReady(){return!!W.DD.node},releaseCanvasOnDestroy:!0,document:Tt.document,_injectGlobal(a){typeof Tt.Konva<"u"&&console.error("Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment."),Tt.Konva=a}},Be=a=>{W[a.prototype.getClassName()]=a};W._injectGlobal(W);const Zu=`Konva.js unsupported environment.
+
+Looks like you are trying to use Konva.js in Node.js environment. because "document" object is undefined.
+
+To use Konva.js in Node.js environment, you need to use the "canvas-backend" or "skia-backend" module.
+
+bash: npm install canvas
+js: import "konva/canvas-backend";
+
+or
+
+bash: npm install skia-canvas
+js: import "konva/skia-backend";
+`,Vr=()=>{if(typeof document>"u")throw new Error(Zu)};class Ye{constructor(e=[1,0,0,1,0,0]){this.dirty=!1,this.m=e&&e.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new Ye(this.m)}copyInto(e){e.m[0]=this.m[0],e.m[1]=this.m[1],e.m[2]=this.m[2],e.m[3]=this.m[3],e.m[4]=this.m[4],e.m[5]=this.m[5]}point(e){const t=this.m;return{x:t[0]*e.x+t[2]*e.y+t[4],y:t[1]*e.x+t[3]*e.y+t[5]}}translate(e,t){return this.m[4]+=this.m[0]*e+this.m[2]*t,this.m[5]+=this.m[1]*e+this.m[3]*t,this}scale(e,t){return this.m[0]*=e,this.m[1]*=e,this.m[2]*=t,this.m[3]*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),r=this.m[0]*t+this.m[2]*i,n=this.m[1]*t+this.m[3]*i,o=this.m[0]*-i+this.m[2]*t,s=this.m[1]*-i+this.m[3]*t;return this.m[0]=r,this.m[1]=n,this.m[2]=o,this.m[3]=s,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(e,t){const i=this.m[0]+this.m[2]*t,r=this.m[1]+this.m[3]*t,n=this.m[2]+this.m[0]*e,o=this.m[3]+this.m[1]*e;return this.m[0]=i,this.m[1]=r,this.m[2]=n,this.m[3]=o,this}multiply(e){const t=this.m[0]*e.m[0]+this.m[2]*e.m[1],i=this.m[1]*e.m[0]+this.m[3]*e.m[1],r=this.m[0]*e.m[2]+this.m[2]*e.m[3],n=this.m[1]*e.m[2]+this.m[3]*e.m[3],o=this.m[0]*e.m[4]+this.m[2]*e.m[5]+this.m[4],s=this.m[1]*e.m[4]+this.m[3]*e.m[5]+this.m[5];return this.m[0]=t,this.m[1]=i,this.m[2]=r,this.m[3]=n,this.m[4]=o,this.m[5]=s,this}invert(){const e=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),t=this.m[3]*e,i=-this.m[1]*e,r=-this.m[2]*e,n=this.m[0]*e,o=e*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=e*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=t,this.m[1]=i,this.m[2]=r,this.m[3]=n,this.m[4]=o,this.m[5]=s,this}getMatrix(){return this.m}decompose(){const e=this.m[0],t=this.m[1],i=this.m[2],r=this.m[3],n=this.m[4],o=this.m[5],s=e*r-t*i,u={x:n,y:o,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(e!=0||t!=0){const _=Math.sqrt(e*e+t*t);u.rotation=t>0?Math.acos(e/_):-Math.acos(e/_),u.scaleX=_,u.scaleY=s/_,u.skewX=(e*i+t*r)/s,u.skewY=0}else if(i!=0||r!=0){const _=Math.sqrt(i*i+r*r);u.rotation=Math.PI/2-(r>0?Math.acos(-i/_):-Math.acos(i/_)),u.scaleX=s/_,u.scaleY=_,u.skewX=0,u.skewY=(e*i+t*r)/s}return u.rotation=E._getRotation(u.rotation),u}}const Qu="[object Array]",Ju="[object Number]",e1="[object String]",t1="[object Boolean]",a1=Math.PI/180,fo=180/Math.PI,Ra="#",i1="",r1="0",n1="Konva warning: ",Nr="Konva error: ",o1={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};let ra=null;const s1=typeof window<"u"?window:{},xi=new WeakMap,u1=(a,e)=>{typeof a.requestAnimationFrame=="function"?a.requestAnimationFrame(e):typeof requestAnimationFrame<"u"?requestAnimationFrame(e):setTimeout(e,16)},$r=new Map,Ur=a=>{const e=a.trim();return e.indexOf(",")===-1?e.split(/\s*\/\s*|\s+/):e.split(/\s*,\s*/)},Fo="[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?",_1=new RegExp(`^(${Fo})(%?)$`,"i"),jt=(a,e)=>{const t=_1.exec(a);return t?t[2]?Number(t[1])/100*e:Number(t[1]):NaN},Ia=/^#[0-9a-f]+$/i,Yr=a=>Math.min(Math.max(a,0),1),l1=new RegExp(`^(${Fo})(deg|grad|rad|turn)?$`,"i"),g1={deg:1,grad:.9,rad:fo,turn:360},E={_isElement(a){return!!(a&&a.nodeType==1)},_isFunction(a){return!!(a&&a.constructor&&a.call&&a.apply)},_isPlainObject(a){return!!a&&a.constructor===Object},_isArray(a){return Object.prototype.toString.call(a)===Qu},_isNumber(a){return Object.prototype.toString.call(a)===Ju&&!isNaN(a)&&isFinite(a)},_isString(a){return Object.prototype.toString.call(a)===e1},_isBoolean(a){return Object.prototype.toString.call(a)===t1},isObject(a){return a instanceof Object},isValidSelector(a){if(typeof a!="string")return!1;const e=a[0];return e==="#"||e==="."||e===e.toUpperCase()},_sign(a){return a===0||a>0?1:-1},requestAnimFrame(a,e){const t=e&&!e.closed&&e||s1;let i=xi.get(t);i||(i=[],xi.set(t,i),u1(t,function(){xi.delete(t),i.forEach(function(r){r()})})),i.push(a)},createCanvasElement(){Vr();const a=document.createElement("canvas");try{a.style=a.style||{}}catch{}return a},createImageElement(){return Vr(),document.createElement("img")},_isInDocument(a){return!!a.isConnected},_urlToImage(a,e){const t=E.createImageElement();t.onload=function(){e(t)},t.src=a},_rgbToHex(a,e,t){return((1<<24)+(a<<16)+(e<<8)+t).toString(16).slice(1)},_hexToRgb(a){a=a.replace(Ra,i1);const e=parseInt(a,16);return{r:e>>16&255,g:e>>8&255,b:e&255}},getRandomColor(){let a=(Math.random()*16777215<<0).toString(16);for(;a.length<6;)a=r1+a;return Ra+a},isCanvasFarblingActive(){if(ra!==null)return ra;if(typeof document>"u")return ra=!1,!1;const a=this.createCanvasElement();a.width=10,a.height=10;const e=a.getContext("2d",{willReadFrequently:!0});e.clearRect(0,0,10,10),e.fillStyle="#282828",e.fillRect(0,0,10,10);const t=e.getImageData(0,0,10,10).data;let i=!1;for(let r=0;r<100;r++)if(t[r*4]!==40||t[r*4+1]!==40||t[r*4+2]!==40||t[r*4+3]!==255){i=!0;break}return ra=i,this.releaseCanvas(a),ra},getHitColor(){const a=this.getRandomColor();return this.isCanvasFarblingActive()?this.getSnappedHexColor(a):a},getHitColorKey(a,e,t){return this.isCanvasFarblingActive()&&(a=Math.round(a/5)*5,e=Math.round(e/5)*5,t=Math.round(t/5)*5),Ra+this._rgbToHex(a,e,t)},getSnappedHexColor(a){const e=this._hexToRgb(a);return Ra+this._rgbToHex(Math.round(e.r/5)*5,Math.round(e.g/5)*5,Math.round(e.b/5)*5)},getRGB(a){var e;const{r:t=0,g:i=0,b:r=0}=(e=E.colorToRGBA(a))!==null&&e!==void 0?e:{};return{r:t,g:i,b:r}},colorToRGBA(a){a=(a||"").trim()||"black";const e=E._namedColorToRBA(a)||E._hex3ColorToRGBA(a)||E._hex4ColorToRGBA(a)||E._hex6ColorToRGBA(a)||E._hex8ColorToRGBA(a)||E._rgbColorToRGBA(a)||E._hslColorToRGBA(a);if(e&&[e.r,e.g,e.b,e.a].every(E._isNumber))return e},_namedColorToRBA(a){const e=o1[a.toLowerCase()];return e?{r:e[0],g:e[1],b:e[2],a:e.length>3?e[3]:1}:null},_rgbColorToRGBA(a){const e=/^rgba?\(([^)]*)\)$/i.exec(a);if(!e)return;const t=Ur(e[1]);if(!(t.length<3||t.length>4))return{r:jt(t[0],255),g:jt(t[1],255),b:jt(t[2],255),a:t.length>3?jt(t[3],1):1}},_hex8ColorToRGBA(a){if(a.length===9&&Ia.test(a))return{r:parseInt(a.slice(1,3),16),g:parseInt(a.slice(3,5),16),b:parseInt(a.slice(5,7),16),a:parseInt(a.slice(7,9),16)/255}},_hex6ColorToRGBA(a){if(a.length===7&&Ia.test(a))return{r:parseInt(a.slice(1,3),16),g:parseInt(a.slice(3,5),16),b:parseInt(a.slice(5,7),16),a:1}},_hex4ColorToRGBA(a){if(a.length===5&&Ia.test(a))return{r:parseInt(a[1]+a[1],16),g:parseInt(a[2]+a[2],16),b:parseInt(a[3]+a[3],16),a:parseInt(a[4]+a[4],16)/255}},_hex3ColorToRGBA(a){if(a.length===4&&Ia.test(a))return{r:parseInt(a[1]+a[1],16),g:parseInt(a[2]+a[2],16),b:parseInt(a[3]+a[3],16),a:1}},_hslColorToRGBA(a){const e=/^hsla?\(([^)]*)\)$/i.exec(a);if(!e)return;const t=Ur(e[1]);if(t.length<3||t.length>4)return;const i=l1.exec(t[0]);if(!i)return;const r=i[2],n=Number(i[1])*(r?g1[r.toLowerCase()]:1);if(!isFinite(n))return;const o=(n%360+360)%360/360,s=Yr(jt(t[1],100)/100),u=Yr(jt(t[2],100)/100),_=t.length>3?jt(t[3],1):1,l=u<.5?u*(1+s):u+s-u*s,g=2*u-l,d=[0,0,0];for(let F=0;F<3;F++){let f=o+.3333333333333333*-(F-1);f<0&&f++,f>1&&f--;let w;6*f<1?w=g+(l-g)*6*f:2*f<1?w=l:3*f<2?w=g+(l-g)*(2/3-f)*6:w=g,d[F]=w*255}return{r:Math.round(d[0]),g:Math.round(d[1]),b:Math.round(d[2]),a:_}},haveIntersection(a,e){return!(e.x>a.x+a.width||e.x+e.widtha.y+a.height||e.y+e.height1?(o=t,s=i,u=(t-r)*(t-r)+(i-n)*(i-n)):(o=a+l*(t-a),s=e+l*(i-e),u=(o-r)*(o-r)+(s-n)*(s-n))}return[o,s,u]},_getProjectionToLine(a,e,t){const i=E.cloneObject(a);let r=Number.MAX_VALUE;return e.forEach(function(n,o){if(!t&&o===e.length-1)return;const s=e[(o+1)%e.length],u=E._getProjectionToSegment(n.x,n.y,s.x,s.y,a.x,a.y),_=u[0],l=u[1],g=u[2];ge.length){const o=e;e=a,a=o}for(let o=0;o{e.width=0,e.height=0})},drawRoundedRectPath(a,e,t,i){let r=e<0?e:0,n=t<0?t:0;e=Math.abs(e),t=Math.abs(t);let o=0,s=0,u=0,_=0;typeof i=="number"?o=s=u=_=Math.min(i,e/2,t/2):(o=Math.min(i[0]||0,e/2,t/2),s=Math.min(i[1]||0,e/2,t/2),_=Math.min(i[2]||0,e/2,t/2),u=Math.min(i[3]||0,e/2,t/2)),a.moveTo(r+o,n),a.lineTo(r+e-s,n),a.arc(r+e-s,n+s,s,Math.PI*3/2,0,!1),a.lineTo(r+e,n+t-_),a.arc(r+e-_,n+t-_,_,0,Math.PI/2,!1),a.lineTo(r+u,n+t),a.arc(r+u,n+t-u,u,Math.PI/2,Math.PI,!1),a.lineTo(r,n+o),a.arc(r+o,n+o,o,Math.PI,Math.PI*3/2,!1)},drawRoundedPolygonPath(a,e,t,i,r){i=Math.abs(i);for(let n=0;ntypeof l=="number"?Math.floor(l):l)),n+=d1+_.join(Xr)+f1)):(n+=s.property,e||(n+=b1+s.val)),n+=m1;return n}clearTrace(){this.traceArr=[]}_trace(e){let t=this.traceArr,i;t.push(e),i=t.length,i>=k1&&t.shift()}reset(){const e=this.getCanvas().getPixelRatio();this.setTransform(1*e,0,0,1*e,0,0)}getCanvas(){return this.canvas}clear(e){const t=this.getCanvas();e?this.clearRect(e.x||0,e.y||0,e.width||0,e.height||0):this.clearRect(0,0,t.getWidth()/t.pixelRatio,t.getHeight()/t.pixelRatio)}_applyLineCap(e){const t=e.attrs.lineCap;t&&this.setAttr("lineCap",t)}_applyOpacity(e){const t=e.getAbsoluteOpacity();t!==1&&this.setAttr("globalAlpha",t)}_applyLineJoin(e){const t=e.attrs.lineJoin;t&&this.setAttr("lineJoin",t)}_applyMiterLimit(e){const t=e.attrs.miterLimit;t!=null&&this.setAttr("miterLimit",t)}setAttr(e,t){this._context[e]=t}arc(e,t,i,r,n,o){this._context.arc(e,t,i,r,n,o)}arcTo(e,t,i,r,n){this._context.arcTo(e,t,i,r,n)}beginPath(){this._context.beginPath()}bezierCurveTo(e,t,i,r,n,o){this._context.bezierCurveTo(e,t,i,r,n,o)}clearRect(e,t,i,r){this._context.clearRect(e,t,i,r)}clip(...e){this._context.clip.apply(this._context,e)}closePath(){this._context.closePath()}createImageData(e,t){const i=arguments;if(i.length===2)return this._context.createImageData(e,t);if(i.length===1)return this._context.createImageData(e)}createLinearGradient(e,t,i,r){return this._context.createLinearGradient(e,t,i,r)}createPattern(e,t){return this._context.createPattern(e,t)}createRadialGradient(e,t,i,r,n,o){return this._context.createRadialGradient(e,t,i,r,n,o)}drawImage(e,t,i,r,n,o,s,u,_){const l=arguments,g=this._context;l.length===3?g.drawImage(e,t,i):l.length===5?g.drawImage(e,t,i,r,n):l.length===9&&g.drawImage(e,t,i,r,n,o,s,u,_)}ellipse(e,t,i,r,n,o,s,u){this._context.ellipse(e,t,i,r,n,o,s,u)}isPointInPath(e,t,i,r){return i?this._context.isPointInPath(i,e,t,r):this._context.isPointInPath(e,t,r)}fill(...e){this._context.fill.apply(this._context,e)}fillRect(e,t,i,r){this._context.fillRect(e,t,i,r)}strokeRect(e,t,i,r){this._context.strokeRect(e,t,i,r)}fillText(e,t,i,r){r?this._context.fillText(e,t,i,r):this._context.fillText(e,t,i)}measureText(e){return this._context.measureText(e)}getImageData(e,t,i,r){return this._context.getImageData(e,t,i,r)}lineTo(e,t){this._context.lineTo(e,t)}moveTo(e,t){this._context.moveTo(e,t)}rect(e,t,i,r){this._context.rect(e,t,i,r)}roundRect(e,t,i,r,n){this._context.roundRect(e,t,i,r,n)}putImageData(e,t,i){this._context.putImageData(e,t,i)}quadraticCurveTo(e,t,i,r){this._context.quadraticCurveTo(e,t,i,r)}restore(){this._context.restore()}rotate(e){this._context.rotate(e)}save(){this._context.save()}scale(e,t){this._context.scale(e,t)}setLineDash(e){this._context.setLineDash?this._context.setLineDash(e):"mozDash"in this._context?this._context.mozDash=e:"webkitLineDash"in this._context&&(this._context.webkitLineDash=e)}getLineDash(){return this._context.getLineDash()}setTransform(e,t,i,r,n,o){this._context.setTransform(e,t,i,r,n,o)}stroke(e){e?this._context.stroke(e):this._context.stroke()}strokeText(e,t,i,r){this._context.strokeText(e,t,i,r)}transform(e,t,i,r,n,o){this._context.transform(e,t,i,r,n,o)}translate(e,t){this._context.translate(e,t)}_enableTrace(){let e=this,t=Kr.length,i=this.setAttr,r,n;const o=function(s){let u=e[s],_;e[s]=function(){return n=h1(Array.prototype.slice.call(arguments,0)),_=u.apply(e,arguments),e._trace({method:s,args:n}),_}};for(r=0;r{e.dragStatus==="dragging"&&(a=!0)}),a},justDragged:!1,get node(){let a;return me._dragElements.forEach(e=>{a=e.node}),a},_dragElements:new Map,_listenToWindow(a){const e=i=>me._endDragBefore(i,a),t=i=>me._drag(i,a);a.addEventListener("mouseup",e,!0),a.addEventListener("touchend",e,!0),a.addEventListener("touchcancel",e,!0),a.addEventListener("mousemove",t),a.addEventListener("touchmove",t),a.addEventListener("mouseup",me._endDragAfter,!1),a.addEventListener("touchend",me._endDragAfter,!1),a.addEventListener("touchcancel",me._endDragAfter,!1)},_drag(a,e){const t=[];me._dragElements.forEach((i,r)=>{const{node:n}=i,o=n.getStage();if(e&&o._getOwnerWindow()!==e)return;o.setPointersPositions(a),i.pointerId===void 0&&(i.pointerId=E._getFirstPointerId(a));const s=o._changedPointerPositions.find(u=>u.id===i.pointerId);if(s){if(i.dragStatus!=="dragging"){const u=n.dragDistance();if(Math.max(Math.abs(s.x-i.startPointerPos.x),Math.abs(s.y-i.startPointerPos.y)){i.getStage()&&i.fire("dragmove",{type:"dragmove",target:i,evt:a},!0)})},_endDragBefore(a,e){const t=[];me._dragElements.forEach(i=>{const{node:r}=i,n=r.getStage();if(a&&(!e||n._getOwnerWindow()===e)&&n.setPointersPositions(a),!n._changedPointerPositions.find(s=>s.id===i.pointerId))return;(i.dragStatus==="dragging"||i.dragStatus==="stopped")&&(me.justDragged=!0,W._mouseListenClick=!1,W._touchListenClick=!1,W._pointerListenClick=!1,i.dragStatus="stopped");const o=i.node.getLayer()||i.node instanceof W.Stage&&i.node;o&&t.indexOf(o)===-1&&t.push(o)}),t.forEach(i=>{i.draw()})},_endDragAfter(a){me._dragElements.forEach((e,t)=>{e.dragStatus==="stopped"&&e.node.fire("dragend",{type:"dragend",target:e.node,evt:a},!0),e.dragStatus!=="dragging"&&me._dragElements.delete(t)})}};function Dt(a){return E._isString(a)?'"'+a+'"':Object.prototype.toString.call(a)==="[object Number]"||E._isBoolean(a)?a:Object.prototype.toString.call(a)}function co(a){return a>255?255:a<0?0:Math.round(a)}function O(){if(W.isUnminified)return function(a,e){return E._isNumber(a)||E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a number.'),a}}function pi(a){if(W.isUnminified)return function(e,t){let i=E._isNumber(e),r=E._isArray(e)&&e.length==a;return!i&&!r&&E.warn(Dt(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or Array('+a+")"),e}}function Yi(){if(W.isUnminified)return function(a,e){return E._isNumber(a)||a==="auto"||E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a number or "auto".'),a}}function zt(){if(W.isUnminified)return function(a,e){return E._isString(a)||E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a string.'),a}}function Qr(){if(W.isUnminified)return function(a,e){const t=E._isString(a),i=Object.prototype.toString.call(a)==="[object CanvasGradient]"||a&&a.addColorStop;return t||i||E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a string or a native gradient.'),a}}function x1(){if(W.isUnminified)return function(a,e){const t=Int8Array?Object.getPrototypeOf(Int8Array):null;return t&&a instanceof t||(E._isArray(a)?a.forEach(function(i){E._isNumber(i)||E.warn('"'+e+'" attribute has non numeric element '+i+". Make sure that all elements are numbers.")}):E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a array of numbers.')),a}}function tt(){if(W.isUnminified)return function(a,e){return a===!0||a===!1||E.warn(Dt(a)+' is a not valid value for "'+e+'" attribute. The value should be a boolean.'),a}}function C1(a){if(W.isUnminified)return function(e,t){return e==null||E.isObject(e)||E.warn(Dt(e)+' is a not valid value for "'+t+'" attribute. The value should be an object with properties '+a),e}}const na="get",oa="set",b={addGetterSetter(a,e,t,i,r){b.addGetter(a,e,t),b.addSetter(a,e,i,r),b.addOverloadedGetterSetter(a,e)},addGetter(a,e,t){const i=na+E._capitalize(e);a.prototype[i]=a.prototype[i]||function(){const r=this.attrs[e];return r===void 0?t:r}},addSetter(a,e,t,i){const r=oa+E._capitalize(e);a.prototype[r]||b.overWriteSetter(a,e,t,i)},overWriteSetter(a,e,t,i){const r=oa+E._capitalize(e);a.prototype[r]=function(n){return t&&n!==void 0&&n!==null&&(n=t.call(this,n,e)),this._setAttr(e,n),i&&i.call(this),this}},addComponentsGetterSetter(a,e,t,i,r){const n=t.length,o=E._capitalize,s=na+o(e),u=oa+o(e);a.prototype[s]=function(){const l={};for(let g=0;g{this._setAttr(e+o(d),void 0)}),this._fireChangeEvent(e,g,l),r&&r.call(this),this},b.addOverloadedGetterSetter(a,e)},addOverloadedGetterSetter(a,e){const t=E._capitalize(e),i=oa+t,r=na+t;a.prototype[e]=function(){return arguments.length?(this[i](arguments[0]),this):this[r]()}},addDeprecatedGetterSetter(a,e,t,i){E.error("Adding deprecated "+e);const r=na+E._capitalize(e),n=e+" property is deprecated and will be removed soon. Look at Konva change log for more information.";a.prototype[r]=function(){E.error(n);const o=this.attrs[e];return o===void 0?t:o},b.addSetter(a,e,i,function(){E.error(n)}),b.addOverloadedGetterSetter(a,e)},backCompat(a,e){E.each(e,function(t,i){const r=a.prototype[i],n=na+E._capitalize(t),o=oa+E._capitalize(t);function s(){r.apply(this,arguments),E.error('"'+t+'" method is deprecated and will be removed soon. Use ""'+i+'" instead.')}a.prototype[t]=s,a.prototype[n]=s,a.prototype[o]=s})},afterSetFilter(){this._filterUpToDate=!1}};function E1(a){const e=/(\w+)\(([^)]+)\)/g;let t;for(;(t=e.exec(a))!==null;){const[,i,r]=t;switch(i){case"blur":{const n=parseFloat(r.replace("px",""));return function(o){this.blurRadius(n*.5);const s=W.Filters;s&&s.Blur&&s.Blur.call(this,o)}}case"brightness":{const n=r.includes("%")?parseFloat(r)/100:parseFloat(r);return function(o){this.brightness(n);const s=W.Filters;s&&s.Brightness&&s.Brightness.call(this,o)}}case"contrast":{const n=parseFloat(r);return function(o){const s=100*(Math.sqrt(n)-1);this.contrast(s);const u=W.Filters;u&&u.Contrast&&u.Contrast.call(this,o)}}case"grayscale":return function(n){const o=W.Filters;o&&o.Grayscale&&o.Grayscale.call(this,n)};case"sepia":return function(n){const o=W.Filters;o&&o.Sepia&&o.Sepia.call(this,n)};case"invert":return function(n){const o=W.Filters;o&&o.Invert&&o.Invert.call(this,n)};default:E.warn(`CSS filter "${i}" is not supported in fallback mode. Consider using function filters for better compatibility.`);break}}return()=>{}}const Ja="absoluteOpacity",Jr="allEventListeners",st="absoluteTransform",en="absoluteScale",Bt="canvas",j1="Change",B1="children",q1="konva",Xi="listening",S1="mouseenter",A1="mouseleave",M1="pointerenter",P1="pointerleave",L1="touchenter",T1="touchleave",tn="set",an="Shape",ei=" ",rn="stage",ft="transform",z1="Stage",Ki="visible",H1=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(ei);let R1=1,R=class qt{constructor(e){this._id=R1++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(e),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(e){(e===ft||e===st)&&this._cache.get(e)?this._cache.get(e).dirty=!0:e?this._cache.delete(e):this._cache.clear()}_getCache(e,t){let i=this._cache.get(e);return(i===void 0||(e===ft||e===st)&&i.dirty===!0)&&(i=t.call(this),this._cache.set(e,i)),i}_calculate(e,t,i){if(!this._attachedDepsListeners.get(e)){const r=t.map(n=>n+"Change.konva").join(ei);this.on(r,()=>{this._clearCache(e)}),this._attachedDepsListeners.set(e,!0)}return this._getCache(e,i)}_getCanvasCache(){return this._cache.get(Bt)}_clearSelfAndDescendantCache(e){this._clearCache(e),e===st&&this.fire("absoluteTransformChange")}static _runAfterAbsTransformCascade(e){qt._absTransformCascadeDepth>0?qt._pendingAfterCascade.push(e):e()}clearCache(){if(this._cache.has(Bt)){const{scene:e,filter:t,hit:i}=this._cache.get(Bt);E.releaseCanvas(e._canvas,t._canvas,...i?[i._canvas]:[]),this._cache.delete(Bt)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(e){const t=e||{};let i={};(t.x===void 0||t.y===void 0||t.width===void 0||t.height===void 0)&&(i=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()||void 0}));let r=Math.ceil(t.width||i.width),n=Math.ceil(t.height||i.height),o=t.pixelRatio,s=t.x===void 0?Math.floor(i.x):t.x,u=t.y===void 0?Math.floor(i.y):t.y,_=t.offset||0,l=t.drawBorder||!1,g=t.hitCanvasPixelRatio||1;if(!r||!n){E.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}const d=Math.abs(Math.round(i.x)-s)>.5?1:0,F=Math.abs(Math.round(i.y)-u)>.5?1:0;r+=_*2+d,n+=_*2+F,s-=_,u-=_;const f=new bt({pixelRatio:o,width:r,height:n}),w=new bt({pixelRatio:o,width:0,height:0,willReadFrequently:!0}),m=f.getContext(),c=new bt({width:f.width/f.pixelRatio+Math.abs(s),height:f.height/f.pixelRatio+Math.abs(u),pixelRatio:f.pixelRatio}),C=c.getContext();return f.isCache=!0,this._cache.delete(Bt),this._filterUpToDate=!1,t.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,w.getContext()._context.imageSmoothingEnabled=!1),m.save(),C.save(),m.translate(-s,-u),C.translate(-s,-u),c.x=s,c.y=u,this._isUnderCache=!0,this._clearSelfAndDescendantCache(Ja),this._clearSelfAndDescendantCache(en),this.drawScene(f,this,c),this._isUnderCache=!1,m.restore(),l&&(m.save(),m.beginPath(),m.rect(0,0,r,n),m.closePath(),m.setAttr("strokeStyle","red"),m.setAttr("lineWidth",5),m.stroke(),m.restore()),E.releaseCanvas(c._canvas),this._cache.set(Bt,{scene:f,filter:w,hit:null,hitConfig:{pixelRatio:g,width:r,height:n},x:s,y:u}),this._requestDraw(),this}_getCachedHitCanvas(e){if(e===this)return null;const t=this._getCanvasCache();if(!t)return null;if(t.hit)return t.hit;const i=new kr(t.hitConfig);i.isCache=!0;const r=i.getContext();return r.save(),r.translate(-t.x,-t.y),this.drawHit(i,this),r.restore(),t.hit=i,i}isCached(){return this._cache.has(Bt)}getClientRect(e){throw new Error('abstract "getClientRect" method call')}_transformedRect(e,t){const i=[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height}];let r=1/0,n=1/0,o=-1/0,s=-1/0;const u=this.getAbsoluteTransform(t);return i.forEach(function(_){const l=u.point(_);r===void 0&&(r=o=l.x,n=s=l.y),r=Math.min(r,l.x),n=Math.min(n,l.y),o=Math.max(o,l.x),s=Math.max(s,l.y)}),{x:r,y:n,width:o-r,height:s-n}}_drawCachedSceneCanvas(e){e.save(),e._applyOpacity(this),e._applyGlobalCompositeOperation(this);const t=this._getCanvasCache();e.translate(t.x,t.y);const i=this._getCachedSceneCanvas(),r=i.pixelRatio;e.drawImage(i._canvas,0,0,i.width/r,i.height/r),e.restore()}_drawCachedHitCanvas(e,t){const i=this._getCanvasCache();e.save(),e.translate(i.x,i.y),e.drawImage(t._canvas,0,0,t.width/t.pixelRatio,t.height/t.pixelRatio),e.restore()}_getCachedSceneCanvas(){let e=this.filters(),t=this._getCanvasCache(),i=t.scene,r=t.filter,n=r.getContext(),o,s,u,_;if(!e||e.length===0)return i;if(this._filterUpToDate)return r;let l=!0;for(let d=0;d{this.isAncestorOf(e.node)&&me._dragElements.delete(t)}),this._remove(),this}_clearCaches(){this._clearSelfAndDescendantCache(st),this._clearSelfAndDescendantCache(Ja),this._clearSelfAndDescendantCache(en),this._clearSelfAndDescendantCache(rn),this._clearSelfAndDescendantCache(Ki),this._clearSelfAndDescendantCache(Xi)}_remove(){this._clearCaches();const e=this.getParent();e&&e.children&&(e.children.splice(this.index,1),e._setChildrenIndices(),this.parent=null)}destroy(){return this.remove(),this.clearCache(),this}getAttr(e){const t="get"+E._capitalize(e);return E._isFunction(this[t])?this[t]():this.attrs[e]}getAncestors(){let e=this.getParent(),t=[];for(;e;)t.push(e),e=e.getParent();return t}getAttrs(){return this.attrs||{}}setAttrs(e){return this._batchTransformChanges(()=>{let t,i;if(!e)return this;for(t in e)t!==B1&&(i=tn+E._capitalize(t),E._isFunction(this[i])?this[i](e[t]):this._setAttr(t,e[t]))}),this}isListening(){return this._getCache(Xi,this._isListening)}_isListening(e){if(!this.listening())return!1;const t=this.getParent();return t&&t!==e&&this!==e?t._isListening(e):!0}isVisible(){return this._getCache(Ki,this._isVisible)}_isVisible(e){if(!this.visible())return!1;const t=this.getParent();return t&&t!==e&&this!==e?t._isVisible(e):!0}shouldDrawHit(e,t=!1){if(e)return this._isVisible(e)&&this._isListening(e);const i=this.getLayer();let r=!1;me._dragElements.forEach(o=>{o.dragStatus==="dragging"&&(o.node.nodeType==="Stage"||o.node.getLayer()===i)&&(r=!0)});const n=!t&&!W.hitOnDragEnabled&&(r||W.isTransforming());return this.isListening()&&this.isVisible()&&!n}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){let e=this.getDepth(),t=this,i=0,r,n,o,s;function u(l){for(r=[],n=l.length,o=0;o0&&r[0].getDepth()<=e&&u(r)}const _=this.getStage();return t.nodeType!==z1&&_&&u(_.getChildren()),i}getDepth(){let e=0,t=this.parent;for(;t;)e++,t=t.parent;return e}_batchTransformChanges(e){this._batchingTransformChange=!0,e(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(ft),this._clearSelfAndDescendantCache(st)),this._needClearTransformCache=!1}setPosition(e){return this._batchTransformChanges(()=>{this.x(e.x),this.y(e.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){const e=this.getStage();if(!e)return null;const t=e.getPointerPosition();if(!t)return null;const i=this.getAbsoluteTransform().copy();return i.invert(),i.point(t)}getAbsolutePosition(e){let t=!1,i=this.parent;for(;i;){if(i.isCached()){t=!0;break}i=i.parent}t&&!e&&(e=!0);const r=this.getAbsoluteTransform(e).getMatrix(),n=new Ye,o=this.offset();return n.m=r.slice(),n.translate(o.x,o.y),n.getTranslation()}setAbsolutePosition(e){const{x:t,y:i,...r}=this._clearTransform();this.attrs.x=t,this.attrs.y=i,this._clearCache(ft);const n=this._getAbsoluteTransform().copy();return n.invert(),n.translate(e.x,e.y),e={x:this.attrs.x+n.getTranslation().x,y:this.attrs.y+n.getTranslation().y},this._setTransform(r),this.setPosition({x:e.x,y:e.y}),this._clearCache(ft),this._clearSelfAndDescendantCache(st),this}_setTransform(e){let t;for(t in e)this.attrs[t]=e[t]}_clearTransform(){const e={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,e}move(e){let t=e.x,i=e.y,r=this.x(),n=this.y();return t!==void 0&&(r+=t),i!==void 0&&(n+=i),this.setPosition({x:r,y:n}),this}_eachAncestorReverse(e,t){let i=[],r=this.getParent(),n,o;if(!(t&&t._id===this._id)){for(i.unshift(this);r&&(!t||r._id!==t._id);)i.unshift(r),r=r.parent;for(n=i.length,o=0;o0?(this.parent.children.splice(e,1),this.parent.children.splice(e-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return E.warn("Node has no parent. moveToBottom function is ignored."),!1;const e=this.index;return e>0?(this.parent.children.splice(e,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(e){if(!this.parent)return E.warn("Node has no parent. zIndex parameter is ignored."),this;(e<0||e>=this.parent.children.length)&&E.warn("Unexpected value "+e+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");const t=this.index;return this.parent.children.splice(t,1),this.parent.children.splice(e,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(Ja,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){let e=this.opacity();const t=this.getParent();return t&&!t._isUnderCache&&(e*=t.getAbsoluteOpacity()),e}moveTo(e){return this.getParent()!==e&&(this._remove(),e.add(this)),this}toObject(){let e=this.getAttrs(),t,i,r,n,o;const s={attrs:{},className:this.getClassName()};for(t in e)i=e[t],o=E.isObject(i)&&!E._isPlainObject(i)&&!E._isArray(i),!o&&(r=typeof this[t]=="function"&&this[t],delete e[t],n=r?r.call(this):null,e[t]=i,n!==i&&(s.attrs[t]=i));return E._prepareToStringify(s)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(e,t,i){const r=[];t&&this._isMatch(e)&&r.push(this);let n=this.parent;for(;n;){if(n===i)return r;n._isMatch(e)&&r.push(n),n=n.parent}return r}isAncestorOf(e){return!1}findAncestor(e,t,i){return this.findAncestors(e,t,i)[0]}_isMatch(e){if(!e)return!1;if(typeof e=="function")return e(this);let t=e.replace(/ /g,"").split(","),i=t.length,r,n;for(r=0;r{try{const r=e?.callback;r&&delete e.callback,E._urlToImage(this.toDataURL(e),function(n){t(n),r?.(n)})}catch(r){i(r)}})}toBlob(e){return new Promise((t,i)=>{try{const r=e?.callback;r&&delete e.callback,this.toCanvas(e).toBlob(n=>{t(n),r?.(n)},e?.mimeType,e?.quality)}catch(r){i(r)}})}setSize(e){return this.width(e.width),this.height(e.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():W.dragDistance}_off(e,t,i){let r=this.eventListeners[e],n,o,s;for(n=0;n=0)||this.isDragging())return;let t=!1;me._dragElements.forEach(i=>{this.isAncestorOf(i.node)&&(t=!0)}),t||this._createDragElement(e)})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{if(this._dragCleanup(),!this.getStage())return;const e=me._dragElements.get(this._id),t=e&&e.dragStatus==="dragging",i=e&&e.dragStatus==="ready";t?this.stopDrag():i&&me._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(e={x:0,y:0}){const t=this.getStage();if(!t)return!1;const i={x:-e.x,y:-e.y,width:t.width()+2*e.x,height:t.height()+2*e.y};return E.haveIntersection(i,this.getClientRect())}static create(e,t){return E._isString(e)&&(e=JSON.parse(e)),this._createNode(e,t)}static _createNode(e,t){let i=qt.prototype.getClassName.call(e),r=e.children,n,o,s;t&&(e.attrs.container=t),W[i]||(E.warn('Can not find a node with class name "'+i+'". Fallback to "Shape".'),i="Shape");const u=W[i];if(n=new u(e.attrs),r)for(o=r.length,s=0;s0}removeChildren(){return this.getChildren().forEach(e=>{e.parent=null,e.index=0,e.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(e=>{e.parent=null,e.index=0,e.destroy()}),this.children=[],this._requestDraw(),this}add(...e){if(e.length===0)return this;if(e.length>1){for(let i=0;i0?t[0]:void 0}_generalFind(e,t){const i=[];return this._descendants(r=>{const n=r._isMatch(e);return n&&i.push(r),!!(n&&t)}),i}_descendants(e){let t=!1;const i=this.getChildren();for(const r of i)if(t=e(r),t||r.hasChildren()&&(t=r._descendants(e),t))return!0;return!1}toObject(){const e=R.prototype.toObject.call(this);return e.children=[],this.getChildren().forEach(t=>{e.children.push(t.toObject())}),e}isAncestorOf(e){let t=e.getParent();for(;t;){if(t._id===this._id)return!0;t=t.getParent()}return!1}clone(e){const t=R.prototype.clone.call(this,e);return this.getChildren().forEach(function(i){t.add(i.clone())}),t}getAllIntersections(e){const t=[];return this.find("Shape").forEach(i=>{i.isVisible()&&i.intersects(e)&&t.push(i)}),t}_clearSelfAndDescendantCache(e){var t;const i=e==="absoluteTransform";i&&R._absTransformCascadeDepth++;try{if(super._clearSelfAndDescendantCache(e),this.isCached())return;(t=this.children)===null||t===void 0||t.forEach(function(r){r._clearSelfAndDescendantCache(e)})}finally{if(i&&--R._absTransformCascadeDepth===0){const r=R._pendingAfterCascade;if(r.length){R._pendingAfterCascade=[];for(let n=0;na.indexOf("pointer")>=0?"pointer":a.indexOf("touch")>=0?"touch":"mouse",Nt=a=>{const e=pa(a);if(e==="pointer")return W.pointerEventsEnabled&&Ei.pointer;if(e==="touch")return Ei.touch;if(e==="mouse")return Ei.mouse};function on(a={}){return(a.clipFunc||a.clipWidth||a.clipHeight)&&E.warn("Stage does not support clipping. Please use clip for Layers or Groups."),a}const $1="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);",wa=[],sn=new WeakSet,un=a=>{!a||sn.has(a)||(sn.add(a),me._listenToWindow(a),a.document.addEventListener("visibilitychange",()=>{wa.forEach(e=>{e.batchDraw()})}))};class ti extends Ue{constructor(e){super(on(e)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),wa.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{on(this.attrs)}),this._checkVisibility()}_validateAdd(e){const t=e.getType()==="Layer",i=e.getType()==="FastLayer";t||i||E.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const e=this.visible()?"":"none";this.content.style.display=e}_getOwnerWindow(){var e;return((e=(this.content||this.container())?.ownerDocument)===null||e===void 0?void 0:e.defaultView)||(W.isBrowser?window:null)}setContainer(e){if(typeof e===O1){let t;if(e.charAt(0)==="."){const i=e.slice(1);e=document.getElementsByClassName(i)[0]}else e.charAt(0)!=="#"?t=e:t=e.slice(1),e=document.getElementById(t);if(!e)throw"Can not find container in document with id "+t}return this._setAttr("container",e),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),e.appendChild(this.content),un(this._getOwnerWindow())),this}shouldDrawHit(){return!0}clear(){const e=this.children,t=e.length;for(let i=0;i-1&&wa.splice(t,1),E.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const e=this._pointerPositions[0]||this._changedPointerPositions[0];return e?{x:e.x,y:e.y}:(E.warn($1),null)}_getPointerById(e){return this._pointerPositions.find(t=>t.id===e)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(e){e={...e},e.x=e.x||0,e.y=e.y||0,e.width=e.width||this.width(),e.height=e.height||this.height();const t=new bt({width:e.width,height:e.height,pixelRatio:e.pixelRatio||1}),i=t.getContext()._context,r=this.children;return(e.x||e.y)&&i.translate(-1*e.x,-1*e.y),r.forEach(function(n){if(!n.isVisible())return;const o=n._toKonvaCanvas(e);i.drawImage(o._canvas,e.x,e.y,o.getWidth()/o.getPixelRatio(),o.getHeight()/o.getPixelRatio())}),t}getIntersection(e){if(!e)return null;const t=this.children,i=t.length,r=i-1;for(let n=r;n>=0;n--){const o=t[n].getIntersection(e);if(o)return o}return null}_resizeDOM(){const e=this.width(),t=this.height();this.content&&(this.content.style.width=e+nn,this.content.style.height=t+nn),this.children.forEach(i=>{i.setSize({width:e,height:t}),i.draw()})}_syncBufferSize(e){return e.setSizeIfChanged(this.width(),this.height()),e}add(e,...t){if(arguments.length>1){for(let r=0;rV1&&E.warn("The stage has "+i+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),e.setSize({width:this.width(),height:this.height()}),e.draw(),W.isBrowser&&this.content.appendChild(e.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(e){return po(e,this)}setPointerCapture(e){bo(e,this)}releaseCapture(e){ka(e)}getLayers(){return this.children}_bindContentEvents(){W.isBrowser&&N1.forEach(([e,t])=>{this.content.addEventListener(e,i=>{this[t](i)},{passive:!1})})}_pointerenter(e){this.setPointersPositions(e);const t=Nt(e.type);t&&this._fire(t.pointerenter,{evt:e,target:this,currentTarget:this})}_pointerover(e){this.setPointersPositions(e);const t=Nt(e.type);t&&this._fire(t.pointerover,{evt:e,target:this,currentTarget:this})}_getTargetShape(e){let t=this[e+"targetShape"];return t&&!t.getStage()&&(t=null),t}_pointerleave(e){const t=Nt(e.type),i=pa(e.type);if(!t)return;this.setPointersPositions(e);const r=this._getTargetShape(i),n=!(W.isDragging()||W.isTransforming())||W.hitOnDragEnabled;r&&n?(r._fireAndBubble(t.pointerout,{evt:e}),r._fireAndBubble(t.pointerleave,{evt:e}),this._fire(t.pointerleave,{evt:e,target:this,currentTarget:this}),this[i+"targetShape"]=null):n&&(this._fire(t.pointerleave,{evt:e,target:this,currentTarget:this}),this._fire(t.pointerout,{evt:e,target:this,currentTarget:this})),this.pointerPos=null,this._pointerPositions=[]}_pointerdown(e){const t=Nt(e.type),i=pa(e.type);if(!t)return;this.setPointersPositions(e);let r=!1;this._changedPointerPositions.forEach(n=>{const o=this.getIntersection(n);if(me.justDragged=!1,W["_"+i+"ListenClick"]=!0,!o||!o.isListening()){this[i+"ClickStartShape"]=void 0;return}W.capturePointerEventsEnabled&&o.setPointerCapture(n.id),this[i+"ClickStartShape"]=o,o._fireAndBubble(t.pointerdown,{evt:e,pointerId:n.id}),r=!0;const s=e.type.indexOf("touch")>=0;o.preventDefault()&&e.cancelable&&s&&e.preventDefault()}),r||this._fire(t.pointerdown,{evt:e,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}_pointermove(e){const t=Nt(e.type),i=pa(e.type);if(!t)return;const r=e.type.indexOf("touch")>=0||e.pointerType==="touch";if(W.isDragging()&&me.node.preventDefault()&&e.cancelable&&r&&e.preventDefault(),this.setPointersPositions(e),!(!(W.isDragging()||W.isTransforming())||W.hitOnDragEnabled))return;const n={};let o=!1;const s=this._getTargetShape(i);this._changedPointerPositions.forEach(u=>{const _=Ci(u.id)||this.getIntersection(u),l=u.id,g={evt:e,pointerId:l},d=s!==_;if(d&&s&&(s._fireAndBubble(t.pointerout,{...g},_),s._fireAndBubble(t.pointerleave,{...g},_)),_){if(n[_._id])return;n[_._id]=!0}_&&_.isListening()?(o=!0,d&&(_._fireAndBubble(t.pointerover,{...g},s),_._fireAndBubble(t.pointerenter,{...g},s),this[i+"targetShape"]=_),_._fireAndBubble(t.pointermove,{...g})):s&&(this._fire(t.pointerover,{evt:e,target:this,currentTarget:this,pointerId:l}),this[i+"targetShape"]=null)}),o||this._fire(t.pointermove,{evt:e,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(e){const t=Nt(e.type),i=pa(e.type);if(!t)return;this.setPointersPositions(e);const r=me.justDragged||i==="pointer"&&W.isDragging(),n=W["_"+i+"ListenClick"]&&!r,o=this[i+"ClickStartShape"],s=this[i+"ClickEndShape"],u={};let _=!1;this._changedPointerPositions.forEach(l=>{const g=Ci(l.id)||this.getIntersection(l);if(g){if(g.releaseCapture(l.id),u[g._id])return;u[g._id]=!0}const d=l.id,F={evt:e,pointerId:d};let f=!1;W["_"+i+"InDblClickWindow"]?(f=!0,clearTimeout(this[i+"DblTimeout"])):r||(W["_"+i+"InDblClickWindow"]=!0,clearTimeout(this[i+"DblTimeout"])),this[i+"DblTimeout"]=setTimeout(function(){W["_"+i+"InDblClickWindow"]=!1},W.dblClickWindow),g&&g.isListening()?(_=!0,this[i+"ClickEndShape"]=g,g._fireAndBubble(t.pointerup,{...F}),n&&o===g&&(g._fireAndBubble(t.pointerclick,{...F}),f&&s&&s===g&&g._fireAndBubble(t.pointerdblclick,{...F}))):(this[i+"ClickEndShape"]=null,_||(this._fire(t.pointerup,{evt:e,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),_=!0),n&&this._fire(t.pointerclick,{evt:e,target:this,currentTarget:this,pointerId:d}),f&&this._fire(t.pointerdblclick,{evt:e,target:this,currentTarget:this,pointerId:d}))}),_||this._fire(t.pointerup,{evt:e,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),W["_"+i+"ListenClick"]=!1,e.cancelable&&i!=="touch"&&i!=="pointer"&&e.preventDefault()}_contextmenu(e){this.setPointersPositions(e);const t=this.getIntersection(this.getPointerPosition());t&&t.isListening()?t._fireAndBubble(Zi,{evt:e}):this._fire(Zi,{evt:e,target:this,currentTarget:this})}_wheel(e){this.setPointersPositions(e);const t=this.getIntersection(this.getPointerPosition());t&&t.isListening()?t._fireAndBubble(Qi,{evt:e}):this._fire(Qi,{evt:e,target:this,currentTarget:this})}_pointercancel(e){this.setPointersPositions(e);const t=Ci(e.pointerId)||this.getIntersection(this.getPointerPosition());t&&t._fireAndBubble(Xt,wr(e)),ka(e.pointerId)}_lostpointercapture(e){ka(e.pointerId)}setPointersPositions(e){const t=this._getContentPosition();let i=null,r=null;e=e||window.event,e.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(e.touches,n=>{this._pointerPositions.push({id:n.identifier,x:(n.clientX-t.left)/t.scaleX,y:(n.clientY-t.top)/t.scaleY})}),Array.prototype.forEach.call(e.changedTouches||e.touches,n=>{this._changedPointerPositions.push({id:n.identifier,x:(n.clientX-t.left)/t.scaleX,y:(n.clientY-t.top)/t.scaleY})})):(i=(e.clientX-t.left)/t.scaleX,r=(e.clientY-t.top)/t.scaleY,this.pointerPos={x:i,y:r},this._pointerPositions=[{x:i,y:r,id:E._getFirstPointerId(e)}],this._changedPointerPositions=[{x:i,y:r,id:E._getFirstPointerId(e)}])}_setPointerPosition(e){E.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(e)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};const e=this.content.getBoundingClientRect();return{top:e.top,left:e.left,scaleX:e.width/this.content.clientWidth||1,scaleY:e.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new bt({width:0,height:0}),this.bufferHitCanvas=new kr({pixelRatio:1,width:0,height:0}),!W.isBrowser)return;const e=this.container();if(!e)throw"Stage has no container. A container is required.";e.innerHTML="",this.content=e.ownerDocument.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),e.appendChild(this.content),un(this._getOwnerWindow()),this._resizeDOM()}cache(){return E.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(e){e.batchDraw()}),this}}ti.prototype.nodeType=I1,Be(ti),b.addGetterSetter(ti,"container");const qo="hasShadow",So="shadowRGBA",Ao="patternImage",Mo="linearGradient",Po="radialGradient";let ji;function Bi(){return ji||(ji=E.createCanvasElement().getContext("2d"),ji)}const Da={};function U1(a){const e=this.attrs.fillRule;e?a.fill(e):a.fill()}function Y1(a){a.stroke()}function X1(a){const e=this.attrs.fillRule;e?a.fill(e):a.fill()}function K1(a){a.stroke()}function Z1(){this._clearCache(qo)}function Q1(){this._clearCache(So)}function J1(){this._clearCache(Ao)}function e_(){this._clearCache(Mo)}function t_(){this._clearCache(Po)}class H extends R{constructor(e){super(e);let t,i=0;for(;t=E.getHitColor(),!(t&&!(t in Da));)if(i++,i>=1e4){E.warn("Failed to find a unique color key for a shape. Konva may work incorrectly. Most likely your browser is using canvas farbling. Consider disabling it."),t=E.getRandomColor();break}this.colorKey=t,Da[t]=this}getContext(){return E.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return E.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(qo,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(Ao,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){const e=Bi().createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(e&&e.setTransform){const t=new Ye;t.translate(this.fillPatternX(),this.fillPatternY()),t.rotate(W.getAngle(this.fillPatternRotation())),t.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),t.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const i=t.getMatrix(),r=typeof DOMMatrix>"u"?{a:i[0],b:i[1],c:i[2],d:i[3],e:i[4],f:i[5]}:new DOMMatrix(i);e.setTransform(r)}return e}}_getLinearGradient(){return this._getCache(Mo,this.__getLinearGradient)}__getLinearGradient(){const e=this.fillLinearGradientColorStops();if(e){const t=Bi(),i=this.fillLinearGradientStartPoint(),r=this.fillLinearGradientEndPoint(),n=t.createLinearGradient(i.x,i.y,r.x,r.y);for(let o=0;othis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const e=this.hitStrokeWidth();return e==="auto"?this.hasStroke():this.strokeEnabled()&&!!e}intersects(e){const t=this.getStage();if(!t)return!1;const i=t._syncBufferSize(t.bufferHitCanvas);return i.getContext().clear(),this.drawHit(i,void 0,!0),i.context.getImageData(Math.round(e.x),Math.round(e.y),1,1).data[3]>0}destroy(){return R.prototype.destroy.call(this),delete Da[this.colorKey],delete this.colorKey,this}_useBufferCanvas(e){var t;if(!(!((t=this.attrs.perfectDrawEnabled)!==null&&t!==void 0)||t))return!1;const i=e||this.hasFill(),r=this.hasStroke(),n=this.getAbsoluteOpacity()!==1;if(i&&r&&n)return!0;const o=this.hasShadow(),s=this.shadowForStrokeEnabled();return!!(i&&r&&o&&s)}setStrokeHitEnabled(e){E.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),e?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){const e=this.size();return{x:this._centroid?-e.width/2:0,y:this._centroid?-e.height/2:0,width:e.width,height:e.height}}getClientRect(e={}){let t=!1,i=this.getParent();for(;i;){if(i.isCached()){t=!0;break}i=i.getParent()}const r=e.skipTransform,n=e.relativeTo||t&&this.getStage()||void 0,o=this.getSelfRect(),s=!e.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,u=o.width+s,_=o.height+s,l=!e.skipShadow&&this.hasShadow(),g=l?this.shadowOffsetX():0,d=l?this.shadowOffsetY():0,F=u+Math.abs(g),f=_+Math.abs(d),w=l&&this.shadowBlur()||0,m=F+w*2,c=f+w*2,C={width:m,height:c,x:-(s/2+w)+Math.min(g,0)+o.x,y:-(s/2+w)+Math.min(d,0)+o.y};return r?C:this._transformedRect(C,n)}drawScene(e,t,i){const r=this.getLayer(),n=e||r.getCanvas(),o=n.getContext(),s=this._getCanvasCache(),u=this.getSceneFunc(),_=this.hasShadow();let l;const g=t===this;if(!this.isVisible()&&!g)return this;if(s){o.save();const d=this.getAbsoluteTransform(t).getMatrix();return o.transform(d[0],d[1],d[2],d[3],d[4],d[5]),this._drawCachedSceneCanvas(o),o.restore(),this}if(!u)return this;if(o.save(),this._useBufferCanvas()){l=this.getStage();const d=i||l._syncBufferSize(l.bufferCanvas),F=d.getContext();i?(F.save(),F.setTransform(1,0,0,1,0,0),F.clearRect(0,0,d.width,d.height),F.restore()):F.clear(),F.save(),F.imageSmoothingEnabled=o.imageSmoothingEnabled,F._applyLineJoin(this),F._applyMiterLimit(this);const f=this.getAbsoluteTransform(t).getMatrix();F.transform(f[0],f[1],f[2],f[3],f[4],f[5]),u.call(this,F,this),F.restore();const w=d.pixelRatio;_&&o._applyShadow(this),g||(o._applyOpacity(this),o._applyGlobalCompositeOperation(this)),o.drawImage(d._canvas,d.x||0,d.y||0,d.width/w,d.height/w)}else{if(o._applyLineJoin(this),o._applyMiterLimit(this),!g){const d=this.getAbsoluteTransform(t).getMatrix();o.transform(d[0],d[1],d[2],d[3],d[4],d[5]),o._applyOpacity(this),o._applyGlobalCompositeOperation(this)}_&&o._applyShadow(this),u.call(this,o,this)}return o.restore(),this}drawHit(e,t,i=!1){if(!this.shouldDrawHit(t,i))return this;const r=this.getLayer(),n=e||r.hitCanvas,o=n&&n.getContext(),s=this.hitFunc()||this.sceneFunc(),u=this._getCachedHitCanvas(t);if(this.colorKey||E.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),u){o.save();const _=this.getAbsoluteTransform(t).getMatrix();return o.transform(_[0],_[1],_[2],_[3],_[4],_[5]),this._drawCachedHitCanvas(o,u),o.restore(),this}if(!s)return this;if(o.save(),o._applyLineJoin(this),o._applyMiterLimit(this),this!==t){const _=this.getAbsoluteTransform(t).getMatrix();o.transform(_[0],_[1],_[2],_[3],_[4],_[5])}return s.call(this,o,this),o.restore(),this}drawHitFromCache(e=0){const t=this._getCachedSceneCanvas(),i=this._getCachedHitCanvas(),r=i.getContext(),n=i.getWidth(),o=i.getHeight();r.clear(),r.drawImage(t._canvas,0,0,n,o);try{const s=r.getImageData(0,0,n,o),u=s.data,_=u.length,l=E._hexToRgb(this.colorKey);for(let g=0;g<_;g+=4)u[g+3]>e?(u[g]=l.r,u[g+1]=l.g,u[g+2]=l.b,u[g+3]=255):u[g+3]=0;r.putImageData(s,0,0)}catch(s){E.error("Unable to draw hit graph from cached scene canvas. "+s.message)}return this}hasPointerCapture(e){return po(e,this)}setPointerCapture(e){bo(e,this)}releaseCapture(e){ka(e)}}H.prototype._fillFunc=U1,H.prototype._strokeFunc=Y1,H.prototype._fillFuncHit=X1,H.prototype._strokeFuncHit=K1,H.prototype._centroid=!1,H.prototype.nodeType="Shape",Be(H),H.prototype.eventListeners={},H.prototype.on("shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",Z1),H.prototype.on("shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",Q1),H.prototype.on("fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",J1),H.prototype.on("fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",e_),H.prototype.on("fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",t_),b.addGetterSetter(H,"stroke",void 0,Qr()),b.addGetterSetter(H,"strokeWidth",2,O()),b.addGetterSetter(H,"fillAfterStrokeEnabled",!1),b.addGetterSetter(H,"hitStrokeWidth","auto",Yi()),b.addGetterSetter(H,"strokeHitEnabled",!0,tt()),b.addGetterSetter(H,"perfectDrawEnabled",!0,tt()),b.addGetterSetter(H,"shadowForStrokeEnabled",!0,tt()),b.addGetterSetter(H,"lineJoin"),b.addGetterSetter(H,"lineCap"),b.addGetterSetter(H,"miterLimit"),b.addGetterSetter(H,"sceneFunc"),b.addGetterSetter(H,"hitFunc"),b.addGetterSetter(H,"dash"),b.addGetterSetter(H,"dashOffset",0,O()),b.addGetterSetter(H,"shadowColor",void 0,zt()),b.addGetterSetter(H,"shadowBlur",0,O()),b.addGetterSetter(H,"shadowOpacity",1,O()),b.addComponentsGetterSetter(H,"shadowOffset",["x","y"]),b.addGetterSetter(H,"shadowOffsetX",0,O()),b.addGetterSetter(H,"shadowOffsetY",0,O()),b.addGetterSetter(H,"fillPatternImage"),b.addGetterSetter(H,"fill",void 0,Qr()),b.addGetterSetter(H,"fillPatternX",0,O()),b.addGetterSetter(H,"fillPatternY",0,O()),b.addGetterSetter(H,"fillLinearGradientColorStops"),b.addGetterSetter(H,"strokeLinearGradientColorStops"),b.addGetterSetter(H,"fillRadialGradientStartRadius",0),b.addGetterSetter(H,"fillRadialGradientEndRadius",0),b.addGetterSetter(H,"fillRadialGradientColorStops"),b.addGetterSetter(H,"fillPatternRepeat","repeat"),b.addGetterSetter(H,"fillEnabled",!0),b.addGetterSetter(H,"strokeEnabled",!0),b.addGetterSetter(H,"shadowEnabled",!0),b.addGetterSetter(H,"dashEnabled",!0),b.addGetterSetter(H,"strokeScaleEnabled",!0),b.addGetterSetter(H,"fillPriority","color"),b.addComponentsGetterSetter(H,"fillPatternOffset",["x","y"]),b.addGetterSetter(H,"fillPatternOffsetX",0,O()),b.addGetterSetter(H,"fillPatternOffsetY",0,O()),b.addComponentsGetterSetter(H,"fillPatternScale",["x","y"]),b.addGetterSetter(H,"fillPatternScaleX",1,O()),b.addGetterSetter(H,"fillPatternScaleY",1,O()),b.addComponentsGetterSetter(H,"fillLinearGradientStartPoint",["x","y"]),b.addComponentsGetterSetter(H,"strokeLinearGradientStartPoint",["x","y"]),b.addGetterSetter(H,"fillLinearGradientStartPointX",0),b.addGetterSetter(H,"strokeLinearGradientStartPointX",0),b.addGetterSetter(H,"fillLinearGradientStartPointY",0),b.addGetterSetter(H,"strokeLinearGradientStartPointY",0),b.addComponentsGetterSetter(H,"fillLinearGradientEndPoint",["x","y"]),b.addComponentsGetterSetter(H,"strokeLinearGradientEndPoint",["x","y"]),b.addGetterSetter(H,"fillLinearGradientEndPointX",0),b.addGetterSetter(H,"strokeLinearGradientEndPointX",0),b.addGetterSetter(H,"fillLinearGradientEndPointY",0),b.addGetterSetter(H,"strokeLinearGradientEndPointY",0),b.addComponentsGetterSetter(H,"fillRadialGradientStartPoint",["x","y"]),b.addGetterSetter(H,"fillRadialGradientStartPointX",0),b.addGetterSetter(H,"fillRadialGradientStartPointY",0),b.addComponentsGetterSetter(H,"fillRadialGradientEndPoint",["x","y"]),b.addGetterSetter(H,"fillRadialGradientEndPointX",0),b.addGetterSetter(H,"fillRadialGradientEndPointY",0),b.addGetterSetter(H,"fillPatternRotation",0),b.addGetterSetter(H,"fillRule",void 0,zt()),b.backCompat(H,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"});const a_="beforeDraw",i_="draw",Lo=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],r_=Lo.length;class Pt extends Ue{constructor(e){super(e),this.canvas=new bt,this.hitCanvas=new kr({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(e){return this.getContext().clear(e),this.getHitCanvas().getContext().clear(e),this}setZIndex(e){super.setZIndex(e);const t=this.getStage();return t&&t.content&&(t.content.removeChild(this.getNativeCanvasElement()),e{this.draw(),this._waitingForDraw=!1},(e=this.getStage())===null||e===void 0?void 0:e._getOwnerWindow())),this}getIntersection(e){if(!this.isListening()||!this.isVisible())return null;let t=1,i=!1;for(;;){for(let r=0;r0)return{antialiased:!0};return{}}drawScene(e,t,i){const r=this.getLayer(),n=e||r&&r.getCanvas();return this._fire(a_,{node:this}),this.clearBeforeDraw()&&n.getContext().clear(),Ue.prototype.drawScene.call(this,n,t,i),this._fire(i_,{node:this}),this}drawHit(e,t){const i=this.getLayer(),r=e||i&&i.hitCanvas;return!e&&i&&(i._syncHitCanvasSize(),i.clearBeforeDraw()&&i.getHitCanvas().getContext().clear()),Ue.prototype.drawHit.call(this,r,t),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(e){E.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(e)}getHitGraphEnabled(e){return E.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!this.parent||!this.parent.content)return;const e=this.parent;this.hitCanvas._canvas.parentNode?e.content.removeChild(this.hitCanvas._canvas):e.content.appendChild(this.hitCanvas._canvas)}destroy(){return E.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}Pt.prototype.nodeType="Layer",Be(Pt),b.addGetterSetter(Pt,"imageSmoothingEnabled",!0),b.addGetterSetter(Pt,"clearBeforeDraw",!0),b.addGetterSetter(Pt,"hitGraphEnabled",!0,tt());class Ji extends Pt{constructor(e){super(e),this.listening(!1),E.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}Ji.prototype.nodeType="FastLayer",Be(Ji);class Kt extends Ue{_validateAdd(e){const t=e.getType();t!=="Group"&&t!=="Shape"&&E.throw("You may only add groups and shapes to groups.")}}Kt.prototype.nodeType="Group",Be(Kt);const qi=(function(){return Tt.performance&&Tt.performance.now?function(){return Tt.performance.now()}:function(){return new Date().getTime()}})();class Ke{constructor(e,t){this.id=Ke.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:qi(),frameRate:0},this.func=e,this.setLayers(t)}setLayers(e){let t=[];return e&&(t=Array.isArray(e)?e:[e]),this.layers=t,this}getLayers(){return this.layers}addLayer(e){const t=this.layers,i=t.length;for(let r=0;rthis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():e<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=e,this.update())}getTime(){return this._time}setPosition(e){this.prevPos=this._pos,this.propFunc(e),this._pos=e}getPosition(e){return e===void 0&&(e=this._time),this.func(e,this.begin,this._change,this.duration)}play(){this.state=_n,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=ln,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(e){this.pause(),this._time=e,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){const e=this.getTimer()-this._startTime;this.state===_n?this.setTime(e):this.state===ln&&this.setTime(this.duration-e)}pause(){this.state=o_,this.fire("onPause")}getTimer(){return new Date().getTime()}}class we{constructor(e){const t=this,i=e.node,r=i._id,n=e.easing||va.Linear,o=!!e.yoyo;let s,u;typeof e.duration>"u"?s=.3:e.duration===0?s=.001:s=e.duration,this.node=i,this._id=s_++;const _=i.getLayer()||(i instanceof W.Stage?i.getLayers():null);_||E.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new Ke(function(){t.tween.onEnterFrame()},_),this.tween=new u_(u,function(l){t._tweenFunc(l)},n,0,1,s*1e3,o),this._addListeners(),we.attrs[r]||(we.attrs[r]={}),we.attrs[r][this._id]||(we.attrs[r][this._id]={}),we.tweens[r]||(we.tweens[r]={});for(u in e)n_[u]===void 0&&this._addAttr(u,e[u]);this.reset(),this.onFinish=e.onFinish,this.onReset=e.onReset,this.onUpdate=e.onUpdate}_addAttr(e,t){const i=this.node,r=i._id;let n,o,s,u,_;const l=we.tweens[r][e];l&&delete we.attrs[r][l][e];let g=i.getAttr(e);if(E._isArray(t))if(n=[],o=Math.max(t.length,g.length),e==="points"&&t.length!==g.length&&(t.length>g.length?(u=g,g=E._prepareArrayForTween(g,t,i.closed())):(s=t,t=E._prepareArrayForTween(t,g,i.closed()))),e.indexOf("fill")===0)for(let d=0;d{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{const e=this.node,t=we.attrs[e._id][this._id];t.points&&t.points.trueEnd&&e.setAttr("points",t.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{const e=this.node,t=we.attrs[e._id][this._id];t.points&&t.points.trueStart&&e.points(t.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(e){return this.tween.seek(e*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){const e=this.node._id,t=this._id,i=we.tweens[e];this.pause(),this.anim&&this.anim.stop();for(const r in i)delete we.tweens[e][r];delete we.attrs[e][t],we.tweens[e]&&(Object.keys(we.tweens[e]).length===0&&delete we.tweens[e],Object.keys(we.attrs[e]).length===0&&delete we.attrs[e])}}we.attrs={},we.tweens={},R.prototype.to=function(a){const e=a.onFinish;a.node=this,a.onFinish=function(){this.destroy(),e&&e()},new we(a).play()};const va={BackEaseIn(a,e,t,i){return t*(a/=i)*a*((1.70158+1)*a-1.70158)+e},BackEaseOut(a,e,t,i){return t*((a=a/i-1)*a*((1.70158+1)*a+1.70158)+1)+e},BackEaseInOut(a,e,t,i){let r=1.70158;return(a/=i/2)<1?t/2*(a*a*(((r*=1.525)+1)*a-r))+e:t/2*((a-=2)*a*(((r*=1.525)+1)*a+r)+2)+e},ElasticEaseIn(a,e,t,i,r,n){let o=0;return a===0?e:(a/=i)===1?e+t:(n||(n=i*.3),!r||r0?e:t),g=s*t,d=u*(u>0?e:t),F=_*(_>0?t:e);return{x:l,y:i?-1*F:d,width:g-l,height:F-d}}}ut.prototype._centroid=!0,ut.prototype.className="Arc",ut.prototype._attrsAffectingSize=["innerRadius","outerRadius","angle","clockwise"],Be(ut),b.addGetterSetter(ut,"innerRadius",0,O()),b.addGetterSetter(ut,"outerRadius",0,O()),b.addGetterSetter(ut,"angle",0,O()),b.addGetterSetter(ut,"clockwise",!1,tt());const __=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],l_=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],g_=[[1],[1,1],[1,2,1],[1,3,3,1]],dn=(a,e,t)=>{let i,r;const n=t/2;i=0;for(let o=0;o<20;o++)r=n*__[20][o]+n,i+=l_[20][o]*h_(a,e,r);return n*i},fn=(a,e,t)=>{t===void 0&&(t=1);const i=a[0]-2*a[1]+a[2],r=e[0]-2*e[1]+e[2],n=2*a[1]-2*a[0],o=2*e[1]-2*e[0],s=4*(i*i+r*r),u=4*(i*n+r*o),_=n*n+o*o;if(s===0)return t*Math.sqrt(Math.pow(a[2]-a[0],2)+Math.pow(e[2]-e[0],2));const l=u/(2*s),g=_/s,d=t+l,F=g-l*l,f=d*d+F>0?Math.sqrt(d*d+F):0,w=l*l+F>0?Math.sqrt(l*l+F):0,m=l+Math.sqrt(l*l+F)!==0?F*Math.log(Math.abs((d+f)/(l+w))):0;return Math.sqrt(s)/2*(d*f-l*w+m)};function h_(a,e,t){const i=er(1,t,a),r=er(1,t,e),n=i*i+r*r;return Math.sqrt(n)}const er=(a,e,t)=>{const i=t.length-1;let r,n;if(i===0)return 0;if(a===0){n=0;for(let o=0;o<=i;o++)n+=g_[i][o]*Math.pow(1-e,i-o)*Math.pow(e,o)*t[o];return n}else{r=new Array(i);for(let o=0;o{let i=1,r=a/e,n=(a-t(r))/e,o=0;for(;i>.001;){const s=t(r+n),u=Math.abs(a-s)/e;if(u500)break}return r},cn=(a,e,t,i)=>{const r=1-i;return r*r*a+2*r*i*e+i*i*t},To=(a,e,t,i,r,n)=>{const o=[];for(const s of[[a,t,r],[e,i,n]]){const u=(s[0]-s[1])/(s[0]-2*s[1]+s[2]);u>0&&u<1&&o.push(cn(a,t,r,u),cn(e,i,n,u))}return o},mn=(a,e,t,i,r)=>{const n=1-r;return n*n*n*a+3*n*n*r*e+3*n*r*r*t+r*r*r*i},Dr=(a,e,t,i,r,n,o,s)=>{const u=[];for(const _ of[[a,t,r,o],[e,i,n,s]]){const l=-3*_[0]+9*_[1]-9*_[2]+3*_[3],g=6*_[0]-12*_[1]+6*_[2],d=-3*_[0]+3*_[1],F=g*g-4*l*d;if(F<0)continue;const f=-(g+(g<0?-1:1)*Math.sqrt(F))/2;for(const w of[f/l,d/f])w>0&&w<1&&u.push(mn(a,t,r,o,w),mn(e,i,n,s,w))}return u};function tr(a,e,t,i,r,n,o){const s=Math.sqrt(Math.pow(t-a,2)+Math.pow(i-e,2)),u=Math.sqrt(Math.pow(r-t,2)+Math.pow(n-i,2)),_=s+u;if(_===0)return[t,i,t,i];const l=o*s/_,g=o*u/_,d=t-l*(r-a),F=i-l*(n-e),f=t+g*(r-a),w=i+g*(n-e);return[d,F,f,w]}function pn(a,e){const t=a.length,i=[];for(let r=2;r4}_eachTensionSegment(e,t){const i=this.points(),r=i.length,n=this.closed(),o=this.getTensionPoints(),s=o.length;let u=i[0],_=i[1],l=n?0:4;for(n||(e(u,_,o[0],o[1],o[2],o[3]),u=o[2],_=o[3]);le.quadraticCurveTo(_,l,g,d),(s,u,_,l,g,d,F,f)=>e.bezierCurveTo(_,l,g,d,F,f));else if(n)for(o=2;ou.push(F,f,...To(_,l,g,d,F,f)),(_,l,g,d,F,f,w,m)=>u.push(w,m,...Dr(_,l,g,d,F,f,w,m))),e=u}else this.bezier()&&(e=[e[0],e[1],...d_(e)]);let t=e[0],i=e[0],r=e[1],n=e[1],o,s;for(let u=0;ul?_:l,m=_>l?1:_/l,c=_>l?l/_:1;e.translate(s,u),e.rotate(F),e.scale(m,c),e.arc(0,0,w,g,g+d,1-f),e.scale(1/m,1/c),e.rotate(-F),e.translate(-s,-u);break;case"z":i=!0,e.closePath();break}}!i&&!this.hasFill()?e.strokeShape(this):e.fillStrokeShape(this)}getSelfRect(){let e=[];this.dataArray.forEach(function(u){if(u.command==="A"){const _=u.points[4],l=u.points[5],g=u.points[4]+l;let d=Math.PI/180;if(Math.abs(_-g)g;F-=d){const f=xe.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],F,0);e.push(f.x,f.y)}else for(let F=_+d;Ft[r].pathLength;)e-=t[r].pathLength,++r;if(r===n){let u=r-1;for(;u>0&&t[u].points.length<2;)u--;return i=t[u].points.slice(-2),{x:i[0],y:i[1]}}if(e<.01)return t[r].command==="M"?(i=t[r].points.slice(0,2),{x:i[0],y:i[1]}):{x:t[r].start.x,y:t[r].start.y};const o=t[r],s=o.points;switch(o.command){case"L":return xe.getPointOnLine(e,o.start.x,o.start.y,s[0],s[1]);case"C":return xe.getPointOnCubicBezier(Fn(e,xe.getPathLength(t),w=>dn([o.start.x,s[0],s[2],s[4]],[o.start.y,s[1],s[3],s[5]],w)),o.start.x,o.start.y,s[0],s[1],s[2],s[3],s[4],s[5]);case"Q":return xe.getPointOnQuadraticBezier(Fn(e,xe.getPathLength(t),w=>fn([o.start.x,s[0],s[2]],[o.start.y,s[1],s[3]],w)),o.start.x,o.start.y,s[0],s[1],s[2],s[3]);case"A":const u=s[0],_=s[1],l=s[2],g=s[3],d=s[5],F=s[6];let f=s[4];return f+=d*e/o.pathLength,xe.getPointOnEllipticalArc(u,_,l,g,f,F)}return null}static getPointOnLine(e,t,i,r,n,o,s){o=o??t,s=s??i;const u=this.getLineLength(t,i,r,n);if(u<1e-10)return{x:t,y:i};if(r===t)return{x:o,y:s+(n>i?e:-e)};const _=(n-i)/(r-t),l=Math.sqrt(e*e/(1+_*_))*(r=0&&(w+=2,w>=7&&(w-=7));continue}if(w>=0){if(w===3){if(/^[01]{2}\d+(?:\.\d+)?$/.test(C)){f.push(parseInt(C[0],10)),f.push(parseInt(C[1],10)),f.push(parseFloat(C.slice(2))),w+=3,w>=7&&(w-=7);continue}if(C==="11"||C==="10"||C==="01"){f.push(parseInt(C[0],10)),f.push(parseInt(C[1],10)),w+=2,w>=7&&(w-=7);continue}if(C==="0"||C==="1"){f.push(parseInt(C,10)),w+=1,w>=7&&(w-=7);continue}}else if(w===4){if(/^[01]\d+(?:\.\d+)?$/.test(C)){f.push(parseInt(C[0],10)),f.push(parseFloat(C.slice(1))),w+=2,w>=7&&(w-=7);continue}if(C==="0"||C==="1"){f.push(parseInt(C,10)),w+=1,w>=7&&(w-=7);continue}}const B=parseFloat(C);isNaN(B)?f.push(0):f.push(B),w+=1,w>=7&&(w-=7)}else{const B=parseFloat(C);isNaN(B)?f.push(0):f.push(B)}}for(;f.length>0&&!isNaN(f[0]);){let m="",c=[];const C=s,B=u;let v,M,P,q,L,K,U,Z,oe,re;switch(F){case"l":s+=f.shift(),u+=f.shift(),m="L",c.push(s,u);break;case"L":s=f.shift(),u=f.shift(),c.push(s,u);break;case"m":const ee=f.shift(),J=f.shift();if(s+=ee,u+=J,m="M",n.length>2&&n[n.length-1].command==="z"){for(let ue=n.length-2;ue>=0;ue--)if(n[ue].command==="M"){s=n[ue].points[0]+ee,u=n[ue].points[1]+J;break}}c.push(s,u),F="l";break;case"M":s=f.shift(),u=f.shift(),m="M",c.push(s,u),F="L";break;case"h":s+=f.shift(),m="L",c.push(s,u);break;case"H":s=f.shift(),m="L",c.push(s,u);break;case"v":u+=f.shift(),m="L",c.push(s,u);break;case"V":u=f.shift(),m="L",c.push(s,u);break;case"C":c.push(f.shift(),f.shift(),f.shift(),f.shift()),s=f.shift(),u=f.shift(),c.push(s,u);break;case"c":c.push(s+f.shift(),u+f.shift(),s+f.shift(),u+f.shift()),s+=f.shift(),u+=f.shift(),m="C",c.push(s,u);break;case"S":M=s,P=u,v=n[n.length-1],v.command==="C"&&(M=s+(s-v.points[2]),P=u+(u-v.points[3])),c.push(M,P,f.shift(),f.shift()),s=f.shift(),u=f.shift(),m="C",c.push(s,u);break;case"s":M=s,P=u,v=n[n.length-1],v.command==="C"&&(M=s+(s-v.points[2]),P=u+(u-v.points[3])),c.push(M,P,s+f.shift(),u+f.shift()),s+=f.shift(),u+=f.shift(),m="C",c.push(s,u);break;case"Q":c.push(f.shift(),f.shift()),s=f.shift(),u=f.shift(),c.push(s,u);break;case"q":c.push(s+f.shift(),u+f.shift()),s+=f.shift(),u+=f.shift(),m="Q",c.push(s,u);break;case"T":M=s,P=u,v=n[n.length-1],v.command==="Q"&&(M=s+(s-v.points[0]),P=u+(u-v.points[1])),s=f.shift(),u=f.shift(),m="Q",c.push(M,P,s,u);break;case"t":M=s,P=u,v=n[n.length-1],v.command==="Q"&&(M=s+(s-v.points[0]),P=u+(u-v.points[1])),s+=f.shift(),u+=f.shift(),m="Q",c.push(M,P,s,u);break;case"A":q=f.shift(),L=f.shift(),K=f.shift(),U=f.shift(),Z=f.shift(),oe=s,re=u,s=f.shift(),u=f.shift(),m="A",c=this.convertEndpointToCenterParameterization(oe,re,s,u,U,Z,q,L,K);break;case"a":q=f.shift(),L=f.shift(),K=f.shift(),U=f.shift(),Z=f.shift(),oe=s,re=u,s+=f.shift(),u+=f.shift(),m="A",c=this.convertEndpointToCenterParameterization(oe,re,s,u,U,Z,q,L,K);break}n.push({command:m||F,points:c,start:{x:C,y:B},pathLength:this.calcLength(C,B,m||F,c)})}(F==="z"||F==="Z")&&n.push({command:"z",points:[],start:void 0,pathLength:0})}return n}static calcLength(e,t,i,r){let n,o,s,u;const _=xe;switch(i){case"L":return _.getLineLength(e,t,r[0],r[1]);case"C":return dn([e,r[0],r[2],r[4]],[t,r[1],r[3],r[5]],1);case"Q":return fn([e,r[0],r[2]],[t,r[1],r[3]],1);case"A":n=0;const l=r[4],g=r[5],d=r[4]+g;let F=Math.PI/180;if(Math.abs(l-d)d;u-=F)s=_.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],u,0),n+=_.getLineLength(o.x,o.y,s.x,s.y),o=s;else for(u=l+F;u1&&(s*=Math.sqrt(F),u*=Math.sqrt(F));let f=Math.sqrt((s*s*(u*u)-s*s*(d*d)-u*u*(g*g))/(s*s*(d*d)+u*u*(g*g)));n===o&&(f*=-1),isNaN(f)&&(f=0);const w=f*s*d/u,m=f*-u*g/s,c=(e+i)/2+Math.cos(l)*w-Math.sin(l)*m,C=(t+r)/2+Math.sin(l)*w+Math.cos(l)*m,B=function(U){return Math.sqrt(U[0]*U[0]+U[1]*U[1])},v=function(U,Z){return(U[0]*Z[0]+U[1]*Z[1])/(B(U)*B(Z))},M=function(U,Z){return(U[0]*Z[1]=1&&(K=0),o===0&&K>0&&(K=K-2*Math.PI),o===1&&K<0&&(K=K+2*Math.PI),[c,C,s,u,P,K,l,o]}}xe.prototype.className="Path",xe.prototype._attrsAffectingSize=["data"],Be(xe),b.addGetterSetter(xe,"data");class St extends lt{_sceneFunc(e){super._sceneFunc(e);const t=Math.PI*2,i=this.points();let r=i;const n=this.tension()!==0&&i.length>4;n&&(r=this.getTensionPoints());const o=this.pointerLength(),s=i.length;let u,_;if(n){const d=[r[r.length-4],r[r.length-3],r[r.length-2],r[r.length-1],i[s-2],i[s-1]],F=xe.calcLength(r[r.length-4],r[r.length-3],"C",d),f=xe.getPointOnQuadraticBezier(Math.min(1,1-o/F),d[0],d[1],d[2],d[3],d[4],d[5]);u=i[s-2]-f.x,_=i[s-1]-f.y}else u=i[s-2]-i[s-4],_=i[s-1]-i[s-3];const l=(Math.atan2(_,u)+t)%t,g=this.pointerWidth();this.pointerAtEnding()&&(e.save(),e.beginPath(),e.translate(i[s-2],i[s-1]),e.rotate(l),e.moveTo(0,0),e.lineTo(-o,g/2),e.lineTo(-o,-g/2),e.closePath(),e.restore(),this.__fillStroke(e)),this.pointerAtBeginning()&&(e.save(),e.beginPath(),e.translate(i[0],i[1]),n?(u=(r[0]+r[2])/2-i[0],_=(r[1]+r[3])/2-i[1]):(u=i[2]-i[0],_=i[3]-i[1]),e.rotate((Math.atan2(-_,-u)+t)%t),e.moveTo(0,0),e.lineTo(-o,g/2),e.lineTo(-o,-g/2),e.closePath(),e.restore(),this.__fillStroke(e))}__fillStroke(e){const t=this.dashEnabled();t&&(this.attrs.dashEnabled=!1,e.setLineDash([])),e.fillStrokeShape(this),t&&(this.attrs.dashEnabled=!0)}getSelfRect(){const e=super.getSelfRect(),t=this.pointerWidth()/2;return{x:e.x,y:e.y-t,width:e.width,height:e.height+t*2}}}St.prototype.className="Arrow",Be(St),b.addGetterSetter(St,"pointerLength",10,O()),b.addGetterSetter(St,"pointerWidth",10,O()),b.addGetterSetter(St,"pointerAtBeginning",!1),b.addGetterSetter(St,"pointerAtEnding",!0);class Yt extends H{_sceneFunc(e){e.beginPath(),e.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),e.closePath(),e.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(e){this.radius()!==e/2&&this.radius(e/2)}setHeight(e){this.radius()!==e/2&&this.radius(e/2)}}Yt.prototype._centroid=!0,Yt.prototype.className="Circle",Yt.prototype._attrsAffectingSize=["radius"],Be(Yt),b.addGetterSetter(Yt,"radius",0,O());class Ft extends H{_sceneFunc(e){const t=this.radiusX(),i=this.radiusY();e.beginPath(),e.save(),t!==i&&e.scale(1,i/t),e.arc(0,0,t,0,Math.PI*2,!1),e.restore(),e.closePath(),e.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(e){this.radiusX(e/2)}setHeight(e){this.radiusY(e/2)}}Ft.prototype.className="Ellipse",Ft.prototype._centroid=!0,Ft.prototype._attrsAffectingSize=["radiusX","radiusY"],Be(Ft),b.addComponentsGetterSetter(Ft,"radius",["x","y"]),b.addGetterSetter(Ft,"radiusX",0,O()),b.addGetterSetter(Ft,"radiusY",0,O());let Je=class zo extends H{constructor(e){super(e),this._loadListener=()=>{this._requestDraw()},this.on("imageChange.konva",t=>{this._removeImageLoad(t.oldVal),this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const e=this.image();e&&e.complete||e&&e.readyState===4||e&&e.addEventListener&&e.addEventListener("load",this._loadListener)}_removeImageLoad(e){e&&e.removeEventListener&&e.removeEventListener("load",this._loadListener)}destroy(){return this._removeImageLoad(this.image()),super.destroy(),this}_useBufferCanvas(){const e=!!this.cornerRadius(),t=this.hasShadow();return e&&t?!0:super._useBufferCanvas(!0)}_sceneFunc(e){const t=this.getWidth(),i=this.getHeight(),r=this.cornerRadius(),n=this.attrs.image;let o;if(n){const s=this.attrs.cropWidth,u=this.attrs.cropHeight;s&&u?o=[n,this.cropX(),this.cropY(),s,u,0,0,t,i]:o=[n,0,0,t,i]}(this.hasFill()||this.hasStroke()||r)&&(e.beginPath(),r?E.drawRoundedRectPath(e,t,i,r):e.rect(0,0,t,i),e.closePath(),e.fillStrokeShape(this)),n&&(r&&e.clip(),e.drawImage.apply(e,o))}_hitFunc(e){const t=this.width(),i=this.height(),r=this.cornerRadius();e.beginPath(),r?E.drawRoundedRectPath(e,t,i,r):e.rect(0,0,t,i),e.closePath(),e.fillStrokeShape(this)}getWidth(){var e,t,i;return(i=(e=this.attrs.width)!==null&&e!==void 0?e:(t=this.image())===null||t===void 0?void 0:t.width)!==null&&i!==void 0?i:0}getHeight(){var e,t,i;return(i=(e=this.attrs.height)!==null&&e!==void 0?e:(t=this.image())===null||t===void 0?void 0:t.height)!==null&&i!==void 0?i:0}static fromURL(e,t,i=null){const r=E.createImageElement();r.onload=function(){const n=new zo({image:r});t(n)},r.onerror=i,r.crossOrigin="Anonymous",r.src=e}};Je.prototype.className="Image",Je.prototype._attrsAffectingSize=["image"],Be(Je),b.addGetterSetter(Je,"cornerRadius",0,pi(4)),b.addGetterSetter(Je,"image"),b.addComponentsGetterSetter(Je,"crop",["x","y","width","height"]),b.addGetterSetter(Je,"cropX",0,O()),b.addGetterSetter(Je,"cropY",0,O()),b.addGetterSetter(Je,"cropWidth",0,O()),b.addGetterSetter(Je,"cropHeight",0,O());const Ho=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],f_="Change.konva",F_="none",ar="up",ir="right",rr="down",nr="left",c_=Ho.length;class or extends Kt{constructor(e){super(e),this.on("add.konva",function(t){this._addListeners(t.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(e){let t=this,i;const r=function(){t._sync()};for(i=0;i{t=Math.min(t,o.x),i=Math.max(i,o.x),r=Math.min(r,o.y),n=Math.max(n,o.y)}),{x:t,y:r,width:i-t,height:n-r}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(e){this.radius(e/2)}setHeight(e){this.radius(e/2)}}ct.prototype.className="RegularPolygon",ct.prototype._centroid=!0,ct.prototype._attrsAffectingSize=["radius"],Be(ct),b.addGetterSetter(ct,"radius",0,O()),b.addGetterSetter(ct,"sides",0,O()),b.addGetterSetter(ct,"cornerRadius",0,pi(4));const bn=Math.PI*2;class Mt extends H{_sceneFunc(e){e.beginPath(),e.arc(0,0,this.innerRadius(),0,bn,!1),e.moveTo(this.outerRadius(),0),e.arc(0,0,this.outerRadius(),bn,0,!0),e.closePath(),e.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(e){this.outerRadius(e/2)}setHeight(e){this.outerRadius(e/2)}}Mt.prototype.className="Ring",Mt.prototype._centroid=!0,Mt.prototype._attrsAffectingSize=["innerRadius","outerRadius"],Be(Mt),b.addGetterSetter(Mt,"innerRadius",0,O()),b.addGetterSetter(Mt,"outerRadius",0,O());class it extends H{constructor(e){super(e),this._updated=!0,this.anim=new Ke(()=>{const t=this._updated;return this._updated=!1,t}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())})}_sceneFunc(e){const t=this.animation(),i=this.frameIndex(),r=i*4,n=this.animations()[t],o=this.frameOffsets(),s=n[r+0],u=n[r+1],_=n[r+2],l=n[r+3],g=this.image();if((this.hasFill()||this.hasStroke())&&(e.beginPath(),e.rect(0,0,_,l),e.closePath(),e.fillStrokeShape(this)),g)if(o){const d=o[t],F=i*2;e.drawImage(g,s,u,_,l,d[F+0],d[F+1],_,l)}else e.drawImage(g,s,u,_,l,0,0,_,l)}_hitFunc(e){const t=this.animation(),i=this.frameIndex(),r=i*4,n=this.animations()[t],o=this.frameOffsets(),s=n[r+2],u=n[r+3];if(e.beginPath(),o){const _=o[t],l=i*2;e.rect(_[l+0],_[l+1],s,u)}else e.rect(0,0,s,u);e.closePath(),e.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){const e=this;this.interval=setInterval(function(){e._updateIndex()},1e3/this.frameRate())}start(){if(this.isRunning())return;const e=this.getLayer();this.anim.setLayers(e),this._setInterval(),this.anim.start()}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){const e=this.frameIndex(),t=this.animation(),i=this.animations(),r=i[t],n=r.length/4;e{if(new RegExp("\\p{Emoji}","u").test(t)){const n=r[i+1];n&&new RegExp("\\p{Emoji_Modifier}|\\u200D","u").test(n)?(e.push(t+n),r[i+1]=""):e.push(t)}else new RegExp("\\p{Regional_Indicator}{2}","u").test(t+(r[i+1]||""))?e.push(t+r[i+1]):i>0&&new RegExp("\\p{Mn}|\\p{Me}|\\p{Mc}","u").test(t)?e[e.length-1]+=t:t&&e.push(t);return e},[])}const $t="auto",m_="center",Ro="inherit",sa="justify",p_="Change.konva",Io="2d",yn="-",Oo="left",b_="text",y_="Text",k_="top",w_="bottom",kn="middle",wn="normal",D_="px ",Ua=" ",v_="right",Dn="rtl",x_="word",C_="char",vn="none",Si="…",Go=["direction","fontFamily","fontSize","fontStyle","fontVariant","padding","align","verticalAlign","lineHeight","text","width","height","wrap","ellipsis","letterSpacing"],E_=Go.length;let ua=null;function j_(){if(ua!==null)return ua;ua=!1;try{const a=document.createElement("canvas");a.width=10,a.height=10;const e=a.getContext(Io);if(e){e.globalAlpha=0,e.shadowColor="black",e.shadowBlur=5,e.shadowOffsetX=5,e.shadowOffsetY=5,e.fillStyle="black",e.font="10px Arial",e.fillText("X",0,10);const t=e.getImageData(0,0,10,10).data;for(let i=3;i0){ua=!0;break}}}catch{}return ua}function B_(a){return a.split(",").map(e=>{e=e.trim();const t=e.indexOf(" ")>=0,i=e.indexOf('"')>=0||e.indexOf("'")>=0;return t&&!i&&(e=`"${e}"`),e}).join(", ")}let Ai;function Mi(){return Ai||(Ai=E.createCanvasElement().getContext(Io),Ai)}function q_(a){this._partialFillStyle&&a.setAttr("fillStyle",this._partialFillStyle),a.fillText(this._partialText,this._partialTextX,this._partialTextY)}function S_(a){a.setAttr("miterLimit",2),this._partialStrokeStyle&&a.setAttr("strokeStyle",this._partialStrokeStyle),a.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function A_(a){return a=a||{},!a.fillLinearGradientColorStops&&!a.fillRadialGradientColorStops&&!a.fillPatternImage&&(a.fill=a.fill||"black"),a}class ke extends H{constructor(e){super(A_(e)),this._partialTextX=0,this._partialTextY=0;for(let t=0;tvt+ba(xt.text).length,0),pe=le+be;w({char:_e,index:pe,x:U,y:P+Z,lineIndex:M,column:le,isLastInLine:J,width:this.measureSize(_e).width,context:e});const Le=e.fillStyle;Le!==L&&(this._partialFillStyle=Le);const It=e.strokeStyle;It!==K&&(this._partialStrokeStyle=It)}e.fillStrokeShape(this),w&&(this._partialFillStyle=void 0,this._partialStrokeStyle=void 0,e.restore()),U+=this.measureSize(_e).width+f}}else f!==0&&e.setAttr("letterSpacing",`${f}px`),this._partialTextX=U,this._partialTextY=P+Z,this._partialText=re,e.fillStrokeShape(this);if(v){e.save(),e.beginPath();const De=W.legacyTextRendering?0:-Math.round(s/4),se=ue;e.moveTo(se,P+Z+De);const le=d===sa&&!J?F-o*2:ee;e.lineTo(se+Math.round(le),P+Z+De),e.lineWidth=s/15;const _e=this._getLinearGradient();e.strokeStyle=_e||m,e.stroke(),e.restore()}e.restore(),n>1&&(P+=u)}}_hitFunc(e){const t=this.getWidth(),i=this.getHeight();e.beginPath(),e.rect(0,0,t,i),e.closePath(),e.fillStrokeShape(this)}setText(e){const t=E._isString(e)?e:e==null?"":e+"";return this._setAttr(b_,t),this}getWidth(){return this.attrs.width===$t||this.attrs.width===void 0?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){return this.attrs.height===$t||this.attrs.height===void 0?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return E.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(e){var t,i,r,n,o,s,u,_,l,g,d;let F=Mi(),f=this.fontSize(),w;F.save(),F.font=this._getContextFont(),w=F.measureText(e),F.restore();const m=f/100;return{actualBoundingBoxAscent:(t=w.actualBoundingBoxAscent)!==null&&t!==void 0?t:71.58203125*m,actualBoundingBoxDescent:(i=w.actualBoundingBoxDescent)!==null&&i!==void 0?i:0,actualBoundingBoxLeft:(r=w.actualBoundingBoxLeft)!==null&&r!==void 0?r:-7.421875*m,actualBoundingBoxRight:(n=w.actualBoundingBoxRight)!==null&&n!==void 0?n:75.732421875*m,alphabeticBaseline:(o=w.alphabeticBaseline)!==null&&o!==void 0?o:0,emHeightAscent:(s=w.emHeightAscent)!==null&&s!==void 0?s:100*m,emHeightDescent:(u=w.emHeightDescent)!==null&&u!==void 0?u:-20*m,fontBoundingBoxAscent:(_=w.fontBoundingBoxAscent)!==null&&_!==void 0?_:91*m,fontBoundingBoxDescent:(l=w.fontBoundingBoxDescent)!==null&&l!==void 0?l:21*m,hangingBaseline:(g=w.hangingBaseline)!==null&&g!==void 0?g:72.80000305175781*m,ideographicBaseline:(d=w.ideographicBaseline)!==null&&d!==void 0?d:-21*m,width:w.width,height:f}}_getContextFont(){return this.fontStyle()+Ua+this.fontVariant()+Ua+(this.fontSize()+D_)+B_(this.fontFamily())}_addTextLine(e){this.align()===sa&&(e=e.trim());const t=this._getTextWidth(e);return this.textArr.push({text:e,width:t,lastInParagraph:!1})}_getTextWidth(e){const t=this.letterSpacing(),i=e.length;return Mi().measureText(e).width+t*i}_setTextData(){let e=this.text().split(`
+`),t=+this.fontSize(),i=0,r=this.lineHeight()*t,n=this.attrs.width,o=this.attrs.height,s=n!==$t&&n!==void 0,u=o!==$t&&o!==void 0,_=this.padding(),l=n-_*2,g=o-_*2,d=0,F=this.wrap(),f=F!==vn,w=F!==C_&&f,m=this.ellipsis();this.textArr=[],Mi().font=this._getContextFont();const c=m?this._getTextWidth(Si):0;for(let C=0,B=e.length;Cl)for(;v.length>0;){const P=ba(v);let q=0,L=P.length,K="",U=0;for(;q>>1,oe=P.slice(0,Z+1).join(""),re=this._getTextWidth(oe);(m&&u&&d+r>g?re+c:re)<=l?(q=Z+1,K=oe,U=re):L=Z}if(K){if(w){const Z=ba(K),oe=P[Z.length],re=oe===Ua||oe===yn;let ee;if(re&&U<=l)ee=Z.length;else{const J=Z.lastIndexOf(Ua),ue=Z.lastIndexOf(yn);ee=Math.max(J,ue)+1}ee>0&&(q=ee,K=P.slice(0,q).join(""),U=this._getTextWidth(K))}if(K=K.trimRight(),this._addTextLine(K),i=Math.max(i,U),d+=r,this._shouldHandleEllipsis(d)){this._tryToAddEllipsisToLastLine();break}if(v=P.slice(q).join("").trimLeft(),v.length>0&&(M=this._getTextWidth(v),M<=l)){this._addTextLine(v),d+=r,i=Math.max(i,M);break}}else break}else this._addTextLine(v),d+=r,i=Math.max(i,M),this._shouldHandleEllipsis(d)&&Cg)break}this.textHeight=t,this.textWidth=i}_shouldHandleEllipsis(e){const t=+this.fontSize(),i=this.lineHeight()*t,r=this.attrs.height,n=r!==$t&&r!==void 0,o=this.padding(),s=r-o*2;return this.wrap()===vn||n&&e+i>s}_tryToAddEllipsisToLastLine(){const e=this.attrs.width,t=e!==$t&&e!==void 0,i=this.padding(),r=e-i*2,n=this.ellipsis(),o=this.textArr[this.textArr.length-1];!o||!n||(t&&(this._getTextWidth(o.text+Si)t?null:xe.getPointAtLengthOfDataArray(e,this.dataArray)}_readDataAttribute(){this.dataArray=xe.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(e){e.setAttr("font",this._getContextFont()),e.setAttr("textBaseline",this.textBaseline()),e.setAttr("textAlign","left"),e.save();const t=this.textDecoration(),i=this.fill(),r=this.fontSize(),n=this.glyphInfo,o=t.indexOf("underline")!==-1,s=t.indexOf("line-through")!==-1;o&&e.beginPath();for(let u=0;u=1){const i=t[0].p0;e.moveTo(i.x,i.y)}for(let i=0;ithis.pathLength&&c-this.pathLength<=_?this.pathLength:c);if(!C)return;const B=xe.getLineLength(f.x,f.y,C.x,C.y);let v=0;if(u)try{v=u(t[F-1].char,w)*this.fontSize()}catch{v=0}f.x+=v,C.x+=v,this.textWidth+=v;const M=xe.getPointOnLine(v+B/2,f.x,f.y,C.x,C.y),P=Math.atan2(C.y-f.y,C.x-f.x);this.glyphInfo.push({transposeX:M.x,transposeY:M.y,text:e[F],rotation:P,p0:f,p1:C,width:B}),d+=m}}getSelfRect(){if(!this.glyphInfo.length)return{x:0,y:0,width:0,height:0};const e=[];this.glyphInfo.forEach(function(_){e.push(_.p0.x),e.push(_.p0.y),e.push(_.p1.x),e.push(_.p1.y)});let t=e[0]||0,i=e[0]||0,r=e[1]||0,n=e[1]||0,o,s;for(let _=0;_a+`.${Wo}`).join(" "),jn="nodesRect",L_=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange","draggableChange"],T_={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135},z_="ontouchstart"in W._global;function H_(a,e,t){if(a==="rotater")return t;e+=E.degToRad(T_[a]||0);const i=(E.radToDeg(e)%360+360)%360;return E._inRange(i,315+22.5,360)||E._inRange(i,0,22.5)?"ns-resize":E._inRange(i,45-22.5,45+22.5)?"nesw-resize":E._inRange(i,90-22.5,90+22.5)?"ew-resize":E._inRange(i,135-22.5,135+22.5)?"nwse-resize":E._inRange(i,180-22.5,180+22.5)?"ns-resize":E._inRange(i,225-22.5,225+22.5)?"nesw-resize":E._inRange(i,270-22.5,270+22.5)?"ew-resize":E._inRange(i,315-22.5,315+22.5)?"nwse-resize":(E.error("Transformer has unknown angle for cursor detection: "+i),"pointer")}const ui=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"];function R_(a){return{x:a.x+a.width/2*Math.cos(a.rotation)+a.height/2*Math.sin(-a.rotation),y:a.y+a.height/2*Math.cos(a.rotation)+a.width/2*Math.sin(a.rotation)}}function Vo(a,e,t){const i=t.x+(a.x-t.x)*Math.cos(e)-(a.y-t.y)*Math.sin(e),r=t.y+(a.x-t.x)*Math.sin(e)+(a.y-t.y)*Math.cos(e);return{...a,rotation:a.rotation+e,x:i,y:r}}function I_(a,e){const t=R_(a);return Vo(a,e,t)}function O_(a,e,t){let i=e;for(let r=0;ri.isAncestorOf(this)?(E.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1):!0);return this._nodes=e=t,e.length===1&&this.useSingleNodeRotation()?this.rotation(e[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach(i=>{const r=()=>{this._transforming||(this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),this.isDragging()||this._scheduleUpdate())};if(i._attrsAffectingSize.length){const n=i._attrsAffectingSize.map(o=>o+"Change."+this._getEventNamespace()).join(" ");i.on(n,r)}i.on(L_.map(n=>n+`.${this._getEventNamespace()}`).join(" "),r),i.on(`absoluteTransformChange.${this._getEventNamespace()}`,r),this._proxyDrag(i)}),this._resetTransformCache(),this.findOne(".top-left")&&this.update(),this}_proxyDrag(e){let t;e.on(`dragstart.${this._getEventNamespace()}`,i=>{t=e.getAbsolutePosition(),!this.isDragging()&&e!==this.findOne(".back")&&this.startDrag(i,!1)}),e.on(`dragmove.${this._getEventNamespace()}`,i=>{if(!t)return;const r=e.getAbsolutePosition(),n=r.x-t.x,o=r.y-t.y;this.nodes().forEach(s=>{if(s===e||s.isDragging())return;const u=s.getAbsolutePosition();s.setAbsolutePosition({x:u.x+n,y:u.y+o}),s.startDrag(i)}),t=null})}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach(e=>{e.off("."+this._getEventNamespace())}),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(jn),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(jn,this.__getNodeRect)}__getNodeShape(e,t=this.rotation(),i){const r=e.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),n=e.getAbsoluteScale(i),o=e.getAbsolutePosition(i),s=r.x*n.x-e.offsetX()*n.x,u=r.y*n.y-e.offsetY()*n.y,_=(W.getAngle(e.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),l={x:o.x+s*Math.cos(_)+u*Math.sin(-_),y:o.y+u*Math.cos(_)+s*Math.sin(_),width:r.width*n.x,height:r.height*n.y,rotation:_};return Vo(l,-W.getAngle(t),{x:0,y:0})}__getNodeRect(){if(!this.getNode())return{x:-1e8,y:-1e8,width:0,height:0,rotation:0};const e=[];this.nodes().map(u=>{const _=u.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),l=[{x:_.x,y:_.y},{x:_.x+_.width,y:_.y},{x:_.x+_.width,y:_.y+_.height},{x:_.x,y:_.y+_.height}],g=u.getAbsoluteTransform();l.forEach(function(d){const F=g.point(d);e.push(F)})});const t=new Ye;t.rotate(-W.getAngle(this.rotation()));let i=1/0,r=1/0,n=-1/0,o=-1/0;e.forEach(function(u){const _=t.point(u);i===void 0&&(i=n=_.x,r=o=_.y),i=Math.min(i,_.x),r=Math.min(r,_.y),n=Math.max(n,_.x),o=Math.max(o,_.y)}),t.invert();const s=t.point({x:i,y:r});return{x:s.x,y:s.y,width:n-i,height:o-r,rotation:W.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),ui.forEach(e=>{this._createAnchor(e)}),this._createAnchor("rotater"),this._elementsCreated=!0}_createAnchor(e){const t=new xa({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:e+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:z_?10:"auto"}),i=this;t.on("mousedown touchstart",function(r){i._handleMouseDown(r)}),t.on("dragstart",r=>{t.stopDrag(),r.cancelBubble=!0}),t.on("dragend",r=>{r.cancelBubble=!0}),t.on("mouseenter",()=>{const r=W.getAngle(this.rotation()),n=this.rotateAnchorCursor(),o=H_(e,r,n);t.getStage().content&&(t.getStage().content.style.cursor=o),this._cursorChange=!0}),t.on("mouseout",()=>{t.getStage().content&&(t.getStage().content.style.cursor=""),this._cursorChange=!1}),this.add(t)}_createBack(){const e=new H({name:"back",width:0,height:0,sceneFunc(t,i){const r=i.getParent(),n=r.padding(),o=i.width(),s=i.height();if(t.beginPath(),t.rect(-n,-n,o+n*2,s+n*2),r.rotateEnabled()&&r.rotateLineVisible()){const u=r.rotateAnchorAngle(),_=r.rotateAnchorOffset(),l=E.degToRad(u),g=Math.sin(l),d=-Math.cos(l),F=o/2,f=s/2;let w=1/0;d<0?w=Math.min(w,-f/d):d>0&&(w=Math.min(w,(s-f)/d)),g<0?w=Math.min(w,-F/g):g>0&&(w=Math.min(w,(o-F)/g));const m=F+g*w,c=f+d*w,C=E._sign(s),B=m+g*_*C,v=c+d*_*C;t.moveTo(m,c),t.lineTo(B,v)}t.fillStrokeShape(i)},hitFunc:(t,i)=>{if(!this.shouldOverdrawWholeArea())return;const r=this.padding();t.beginPath(),t.rect(-r,-r,i.width()+r*2,i.height()+r*2),t.fillStrokeShape(i)}});this.add(e),this._proxyDrag(e),e.on("dragstart",t=>{t.cancelBubble=!0}),e.on("dragmove",t=>{t.cancelBubble=!0}),e.on("dragend",t=>{t.cancelBubble=!0}),this.on("dragmove",t=>{this.update()})}_handleMouseDown(e){var t;if(this._transforming)return;this._movingAnchorName=e.target.name().split(" ")[0];const i=this._getNodeRect(),r=i.width,n=i.height,o=Math.sqrt(Math.pow(r,2)+Math.pow(n,2));this.sin=Math.abs(n/o),this.cos=Math.abs(r/o);const s=(t=this.getStage())===null||t===void 0?void 0:t._getOwnerWindow();this._transformWindow=s||null,s&&(s.addEventListener("mousemove",this._handleMouseMove),s.addEventListener("touchmove",this._handleMouseMove),s.addEventListener("mouseup",this._handleMouseUp,!0),s.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;const u=e.target.getAbsolutePosition(),_=e.target.getStage().getPointerPosition();this._anchorDragOffset={x:_.x-u.x,y:_.y-u.y},sr++,this._fire("transformstart",{evt:e.evt,target:this.getNode()}),this._nodes.forEach(l=>{l._fire("transformstart",{evt:e.evt,target:l})})}_handleMouseMove(e){let t,i,r;const n=this.findOne("."+this._movingAnchorName),o=n.getStage();o.setPointersPositions(e);const s=o.getPointerPosition();let u={x:s.x-this._anchorDragOffset.x,y:s.y-this._anchorDragOffset.y};const _=n.getAbsolutePosition();this.anchorDragBoundFunc()&&(u=this.anchorDragBoundFunc()(_,u,e)),n.setAbsolutePosition(u);const l=n.getAbsolutePosition();if(_.x===l.x&&_.y===l.y)return;if(this._movingAnchorName==="rotater"){const B=this._getNodeRect();t=n.x()-B.width/2,i=-n.y()+B.height/2;const v=W.getAngle(this.rotateAnchorAngle());let M=Math.atan2(-i,t)+Math.PI/2-v;B.height<0&&(M-=Math.PI);const P=W.getAngle(this.rotation())+M,q=W.getAngle(this.rotationSnapTolerance()),L=O_(this.rotationSnaps(),P,q)-B.rotation,K=I_(B,L);this._fitNodesInto(K,e);return}const g=this.shiftBehavior();let d;g==="inverted"?d=this.keepRatio()&&!e.shiftKey:g==="none"?d=this.keepRatio():d=this.keepRatio()||e.shiftKey;let F=this.centeredScaling()||e.altKey,f=!1;if(this._movingAnchorName==="top-left"){if(d){f=!0;const B=F?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};r=Math.sqrt(Math.pow(B.x-n.x(),2)+Math.pow(B.y-n.y(),2));const v=this.findOne(".top-left").x()>B.x?-1:1,M=this.findOne(".top-left").y()>B.y?-1:1;t=r*this.cos*v,i=r*this.sin*M,this.findOne(".top-left").x(B.x-t),this.findOne(".top-left").y(B.y-i)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(n.y());else if(this._movingAnchorName==="top-right"){if(d){f=!0;const B=F?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};r=Math.sqrt(Math.pow(n.x()-B.x,2)+Math.pow(B.y-n.y(),2));const v=this.findOne(".top-right").x()B.y?-1:1;t=r*this.cos*v,i=r*this.sin*M,this.findOne(".top-right").x(B.x+t),this.findOne(".top-right").y(B.y-i)}var w=n.position();this.findOne(".top-left").y(w.y),this.findOne(".bottom-right").x(w.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(n.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(n.x());else if(this._movingAnchorName==="bottom-left"){if(d){f=!0;const B=F?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};r=Math.sqrt(Math.pow(B.x-n.x(),2)+Math.pow(n.y()-B.y,2));const v=B.x{var o;n._fire("transformend",{evt:e,target:n}),(o=n.getLayer())===null||o===void 0||o.batchDraw()}),this._movingAnchorName=null}}_fitNodesInto(e,t,i=!1){const r=W.autoDrawEnabled;W.autoDrawEnabled=!1;try{return this._doFitNodesInto(e,t,i)}finally{W.autoDrawEnabled=r}}_doFitNodesInto(e,t,i=!1){const r=this._getNodeRect(),n=1;if(E._inRange(e.width,-this.padding()*2-n,n)){this.update();return}if(E._inRange(e.height,-this.padding()*2-n,n)){this.update();return}const o=new Ye;o.rotate(W.getAngle(this.rotation()));const s=i?0:this.padding()*2;let u=null,_=null;if(this._movingAnchorName&&e.width<0&&this._movingAnchorName.indexOf("left")>=0){const c=o.point({x:-s,y:0});e.x+=c.x,e.y+=c.y,e.width+=s,u={axis:"width",from:"left",to:"right",offset:c}}else if(this._movingAnchorName&&e.width<0&&this._movingAnchorName.indexOf("right")>=0){const c=o.point({x:s,y:0});e.width+=s,u={axis:"width",from:"right",to:"left",offset:c}}if(this._movingAnchorName&&e.height<0&&this._movingAnchorName.indexOf("top")>=0){const c=o.point({x:0,y:-s});e.x+=c.x,e.y+=c.y,e.height+=s,_={axis:"height",from:"top",to:"bottom",offset:c}}else if(this._movingAnchorName&&e.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const c=o.point({x:0,y:s});e.height+=s,_={axis:"height",from:"bottom",to:"top",offset:c}}if(this.boundBoxFunc()){const c=this.boundBoxFunc()(r,e);c?e=c:E.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}for(const c of[u,_])c&&e[c.axis]<0&&this._movingAnchorName&&(this._movingAnchorName=this._movingAnchorName.replace(c.from,c.to),this._anchorDragOffset.x-=c.offset.x,this._anchorDragOffset.y-=c.offset.y);const l=1e7,g=new Ye;g.translate(r.x,r.y),g.rotate(r.rotation),g.scale(r.width/l,r.height/l);const d=new Ye,F=e.width/l,f=e.height/l;this.flipEnabled()===!1?(d.translate(e.x,e.y),d.rotate(e.rotation),d.translate(e.width<0?e.width:0,e.height<0?e.height:0),d.scale(Math.abs(F),Math.abs(f))):(d.translate(e.x,e.y),d.rotate(e.rotation),d.scale(F,f));const w=d.multiply(g.invert()),m=new Set;this._nodes.forEach(c=>{if(!c.getStage())return;const C=c.getParent().getAbsoluteTransform(),B=c.getTransform().copy();B.translate(c.offsetX(),c.offsetY());const v=new Ye;v.multiply(C.copy().invert()).multiply(w).multiply(C).multiply(B);const M=v.decompose();c.setAttrs(M);const P=c.getLayer();P&&m.add(P)}),this.rotation(E._getRotation(e.rotation)),this._nodes.forEach(c=>{this._fire("transform",{evt:t,target:c}),c._fire("transform",{evt:t,target:c})}),this._resetTransformCache(),this.update(),m.add(this.getLayer()),m.forEach(c=>c&&c.batchDraw())}_scheduleUpdate(){this._updateScheduled||(this._updateScheduled=!0,R._runAfterAbsTransformCascade(()=>{var e;this._updateScheduled=!1,!(!(!((e=this._nodes)===null||e===void 0)&&e.length)||this._transforming||this.isDragging())&&this.update()}))}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(e,t){this.findOne(e).setAttrs(t)}update(){var e;const t=this._getNodeRect();this.rotation(E._getRotation(t.rotation));const i=t.width,r=t.height,n=this.enabledAnchors(),o=this.resizeEnabled(),s=this.padding(),u=this.anchorSize(),_=this.find("._anchor");_.forEach(P=>{P.setAttrs({width:u,height:u,offsetX:u/2,offsetY:u/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})}),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:u/2+s,offsetY:u/2+s,visible:o&&n.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:i/2,y:0,offsetY:u/2+s,visible:o&&n.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:i,y:0,offsetX:u/2-s,offsetY:u/2+s,visible:o&&n.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:r/2,offsetX:u/2+s,visible:o&&n.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:i,y:r/2,offsetX:u/2-s,visible:o&&n.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:r,offsetX:u/2+s,offsetY:u/2-s,visible:o&&n.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:i/2,y:r,offsetY:u/2-s,visible:o&&n.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:i,y:r,offsetX:u/2-s,offsetY:u/2-s,visible:o&&n.indexOf("bottom-right")>=0});const l=this.rotateAnchorAngle(),g=this.rotateAnchorOffset(),d=E.degToRad(l),F=Math.sin(d),f=-Math.cos(d),w=i/2,m=r/2;let c=1/0;f<0?c=Math.min(c,-m/f):f>0&&(c=Math.min(c,(r-m)/f)),F<0?c=Math.min(c,-w/F):F>0&&(c=Math.min(c,(i-w)/F));const C=w+F*c,B=m+f*c,v=E._sign(r);this._batchChangeChild(".rotater",{x:C+F*g*v,y:B+f*g*v-s*f,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:i,height:r,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),draggable:this.nodes().some(P=>P.draggable()),x:0,y:0});const M=this.anchorStyleFunc();M&&_.forEach(P=>{M(P)}),(e=this.getLayer())===null||e===void 0||e.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();const e=this.findOne("."+this._movingAnchorName);e&&e.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),Kt.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}add(...e){return this._elementsCreated?(E.error("You cannot add external nodes to the Transformer. Use tr.nodes([node]) instead."),this):super.add(...e)}toObject(){return R.prototype.toObject.call(this)}clone(e){return R.prototype.clone.call(this,e)}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}de.isTransforming=()=>sr>0;function G_(a){return a instanceof Array||E.warn("enabledAnchors value should be an array"),a instanceof Array&&a.forEach(function(e){ui.indexOf(e)===-1&&E.warn("Unknown anchor name: "+e+". Available names are: "+ui.join(", "))}),a||[]}de.prototype.className="Transformer",Be(de),b.addGetterSetter(de,"enabledAnchors",ui,G_),b.addGetterSetter(de,"flipEnabled",!0,tt()),b.addGetterSetter(de,"resizeEnabled",!0),b.addGetterSetter(de,"anchorSize",10,O()),b.addGetterSetter(de,"rotateEnabled",!0),b.addGetterSetter(de,"rotateLineVisible",!0),b.addGetterSetter(de,"rotationSnaps",[]),b.addGetterSetter(de,"rotateAnchorOffset",50,O()),b.addGetterSetter(de,"rotateAnchorAngle",0,O()),b.addGetterSetter(de,"rotateAnchorCursor","crosshair"),b.addGetterSetter(de,"rotationSnapTolerance",5,O()),b.addGetterSetter(de,"borderEnabled",!0),b.addGetterSetter(de,"anchorStroke","rgb(0, 161, 255)"),b.addGetterSetter(de,"anchorStrokeWidth",1,O()),b.addGetterSetter(de,"anchorFill","white"),b.addGetterSetter(de,"anchorCornerRadius",0,O()),b.addGetterSetter(de,"borderStroke","rgb(0, 161, 255)"),b.addGetterSetter(de,"borderStrokeWidth",1,O()),b.addGetterSetter(de,"borderDash"),b.addGetterSetter(de,"keepRatio",!0),b.addGetterSetter(de,"shiftBehavior","default"),b.addGetterSetter(de,"centeredScaling",!1),b.addGetterSetter(de,"ignoreStroke",!1),b.addGetterSetter(de,"padding",0,O()),b.addGetterSetter(de,"nodes"),b.addGetterSetter(de,"node"),b.addGetterSetter(de,"boundBoxFunc"),b.addGetterSetter(de,"anchorDragBoundFunc"),b.addGetterSetter(de,"anchorStyleFunc"),b.addGetterSetter(de,"shouldOverdrawWholeArea",!1),b.addGetterSetter(de,"useSingleNodeRotation",!0),b.backCompat(de,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});class _t extends H{_sceneFunc(e){e.beginPath(),e.arc(0,0,this.radius(),0,W.getAngle(this.angle()),this.clockwise()),e.lineTo(0,0),e.closePath(),e.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(e){this.radius(e/2)}setHeight(e){this.radius(e/2)}}_t.prototype.className="Wedge",_t.prototype._centroid=!0,_t.prototype._attrsAffectingSize=["radius"],Be(_t),b.addGetterSetter(_t,"radius",0,O()),b.addGetterSetter(_t,"angle",0,O()),b.addGetterSetter(_t,"clockwise",!1),b.backCompat(_t,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});function Bn(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}const W_=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],V_=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function N_(a,e){const t=a.data,i=a.width,r=a.height;let n,o,s,u,_,l,g,d,F,f,w,m,c,C,B,v,M,P,q,L;const K=e+e+1,U=i-1,Z=r-1,oe=e+1,re=oe*(oe+1)/2,ee=new Bn,J=W_[e],ue=V_[e];let De=null,se=ee,le=null,_e=null;for(let be=1;be>ue,q!==0?(q=255/q,t[o]=(u*J>>ue)*q,t[o+1]=(_*J>>ue)*q,t[o+2]=(l*J>>ue)*q):t[o]=t[o+1]=t[o+2]=0,u-=d,_-=F,l-=f,g-=w,d-=le.r,F-=le.g,f-=le.b,w-=le.a,n=s+((n=pe+e+1)>ue,q>0?(q=255/q,t[n]=(u*J>>ue)*q,t[n+1]=(_*J>>ue)*q,t[n+2]=(l*J>>ue)*q):t[n]=t[n+1]=t[n+2]=0,u-=d,_-=F,l-=f,g-=w,d-=le.r,F-=le.g,f-=le.b,w-=le.a,n=be+((n=Le+oe)0&&N_(a,e)};b.addGetterSetter(R,"blurRadius",0,O(),b.afterSetFilter);const U_=function(a){const e=this.brightness()*255,t=a.data,i=t.length;for(let r=0;r255?255:r,n=n<0?0:n>255?255:n,o=o<0?0:o>255?255:o,t[s]=r,t[s+1]=n,t[s+2]=o};b.addGetterSetter(R,"contrast",0,O(),b.afterSetFilter);const K_=function(a){var e,t,i,r,n,o,s,u,_;const l=a.data,g=a.width,d=a.height,F=Math.min(1,Math.max(0,(t=(e=this.embossStrength)===null||e===void 0?void 0:e.call(this))!==null&&t!==void 0?t:.5)),f=Math.min(1,Math.max(0,(r=(i=this.embossWhiteLevel)===null||i===void 0?void 0:i.call(this))!==null&&r!==void 0?r:.5)),w=(s={"top-left":315,top:270,"top-right":225,right:180,"bottom-right":135,bottom:90,"bottom-left":45,left:0}[(o=(n=this.embossDirection)===null||n===void 0?void 0:n.call(this))!==null&&o!==void 0?o:"top-left"])!==null&&s!==void 0?s:315,m=!!((_=(u=this.embossBlend)===null||u===void 0?void 0:u.call(this))!==null&&_!==void 0&&_),c=F*10,C=f*255,B=w*Math.PI/180,v=Math.cos(B),M=Math.sin(B),P=128/1020*c,q=new Uint8ClampedArray(l),L=new Float32Array(g*d);for(let re=0,ee=0;eere<0?0:re>255?255:re;for(let re=1;rer&&(r=n),u=e[B+1],us&&(s=u),g=e[B+2],g<_?_=g:g>l&&(l=g);r===i&&(r=255,i=0),s===o&&(s=255,o=0),l===_&&(l=255,_=0);let F,f,w,m,c,C;if(d>0)F=r+d*(255-r),f=i-d*(i-0),w=s+d*(255-s),m=o-d*(o-0),c=l+d*(255-l),C=_-d*(_-0);else{const B=(r+i)*.5;F=r+d*(r-B),f=i+d*(i-B);const v=(s+o)*.5;w=s+d*(s-v),m=o+d*(o-v);const M=(l+_)*.5;c=l+d*(l-M),C=_+d*(_-M)}for(let B=0;B_?d:_;const F=o,f=n,w=360/f*Math.PI/180;for(let m=0;m_?d:_;const F=o,f=n,w=0;let m,c;for(l=0;le&&(v=B,M=0,P=-1),r=0;r=0&&F=0&&f=0&&F=0&&f=1020?255:0}return o}function ll(a,e,t){const i=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],r=Math.round(Math.sqrt(i.length)),n=Math.floor(r/2),o=[];for(let s=0;s=0&&F=0&&f=t))for(let B=w;B=i)continue;const v=(t*B+C)*4;_+=o[v+0],l+=o[v+1],g+=o[v+2],d+=o[v+3],c+=1}_=_/c,l=l/c,g=g/c,d=d/c;for(let C=F;C=t))for(let B=w;B=i)continue;const v=(t*B+C)*4;o[v+0]=_,o[v+1]=l,o[v+2]=g,o[v+3]=d}}};b.addGetterSetter(R,"pixelSize",8,O(),b.afterSetFilter);const fl=function(a){const e=Math.round(this.levels()*254)+1,t=a.data,i=t.length,r=255/e;for(let n=0;n255?255:a<0?0:Math.round(a)}),b.addGetterSetter(R,"green",0,function(a){return this._filterUpToDate=!1,a>255?255:a<0?0:Math.round(a)}),b.addGetterSetter(R,"blue",0,co,b.afterSetFilter);const cl=function(a){const e=a.data,t=e.length,i=this.red(),r=this.green(),n=this.blue(),o=this.alpha();for(let s=0;s255?255:a<0?0:Math.round(a)}),b.addGetterSetter(R,"green",0,function(a){return this._filterUpToDate=!1,a>255?255:a<0?0:Math.round(a)}),b.addGetterSetter(R,"blue",0,co,b.afterSetFilter),b.addGetterSetter(R,"alpha",1,function(a){return this._filterUpToDate=!1,a>1?1:a<0?0:a});const ml=function(a){const e=a.data,t=e.length;for(let i=0;i=128&&(e[t]=255-i,e[t+1]=255-r,e[t+2]=255-n)}return a},bl=function(a){const e=this.threshold()*255,t=a.data,i=t.length;for(let r=0;rh.length)&&(y=h.length);for(var D=0,A=new Array(y);D=$.length?{done:!0}:{done:!1,value:$[ne++]}},e:function(Te){throw Te},f:Ee}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Ie,Gt=!0,Wt=!1;return{s:function(){ge=ge.call($)},n:function(){var Te=ge.next();return Gt=Te.done,Te},e:function(Te){Wt=!0,Ie=Te},f:function(){try{Gt||ge.return==null||ge.return()}finally{if(Wt)throw Ie}}}})(Object.getOwnPropertyNames(h));try{for(D.s();!(y=D.n()).done;){var A=y.value,N=h[A];h[A]=N&&F(N)==="object"?c(N):N}}catch($){D.e($)}finally{D.f()}return Object.freeze(h)}var C,B,v=function(h){if(!h.compressed)return h;for(var y in h.compressed=!1,h.emojis){var D=h.emojis[y];for(var A in w)D[A]=D[w[A]],delete D[w[A]];D.short_names||(D.short_names=[]),D.short_names.unshift(y),D.sheet_x=D.sheet[0],D.sheet_y=D.sheet[1],delete D.sheet,D.text||(D.text=""),D.added_in||(D.added_in=6),D.added_in=D.added_in.toFixed(1),D.search=m(D)}return c(h)},M=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart","hankey"],P={};function q(){B=!0,C=d.get("frequently")}var L={add:function(h){B||q();var y=h.id;C||(C=P),C[y]||(C[y]=0),C[y]+=1,d.set("last",y),d.set("frequently",C)},get:function(h){if(B||q(),!C){P={};for(var y=[],D=Math.min(h,M.length),A=0;A',custom:'',flags:'',foods:'',nature:'',objects:'',smileys:'',people:'',places:'',recent:'',symbols:''};function U(h,y,D,A,N,$,Q,ge){var ne,Ee=typeof h=="function"?h.options:h;return y&&(Ee.render=y,Ee.staticRenderFns=D,Ee._compiled=!0),{exports:h,options:Ee}}var Z=U({props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default:function(){return{}}}},emits:["click"],created:function(){this.svgs=K}},(function(){var h=this,y=h._self._c;return y("div",{staticClass:"emoji-mart-anchors",attrs:{role:"tablist"}},h._l(h.categories,(function(D){return y("button",{key:D.id,class:{"emoji-mart-anchor":!0,"emoji-mart-anchor-selected":D.id==h.activeCategory.id},style:{color:D.id==h.activeCategory.id?h.color:""},attrs:{role:"tab",type:"button","aria-label":D.name,"aria-selected":D.id==h.activeCategory.id,"data-title":h.i18n.categories[D.id]},on:{click:function(A){return h.$emit("click",D)}}},[y("div",{attrs:{"aria-hidden":"true"},domProps:{innerHTML:h._s(h.svgs[D.id])}}),h._v(" "),y("span",{staticClass:"emoji-mart-anchor-bar",style:{backgroundColor:h.color},attrs:{"aria-hidden":"true"}})])})),0)}),[]),oe=Z.exports;function re(h,y){if(!(h instanceof y))throw new TypeError("Cannot call a class as a function")}function ee(h){var y=(function(D,A){if(F(D)!="object"||!D)return D;var N=D[Symbol.toPrimitive];if(N!==void 0){var $=N.call(D,"string");if(F($)!="object")return $;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(D)})(h);return F(y)=="symbol"?y:y+""}function J(h,y){for(var D=0;D1114111||Math.floor(Q)!=Q)throw RangeError("Invalid code point: "+Q);Q<=65535?D.push(Q):(h=55296+((Q-=65536)>>10),y=Q%1024+56320,D.push(h,y)),(A+1===N||D.length>16384)&&($+=String.fromCharCode.apply(null,D),D.length=0)}return $};function se(h){var y=h.split("-").map((function(D){return"0x".concat(D)}));return De.apply(null,y)}function le(h){return h.reduce((function(y,D){return y.indexOf(D)===-1&&y.push(D),y}),[])}function _e(h,y){var D=le(h),A=le(y);return D.filter((function(N){return A.indexOf(N)>=0}))}function be(h,y){var D={};for(var A in h){var N=h[A],$=N;Object.prototype.hasOwnProperty.call(y,A)&&($=y[A]),F($)==="object"&&($=be(N,$)),D[A]=$}return D}function pe(h,y){var D=typeof Symbol<"u"&&h[Symbol.iterator]||h["@@iterator"];if(!D){if(Array.isArray(h)||(D=(function(ne,Ee){if(ne){if(typeof ne=="string")return Le(ne,Ee);var Ie=Object.prototype.toString.call(ne).slice(8,-1);return Ie==="Object"&&ne.constructor&&(Ie=ne.constructor.name),Ie==="Map"||Ie==="Set"?Array.from(ne):Ie==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Ie)?Le(ne,Ee):void 0}})(h))||y){D&&(h=D);var A=0,N=function(){};return{s:N,n:function(){return A>=h.length?{done:!0}:{done:!1,value:h[A++]}},e:function(ne){throw ne},f:N}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var $,Q=!0,ge=!1;return{s:function(){D=D.call(h)},n:function(){var ne=D.next();return Q=ne.done,ne},e:function(ne){ge=!0,$=ne},f:function(){try{Q||D.return==null||D.return()}finally{if(ge)throw $}}}}function Le(h,y){(y==null||y>h.length)&&(y=h.length);for(var D=0,A=new Array(y);D1&&arguments[1]!==void 0?arguments[1]:{},A=D.emojisToShowFilter,N=D.include,$=D.exclude,Q=D.custom,ge=D.recent,ne=D.recentLength,Ee=ne===void 0?20:ne;re(this,h),this._data=v(y),this._emojisFilter=A||null,this._include=N||null,this._exclude=$||null,this._custom=Q||[],this._recent=ge||L.get(Ee),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:"recent",name:"Recent",emojis:[]},this._customCategory={id:"custom",name:"Custom",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}),[{key:"buildIndex",value:function(){var h=this,y=this._data.categories;if(this._include&&(y=(y=y.filter((function($){return h._include.includes($.id)}))).sort((function($,Q){var ge=h._include.indexOf($.id),ne=h._include.indexOf(Q.id);return gene?1:0}))),y.forEach((function($){if(h.isCategoryNeeded($.id)){var Q={id:$.id,name:$.name,emojis:[]};$.emojis.forEach((function(ge){var ne=h.addEmoji(ge);ne&&Q.emojis.push(ne)})),Q.emojis.length&&h._categories.push(Q)}})),this.isCategoryNeeded("custom")){if(this._custom.length>0){var D,A=pe(this._custom);try{for(A.s();!(D=A.n()).done;){var N=D.value;this.addCustomEmoji(N)}}catch($){A.e($)}finally{A.f()}}this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded("recent")&&(this._recent.length&&this._recent.map((function($){var Q,ge=pe(h._customCategory.emojis);try{for(ge.s();!(Q=ge.n()).done;){var ne=Q.value;if(ne.id===$)return void h._recentCategory.emojis.push(ne)}}catch(Ee){ge.e(Ee)}finally{ge.f()}h.hasEmoji($)&&h._recentCategory.emojis.push(h.emoji($))})),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}},{key:"findEmoji",value:function(h,y){var D=h.match(It);if(D&&(h=D[1],D[2]&&(y=parseInt(D[2],10))),this._data.aliases.hasOwnProperty(h)&&(h=this._data.aliases[h]),this._emojis.hasOwnProperty(h)){var A=this._emojis[h];return y?A.getSkin(y):A}return this._nativeEmojis.hasOwnProperty(h)?this._nativeEmojis[h]:null}},{key:"categories",value:function(){return this._categories}},{key:"emoji",value:function(h){this._data.aliases.hasOwnProperty(h)&&(h=this._data.aliases[h]);var y=this._emojis[h];if(!y)throw new Error("Can not find emoji by id: "+h);return y}},{key:"firstEmoji",value:function(){var h=this._emojis[Object.keys(this._emojis)[0]];if(!h)throw new Error("Can not get first emoji");return h}},{key:"hasEmoji",value:function(h){return this._data.aliases.hasOwnProperty(h)&&(h=this._data.aliases[h]),!!this._emojis[h]}},{key:"nativeEmoji",value:function(h){return this._nativeEmojis.hasOwnProperty(h)?this._nativeEmojis[h]:null}},{key:"search",value:function(h,y){var D=this;if(y||(y=75),!h.length)return null;if(h=="-"||h=="-1")return[this.emoji("-1")];var A,N=h.toLowerCase().split(/[\s|,|\-|_]+/);N.length>2&&(N=[N[0],N[1]]),A=N.map((function(Q){for(var ge=D._emojis,ne=D._searchIndex,Ee=0,Ie=function(){var Wt=Q[Gt];if(Ee++,ne[Wt]||(ne[Wt]={}),!(ne=ne[Wt]).results){var Te={};for(var Et in ne.results=[],ne.emojis={},ge){var at=ge[Et],nu=at._data.search,Pr=Q.substr(0,Ee),Lr=nu.indexOf(Pr);if(Lr!=-1){var Tr=Lr+1;Pr==Et&&(Tr=0),ne.results.push(at),ne.emojis[Et]=at,Te[Et]=Tr}}ne.results.sort((function(ou,su){return Te[ou.id]-Te[su.id]}))}ge=ne.emojis},Gt=0;Gt1?_e.apply(null,A):A.length?A[0]:[])&&$.length>y&&($=$.slice(0,y)),$}},{key:"addCustomEmoji",value:function(h){var y=Object.assign({},h,{id:h.short_names[0],custom:!0});y.search||(y.search=m(y));var D=new dt(y);return this._emojis[D.id]=D,this._customCategory.emojis.push(D),D}},{key:"addEmoji",value:function(h){var y=this,D=this._data.emojis[h];if(!this.isEmojiNeeded(D))return!1;var A=new dt(D);if(this._emojis[h]=A,A.native&&(this._nativeEmojis[A.native]=A),A._skins)for(var N in A._skins){var $=A._skins[N];$.native&&(this._nativeEmojis[$.native]=$)}return A.emoticons&&A.emoticons.forEach((function(Q){y._emoticons[Q]||(y._emoticons[Q]=h)})),A}},{key:"isCategoryNeeded",value:function(h){var y=!this._include||!this._include.length||this._include.indexOf(h)>-1,D=!(!this._exclude||!this._exclude.length)&&this._exclude.indexOf(h)>-1;return!(!y||D)}},{key:"isEmojiNeeded",value:function(h){return!this._emojisFilter||this._emojisFilter(h)}}])})(),dt=(function(){return ue((function h(y){if(re(this,h),this._data=Object.assign({},y),this._skins=null,this._data.skin_variations)for(var D in this._skins=[],vt){var A=vt[D],N=this._data.skin_variations[A],$=Object.assign({},y);for(var Q in N)$[Q]=N[Q];delete $.skin_variations,$.skin_tone=parseInt(D)+1,this._skins.push(new h($))}for(var ge in this._sanitized=Aa(this._data),this._sanitized)this[ge]=this._sanitized[ge];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}),[{key:"getSkin",value:function(h){return h&&h!="native"&&this._skins?this._skins[h-1]:this}},{key:"getPosition",value:function(){var h=+(1.6666666666666667*this._data.sheet_x).toFixed(2),y=+(100/60*this._data.sheet_y).toFixed(2);return"".concat(h,"% ").concat(y,"%")}},{key:"ariaLabel",value:function(){return[this.native].concat(this.short_names).filter(Boolean).join(", ")}}])})(),Ct=(function(){return ue((function h(y,D,A,N,$,Q,ge){re(this,h),this._emoji=y,this._native=N,this._skin=D,this._set=A,this._fallback=$,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(ge),this.content=this._content(),this.title=Q===!0?y.short_name:null,this.ariaLabel=y.ariaLabel(),Object.freeze(this)}),[{key:"getEmoji",value:function(){return this._emoji.getSkin(this._skin)}},{key:"_canRender",value:function(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}},{key:"_cssClass",value:function(){return["emoji-set-"+this._set,"emoji-type-"+this._emojiType()]}},{key:"_cssStyle",value:function(h){var y={};return this._isCustom()?y={backgroundImage:"url("+this.getEmoji()._data.imageUrl+")",backgroundSize:"100%",width:h+"px",height:h+"px"}:this._hasEmoji()&&!this._isNative()&&(y={backgroundPosition:this.getEmoji().getPosition()}),h&&(y=this._isNative()?Object.assign(y,{fontSize:Math.round(.95*h*10)/10+"px"}):Object.assign(y,{width:h+"px",height:h+"px"})),y}},{key:"_content",value:function(){return this._isCustom()?"":this._isNative()?this.getEmoji().native:this._hasEmoji()?"":this._fallback?this._fallback(this.getEmoji()):null}},{key:"_isNative",value:function(){return this._native}},{key:"_isCustom",value:function(){return this.getEmoji().custom}},{key:"_hasEmoji",value:function(){if(!this.getEmoji()._data)return!1;var h=this.getEmoji()._data["has_img_"+this._set];return h===void 0||h}},{key:"_emojiType",value:function(){return this._isCustom()?"custom":this._isNative()?"native":this._hasEmoji()?"image":"fallback"}}])})();function Aa(h){var y=h.name,D=h.short_names,A=h.skin_tone,N=h.skin_variations,$=h.emoticons,Q=h.unified,ge=h.custom,ne=h.imageUrl,Ee=h.id||D[0],Ie=":".concat(Ee,":");return ge?{id:Ee,name:y,colons:Ie,emoticons:$,custom:ge,imageUrl:ne}:(A&&(Ie+=":skin-tone-".concat(A,":")),{id:Ee,name:y,colons:Ie,emoticons:$,unified:Q.toLowerCase(),skin:A||(N?1:null),native:se(Q)})}function ea(h,y,D){return(y=ee(y))in h?Object.defineProperty(h,y,{value:D,enumerable:!0,configurable:!0,writable:!0}):h[y]=D,h}var Ma={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:"apple"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:"span"}},ki={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:"Emoji Mart™"},emoji:{type:String,default:"department_store"},color:{type:String,default:"#ae65c5"},set:{type:String,default:"apple"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default:function(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default:function(){return{}}}};function Ot(h,y){var D=Object.keys(h);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(h);y&&(A=A.filter((function(N){return Object.getOwnPropertyDescriptor(h,N).enumerable}))),D.push.apply(D,A)}return D}function nt(h){for(var y=1;y0},emojiObjects:function(){var h=this;return this.emojis.map((function(y){return{emojiObject:y,emojiView:new Ct(y,h.emojiProps.skin,h.emojiProps.set,h.emojiProps.native,h.emojiProps.fallback,h.emojiProps.emojiTooltip,h.emojiProps.emojiSize)}}))}},components:{Emoji:ta}},(function(){var h=this,y=h._self._c;return h.isVisible&&(h.isSearch||h.hasResults)?y("section",{class:{"emoji-mart-category":!0,"emoji-mart-no-results":!h.hasResults},attrs:{"aria-label":h.i18n.categories[h.id]}},[y("div",{staticClass:"emoji-mart-category-label"},[y("h3",{staticClass:"emoji-mart-category-label"},[h._v(h._s(h.i18n.categories[h.id]))])]),h._v(" "),h._l(h.emojiObjects,(function(D){var A=D.emojiObject,N=D.emojiView;return[N.canRender?y("button",{key:A.id,staticClass:"emoji-mart-emoji",class:h.activeClass(A),attrs:{"aria-label":N.ariaLabel,role:"option","aria-selected":"false","aria-posinset":"1","aria-setsize":"1812",type:"button","data-title":A.short_name,title:N.title},on:{mouseenter:function($){h.emojiProps.onEnter(N.getEmoji())},mouseleave:function($){h.emojiProps.onLeave(N.getEmoji())},click:function($){h.emojiProps.onClick(N.getEmoji())}}},[y("span",{class:N.cssClass,style:N.cssStyle},[h._v(h._s(N.content))])]):h._e()]})),h._v(" "),h.hasResults?h._e():y("div",[y("emoji",{attrs:{data:h.data,emoji:"sleuth_or_spy",native:h.emojiProps.native,skin:h.emojiProps.skin,set:h.emojiProps.set}}),h._v(" "),y("div",{staticClass:"emoji-mart-no-results-label"},[h._v(h._s(h.i18n.notfound))])],1)],2):h._e()}),[]).exports,La=U({props:{skin:{type:Number,required:!0}},emits:["change"],data:function(){return{opened:!1}},methods:{onClick:function(h){this.opened&&h!=this.skin&&this.$emit("change",h),this.opened=!this.opened}}},(function(){var h=this,y=h._self._c;return y("div",{class:{"emoji-mart-skin-swatches":!0,"emoji-mart-skin-swatches-opened":h.opened}},h._l(6,(function(D){return y("span",{key:D,class:{"emoji-mart-skin-swatch":!0,"emoji-mart-skin-swatch-selected":h.skin==D}},[y("span",{class:"emoji-mart-skin emoji-mart-skin-tone-"+D,on:{click:function(A){return h.onClick(D)}}})])})),0)}),[]).exports,Ta=U({props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData:function(){return this.emoji?this.emoji:{}},emojiShortNames:function(){return this.emojiData.short_names},emojiEmoticons:function(){return this.emojiData.emoticons}},components:{Emoji:ta,Skins:La}},(function(){var h=this,y=h._self._c;return y("div",{staticClass:"emoji-mart-preview"},[h.emoji?[y("div",{staticClass:"emoji-mart-preview-emoji"},[y("emoji",{attrs:{data:h.data,emoji:h.emoji,native:h.emojiProps.native,skin:h.emojiProps.skin,set:h.emojiProps.set}})],1),h._v(" "),y("div",{staticClass:"emoji-mart-preview-data"},[y("div",{staticClass:"emoji-mart-preview-name"},[h._v(h._s(h.emoji.name))]),h._v(" "),y("div",{staticClass:"emoji-mart-preview-shortnames"},h._l(h.emojiShortNames,(function(D){return y("span",{key:D,staticClass:"emoji-mart-preview-shortname"},[h._v(":"+h._s(D)+":")])})),0),h._v(" "),y("div",{staticClass:"emoji-mart-preview-emoticons"},h._l(h.emojiEmoticons,(function(D){return y("span",{key:D,staticClass:"emoji-mart-preview-emoticon"},[h._v(h._s(D))])})),0)])]:[y("div",{staticClass:"emoji-mart-preview-emoji"},[y("emoji",{attrs:{data:h.data,emoji:h.idleEmoji,native:h.emojiProps.native,skin:h.emojiProps.skin,set:h.emojiProps.set}})],1),h._v(" "),y("div",{staticClass:"emoji-mart-preview-data"},[y("span",{staticClass:"emoji-mart-title-label"},[h._v(h._s(h.title))])]),h._v(" "),h.showSkinTones?y("div",{staticClass:"emoji-mart-preview-skins"},[y("skins",{attrs:{skin:h.skinProps.skin},on:{change:function(D){return h.onSkinChange(D)}}})],1):h._e()]],2)}),[]).exports,wi=U({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:["search","enter","arrowUp","arrowDown","arrowRight","arrowLeft"],data:function(){return{value:""}},computed:{emojiIndex:function(){return this.data}},watch:{value:function(){this.$emit("search",this.value)}},methods:{clear:function(){this.value=""}},mounted:function(){var h=this.$el.querySelector("input");this.autoFocus&&h.focus()}},(function(){var h=this,y=h._self._c;return y("div",{staticClass:"emoji-mart-search"},[y("input",{directives:[{name:"model",rawName:"v-model",value:h.value,expression:"value"}],attrs:{type:"text",placeholder:h.i18n.search,role:"textbox","aria-autocomplete":"list","aria-owns":"emoji-mart-list","aria-label":"Search for an emoji","aria-describedby":"emoji-mart-search-description"},domProps:{value:h.value},on:{keydown:[function(D){return!D.type.indexOf("key")&&h._k(D.keyCode,"left",37,D.key,["Left","ArrowLeft"])||"button"in D&&D.button!==0?null:function(A){return h.$emit("arrowLeft",A)}.apply(null,arguments)},function(D){return!D.type.indexOf("key")&&h._k(D.keyCode,"right",39,D.key,["Right","ArrowRight"])||"button"in D&&D.button!==2?null:function(){return h.$emit("arrowRight")}.apply(null,arguments)},function(D){return!D.type.indexOf("key")&&h._k(D.keyCode,"down",40,D.key,["Down","ArrowDown"])?null:function(){return h.$emit("arrowDown")}.apply(null,arguments)},function(D){return!D.type.indexOf("key")&&h._k(D.keyCode,"up",38,D.key,["Up","ArrowUp"])?null:function(A){return h.$emit("arrowUp",A)}.apply(null,arguments)},function(D){return!D.type.indexOf("key")&&h._k(D.keyCode,"enter",13,D.key,"Enter")?null:function(){return h.$emit("enter")}.apply(null,arguments)}],input:function(D){D.target.composing||(h.value=D.target.value)}}}),h._v(" "),y("span",{staticClass:"hidden",attrs:{id:"emoji-picker-search-description"}},[h._v(`Use the left, right, up and down arrow keys to navigate the emoji search
+ results.`)])])}),[]),za=wi.exports;function aa(h,y){(y==null||y>h.length)&&(y=h.length);for(var D=0,A=new Array(y);D0})),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}),[{key:"onScroll",value:function(){var h=this._vm.$refs.scroll;if(h){for(var y=h.scrollTop,D=this.filteredCategories[0],A=0,N=this.filteredCategories.length;Ay)break;D=$}this.activeCategory=D}}},{key:"allCategories",get:function(){return this._categories}},{key:"filteredCategories",get:function(){return this.searchEmojis?[{id:"search",name:"Search",emojis:this.searchEmojis}]:this._categories.filter((function(h){return h.emojis.length>0}))}},{key:"previewEmojiCategory",get:function(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}},{key:"onAnchorClick",value:function(h){var y=this;if(!this.searchEmojis){var D=this.filteredCategories.indexOf(h),A=this._vm.getCategoryComponent(D);this._vm.infiniteScroll?(function(){if(A){var N=A.$el.offsetTop;h.first&&(N=0),y._vm.$refs.scroll.scrollTop=N}})():this.activeCategory=this.filteredCategories[D]}}},{key:"onSearch",value:function(h){var y=this._data.search(h,this.maxSearchResults);this.searchEmojis=y,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}},{key:"onEmojiEnter",value:function(h){this.previewEmoji=h,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}},{key:"onEmojiLeave",value:function(h){this.previewEmoji=null}},{key:"onArrowLeft",value:function(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}},{key:"onArrowRight",value:function(){this.previewEmojiIdx=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}},{key:"onArrowDown",value:function(){if(this.previewEmojiIdx==-1)return this.onArrowRight();var h=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length,y=this._perLine;this.previewEmojiIdx+y>h&&(y=h%this._perLine);for(var D=0;D0?this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:0);for(var y=0;yA+y.scrollTop&&(y.scrollTop+=D.offsetHeight),D&&D.offsetTop"u")return 0;var h=document.createElement("div");h.style.width="100px",h.style.height="100px",h.style.overflow="scroll",h.style.position="absolute",h.style.top="-9999px",document.body.appendChild(h);var y=h.offsetWidth-h.clientWidth;return document.body.removeChild(h),y})()},filteredCategories:function(){return this.view.filteredCategories},mergedI18n:function(){return Object.freeze(be(V,this.i18n))},idleEmoji:function(){try{return this.data.emoji(this.emoji)}catch(h){return console.error("Default preview emoji `"+this.emoji+"` is not available, check the Picker `emoji` property"),console.error(h),this.data.firstEmoji()}},isSearching:function(){return this.view.searchEmojis!=null}},watch:{skin:function(){this.onSkinChange(this.skin)}},methods:{onScroll:function(){this.infiniteScroll&&!this.waitingForPaint&&(this.waitingForPaint=!0,window.requestAnimationFrame(this.onScrollPaint.bind(this)))},onScrollPaint:function(){this.waitingForPaint=!1,this.view.onScroll()},onAnchorClick:function(h){this.view.onAnchorClick(h)},onSearch:function(h){this.view.onSearch(h)},onEmojiEnter:function(h){this.view.onEmojiEnter(h)},onEmojiLeave:function(h){this.view.onEmojiLeave(h)},onArrowLeft:function(h){var y=this.view.previewEmojiIdx;this.view.onArrowLeft(),h&&this.view.previewEmojiIdx!==y&&h.preventDefault()},onArrowRight:function(){this.view.onArrowRight()},onArrowDown:function(){this.view.onArrowDown()},onArrowUp:function(h){this.view.onArrowUp(),h.preventDefault()},onEnter:function(){this.view.previewEmoji&&(this.$emit("select",this.view.previewEmoji),L.add(this.view.previewEmoji))},onEmojiClick:function(h){this.$emit("select",h),L.add(h)},onTextSelect:function(h){h.stopPropagation()},onSkinChange:function(h){this.activeSkin=h,d.update({skin:h}),this.$emit("skin-change",h)},getCategoryComponent:function(h){var y=this.$refs["categories_"+h];return y&&"0"in y?y[0]:y}},components:{Anchors:oe,Category:Pa,Preview:Ta,Search:za}},ve=U(te,(function(){var h=this,y=h._self._c;return y("section",{staticClass:"emoji-mart emoji-mart-static",style:h.customStyles},[h.showCategories?y("div",{staticClass:"emoji-mart-bar emoji-mart-bar-anchors"},[y("anchors",{attrs:{data:h.data,i18n:h.mergedI18n,color:h.color,categories:h.view.allCategories,"active-category":h.view.activeCategory},on:{click:h.onAnchorClick}})],1):h._e(),h._v(" "),h._t("searchTemplate",(function(){return[h.showSearch?y("search",{ref:"search",attrs:{data:h.data,i18n:h.mergedI18n,"auto-focus":h.autoFocus,"on-search":h.onSearch},on:{search:h.onSearch,arrowLeft:h.onArrowLeft,arrowRight:h.onArrowRight,arrowDown:h.onArrowDown,arrowUp:h.onArrowUp,enter:h.onEnter,select:h.onTextSelect}}):h._e()]}),{data:h.data,i18n:h.i18n,autoFocus:h.autoFocus,onSearch:h.onSearch}),h._v(" "),y("div",{ref:"scroll",staticClass:"emoji-mart-scroll",attrs:{role:"tabpanel"},on:{scroll:h.onScroll}},[y("div",{ref:"scrollContent",attrs:{id:"emoji-mart-list",role:"listbox","aria-expanded":"true"}},[h._t("customCategory"),h._v(" "),h._l(h.view.filteredCategories,(function(D,A){return y("category",{directives:[{name:"show",rawName:"v-show",value:h.infiniteScroll||D==h.view.activeCategory||h.isSearching,expression:"infiniteScroll || category == view.activeCategory || isSearching"}],key:D.id,ref:"categories_"+A,refInFor:!0,attrs:{data:h.data,i18n:h.mergedI18n,id:D.id,name:D.name,emojis:D.emojis,"emoji-props":h.emojiProps}})}))],2)]),h._v(" "),h._t("previewTemplate",(function(){return[h.showPreview?y("div",{staticClass:"emoji-mart-bar emoji-mart-bar-preview"},[y("preview",{attrs:{data:h.data,title:h.title,emoji:h.view.previewEmoji,"idle-emoji":h.idleEmoji,"show-skin-tones":h.showSkinTones,"emoji-props":h.emojiProps,"skin-props":h.skinProps,"on-skin-change":h.onSkinChange}})],1):h._e()]}),{data:h.data,title:h.title,emoji:h.view.previewEmoji,idleEmoji:h.idleEmoji,showSkinTones:h.showSkinTones,emojiProps:h.emojiProps,skinProps:h.skinProps,onSkinChange:h.onSkinChange})],2)}),[]),Ce=ve.exports})(),n})()}))})(ur)),ur.exports}var Sn=kl();const wl=!0,Dl=JSON.parse('[{"id":"smileys","name":"Smileys & Emotion","emojis":["grinning","smiley","smile","grin","laughing","sweat_smile","rolling_on_the_floor_laughing","joy","slightly_smiling_face","upside_down_face","melting_face","wink","blush","innocent","smiling_face_with_3_hearts","heart_eyes","star-struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","smiling_face_with_tear","yum","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugging_face","face_with_hand_over_mouth","face_with_open_eyes_and_hand_over_mouth","face_with_peeking_eye","shushing_face","thinking_face","saluting_face","zipper_mouth_face","face_with_raised_eyebrow","neutral_face","expressionless","no_mouth","dotted_line_face","face_in_clouds","smirk","unamused","face_with_rolling_eyes","grimacing","face_exhaling","lying_face","shaking_face","relieved","pensive","sleepy","drooling_face","sleeping","mask","face_with_thermometer","face_with_head_bandage","nauseated_face","face_vomiting","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","face_with_spiral_eyes","exploding_head","face_with_cowboy_hat","partying_face","disguised_face","sunglasses","nerd_face","face_with_monocle","confused","face_with_diagonal_mouth","worried","slightly_frowning_face","white_frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","face_holding_back_tears","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","angry","face_with_symbols_on_mouth","smiling_imp","imp","skull","skull_and_crossbones","hankey","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot_face","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation_mark_ornament","broken_heart","heart_on_fire","mending_heart","heart","pink_heart","orange_heart","yellow_heart","green_heart","blue_heart","light_blue_heart","purple_heart","brown_heart","black_heart","grey_heart","white_heart","kiss","100","anger","boom","dizzy","sweat_drops","dash","hole","speech_balloon","eye-in-speech-bubble","left_speech_bubble","right_anger_bubble","thought_balloon","zzz"]},{"id":"people","name":"People & Body","emojis":["wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","spock-hand","rightwards_hand","leftwards_hand","palm_down_hand","palm_up_hand","leftwards_pushing_hand","rightwards_pushing_hand","ok_hand","pinched_fingers","pinching_hand","v","crossed_fingers","hand_with_index_finger_and_thumb_crossed","i_love_you_hand_sign","the_horns","call_me_hand","point_left","point_right","point_up_2","middle_finger","point_down","point_up","index_pointing_at_the_viewer","+1","-1","fist","facepunch","left-facing_fist","right-facing_fist","clap","raised_hands","heart_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","leg","foot","ear","ear_with_hearing_aid","nose","brain","anatomical_heart","lungs","tooth","bone","eyes","eye","tongue","lips","biting_lip","baby","child","boy","girl","adult","person_with_blond_hair","man","bearded_person","man_with_beard","woman_with_beard","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","red_haired_person","curly_haired_woman","curly_haired_person","white_haired_woman","white_haired_person","bald_woman","bald_person","blond-haired-woman","blond-haired-man","older_adult","older_man","older_woman","person_frowning","man-frowning","woman-frowning","person_with_pouting_face","man-pouting","woman-pouting","no_good","man-gesturing-no","woman-gesturing-no","ok_woman","man-gesturing-ok","woman-gesturing-ok","information_desk_person","man-tipping-hand","woman-tipping-hand","raising_hand","man-raising-hand","woman-raising-hand","deaf_person","deaf_man","deaf_woman","bow","man-bowing","woman-bowing","face_palm","man-facepalming","woman-facepalming","shrug","man-shrugging","woman-shrugging","health_worker","male-doctor","female-doctor","student","male-student","female-student","teacher","male-teacher","female-teacher","judge","male-judge","female-judge","farmer","male-farmer","female-farmer","cook","male-cook","female-cook","mechanic","male-mechanic","female-mechanic","factory_worker","male-factory-worker","female-factory-worker","office_worker","male-office-worker","female-office-worker","scientist","male-scientist","female-scientist","technologist","male-technologist","female-technologist","singer","male-singer","female-singer","artist","male-artist","female-artist","pilot","male-pilot","female-pilot","astronaut","male-astronaut","female-astronaut","firefighter","male-firefighter","female-firefighter","cop","male-police-officer","female-police-officer","sleuth_or_spy","male-detective","female-detective","guardsman","male-guard","female-guard","ninja","construction_worker","male-construction-worker","female-construction-worker","person_with_crown","prince","princess","man_with_turban","man-wearing-turban","woman-wearing-turban","man_with_gua_pi_mao","person_with_headscarf","person_in_tuxedo","man_in_tuxedo","woman_in_tuxedo","bride_with_veil","man_with_veil","woman_with_veil","pregnant_woman","pregnant_man","pregnant_person","breast-feeding","woman_feeding_baby","man_feeding_baby","person_feeding_baby","angel","santa","mrs_claus","mx_claus","superhero","male_superhero","female_superhero","supervillain","male_supervillain","female_supervillain","mage","male_mage","female_mage","fairy","male_fairy","female_fairy","vampire","male_vampire","female_vampire","merperson","merman","mermaid","elf","male_elf","female_elf","genie","male_genie","female_genie","zombie","male_zombie","female_zombie","troll","massage","man-getting-massage","woman-getting-massage","haircut","man-getting-haircut","woman-getting-haircut","walking","man-walking","woman-walking","standing_person","man_standing","woman_standing","kneeling_person","man_kneeling","woman_kneeling","person_with_probing_cane","man_with_probing_cane","woman_with_probing_cane","person_in_motorized_wheelchair","man_in_motorized_wheelchair","woman_in_motorized_wheelchair","person_in_manual_wheelchair","man_in_manual_wheelchair","woman_in_manual_wheelchair","runner","man-running","woman-running","dancer","man_dancing","man_in_business_suit_levitating","dancers","men-with-bunny-ears-partying","women-with-bunny-ears-partying","person_in_steamy_room","man_in_steamy_room","woman_in_steamy_room","person_climbing","man_climbing","woman_climbing","fencer","horse_racing","skier","snowboarder","golfer","man-golfing","woman-golfing","surfer","man-surfing","woman-surfing","rowboat","man-rowing-boat","woman-rowing-boat","swimmer","man-swimming","woman-swimming","person_with_ball","man-bouncing-ball","woman-bouncing-ball","weight_lifter","man-lifting-weights","woman-lifting-weights","bicyclist","man-biking","woman-biking","mountain_bicyclist","man-mountain-biking","woman-mountain-biking","person_doing_cartwheel","man-cartwheeling","woman-cartwheeling","wrestlers","man-wrestling","woman-wrestling","water_polo","man-playing-water-polo","woman-playing-water-polo","handball","man-playing-handball","woman-playing-handball","juggling","man-juggling","woman-juggling","person_in_lotus_position","man_in_lotus_position","woman_in_lotus_position","bath","sleeping_accommodation","people_holding_hands","two_women_holding_hands","man_and_woman_holding_hands","two_men_holding_hands","couplekiss","woman-kiss-man","man-kiss-man","woman-kiss-woman","couple_with_heart","woman-heart-man","man-heart-man","woman-heart-woman","family","man-woman-boy","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-boy","man-boy-boy","man-girl","man-girl-boy","man-girl-girl","woman-boy","woman-boy-boy","woman-girl","woman-girl-boy","woman-girl-girl","speaking_head_in_silhouette","bust_in_silhouette","busts_in_silhouette","people_hugging","footprints"]},{"id":"nature","name":"Animals & Nature","emojis":["monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","black_cat","lion_face","tiger","tiger2","leopard","horse","moose","donkey","racehorse","unicorn_face","zebra_face","deer","bison","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe_face","elephant","mammoth","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","beaver","hedgehog","bat","bear","polar_bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove_of_peace","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","wing","black_bird","goose","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","t-rex","whale","whale2","dolphin","seal","fish","tropical_fish","blowfish","shark","octopus","shell","coral","jellyfish","snail","butterfly","bug","ant","bee","beetle","ladybug","cricket","cockroach","spider","spider_web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry_blossom","white_flower","lotus","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","hyacinth","seedling","potted_plant","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves","empty_nest","nest_with_eggs","mushroom"]},{"id":"foods","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","blueberries","kiwifruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","bell_pepper","cucumber","leafy_green","broccoli","garlic","onion","peanuts","beans","chestnut","ginger_root","pea_pod","bread","croissant","baguette_bread","flatbread","pretzel","bagel","pancakes","waffle","cheese_wedge","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","tamale","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","fondue","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","glass_of_milk","coffee","teapot","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","pouring_liquid","cup_with_straw","bubble_tea","beverage_box","mate_drink","ice_cube","chopsticks","knife_fork_plate","fork_and_knife","spoon","hocho","jar","amphora"]},{"id":"activity","name":"Activities","emojis":["jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","admission_tickets","ticket","medal","trophy","sports_medal","first_place_medal","second_place_medal","third_place_medal","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_bat_and_ball","field_hockey_stick_and_ball","ice_hockey_stick_and_puck","lacrosse","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo-yo","kite","gun","8ball","crystal_ball","magic_wand","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","pinata","mirror_ball","nesting_dolls","spades","hearts","diamonds","clubs","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","frame_with_picture","art","thread","sewing_needle","yarn","knot"]},{"id":"places","name":"Travel & Places","emojis":["earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","snow_capped_mountain","mountain","volcano","mount_fuji","camping","beach_with_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","rock","wood","hut","house_buildings","derelict_house_building","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","factory","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","playground_slide","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","oncoming_automobile","blue_car","pickup_truck","truck","articulated_lorry","tractor","racing_car","racing_motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","scooter","skateboard","roller_skate","busstop","motorway","railway_track","oil_drum","fuelpump","wheel","rotating_light","traffic_light","vertical_traffic_light","octagonal_sign","construction","anchor","ring_buoy","boat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","airplane_departure","airplane_arriving","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","watch","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star","star2","stars","milky_way","cloud","partly_sunny","thunder_cloud_and_rain","mostly_sunny","barely_sunny","partly_sunny_rain","rain_cloud","snow_cloud","lightning","tornado","fog","wind_blowing_face","cyclone","rainbow","closed_umbrella","umbrella","umbrella_with_rain_drops","umbrella_on_ground","zap","snowflake","snowman","snowman_without_snow","comet","fire","droplet","ocean"]},{"id":"objects","name":"Objects","emojis":["eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one-piece_swimsuit","briefs","shorts","bikini","womans_clothes","folding_hand_fan","purse","handbag","pouch","shopping_bags","school_satchel","thong_sandal","mans_shoe","athletic_shoe","hiking_boot","womans_flat_shoe","high_heel","sandal","ballet_shoes","boot","hair_pick","crown","womans_hat","tophat","mortar_board","billed_cap","military_helmet","helmet_with_white_cross","prayer_beads","lipstick","ring","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","accordion","guitar","musical_keyboard","trumpet","violin","banjo","drum_with_drumsticks","long_drum","maracas","flute","iphone","calling","phone","telephone_receiver","pager","fax","battery","low_battery","electric_plug","computer","desktop_computer","printer","keyboard","three_button_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_frames","film_projector","clapper","tv","camera","camera_with_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","scroll","page_facing_up","newspaper","rolled_up_newspaper","bookmark_tabs","bookmark","label","moneybag","coin","yen","dollar","euro","pound","money_with_wings","credit_card","receipt","chart","email","e-mail","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box_with_ballot","pencil2","black_nib","lower_left_fountain_pen","lower_left_ballpoint_pen","lower_left_paintbrush","lower_left_crayon","memo","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_note_pad","spiral_calendar_pad","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","linked_paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","dagger_knife","crossed_swords","bomb","boomerang","bow_and_arrow","shield","carpentry_saw","wrench","screwdriver","nut_and_bolt","gear","compression","scales","probing_cane","link","chains","hook","toolbox","magnet","ladder","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite_antenna","syringe","drop_of_blood","pill","adhesive_bandage","crutch","stethoscope","x-ray","door","elevator","mirror","window","bed","couch_and_lamp","chair","toilet","plunger","shower","bathtub","mouse_trap","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","bucket","soap","bubbles","toothbrush","sponge","fire_extinguisher","shopping_trolley","smoking","coffin","headstone","funeral_urn","nazar_amulet","hamsa","moyai","placard","identification_card"]},{"id":"symbols","name":"Symbols","emojis":["atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","non-potable_water","no_pedestrians","no_mobile_phones","underage","radioactive_sign","biohazard_sign","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","end","on","soon","top","place_of_worship","atom_symbol","om_symbol","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah_with_nine_branches","six_pointed_star","khanda","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat","repeat_one","arrow_forward","fast_forward","black_right_pointing_double_triangle_with_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","arrow_backward","rewind","black_left_pointing_double_triangle_with_vertical_bar","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","double_vertical_bar","black_square_for_stop","black_circle_for_record","eject","cinema","low_brightness","high_brightness","signal_strength","wireless","vibration_mode","mobile_phone_off","female_sign","male_sign","transgender_symbol","heavy_multiplication_x","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_equals_sign","infinity","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","wavy_dash","currency_exchange","heavy_dollar_sign","medical_symbol","recycle","fleur_de_lis","trident","name_badge","beginner","o","white_check_mark","ballot_box_with_check","heavy_check_mark","x","negative_squared_cross_mark","curly_loop","loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","copyright","registered","tm","hash","keycap_star","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","capital_abcd","abcd","1234","symbols","abc","a","ab","b","cl","cool","free","information_source","id","m","new","ng","o2","ok","parking","sos","up","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","accept","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","large_orange_circle","large_yellow_circle","large_green_circle","large_blue_circle","large_purple_circle","large_brown_circle","black_circle","white_circle","large_red_square","large_orange_square","large_yellow_square","large_green_square","large_blue_square","large_purple_square","large_brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button"]},{"id":"flags","name":"Flags","emojis":["checkered_flag","cn","crossed_flags","de","es","flag-ac","flag-ad","flag-ae","flag-af","flag-ag","flag-ai","flag-al","flag-am","flag-ao","flag-aq","flag-ar","flag-as","flag-at","flag-au","flag-aw","flag-ax","flag-az","flag-ba","flag-bb","flag-bd","flag-be","flag-bf","flag-bg","flag-bh","flag-bi","flag-bj","flag-bl","flag-bm","flag-bn","flag-bo","flag-bq","flag-br","flag-bs","flag-bt","flag-bv","flag-bw","flag-by","flag-bz","flag-ca","flag-cc","flag-cd","flag-cf","flag-cg","flag-ch","flag-ci","flag-ck","flag-cl","flag-cm","flag-co","flag-cp","flag-cr","flag-cu","flag-cv","flag-cw","flag-cx","flag-cy","flag-cz","flag-dg","flag-dj","flag-dk","flag-dm","flag-do","flag-dz","flag-ea","flag-ec","flag-ee","flag-eg","flag-eh","flag-england","flag-er","flag-et","flag-eu","flag-fi","flag-fj","flag-fk","flag-fm","flag-fo","flag-ga","flag-gd","flag-ge","flag-gf","flag-gg","flag-gh","flag-gi","flag-gl","flag-gm","flag-gn","flag-gp","flag-gq","flag-gr","flag-gs","flag-gt","flag-gu","flag-gw","flag-gy","flag-hk","flag-hm","flag-hn","flag-hr","flag-ht","flag-hu","flag-ic","flag-id","flag-ie","flag-il","flag-im","flag-in","flag-io","flag-iq","flag-ir","flag-is","flag-je","flag-jm","flag-jo","flag-ke","flag-kg","flag-kh","flag-ki","flag-km","flag-kn","flag-kp","flag-kw","flag-ky","flag-kz","flag-la","flag-lb","flag-lc","flag-li","flag-lk","flag-lr","flag-ls","flag-lt","flag-lu","flag-lv","flag-ly","flag-ma","flag-mc","flag-md","flag-me","flag-mf","flag-mg","flag-mh","flag-mk","flag-ml","flag-mm","flag-mn","flag-mo","flag-mp","flag-mq","flag-mr","flag-ms","flag-mt","flag-mu","flag-mv","flag-mw","flag-mx","flag-my","flag-mz","flag-na","flag-nc","flag-ne","flag-nf","flag-ng","flag-ni","flag-nl","flag-no","flag-np","flag-nr","flag-nu","flag-nz","flag-om","flag-pa","flag-pe","flag-pf","flag-pg","flag-ph","flag-pk","flag-pl","flag-pm","flag-pn","flag-pr","flag-ps","flag-pt","flag-pw","flag-py","flag-qa","flag-re","flag-ro","flag-rs","flag-rw","flag-sa","flag-sb","flag-sc","flag-scotland","flag-sd","flag-se","flag-sg","flag-sh","flag-si","flag-sj","flag-sk","flag-sl","flag-sm","flag-sn","flag-so","flag-sr","flag-ss","flag-st","flag-sv","flag-sx","flag-sy","flag-sz","flag-ta","flag-tc","flag-td","flag-tf","flag-tg","flag-th","flag-tj","flag-tk","flag-tl","flag-tm","flag-tn","flag-to","flag-tr","flag-tt","flag-tv","flag-tw","flag-tz","flag-ua","flag-ug","flag-um","flag-uy","flag-uz","flag-va","flag-vc","flag-ve","flag-vg","flag-vi","flag-vn","flag-vu","flag-wales","flag-wf","flag-ws","flag-xk","flag-ye","flag-yt","flag-za","flag-zm","flag-zw","fr","gb","it","jp","kr","pirate_flag","rainbow-flag","ru","transgender_flag","triangular_flag_on_post","us","waving_black_flag","waving_white_flag"]}]'),vl=JSON.parse(`{"100":{"subcategory":"emotion","a":"Hundred Points Symbol","b":"1F4AF","d":true,"e":true,"f":true,"h":true,"j":["hundred_points","score","perfect","numbers","century","exam","quiz","test","pass","hundred","100"],"k":[28,7],"o":0},"1234":{"subcategory":"alphanum","a":"Input Symbol for Numbers","b":"1F522","d":true,"e":true,"f":true,"h":true,"j":["input_numbers","numbers","blue-square","1234","1","2","3","4"],"k":[29,60],"o":0},"grinning":{"subcategory":"face-smiling","a":"Grinning Face","b":"1F600","d":true,"e":true,"f":true,"h":true,"j":["grinning_face","face","smile","happy","joy",":D","grin"],"k":[32,21],"m":":D","o":1},"smiley":{"subcategory":"face-smiling","a":"Smiling Face with Open Mouth","b":"1F603","d":true,"e":true,"f":true,"h":true,"j":["grinning_face_with_big_eyes","face","happy","joy","haha",":D",":)","smile","funny"],"k":[32,24],"l":["=)","=-)"],"m":":)","o":0},"smile":{"subcategory":"face-smiling","a":"Smiling Face with Open Mouth and Smiling Eyes","b":"1F604","d":true,"e":true,"f":true,"h":true,"j":["grinning_face_with_smiling_eyes","face","happy","joy","funny","haha","laugh","like",":D",":)","smile"],"k":[32,25],"l":["C:","c:",":D",":-D"],"m":":)","o":0},"grin":{"subcategory":"face-smiling","a":"Grinning Face with Smiling Eyes","b":"1F601","d":true,"e":true,"f":true,"h":true,"j":["beaming_face_with_smiling_eyes","face","happy","smile","joy","kawaii"],"k":[32,22],"o":0},"laughing":{"subcategory":"face-smiling","a":"Smiling Face with Open Mouth and Tightly-Closed Eyes","b":"1F606","d":true,"e":true,"f":true,"h":true,"j":["grinning_squinting_face","happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"k":[32,27],"l":[":>",":->"],"n":["satisfied"],"o":0},"sweat_smile":{"subcategory":"face-smiling","a":"Smiling Face with Open Mouth and Cold Sweat","b":"1F605","d":true,"e":true,"f":true,"h":true,"j":["grinning_face_with_sweat","face","hot","happy","laugh","sweat","smile","relief"],"k":[32,26],"o":0},"rolling_on_the_floor_laughing":{"subcategory":"face-smiling","a":"Rolling on the Floor Laughing","b":"1F923","d":true,"e":true,"f":true,"h":true,"j":["rolling_on_the_floor_laughing","face","rolling","floor","laughing","lol","haha","rofl"],"k":[40,17],"o":3},"joy":{"subcategory":"face-smiling","a":"Face with Tears of Joy","b":"1F602","d":true,"e":true,"f":true,"h":true,"j":["face_with_tears_of_joy","face","cry","tears","weep","happy","happytears","haha"],"k":[32,23],"o":0},"slightly_smiling_face":{"subcategory":"face-smiling","a":"Slightly Smiling Face","b":"1F642","d":true,"e":true,"f":true,"h":true,"j":["slightly_smiling_face","face","smile"],"k":[33,29],"l":[":)","(:",":-)"],"o":1},"upside_down_face":{"subcategory":"face-smiling","a":"Upside-Down Face","b":"1F643","d":true,"e":true,"f":true,"h":true,"j":["upside_down_face","face","flipped","silly","smile"],"k":[33,30],"o":1},"melting_face":{"subcategory":"face-smiling","a":"Melting Face","b":"1FAE0","d":true,"e":true,"f":true,"h":true,"j":["melting face","hot","heat"],"k":[55,30],"o":14},"wink":{"subcategory":"face-smiling","a":"Winking Face","b":"1F609","d":true,"e":true,"f":true,"h":true,"j":["winking_face","face","happy","mischievous","secret",";)","smile","eye"],"k":[32,30],"l":[";)",";-)"],"m":";)","o":0},"blush":{"subcategory":"face-smiling","a":"Smiling Face with Smiling Eyes","b":"1F60A","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_smiling_eyes","face","smile","happy","flushed","crush","embarrassed","shy","joy"],"k":[32,31],"m":":)","o":0},"innocent":{"subcategory":"face-smiling","a":"Smiling Face with Halo","b":"1F607","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_halo","face","angel","heaven","halo","innocent"],"k":[32,28],"o":1},"smiling_face_with_3_hearts":{"subcategory":"face-affection","a":"Smiling Face with Smiling Eyes and Three Hearts","b":"1F970","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_hearts","face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"k":[43,60],"o":11},"heart_eyes":{"subcategory":"face-affection","a":"Smiling Face with Heart-Shaped Eyes","b":"1F60D","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_heart_eyes","face","love","like","affection","valentines","infatuation","crush","heart"],"k":[32,34],"o":0},"star-struck":{"subcategory":"face-affection","a":"Grinning Face with Star Eyes","b":"1F929","d":true,"e":true,"f":true,"h":true,"j":["star_struck","face","smile","starry","eyes","grinning"],"k":[40,40],"n":["grinning_face_with_star_eyes"],"o":5},"kissing_heart":{"subcategory":"face-affection","a":"Face Throwing a Kiss","b":"1F618","d":true,"e":true,"f":true,"h":true,"j":["face_blowing_a_kiss","face","love","like","affection","valentines","infatuation","kiss"],"k":[32,45],"l":[":*",":-*"],"o":0},"kissing":{"subcategory":"face-affection","a":"Kissing Face","b":"1F617","d":true,"e":true,"f":true,"h":true,"j":["kissing_face","love","like","face","3","valentines","infatuation","kiss"],"k":[32,44],"o":1},"relaxed":{"subcategory":"face-affection","a":"White Smiling Face","b":"263A-FE0F","c":"263A","d":true,"e":true,"f":true,"h":true,"j":["smiling_face","face","blush","massage","happiness"],"k":[57,35],"o":0},"kissing_closed_eyes":{"subcategory":"face-affection","a":"Kissing Face with Closed Eyes","b":"1F61A","d":true,"e":true,"f":true,"h":true,"j":["kissing_face_with_closed_eyes","face","love","like","affection","valentines","infatuation","kiss"],"k":[32,47],"o":0},"kissing_smiling_eyes":{"subcategory":"face-affection","a":"Kissing Face with Smiling Eyes","b":"1F619","d":true,"e":true,"f":true,"h":true,"j":["kissing_face_with_smiling_eyes","face","affection","valentines","infatuation","kiss"],"k":[32,46],"o":1},"smiling_face_with_tear":{"subcategory":"face-affection","a":"Smiling Face with Tear","b":"1F972","d":true,"e":true,"f":true,"h":true,"j":["smiling face with tear","sad","cry","pretend"],"k":[44,1],"o":13},"yum":{"subcategory":"face-tongue","a":"Face Savouring Delicious Food","b":"1F60B","d":true,"e":true,"f":true,"h":true,"j":["face_savoring_food","happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"k":[32,32],"o":0},"stuck_out_tongue":{"subcategory":"face-tongue","a":"Face with Stuck-out Tongue","b":"1F61B","d":true,"e":true,"f":true,"h":true,"j":["face_with_tongue","face","prank","childish","playful","mischievous","smile","tongue"],"k":[32,48],"l":[":p",":-p",":P",":-P",":b",":-b"],"m":":p","o":1},"stuck_out_tongue_winking_eye":{"subcategory":"face-tongue","a":"Face with Stuck-out Tongue and Winking Eye","b":"1F61C","d":true,"e":true,"f":true,"h":true,"j":["winking_face_with_tongue","face","prank","childish","playful","mischievous","smile","wink","tongue"],"k":[32,49],"l":[";p",";-p",";b",";-b",";P",";-P"],"m":";p","o":0},"zany_face":{"subcategory":"face-tongue","a":"Grinning Face with One Large and One Small Eye","b":"1F92A","d":true,"e":true,"f":true,"h":true,"j":["zany_face","face","goofy","crazy"],"k":[40,41],"n":["grinning_face_with_one_large_and_one_small_eye"],"o":5},"stuck_out_tongue_closed_eyes":{"subcategory":"face-tongue","a":"Face with Stuck-out Tongue and Tightly-Closed Eyes","b":"1F61D","d":true,"e":true,"f":true,"h":true,"j":["squinting_face_with_tongue","face","prank","playful","mischievous","smile","tongue"],"k":[32,50],"o":0},"money_mouth_face":{"subcategory":"face-tongue","a":"Money-Mouth Face","b":"1F911","d":true,"e":true,"f":true,"h":true,"j":["money_mouth_face","face","rich","dollar","money"],"k":[39,0],"o":1},"hugging_face":{"subcategory":"face-hand","a":"Hugging Face","b":"1F917","d":true,"e":true,"f":true,"h":true,"j":["hugging_face","face","smile","hug"],"k":[39,6],"o":1},"face_with_hand_over_mouth":{"subcategory":"face-hand","a":"Smiling Face with Smiling Eyes and Hand Covering Mouth","b":"1F92D","d":true,"e":true,"f":true,"h":true,"j":["face_with_hand_over_mouth","face","whoops","shock","surprise"],"k":[40,44],"n":["smiling_face_with_smiling_eyes_and_hand_covering_mouth"],"o":5},"face_with_open_eyes_and_hand_over_mouth":{"subcategory":"face-hand","a":"Face with Open Eyes and Hand over Mouth","b":"1FAE2","d":true,"e":true,"f":true,"h":true,"j":["face with open eyes and hand over mouth","silence","secret","shock","surprise"],"k":[55,32],"o":14},"face_with_peeking_eye":{"subcategory":"face-hand","a":"Face with Peeking Eye","b":"1FAE3","d":true,"e":true,"f":true,"h":true,"j":["face with peeking eye","scared","frightening","embarrassing","shy"],"k":[55,33],"o":14},"shushing_face":{"subcategory":"face-hand","a":"Face with Finger Covering Closed Lips","b":"1F92B","d":true,"e":true,"f":true,"h":true,"j":["shushing_face","face","quiet","shhh"],"k":[40,42],"n":["face_with_finger_covering_closed_lips"],"o":5},"thinking_face":{"subcategory":"face-hand","a":"Thinking Face","b":"1F914","d":true,"e":true,"f":true,"h":true,"j":["thinking_face","face","hmmm","think","consider"],"k":[39,3],"o":1},"saluting_face":{"subcategory":"face-hand","a":"Saluting Face","b":"1FAE1","d":true,"e":true,"f":true,"h":true,"j":["saluting face","respect","salute"],"k":[55,31],"o":14},"zipper_mouth_face":{"subcategory":"face-neutral-skeptical","a":"Zipper-Mouth Face","b":"1F910","d":true,"e":true,"f":true,"h":true,"j":["zipper_mouth_face","face","sealed","zipper","secret"],"k":[38,60],"o":1},"face_with_raised_eyebrow":{"subcategory":"face-neutral-skeptical","a":"Face with One Eyebrow Raised","b":"1F928","d":true,"e":true,"f":true,"h":true,"j":["face_with_raised_eyebrow","face","distrust","scepticism","disapproval","disbelief","surprise","suspicious"],"k":[40,39],"n":["face_with_one_eyebrow_raised"],"o":5},"neutral_face":{"subcategory":"face-neutral-skeptical","a":"Neutral Face","b":"1F610","d":true,"e":true,"f":true,"h":true,"j":["neutral_face","indifference","meh",":|","neutral"],"k":[32,37],"l":[":|",":-|"],"o":0},"expressionless":{"subcategory":"face-neutral-skeptical","a":"Expressionless Face","b":"1F611","d":true,"e":true,"f":true,"h":true,"j":["expressionless_face","face","indifferent","-_-","meh","deadpan"],"k":[32,38],"o":1},"no_mouth":{"subcategory":"face-neutral-skeptical","a":"Face Without Mouth","b":"1F636","d":true,"e":true,"f":true,"h":true,"j":["face_without_mouth","face"],"k":[33,17],"o":1},"dotted_line_face":{"subcategory":"face-neutral-skeptical","a":"Dotted Line Face","b":"1FAE5","d":true,"e":true,"f":true,"h":true,"j":["dotted line face","invisible","lonely","isolation","depression"],"k":[55,35],"o":14},"face_in_clouds":{"subcategory":"face-neutral-skeptical","a":"Face in Clouds","b":"1F636-200D-1F32B-FE0F","c":"1F636-200D-1F32B","d":true,"e":true,"f":true,"h":true,"j":["face in clouds","shower","steam","dream"],"k":[33,16],"o":13},"smirk":{"subcategory":"face-neutral-skeptical","a":"Smirking Face","b":"1F60F","d":true,"e":true,"f":true,"h":true,"j":["smirking_face","face","smile","mean","prank","smug","sarcasm"],"k":[32,36],"o":0},"unamused":{"subcategory":"face-neutral-skeptical","a":"Unamused Face","b":"1F612","d":true,"e":true,"f":true,"h":true,"j":["unamused_face","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","ugh","side_eye"],"k":[32,39],"m":":(","o":0},"face_with_rolling_eyes":{"subcategory":"face-neutral-skeptical","a":"Face with Rolling Eyes","b":"1F644","d":true,"e":true,"f":true,"h":true,"j":["face_with_rolling_eyes","face","eyeroll","frustrated"],"k":[33,31],"o":1},"grimacing":{"subcategory":"face-neutral-skeptical","a":"Grimacing Face","b":"1F62C","d":true,"e":true,"f":true,"h":true,"j":["grimacing_face","face","grimace","teeth"],"k":[33,4],"o":1},"face_exhaling":{"subcategory":"face-neutral-skeptical","a":"Face Exhaling","b":"1F62E-200D-1F4A8","d":true,"e":true,"f":true,"h":true,"j":["face exhaling","relieve","relief","tired","sigh"],"k":[33,6],"o":13},"lying_face":{"subcategory":"face-neutral-skeptical","a":"Lying Face","b":"1F925","d":true,"e":true,"f":true,"h":true,"j":["lying_face","face","lie","pinocchio"],"k":[40,19],"o":3},"shaking_face":{"subcategory":"face-neutral-skeptical","a":"Shaking Face","b":"1FAE8","d":true,"e":true,"f":false,"h":false,"j":["shaking face","dizzy","shock","blurry","earthquake"],"k":[55,38],"o":15},"relieved":{"subcategory":"face-sleepy","a":"Relieved Face","b":"1F60C","d":true,"e":true,"f":true,"h":true,"j":["relieved_face","face","relaxed","phew","massage","happiness"],"k":[32,33],"o":0},"pensive":{"subcategory":"face-sleepy","a":"Pensive Face","b":"1F614","d":true,"e":true,"f":true,"h":true,"j":["pensive_face","face","sad","depressed","upset"],"k":[32,41],"o":0},"sleepy":{"subcategory":"face-sleepy","a":"Sleepy Face","b":"1F62A","d":true,"e":true,"f":true,"h":true,"j":["sleepy_face","face","tired","rest","nap"],"k":[33,2],"o":0},"drooling_face":{"subcategory":"face-sleepy","a":"Drooling Face","b":"1F924","d":true,"e":true,"f":true,"h":true,"j":["drooling_face","face"],"k":[40,18],"o":3},"sleeping":{"subcategory":"face-sleepy","a":"Sleeping Face","b":"1F634","d":true,"e":true,"f":true,"h":true,"j":["sleeping_face","face","tired","sleepy","night","zzz"],"k":[33,13],"o":1},"mask":{"subcategory":"face-unwell","a":"Face with Medical Mask","b":"1F637","d":true,"e":true,"f":true,"h":true,"j":["face_with_medical_mask","face","sick","ill","disease","covid"],"k":[33,18],"o":0},"face_with_thermometer":{"subcategory":"face-unwell","a":"Face with Thermometer","b":"1F912","d":true,"e":true,"f":true,"h":true,"j":["face_with_thermometer","sick","temperature","thermometer","cold","fever","covid"],"k":[39,1],"o":1},"face_with_head_bandage":{"subcategory":"face-unwell","a":"Face with Head-Bandage","b":"1F915","d":true,"e":true,"f":true,"h":true,"j":["face_with_head_bandage","injured","clumsy","bandage","hurt"],"k":[39,4],"o":1},"nauseated_face":{"subcategory":"face-unwell","a":"Nauseated Face","b":"1F922","d":true,"e":true,"f":true,"h":true,"j":["nauseated_face","face","vomit","gross","green","sick","throw up","ill"],"k":[40,16],"o":3},"face_vomiting":{"subcategory":"face-unwell","a":"Face with Open Mouth Vomiting","b":"1F92E","d":true,"e":true,"f":true,"h":true,"j":["face_vomiting","face","sick"],"k":[40,45],"n":["face_with_open_mouth_vomiting"],"o":5},"sneezing_face":{"subcategory":"face-unwell","a":"Sneezing Face","b":"1F927","d":true,"e":true,"f":true,"h":true,"j":["sneezing_face","face","gesundheit","sneeze","sick","allergy"],"k":[40,38],"o":3},"hot_face":{"subcategory":"face-unwell","a":"Overheated Face","b":"1F975","d":true,"e":true,"f":true,"h":true,"j":["hot_face","face","feverish","heat","red","sweating"],"k":[44,4],"o":11},"cold_face":{"subcategory":"face-unwell","a":"Freezing Face","b":"1F976","d":true,"e":true,"f":true,"h":true,"j":["cold_face","face","blue","freezing","frozen","frostbite","icicles"],"k":[44,5],"o":11},"woozy_face":{"subcategory":"face-unwell","a":"Face with Uneven Eyes and Wavy Mouth","b":"1F974","d":true,"e":true,"f":true,"h":true,"j":["woozy_face","face","dizzy","intoxicated","tipsy","wavy"],"k":[44,3],"o":11},"dizzy_face":{"subcategory":"face-unwell","a":"Dizzy Face","b":"1F635","d":true,"e":true,"f":true,"h":true,"j":["dizzy_face","spent","unconscious","xox","dizzy"],"k":[33,15],"o":0},"face_with_spiral_eyes":{"subcategory":"face-unwell","a":"Face with Spiral Eyes","b":"1F635-200D-1F4AB","d":true,"e":true,"f":true,"h":true,"j":["face with spiral eyes","sick","ill","confused","nauseous","nausea"],"k":[33,14],"o":13},"exploding_head":{"subcategory":"face-unwell","a":"Shocked Face with Exploding Head","b":"1F92F","d":true,"e":true,"f":true,"h":true,"j":["exploding_head","face","shocked","mind","blown"],"k":[40,46],"n":["shocked_face_with_exploding_head"],"o":5},"face_with_cowboy_hat":{"subcategory":"face-hat","a":"Face with Cowboy Hat","b":"1F920","d":true,"e":true,"f":true,"h":true,"j":["cowboy_hat_face","face","cowgirl","hat"],"k":[40,14],"o":3},"partying_face":{"subcategory":"face-hat","a":"Face with Party Horn and Party Hat","b":"1F973","d":true,"e":true,"f":true,"h":true,"j":["partying_face","face","celebration","woohoo"],"k":[44,2],"o":11},"disguised_face":{"subcategory":"face-hat","a":"Disguised Face","b":"1F978","d":true,"e":true,"f":true,"h":true,"j":["disguised face","pretent","brows","glasses","moustache"],"k":[44,12],"o":13},"sunglasses":{"subcategory":"face-glasses","a":"Smiling Face with Sunglasses","b":"1F60E","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_sunglasses","face","cool","smile","summer","beach","sunglass"],"k":[32,35],"l":["8)"],"o":1},"nerd_face":{"subcategory":"face-glasses","a":"Nerd Face","b":"1F913","d":true,"e":true,"f":true,"h":true,"j":["nerd_face","face","nerdy","geek","dork"],"k":[39,2],"o":1},"face_with_monocle":{"subcategory":"face-glasses","a":"Face with Monocle","b":"1F9D0","d":true,"e":true,"f":true,"h":true,"j":["face_with_monocle","face","stuffy","wealthy"],"k":[47,13],"o":5},"confused":{"subcategory":"face-concerned","a":"Confused Face","b":"1F615","d":true,"e":true,"f":true,"h":true,"j":["confused_face","face","indifference","huh","weird","hmmm",":/"],"k":[32,42],"l":[":\\\\",":-\\\\",":/",":-/"],"o":1},"face_with_diagonal_mouth":{"subcategory":"face-concerned","a":"Face with Diagonal Mouth","b":"1FAE4","d":true,"e":true,"f":true,"h":true,"j":["face with diagonal mouth","skeptic","confuse","frustrated","indifferent"],"k":[55,34],"o":14},"worried":{"subcategory":"face-concerned","a":"Worried Face","b":"1F61F","d":true,"e":true,"f":true,"h":true,"j":["worried_face","face","concern","nervous",":("],"k":[32,52],"o":1},"slightly_frowning_face":{"subcategory":"face-concerned","a":"Slightly Frowning Face","b":"1F641","d":true,"e":true,"f":true,"h":true,"j":["slightly_frowning_face","face","frowning","disappointed","sad","upset"],"k":[33,28],"o":1},"white_frowning_face":{"subcategory":"face-concerned","a":"Frowning Face","b":"2639-FE0F","c":"2639","d":true,"e":true,"f":true,"h":true,"j":["frowning_face","face","sad","upset","frown"],"k":[57,34],"o":0},"open_mouth":{"subcategory":"face-concerned","a":"Face with Open Mouth","b":"1F62E","d":true,"e":true,"f":true,"h":true,"j":["face_with_open_mouth","face","surprise","impressed","wow","whoa",":O"],"k":[33,7],"l":[":o",":-o",":O",":-O"],"o":1},"hushed":{"subcategory":"face-concerned","a":"Hushed Face","b":"1F62F","d":true,"e":true,"f":true,"h":true,"j":["hushed_face","face","woo","shh"],"k":[33,8],"o":1},"astonished":{"subcategory":"face-concerned","a":"Astonished Face","b":"1F632","d":true,"e":true,"f":true,"h":true,"j":["astonished_face","face","xox","surprised","poisoned"],"k":[33,11],"o":0},"flushed":{"subcategory":"face-concerned","a":"Flushed Face","b":"1F633","d":true,"e":true,"f":true,"h":true,"j":["flushed_face","face","blush","shy","flattered"],"k":[33,12],"o":0},"pleading_face":{"subcategory":"face-concerned","a":"Face with Pleading Eyes","b":"1F97A","d":true,"e":true,"f":true,"h":true,"j":["pleading_face","face","begging","mercy","cry","tears","sad","grievance"],"k":[44,14],"o":11},"face_holding_back_tears":{"subcategory":"face-concerned","a":"Face Holding Back Tears","b":"1F979","d":true,"e":true,"f":true,"h":true,"j":["face holding back tears","touched","gratitude","cry"],"k":[44,13],"o":14},"frowning":{"subcategory":"face-concerned","a":"Frowning Face with Open Mouth","b":"1F626","d":true,"e":true,"f":true,"h":true,"j":["frowning_face_with_open_mouth","face","aw","what"],"k":[32,59],"o":1},"anguished":{"subcategory":"face-concerned","a":"Anguished Face","b":"1F627","d":true,"e":true,"f":true,"h":true,"j":["anguished_face","face","stunned","nervous"],"k":[32,60],"l":["D:"],"o":1},"fearful":{"subcategory":"face-concerned","a":"Fearful Face","b":"1F628","d":true,"e":true,"f":true,"h":true,"j":["fearful_face","face","scared","terrified","nervous"],"k":[33,0],"o":0},"cold_sweat":{"subcategory":"face-concerned","a":"Face with Open Mouth and Cold Sweat","b":"1F630","d":true,"e":true,"f":true,"h":true,"j":["anxious_face_with_sweat","face","nervous","sweat"],"k":[33,9],"o":0},"disappointed_relieved":{"subcategory":"face-concerned","a":"Disappointed but Relieved Face","b":"1F625","d":true,"e":true,"f":true,"h":true,"j":["sad_but_relieved_face","face","phew","sweat","nervous"],"k":[32,58],"o":0},"cry":{"subcategory":"face-concerned","a":"Crying Face","b":"1F622","d":true,"e":true,"f":true,"h":true,"j":["crying_face","face","tears","sad","depressed","upset",":'("],"k":[32,55],"l":[":'("],"m":":'(","o":0},"sob":{"subcategory":"face-concerned","a":"Loudly Crying Face","b":"1F62D","d":true,"e":true,"f":true,"h":true,"j":["loudly_crying_face","sobbing","face","cry","tears","sad","upset","depressed"],"k":[33,5],"m":":'(","o":0},"scream":{"subcategory":"face-concerned","a":"Face Screaming in Fear","b":"1F631","d":true,"e":true,"f":true,"h":true,"j":["face_screaming_in_fear","face","munch","scared","omg"],"k":[33,10],"o":0},"confounded":{"subcategory":"face-concerned","a":"Confounded Face","b":"1F616","d":true,"e":true,"f":true,"h":true,"j":["confounded_face","face","confused","sick","unwell","oops",":S"],"k":[32,43],"o":0},"persevere":{"subcategory":"face-concerned","a":"Persevering Face","b":"1F623","d":true,"e":true,"f":true,"h":true,"j":["persevering_face","face","sick","no","upset","oops"],"k":[32,56],"o":0},"disappointed":{"subcategory":"face-concerned","a":"Disappointed Face","b":"1F61E","d":true,"e":true,"f":true,"h":true,"j":["disappointed_face","face","sad","upset","depressed",":("],"k":[32,51],"l":["):",":(",":-("],"m":":(","o":0},"sweat":{"subcategory":"face-concerned","a":"Face with Cold Sweat","b":"1F613","d":true,"e":true,"f":true,"h":true,"j":["downcast_face_with_sweat","face","hot","sad","tired","exercise"],"k":[32,40],"o":0},"weary":{"subcategory":"face-concerned","a":"Weary Face","b":"1F629","d":true,"e":true,"f":true,"h":true,"j":["weary_face","face","tired","sleepy","sad","frustrated","upset"],"k":[33,1],"o":0},"tired_face":{"subcategory":"face-concerned","a":"Tired Face","b":"1F62B","d":true,"e":true,"f":true,"h":true,"j":["tired_face","sick","whine","upset","frustrated"],"k":[33,3],"o":0},"yawning_face":{"subcategory":"face-concerned","a":"Yawning Face","b":"1F971","d":true,"e":true,"f":true,"h":true,"j":["yawning_face","tired","sleepy"],"k":[44,0],"o":12},"triumph":{"subcategory":"face-negative","a":"Face with Look of Triumph","b":"1F624","d":true,"e":true,"f":true,"h":true,"j":["face_with_steam_from_nose","face","gas","phew","proud","pride","triumph"],"k":[32,57],"o":0},"rage":{"subcategory":"face-negative","a":"Pouting Face","b":"1F621","d":true,"e":true,"f":true,"h":true,"j":["pouting_face","angry","mad","hate","despise"],"k":[32,54],"o":0},"angry":{"subcategory":"face-negative","a":"Angry Face","b":"1F620","d":true,"e":true,"f":true,"h":true,"j":["angry_face","mad","face","annoyed","frustrated"],"k":[32,53],"l":[">:(",">:-("],"o":0},"face_with_symbols_on_mouth":{"subcategory":"face-negative","a":"Serious Face with Symbols Covering Mouth","b":"1F92C","d":true,"e":true,"f":true,"h":true,"j":["face_with_symbols_on_mouth","face","swearing","cursing","cussing","profanity","expletive"],"k":[40,43],"n":["serious_face_with_symbols_covering_mouth"],"o":5},"smiling_imp":{"subcategory":"face-negative","a":"Smiling Face with Horns","b":"1F608","d":true,"e":true,"f":true,"h":true,"j":["smiling_face_with_horns","devil","horns"],"k":[32,29],"o":1},"imp":{"subcategory":"face-negative","a":"Imp","b":"1F47F","d":true,"e":true,"f":true,"h":true,"j":["angry_face_with_horns","devil","angry","horns"],"k":[25,9],"o":0},"skull":{"subcategory":"face-negative","a":"Skull","b":"1F480","d":true,"e":true,"f":true,"h":true,"j":["skull","dead","skeleton","creepy","death","dead"],"k":[25,10],"o":0},"skull_and_crossbones":{"subcategory":"face-negative","a":"Skull and Crossbones","b":"2620-FE0F","c":"2620","d":true,"e":true,"f":true,"h":true,"j":["skull_and_crossbones","poison","danger","deadly","scary","death","pirate","evil"],"k":[57,26],"o":1},"hankey":{"subcategory":"face-costume","a":"Pile of Poo","b":"1F4A9","d":true,"e":true,"f":true,"h":true,"j":["pile_of_poo","hankey","shitface","fail","turd","shit"],"k":[27,57],"n":["poop","shit"],"o":0},"clown_face":{"subcategory":"face-costume","a":"Clown Face","b":"1F921","d":true,"e":true,"f":true,"h":true,"j":["clown_face","face"],"k":[40,15],"o":3},"japanese_ogre":{"subcategory":"face-costume","a":"Japanese Ogre","b":"1F479","d":true,"e":true,"f":true,"h":true,"j":["ogre","monster","red","mask","halloween","scary","creepy","devil","demon","japanese_ogre"],"k":[24,59],"o":0},"japanese_goblin":{"subcategory":"face-costume","a":"Japanese Goblin","b":"1F47A","d":true,"e":true,"f":true,"h":true,"j":["goblin","red","evil","mask","monster","scary","creepy","japanese_goblin"],"k":[24,60],"o":0},"ghost":{"subcategory":"face-costume","a":"Ghost","b":"1F47B","d":true,"e":true,"f":true,"h":true,"j":["ghost","halloween","spooky","scary"],"k":[25,0],"o":0},"alien":{"subcategory":"face-costume","a":"Extraterrestrial Alien","b":"1F47D","d":true,"e":true,"f":true,"h":true,"j":["alien","UFO","paul","weird","outer_space"],"k":[25,7],"o":0},"space_invader":{"subcategory":"face-costume","a":"Alien Monster","b":"1F47E","d":true,"e":true,"f":true,"h":true,"j":["alien_monster","game","arcade","play"],"k":[25,8],"o":0},"robot_face":{"subcategory":"face-costume","a":"Robot Face","b":"1F916","d":true,"e":true,"f":true,"h":true,"j":["robot","computer","machine","bot"],"k":[39,5],"o":1},"smiley_cat":{"subcategory":"cat-face","a":"Smiling Cat Face with Open Mouth","b":"1F63A","d":true,"e":true,"f":true,"h":true,"j":["grinning_cat","animal","cats","happy","smile"],"k":[33,21],"o":0},"smile_cat":{"subcategory":"cat-face","a":"Grinning Cat Face with Smiling Eyes","b":"1F638","d":true,"e":true,"f":true,"h":true,"j":["grinning_cat_with_smiling_eyes","animal","cats","smile"],"k":[33,19],"o":0},"joy_cat":{"subcategory":"cat-face","a":"Cat Face with Tears of Joy","b":"1F639","d":true,"e":true,"f":true,"h":true,"j":["cat_with_tears_of_joy","animal","cats","haha","happy","tears"],"k":[33,20],"o":0},"heart_eyes_cat":{"subcategory":"cat-face","a":"Smiling Cat Face with Heart-Shaped Eyes","b":"1F63B","d":true,"e":true,"f":true,"h":true,"j":["smiling_cat_with_heart_eyes","animal","love","like","affection","cats","valentines","heart"],"k":[33,22],"o":0},"smirk_cat":{"subcategory":"cat-face","a":"Cat Face with Wry Smile","b":"1F63C","d":true,"e":true,"f":true,"h":true,"j":["cat_with_wry_smile","animal","cats","smirk"],"k":[33,23],"o":0},"kissing_cat":{"subcategory":"cat-face","a":"Kissing Cat Face with Closed Eyes","b":"1F63D","d":true,"e":true,"f":true,"h":true,"j":["kissing_cat","animal","cats","kiss"],"k":[33,24],"o":0},"scream_cat":{"subcategory":"cat-face","a":"Weary Cat Face","b":"1F640","d":true,"e":true,"f":true,"h":true,"j":["weary_cat","animal","cats","munch","scared","scream"],"k":[33,27],"o":0},"crying_cat_face":{"subcategory":"cat-face","a":"Crying Cat Face","b":"1F63F","d":true,"e":true,"f":true,"h":true,"j":["crying_cat","animal","tears","weep","sad","cats","upset","cry"],"k":[33,26],"o":0},"pouting_cat":{"subcategory":"cat-face","a":"Pouting Cat Face","b":"1F63E","d":true,"e":true,"f":true,"h":true,"j":["pouting_cat","animal","cats"],"k":[33,25],"o":0},"see_no_evil":{"subcategory":"monkey-face","a":"See-No-Evil Monkey","b":"1F648","d":true,"e":true,"f":true,"h":true,"j":["see_no_evil_monkey","monkey","animal","nature","haha"],"k":[34,25],"o":0},"hear_no_evil":{"subcategory":"monkey-face","a":"Hear-No-Evil Monkey","b":"1F649","d":true,"e":true,"f":true,"h":true,"j":["hear_no_evil_monkey","animal","monkey","nature"],"k":[34,26],"o":0},"speak_no_evil":{"subcategory":"monkey-face","a":"Speak-No-Evil Monkey","b":"1F64A","d":true,"e":true,"f":true,"h":true,"j":["speak_no_evil_monkey","monkey","animal","nature","omg"],"k":[34,27],"o":0},"love_letter":{"subcategory":"heart","a":"Love Letter","b":"1F48C","d":true,"e":true,"f":true,"h":true,"j":["love_letter","email","like","affection","envelope","valentines"],"k":[26,39],"o":0},"cupid":{"subcategory":"heart","a":"Heart with Arrow","b":"1F498","d":true,"e":true,"f":true,"h":true,"j":["heart_with_arrow","love","like","heart","affection","valentines"],"k":[27,40],"o":0},"gift_heart":{"subcategory":"heart","a":"Heart with Ribbon","b":"1F49D","d":true,"e":true,"f":true,"h":true,"j":["heart_with_ribbon","love","valentines"],"k":[27,45],"o":0},"sparkling_heart":{"subcategory":"heart","a":"Sparkling Heart","b":"1F496","d":true,"e":true,"f":true,"h":true,"j":["sparkling_heart","love","like","affection","valentines"],"k":[27,38],"o":0},"heartpulse":{"subcategory":"heart","a":"Growing Heart","b":"1F497","d":true,"e":true,"f":true,"h":true,"j":["growing_heart","like","love","affection","valentines","pink"],"k":[27,39],"o":0},"heartbeat":{"subcategory":"heart","a":"Beating Heart","b":"1F493","d":true,"e":true,"f":true,"h":true,"j":["beating_heart","love","like","affection","valentines","pink","heart"],"k":[27,35],"o":0},"revolving_hearts":{"subcategory":"heart","a":"Revolving Hearts","b":"1F49E","d":true,"e":true,"f":true,"h":true,"j":["revolving_hearts","love","like","affection","valentines"],"k":[27,46],"o":0},"two_hearts":{"subcategory":"heart","a":"Two Hearts","b":"1F495","d":true,"e":true,"f":true,"h":true,"j":["two_hearts","love","like","affection","valentines","heart"],"k":[27,37],"o":0},"heart_decoration":{"subcategory":"heart","a":"Heart Decoration","b":"1F49F","d":true,"e":true,"f":true,"h":true,"j":["heart_decoration","purple-square","love","like"],"k":[27,47],"o":0},"heavy_heart_exclamation_mark_ornament":{"subcategory":"heart","a":"Heart Exclamation","b":"2763-FE0F","c":"2763","d":true,"e":true,"f":true,"h":true,"j":["heart_exclamation","decoration","love"],"k":[59,38],"o":1},"broken_heart":{"subcategory":"heart","a":"Broken Heart","b":"1F494","d":true,"e":true,"f":true,"h":true,"j":["broken_heart","sad","sorry","break","heart","heartbreak"],"k":[27,36],"l":["3"],"m":"3","o":0},"heart_on_fire":{"subcategory":"heart","a":"Heart on Fire","b":"2764-FE0F-200D-1F525","c":"2764-200D-1F525","d":true,"e":true,"f":true,"h":true,"j":["heart on fire","passionate","enthusiastic"],"k":[59,39],"o":13},"mending_heart":{"subcategory":"heart","a":"Mending Heart","b":"2764-FE0F-200D-1FA79","c":"2764-200D-1FA79","d":true,"e":true,"f":true,"h":true,"j":["mending heart","broken heart","bandage","wounded"],"k":[59,40],"o":13},"heart":{"subcategory":"heart","a":"Heavy Black Heart","b":"2764-FE0F","c":"2764","d":true,"e":true,"f":true,"h":true,"j":["red_heart","love","like","valentines"],"k":[59,41],"l":["<3"],"m":"<3","o":0},"pink_heart":{"subcategory":"heart","a":"Pink Heart","b":"1FA77","d":true,"e":true,"f":false,"h":false,"j":["pink heart","valentines"],"k":[53,55],"o":15},"orange_heart":{"subcategory":"heart","a":"Orange Heart","b":"1F9E1","d":true,"e":true,"f":true,"h":true,"j":["orange_heart","love","like","affection","valentines"],"k":[53,17],"o":5},"yellow_heart":{"subcategory":"heart","a":"Yellow Heart","b":"1F49B","d":true,"e":true,"f":true,"h":true,"j":["yellow_heart","love","like","affection","valentines"],"k":[27,43],"m":"<3","o":0},"green_heart":{"subcategory":"heart","a":"Green Heart","b":"1F49A","d":true,"e":true,"f":true,"h":true,"j":["green_heart","love","like","affection","valentines"],"k":[27,42],"m":"<3","o":0},"blue_heart":{"subcategory":"heart","a":"Blue Heart","b":"1F499","d":true,"e":true,"f":true,"h":true,"j":["blue_heart","love","like","affection","valentines"],"k":[27,41],"m":"<3","o":0},"light_blue_heart":{"subcategory":"heart","a":"Light Blue Heart","b":"1FA75","d":true,"e":true,"f":false,"h":false,"j":["light blue heart","ice","baby blue"],"k":[53,53],"o":15},"purple_heart":{"subcategory":"heart","a":"Purple Heart","b":"1F49C","d":true,"e":true,"f":true,"h":true,"j":["purple_heart","love","like","affection","valentines"],"k":[27,44],"m":"<3","o":0},"brown_heart":{"subcategory":"heart","a":"Brown Heart","b":"1F90E","d":true,"e":true,"f":true,"h":true,"j":["brown_heart","coffee"],"k":[38,53],"o":12},"black_heart":{"subcategory":"heart","a":"Black Heart","b":"1F5A4","d":true,"e":true,"f":true,"h":true,"j":["black_heart","evil"],"k":[31,56],"o":3},"grey_heart":{"subcategory":"heart","a":"Grey Heart","b":"1FA76","d":true,"e":true,"f":false,"h":false,"j":["grey heart","silver","monochrome"],"k":[53,54],"o":15},"white_heart":{"subcategory":"heart","a":"White Heart","b":"1F90D","d":true,"e":true,"f":true,"h":true,"j":["white_heart","pure"],"k":[38,52],"o":12},"kiss":{"subcategory":"emotion","a":"Kiss Mark","b":"1F48B","d":true,"e":true,"f":true,"h":true,"j":["kiss_mark","face","lips","love","like","affection","valentines"],"k":[26,38],"o":0},"anger":{"subcategory":"emotion","a":"Anger Symbol","b":"1F4A2","d":true,"e":true,"f":true,"h":true,"j":["anger_symbol","angry","mad"],"k":[27,50],"o":0},"boom":{"subcategory":"emotion","a":"Collision Symbol","b":"1F4A5","d":true,"e":true,"f":true,"h":true,"j":["collision","bomb","explode","explosion","blown"],"k":[27,53],"n":["collision"],"o":0},"dizzy":{"subcategory":"emotion","a":"Dizzy Symbol","b":"1F4AB","d":true,"e":true,"f":true,"h":true,"j":["dizzy","star","sparkle","shoot","magic"],"k":[28,3],"o":0},"sweat_drops":{"subcategory":"emotion","a":"Splashing Sweat Symbol","b":"1F4A6","d":true,"e":true,"f":true,"h":true,"j":["sweat_droplets","water","drip","oops"],"k":[27,54],"o":0},"dash":{"subcategory":"emotion","a":"Dash Symbol","b":"1F4A8","d":true,"e":true,"f":true,"h":true,"j":["dashing_away","wind","air","fast","shoo","fart","smoke","puff"],"k":[27,56],"o":0},"hole":{"subcategory":"emotion","a":"Hole","b":"1F573-FE0F","c":"1F573","d":true,"e":true,"f":true,"h":true,"j":["hole","embarrassing"],"k":[30,59],"o":0},"speech_balloon":{"subcategory":"emotion","a":"Speech Balloon","b":"1F4AC","d":true,"e":true,"f":true,"h":true,"j":["speech_balloon","bubble","words","message","talk","chatting"],"k":[28,4],"o":0},"eye-in-speech-bubble":{"subcategory":"emotion","a":"Eye in Speech Bubble","b":"1F441-FE0F-200D-1F5E8-FE0F","d":true,"e":true,"f":true,"h":false,"j":["eye_in_speech_bubble","info"],"k":[11,54],"o":2},"left_speech_bubble":{"subcategory":"emotion","a":"Left Speech Bubble","b":"1F5E8-FE0F","c":"1F5E8","d":true,"e":true,"f":true,"h":true,"j":["left_speech_bubble","words","message","talk","chatting"],"k":[32,12],"o":2},"right_anger_bubble":{"subcategory":"emotion","a":"Right Anger Bubble","b":"1F5EF-FE0F","c":"1F5EF","d":true,"e":true,"f":true,"h":true,"j":["right_anger_bubble","caption","speech","thinking","mad"],"k":[32,13],"o":0},"thought_balloon":{"subcategory":"emotion","a":"Thought Balloon","b":"1F4AD","d":true,"e":true,"f":true,"h":true,"j":["thought_balloon","bubble","cloud","speech","thinking","dream"],"k":[28,5],"o":1},"zzz":{"subcategory":"emotion","a":"Sleeping Symbol","b":"1F4A4","d":true,"e":true,"f":true,"h":true,"j":["zzz","sleepy","tired","dream"],"k":[27,52],"o":0},"wave":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1F44B-1F3FB","non_qualified":null,"image":"1f44b-1f3fb.png","sheet_x":12,"sheet_y":40,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44B-1F3FC","non_qualified":null,"image":"1f44b-1f3fc.png","sheet_x":12,"sheet_y":41,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44B-1F3FD","non_qualified":null,"image":"1f44b-1f3fd.png","sheet_x":12,"sheet_y":42,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44B-1F3FE","non_qualified":null,"image":"1f44b-1f3fe.png","sheet_x":12,"sheet_y":43,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44B-1F3FF","non_qualified":null,"image":"1f44b-1f3ff.png","sheet_x":12,"sheet_y":44,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Waving Hand Sign","b":"1F44B","d":true,"e":true,"f":true,"h":true,"j":["waving_hand","wave","hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"k":[12,39],"o":0},"raised_back_of_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1F91A-1F3FB","non_qualified":null,"image":"1f91a-1f3fb.png","sheet_x":39,"sheet_y":20,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91A-1F3FC","non_qualified":null,"image":"1f91a-1f3fc.png","sheet_x":39,"sheet_y":21,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91A-1F3FD","non_qualified":null,"image":"1f91a-1f3fd.png","sheet_x":39,"sheet_y":22,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91A-1F3FE","non_qualified":null,"image":"1f91a-1f3fe.png","sheet_x":39,"sheet_y":23,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91A-1F3FF","non_qualified":null,"image":"1f91a-1f3ff.png","sheet_x":39,"sheet_y":24,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Raised Back of Hand","b":"1F91A","d":true,"e":true,"f":true,"h":true,"j":["raised_back_of_hand","fingers","raised","backhand"],"k":[39,19],"o":3},"raised_hand_with_fingers_splayed":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1F590-1F3FB","non_qualified":null,"image":"1f590-1f3fb.png","sheet_x":31,"sheet_y":39,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F590-1F3FC","non_qualified":null,"image":"1f590-1f3fc.png","sheet_x":31,"sheet_y":40,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F590-1F3FD","non_qualified":null,"image":"1f590-1f3fd.png","sheet_x":31,"sheet_y":41,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F590-1F3FE","non_qualified":null,"image":"1f590-1f3fe.png","sheet_x":31,"sheet_y":42,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F590-1F3FF","non_qualified":null,"image":"1f590-1f3ff.png","sheet_x":31,"sheet_y":43,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Hand with Fingers Splayed","b":"1F590-FE0F","c":"1F590","d":true,"e":true,"f":true,"h":true,"j":["hand_with_fingers_splayed","hand","fingers","palm"],"k":[31,38],"o":0},"hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"270B-1F3FB","non_qualified":null,"image":"270b-1f3fb.png","sheet_x":59,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"270B-1F3FC","non_qualified":null,"image":"270b-1f3fc.png","sheet_x":59,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"270B-1F3FD","non_qualified":null,"image":"270b-1f3fd.png","sheet_x":59,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"270B-1F3FE","non_qualified":null,"image":"270b-1f3fe.png","sheet_x":59,"sheet_y":7,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"270B-1F3FF","non_qualified":null,"image":"270b-1f3ff.png","sheet_x":59,"sheet_y":8,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Raised Hand","b":"270B","d":true,"e":true,"f":true,"h":true,"j":["raised_hand","fingers","stop","highfive","palm","ban"],"k":[59,3],"n":["raised_hand"],"o":0},"spock-hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1F596-1F3FB","non_qualified":null,"image":"1f596-1f3fb.png","sheet_x":31,"sheet_y":51,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F596-1F3FC","non_qualified":null,"image":"1f596-1f3fc.png","sheet_x":31,"sheet_y":52,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F596-1F3FD","non_qualified":null,"image":"1f596-1f3fd.png","sheet_x":31,"sheet_y":53,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F596-1F3FE","non_qualified":null,"image":"1f596-1f3fe.png","sheet_x":31,"sheet_y":54,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F596-1F3FF","non_qualified":null,"image":"1f596-1f3ff.png","sheet_x":31,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Raised Hand with Part Between Middle and Ring Fingers","b":"1F596","d":true,"e":true,"f":true,"h":true,"j":["vulcan_salute","hand","fingers","spock","star trek"],"k":[31,50],"o":1},"rightwards_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF1-1F3FB","non_qualified":null,"image":"1faf1-1f3fb.png","sheet_x":55,"sheet_y":46,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF1-1F3FC","non_qualified":null,"image":"1faf1-1f3fc.png","sheet_x":55,"sheet_y":47,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF1-1F3FD","non_qualified":null,"image":"1faf1-1f3fd.png","sheet_x":55,"sheet_y":48,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF1-1F3FE","non_qualified":null,"image":"1faf1-1f3fe.png","sheet_x":55,"sheet_y":49,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF1-1F3FF","non_qualified":null,"image":"1faf1-1f3ff.png","sheet_x":55,"sheet_y":50,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Rightwards Hand","b":"1FAF1","d":true,"e":true,"f":true,"h":true,"j":["rightwards hand","palm","offer"],"k":[55,45],"o":14},"leftwards_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF2-1F3FB","non_qualified":null,"image":"1faf2-1f3fb.png","sheet_x":55,"sheet_y":52,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF2-1F3FC","non_qualified":null,"image":"1faf2-1f3fc.png","sheet_x":55,"sheet_y":53,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF2-1F3FD","non_qualified":null,"image":"1faf2-1f3fd.png","sheet_x":55,"sheet_y":54,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF2-1F3FE","non_qualified":null,"image":"1faf2-1f3fe.png","sheet_x":55,"sheet_y":55,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF2-1F3FF","non_qualified":null,"image":"1faf2-1f3ff.png","sheet_x":55,"sheet_y":56,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Leftwards Hand","b":"1FAF2","d":true,"e":true,"f":true,"h":true,"j":["leftwards hand","palm","offer"],"k":[55,51],"o":14},"palm_down_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF3-1F3FB","non_qualified":null,"image":"1faf3-1f3fb.png","sheet_x":55,"sheet_y":58,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF3-1F3FC","non_qualified":null,"image":"1faf3-1f3fc.png","sheet_x":55,"sheet_y":59,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF3-1F3FD","non_qualified":null,"image":"1faf3-1f3fd.png","sheet_x":55,"sheet_y":60,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF3-1F3FE","non_qualified":null,"image":"1faf3-1f3fe.png","sheet_x":56,"sheet_y":0,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF3-1F3FF","non_qualified":null,"image":"1faf3-1f3ff.png","sheet_x":56,"sheet_y":1,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Palm Down Hand","b":"1FAF3","d":true,"e":true,"f":true,"h":true,"j":["palm down hand","palm","drop"],"k":[55,57],"o":14},"palm_up_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF4-1F3FB","non_qualified":null,"image":"1faf4-1f3fb.png","sheet_x":56,"sheet_y":3,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF4-1F3FC","non_qualified":null,"image":"1faf4-1f3fc.png","sheet_x":56,"sheet_y":4,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF4-1F3FD","non_qualified":null,"image":"1faf4-1f3fd.png","sheet_x":56,"sheet_y":5,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF4-1F3FE","non_qualified":null,"image":"1faf4-1f3fe.png","sheet_x":56,"sheet_y":6,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF4-1F3FF","non_qualified":null,"image":"1faf4-1f3ff.png","sheet_x":56,"sheet_y":7,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Palm Up Hand","b":"1FAF4","d":true,"e":true,"f":true,"h":true,"j":["palm up hand","lift","offer","demand"],"k":[56,2],"o":14},"leftwards_pushing_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF7-1F3FB","non_qualified":null,"image":"1faf7-1f3fb.png","sheet_x":56,"sheet_y":21,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FC":{"unified":"1FAF7-1F3FC","non_qualified":null,"image":"1faf7-1f3fc.png","sheet_x":56,"sheet_y":22,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FD":{"unified":"1FAF7-1F3FD","non_qualified":null,"image":"1faf7-1f3fd.png","sheet_x":56,"sheet_y":23,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FE":{"unified":"1FAF7-1F3FE","non_qualified":null,"image":"1faf7-1f3fe.png","sheet_x":56,"sheet_y":24,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FF":{"unified":"1FAF7-1F3FF","non_qualified":null,"image":"1faf7-1f3ff.png","sheet_x":56,"sheet_y":25,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false}},"a":"Leftwards Pushing Hand","b":"1FAF7","d":true,"e":true,"f":false,"h":false,"j":["leftwards pushing hand","highfive","pressing","stop"],"k":[56,20],"o":15},"rightwards_pushing_hand":{"subcategory":"hand-fingers-open","skin_variations":{"1F3FB":{"unified":"1FAF8-1F3FB","non_qualified":null,"image":"1faf8-1f3fb.png","sheet_x":56,"sheet_y":27,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FC":{"unified":"1FAF8-1F3FC","non_qualified":null,"image":"1faf8-1f3fc.png","sheet_x":56,"sheet_y":28,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FD":{"unified":"1FAF8-1F3FD","non_qualified":null,"image":"1faf8-1f3fd.png","sheet_x":56,"sheet_y":29,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FE":{"unified":"1FAF8-1F3FE","non_qualified":null,"image":"1faf8-1f3fe.png","sheet_x":56,"sheet_y":30,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false},"1F3FF":{"unified":"1FAF8-1F3FF","non_qualified":null,"image":"1faf8-1f3ff.png","sheet_x":56,"sheet_y":31,"added_in":"15.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_facebook":false}},"a":"Rightwards Pushing Hand","b":"1FAF8","d":true,"e":true,"f":false,"h":false,"j":["rightwards pushing hand","highfive","pressing","stop"],"k":[56,26],"o":15},"ok_hand":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F44C-1F3FB","non_qualified":null,"image":"1f44c-1f3fb.png","sheet_x":12,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44C-1F3FC","non_qualified":null,"image":"1f44c-1f3fc.png","sheet_x":12,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44C-1F3FD","non_qualified":null,"image":"1f44c-1f3fd.png","sheet_x":12,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44C-1F3FE","non_qualified":null,"image":"1f44c-1f3fe.png","sheet_x":12,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44C-1F3FF","non_qualified":null,"image":"1f44c-1f3ff.png","sheet_x":12,"sheet_y":50,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Ok Hand Sign","b":"1F44C","d":true,"e":true,"f":true,"h":true,"j":["ok_hand","fingers","limbs","perfect","ok","okay"],"k":[12,45],"o":0},"pinched_fingers":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F90C-1F3FB","non_qualified":null,"image":"1f90c-1f3fb.png","sheet_x":38,"sheet_y":47,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F90C-1F3FC","non_qualified":null,"image":"1f90c-1f3fc.png","sheet_x":38,"sheet_y":48,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F90C-1F3FD","non_qualified":null,"image":"1f90c-1f3fd.png","sheet_x":38,"sheet_y":49,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F90C-1F3FE","non_qualified":null,"image":"1f90c-1f3fe.png","sheet_x":38,"sheet_y":50,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F90C-1F3FF","non_qualified":null,"image":"1f90c-1f3ff.png","sheet_x":38,"sheet_y":51,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pinched Fingers","b":"1F90C","d":true,"e":true,"f":true,"h":true,"j":["pinched fingers","size","tiny","small"],"k":[38,46],"o":13},"pinching_hand":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F90F-1F3FB","non_qualified":null,"image":"1f90f-1f3fb.png","sheet_x":38,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F90F-1F3FC","non_qualified":null,"image":"1f90f-1f3fc.png","sheet_x":38,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F90F-1F3FD","non_qualified":null,"image":"1f90f-1f3fd.png","sheet_x":38,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F90F-1F3FE","non_qualified":null,"image":"1f90f-1f3fe.png","sheet_x":38,"sheet_y":58,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F90F-1F3FF","non_qualified":null,"image":"1f90f-1f3ff.png","sheet_x":38,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pinching Hand","b":"1F90F","d":true,"e":true,"f":true,"h":true,"j":["pinching_hand","tiny","small","size"],"k":[38,54],"o":12},"v":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"270C-1F3FB","non_qualified":null,"image":"270c-1f3fb.png","sheet_x":59,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"270C-1F3FC","non_qualified":null,"image":"270c-1f3fc.png","sheet_x":59,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"270C-1F3FD","non_qualified":null,"image":"270c-1f3fd.png","sheet_x":59,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"270C-1F3FE","non_qualified":null,"image":"270c-1f3fe.png","sheet_x":59,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"270C-1F3FF","non_qualified":null,"image":"270c-1f3ff.png","sheet_x":59,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Victory Hand","b":"270C-FE0F","c":"270C","d":true,"e":true,"f":true,"h":true,"j":["victory_hand","fingers","ohyeah","hand","peace","victory","two"],"k":[59,9],"o":0},"crossed_fingers":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F91E-1F3FB","non_qualified":null,"image":"1f91e-1f3fb.png","sheet_x":40,"sheet_y":3,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91E-1F3FC","non_qualified":null,"image":"1f91e-1f3fc.png","sheet_x":40,"sheet_y":4,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91E-1F3FD","non_qualified":null,"image":"1f91e-1f3fd.png","sheet_x":40,"sheet_y":5,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91E-1F3FE","non_qualified":null,"image":"1f91e-1f3fe.png","sheet_x":40,"sheet_y":6,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91E-1F3FF","non_qualified":null,"image":"1f91e-1f3ff.png","sheet_x":40,"sheet_y":7,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Hand with Index and Middle Fingers Crossed","b":"1F91E","d":true,"e":true,"f":true,"h":true,"j":["crossed_fingers","good","lucky"],"k":[40,2],"n":["hand_with_index_and_middle_fingers_crossed"],"o":3},"hand_with_index_finger_and_thumb_crossed":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1FAF0-1F3FB","non_qualified":null,"image":"1faf0-1f3fb.png","sheet_x":55,"sheet_y":40,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF0-1F3FC","non_qualified":null,"image":"1faf0-1f3fc.png","sheet_x":55,"sheet_y":41,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF0-1F3FD","non_qualified":null,"image":"1faf0-1f3fd.png","sheet_x":55,"sheet_y":42,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF0-1F3FE","non_qualified":null,"image":"1faf0-1f3fe.png","sheet_x":55,"sheet_y":43,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF0-1F3FF","non_qualified":null,"image":"1faf0-1f3ff.png","sheet_x":55,"sheet_y":44,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Hand with Index Finger and Thumb Crossed","b":"1FAF0","d":true,"e":true,"f":true,"h":true,"j":["hand with index finger and thumb crossed","heart","love","money","expensive"],"k":[55,39],"o":14},"i_love_you_hand_sign":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F91F-1F3FB","non_qualified":null,"image":"1f91f-1f3fb.png","sheet_x":40,"sheet_y":9,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91F-1F3FC","non_qualified":null,"image":"1f91f-1f3fc.png","sheet_x":40,"sheet_y":10,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91F-1F3FD","non_qualified":null,"image":"1f91f-1f3fd.png","sheet_x":40,"sheet_y":11,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91F-1F3FE","non_qualified":null,"image":"1f91f-1f3fe.png","sheet_x":40,"sheet_y":12,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91F-1F3FF","non_qualified":null,"image":"1f91f-1f3ff.png","sheet_x":40,"sheet_y":13,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"I Love You Hand Sign","b":"1F91F","d":true,"e":true,"f":true,"h":true,"j":["love_you_gesture","hand","fingers","gesture"],"k":[40,8],"o":5},"the_horns":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F918-1F3FB","non_qualified":null,"image":"1f918-1f3fb.png","sheet_x":39,"sheet_y":8,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F918-1F3FC","non_qualified":null,"image":"1f918-1f3fc.png","sheet_x":39,"sheet_y":9,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F918-1F3FD","non_qualified":null,"image":"1f918-1f3fd.png","sheet_x":39,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F918-1F3FE","non_qualified":null,"image":"1f918-1f3fe.png","sheet_x":39,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F918-1F3FF","non_qualified":null,"image":"1f918-1f3ff.png","sheet_x":39,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Sign of the Horns","b":"1F918","d":true,"e":true,"f":true,"h":true,"j":["sign_of_the_horns","hand","fingers","evil_eye","sign_of_horns","rock_on"],"k":[39,7],"n":["sign_of_the_horns"],"o":1},"call_me_hand":{"subcategory":"hand-fingers-partial","skin_variations":{"1F3FB":{"unified":"1F919-1F3FB","non_qualified":null,"image":"1f919-1f3fb.png","sheet_x":39,"sheet_y":14,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F919-1F3FC","non_qualified":null,"image":"1f919-1f3fc.png","sheet_x":39,"sheet_y":15,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F919-1F3FD","non_qualified":null,"image":"1f919-1f3fd.png","sheet_x":39,"sheet_y":16,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F919-1F3FE","non_qualified":null,"image":"1f919-1f3fe.png","sheet_x":39,"sheet_y":17,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F919-1F3FF","non_qualified":null,"image":"1f919-1f3ff.png","sheet_x":39,"sheet_y":18,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Call Me Hand","b":"1F919","d":true,"e":true,"f":true,"h":true,"j":["call_me_hand","hands","gesture","shaka"],"k":[39,13],"o":3},"point_left":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1F448-1F3FB","non_qualified":null,"image":"1f448-1f3fb.png","sheet_x":12,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F448-1F3FC","non_qualified":null,"image":"1f448-1f3fc.png","sheet_x":12,"sheet_y":23,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F448-1F3FD","non_qualified":null,"image":"1f448-1f3fd.png","sheet_x":12,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F448-1F3FE","non_qualified":null,"image":"1f448-1f3fe.png","sheet_x":12,"sheet_y":25,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F448-1F3FF","non_qualified":null,"image":"1f448-1f3ff.png","sheet_x":12,"sheet_y":26,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"White Left Pointing Backhand Index","b":"1F448","d":true,"e":true,"f":true,"h":true,"j":["backhand_index_pointing_left","direction","fingers","hand","left"],"k":[12,21],"o":0},"point_right":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1F449-1F3FB","non_qualified":null,"image":"1f449-1f3fb.png","sheet_x":12,"sheet_y":28,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F449-1F3FC","non_qualified":null,"image":"1f449-1f3fc.png","sheet_x":12,"sheet_y":29,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F449-1F3FD","non_qualified":null,"image":"1f449-1f3fd.png","sheet_x":12,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F449-1F3FE","non_qualified":null,"image":"1f449-1f3fe.png","sheet_x":12,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F449-1F3FF","non_qualified":null,"image":"1f449-1f3ff.png","sheet_x":12,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"White Right Pointing Backhand Index","b":"1F449","d":true,"e":true,"f":true,"h":true,"j":["backhand_index_pointing_right","fingers","hand","direction","right"],"k":[12,27],"o":0},"point_up_2":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1F446-1F3FB","non_qualified":null,"image":"1f446-1f3fb.png","sheet_x":12,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F446-1F3FC","non_qualified":null,"image":"1f446-1f3fc.png","sheet_x":12,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F446-1F3FD","non_qualified":null,"image":"1f446-1f3fd.png","sheet_x":12,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F446-1F3FE","non_qualified":null,"image":"1f446-1f3fe.png","sheet_x":12,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F446-1F3FF","non_qualified":null,"image":"1f446-1f3ff.png","sheet_x":12,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"White Up Pointing Backhand Index","b":"1F446","d":true,"e":true,"f":true,"h":true,"j":["backhand_index_pointing_up","fingers","hand","direction","up"],"k":[12,9],"o":0},"middle_finger":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1F595-1F3FB","non_qualified":null,"image":"1f595-1f3fb.png","sheet_x":31,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F595-1F3FC","non_qualified":null,"image":"1f595-1f3fc.png","sheet_x":31,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F595-1F3FD","non_qualified":null,"image":"1f595-1f3fd.png","sheet_x":31,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F595-1F3FE","non_qualified":null,"image":"1f595-1f3fe.png","sheet_x":31,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F595-1F3FF","non_qualified":null,"image":"1f595-1f3ff.png","sheet_x":31,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Reversed Hand with Middle Finger Extended","b":"1F595","d":true,"e":true,"f":true,"h":true,"j":["middle_finger","hand","fingers","rude","middle","flipping"],"k":[31,44],"n":["reversed_hand_with_middle_finger_extended"],"o":1},"point_down":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1F447-1F3FB","non_qualified":null,"image":"1f447-1f3fb.png","sheet_x":12,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F447-1F3FC","non_qualified":null,"image":"1f447-1f3fc.png","sheet_x":12,"sheet_y":17,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F447-1F3FD","non_qualified":null,"image":"1f447-1f3fd.png","sheet_x":12,"sheet_y":18,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F447-1F3FE","non_qualified":null,"image":"1f447-1f3fe.png","sheet_x":12,"sheet_y":19,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F447-1F3FF","non_qualified":null,"image":"1f447-1f3ff.png","sheet_x":12,"sheet_y":20,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"White Down Pointing Backhand Index","b":"1F447","d":true,"e":true,"f":true,"h":true,"j":["backhand_index_pointing_down","fingers","hand","direction","down"],"k":[12,15],"o":0},"point_up":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"261D-1F3FB","non_qualified":null,"image":"261d-1f3fb.png","sheet_x":57,"sheet_y":21,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"261D-1F3FC","non_qualified":null,"image":"261d-1f3fc.png","sheet_x":57,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"261D-1F3FD","non_qualified":null,"image":"261d-1f3fd.png","sheet_x":57,"sheet_y":23,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"261D-1F3FE","non_qualified":null,"image":"261d-1f3fe.png","sheet_x":57,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"261D-1F3FF","non_qualified":null,"image":"261d-1f3ff.png","sheet_x":57,"sheet_y":25,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"White Up Pointing Index","b":"261D-FE0F","c":"261D","d":true,"e":true,"f":true,"h":true,"j":["index_pointing_up","hand","fingers","direction","up"],"k":[57,20],"o":0},"index_pointing_at_the_viewer":{"subcategory":"hand-single-finger","skin_variations":{"1F3FB":{"unified":"1FAF5-1F3FB","non_qualified":null,"image":"1faf5-1f3fb.png","sheet_x":56,"sheet_y":9,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF5-1F3FC","non_qualified":null,"image":"1faf5-1f3fc.png","sheet_x":56,"sheet_y":10,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF5-1F3FD","non_qualified":null,"image":"1faf5-1f3fd.png","sheet_x":56,"sheet_y":11,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF5-1F3FE","non_qualified":null,"image":"1faf5-1f3fe.png","sheet_x":56,"sheet_y":12,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF5-1F3FF","non_qualified":null,"image":"1faf5-1f3ff.png","sheet_x":56,"sheet_y":13,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Index Pointing at the Viewer","b":"1FAF5","d":true,"e":true,"f":true,"h":true,"j":["index pointing at the viewer","you","recruit"],"k":[56,8],"o":14},"+1":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"1F44D-1F3FB","non_qualified":null,"image":"1f44d-1f3fb.png","sheet_x":12,"sheet_y":52,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44D-1F3FC","non_qualified":null,"image":"1f44d-1f3fc.png","sheet_x":12,"sheet_y":53,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44D-1F3FD","non_qualified":null,"image":"1f44d-1f3fd.png","sheet_x":12,"sheet_y":54,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44D-1F3FE","non_qualified":null,"image":"1f44d-1f3fe.png","sheet_x":12,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44D-1F3FF","non_qualified":null,"image":"1f44d-1f3ff.png","sheet_x":12,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Thumbs Up Sign","b":"1F44D","d":true,"e":true,"f":true,"h":true,"j":["thumbs_up","thumbsup","yes","awesome","good","agree","accept","cool","hand","like","+1"],"k":[12,51],"n":["thumbsup"],"o":0},"-1":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"1F44E-1F3FB","non_qualified":null,"image":"1f44e-1f3fb.png","sheet_x":12,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44E-1F3FC","non_qualified":null,"image":"1f44e-1f3fc.png","sheet_x":12,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44E-1F3FD","non_qualified":null,"image":"1f44e-1f3fd.png","sheet_x":12,"sheet_y":60,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44E-1F3FE","non_qualified":null,"image":"1f44e-1f3fe.png","sheet_x":13,"sheet_y":0,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44E-1F3FF","non_qualified":null,"image":"1f44e-1f3ff.png","sheet_x":13,"sheet_y":1,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Thumbs Down Sign","b":"1F44E","d":true,"e":true,"f":true,"h":true,"j":["thumbs_down","thumbsdown","no","dislike","hand","-1"],"k":[12,57],"n":["thumbsdown"],"o":0},"fist":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"270A-1F3FB","non_qualified":null,"image":"270a-1f3fb.png","sheet_x":58,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"270A-1F3FC","non_qualified":null,"image":"270a-1f3fc.png","sheet_x":58,"sheet_y":60,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"270A-1F3FD","non_qualified":null,"image":"270a-1f3fd.png","sheet_x":59,"sheet_y":0,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"270A-1F3FE","non_qualified":null,"image":"270a-1f3fe.png","sheet_x":59,"sheet_y":1,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"270A-1F3FF","non_qualified":null,"image":"270a-1f3ff.png","sheet_x":59,"sheet_y":2,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Raised Fist","b":"270A","d":true,"e":true,"f":true,"h":true,"j":["raised_fist","fingers","hand","grasp"],"k":[58,58],"o":0},"facepunch":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"1F44A-1F3FB","non_qualified":null,"image":"1f44a-1f3fb.png","sheet_x":12,"sheet_y":34,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44A-1F3FC","non_qualified":null,"image":"1f44a-1f3fc.png","sheet_x":12,"sheet_y":35,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44A-1F3FD","non_qualified":null,"image":"1f44a-1f3fd.png","sheet_x":12,"sheet_y":36,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44A-1F3FE","non_qualified":null,"image":"1f44a-1f3fe.png","sheet_x":12,"sheet_y":37,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44A-1F3FF","non_qualified":null,"image":"1f44a-1f3ff.png","sheet_x":12,"sheet_y":38,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Fisted Hand Sign","b":"1F44A","d":true,"e":true,"f":true,"h":true,"j":["oncoming_fist","angry","violence","fist","hit","attack","hand"],"k":[12,33],"n":["punch"],"o":0},"left-facing_fist":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"1F91B-1F3FB","non_qualified":null,"image":"1f91b-1f3fb.png","sheet_x":39,"sheet_y":26,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91B-1F3FC","non_qualified":null,"image":"1f91b-1f3fc.png","sheet_x":39,"sheet_y":27,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91B-1F3FD","non_qualified":null,"image":"1f91b-1f3fd.png","sheet_x":39,"sheet_y":28,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91B-1F3FE","non_qualified":null,"image":"1f91b-1f3fe.png","sheet_x":39,"sheet_y":29,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91B-1F3FF","non_qualified":null,"image":"1f91b-1f3ff.png","sheet_x":39,"sheet_y":30,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Left-Facing Fist","b":"1F91B","d":true,"e":true,"f":true,"h":true,"j":["left_facing_fist","hand","fistbump"],"k":[39,25],"o":3},"right-facing_fist":{"subcategory":"hand-fingers-closed","skin_variations":{"1F3FB":{"unified":"1F91C-1F3FB","non_qualified":null,"image":"1f91c-1f3fb.png","sheet_x":39,"sheet_y":32,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91C-1F3FC","non_qualified":null,"image":"1f91c-1f3fc.png","sheet_x":39,"sheet_y":33,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91C-1F3FD","non_qualified":null,"image":"1f91c-1f3fd.png","sheet_x":39,"sheet_y":34,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91C-1F3FE","non_qualified":null,"image":"1f91c-1f3fe.png","sheet_x":39,"sheet_y":35,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91C-1F3FF","non_qualified":null,"image":"1f91c-1f3ff.png","sheet_x":39,"sheet_y":36,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Right-Facing Fist","b":"1F91C","d":true,"e":true,"f":true,"h":true,"j":["right_facing_fist","hand","fistbump"],"k":[39,31],"o":3},"clap":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F44F-1F3FB","non_qualified":null,"image":"1f44f-1f3fb.png","sheet_x":13,"sheet_y":3,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F44F-1F3FC","non_qualified":null,"image":"1f44f-1f3fc.png","sheet_x":13,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F44F-1F3FD","non_qualified":null,"image":"1f44f-1f3fd.png","sheet_x":13,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F44F-1F3FE","non_qualified":null,"image":"1f44f-1f3fe.png","sheet_x":13,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F44F-1F3FF","non_qualified":null,"image":"1f44f-1f3ff.png","sheet_x":13,"sheet_y":7,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Clapping Hands Sign","b":"1F44F","d":true,"e":true,"f":true,"h":true,"j":["clapping_hands","hands","praise","applause","congrats","yay"],"k":[13,2],"o":0},"raised_hands":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F64C-1F3FB","non_qualified":null,"image":"1f64c-1f3fb.png","sheet_x":34,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64C-1F3FC","non_qualified":null,"image":"1f64c-1f3fc.png","sheet_x":34,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64C-1F3FD","non_qualified":null,"image":"1f64c-1f3fd.png","sheet_x":34,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64C-1F3FE","non_qualified":null,"image":"1f64c-1f3fe.png","sheet_x":34,"sheet_y":50,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64C-1F3FF","non_qualified":null,"image":"1f64c-1f3ff.png","sheet_x":34,"sheet_y":51,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person Raising Both Hands in Celebration","b":"1F64C","d":true,"e":true,"f":true,"h":true,"j":["raising_hands","gesture","hooray","yea","celebration","hands"],"k":[34,46],"o":0},"heart_hands":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1FAF6-1F3FB","non_qualified":null,"image":"1faf6-1f3fb.png","sheet_x":56,"sheet_y":15,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAF6-1F3FC","non_qualified":null,"image":"1faf6-1f3fc.png","sheet_x":56,"sheet_y":16,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAF6-1F3FD","non_qualified":null,"image":"1faf6-1f3fd.png","sheet_x":56,"sheet_y":17,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAF6-1F3FE","non_qualified":null,"image":"1faf6-1f3fe.png","sheet_x":56,"sheet_y":18,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAF6-1F3FF","non_qualified":null,"image":"1faf6-1f3ff.png","sheet_x":56,"sheet_y":19,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Heart Hands","b":"1FAF6","d":true,"e":true,"f":true,"h":true,"j":["heart hands","love","appreciation","support"],"k":[56,14],"o":14},"open_hands":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F450-1F3FB","non_qualified":null,"image":"1f450-1f3fb.png","sheet_x":13,"sheet_y":9,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F450-1F3FC","non_qualified":null,"image":"1f450-1f3fc.png","sheet_x":13,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F450-1F3FD","non_qualified":null,"image":"1f450-1f3fd.png","sheet_x":13,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F450-1F3FE","non_qualified":null,"image":"1f450-1f3fe.png","sheet_x":13,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F450-1F3FF","non_qualified":null,"image":"1f450-1f3ff.png","sheet_x":13,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Open Hands Sign","b":"1F450","d":true,"e":true,"f":true,"h":true,"j":["open_hands","fingers","butterfly","hands","open"],"k":[13,8],"o":0},"palms_up_together":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F932-1F3FB","non_qualified":null,"image":"1f932-1f3fb.png","sheet_x":40,"sheet_y":60,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F932-1F3FC","non_qualified":null,"image":"1f932-1f3fc.png","sheet_x":41,"sheet_y":0,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F932-1F3FD","non_qualified":null,"image":"1f932-1f3fd.png","sheet_x":41,"sheet_y":1,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F932-1F3FE","non_qualified":null,"image":"1f932-1f3fe.png","sheet_x":41,"sheet_y":2,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F932-1F3FF","non_qualified":null,"image":"1f932-1f3ff.png","sheet_x":41,"sheet_y":3,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Palms Up Together","b":"1F932","d":true,"e":true,"f":true,"h":true,"j":["palms_up_together","hands","gesture","cupped","prayer"],"k":[40,59],"o":5},"handshake":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F91D-1F3FB","non_qualified":null,"image":"1f91d-1f3fb.png","sheet_x":39,"sheet_y":38,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F91D-1F3FC","non_qualified":null,"image":"1f91d-1f3fc.png","sheet_x":39,"sheet_y":39,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F91D-1F3FD","non_qualified":null,"image":"1f91d-1f3fd.png","sheet_x":39,"sheet_y":40,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F91D-1F3FE","non_qualified":null,"image":"1f91d-1f3fe.png","sheet_x":39,"sheet_y":41,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F91D-1F3FF","non_qualified":null,"image":"1f91d-1f3ff.png","sheet_x":39,"sheet_y":42,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1FAF1-1F3FB-200D-1FAF2-1F3FC","non_qualified":null,"image":"1faf1-1f3fb-200d-1faf2-1f3fc.png","sheet_x":39,"sheet_y":43,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1FAF1-1F3FB-200D-1FAF2-1F3FD","non_qualified":null,"image":"1faf1-1f3fb-200d-1faf2-1f3fd.png","sheet_x":39,"sheet_y":44,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1FAF1-1F3FB-200D-1FAF2-1F3FE","non_qualified":null,"image":"1faf1-1f3fb-200d-1faf2-1f3fe.png","sheet_x":39,"sheet_y":45,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1FAF1-1F3FB-200D-1FAF2-1F3FF","non_qualified":null,"image":"1faf1-1f3fb-200d-1faf2-1f3ff.png","sheet_x":39,"sheet_y":46,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1FAF1-1F3FC-200D-1FAF2-1F3FB","non_qualified":null,"image":"1faf1-1f3fc-200d-1faf2-1f3fb.png","sheet_x":39,"sheet_y":47,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1FAF1-1F3FC-200D-1FAF2-1F3FD","non_qualified":null,"image":"1faf1-1f3fc-200d-1faf2-1f3fd.png","sheet_x":39,"sheet_y":48,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1FAF1-1F3FC-200D-1FAF2-1F3FE","non_qualified":null,"image":"1faf1-1f3fc-200d-1faf2-1f3fe.png","sheet_x":39,"sheet_y":49,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1FAF1-1F3FC-200D-1FAF2-1F3FF","non_qualified":null,"image":"1faf1-1f3fc-200d-1faf2-1f3ff.png","sheet_x":39,"sheet_y":50,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1FAF1-1F3FD-200D-1FAF2-1F3FB","non_qualified":null,"image":"1faf1-1f3fd-200d-1faf2-1f3fb.png","sheet_x":39,"sheet_y":51,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1FAF1-1F3FD-200D-1FAF2-1F3FC","non_qualified":null,"image":"1faf1-1f3fd-200d-1faf2-1f3fc.png","sheet_x":39,"sheet_y":52,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1FAF1-1F3FD-200D-1FAF2-1F3FE","non_qualified":null,"image":"1faf1-1f3fd-200d-1faf2-1f3fe.png","sheet_x":39,"sheet_y":53,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1FAF1-1F3FD-200D-1FAF2-1F3FF","non_qualified":null,"image":"1faf1-1f3fd-200d-1faf2-1f3ff.png","sheet_x":39,"sheet_y":54,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1FAF1-1F3FE-200D-1FAF2-1F3FB","non_qualified":null,"image":"1faf1-1f3fe-200d-1faf2-1f3fb.png","sheet_x":39,"sheet_y":55,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1FAF1-1F3FE-200D-1FAF2-1F3FC","non_qualified":null,"image":"1faf1-1f3fe-200d-1faf2-1f3fc.png","sheet_x":39,"sheet_y":56,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1FAF1-1F3FE-200D-1FAF2-1F3FD","non_qualified":null,"image":"1faf1-1f3fe-200d-1faf2-1f3fd.png","sheet_x":39,"sheet_y":57,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1FAF1-1F3FE-200D-1FAF2-1F3FF","non_qualified":null,"image":"1faf1-1f3fe-200d-1faf2-1f3ff.png","sheet_x":39,"sheet_y":58,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1FAF1-1F3FF-200D-1FAF2-1F3FB","non_qualified":null,"image":"1faf1-1f3ff-200d-1faf2-1f3fb.png","sheet_x":39,"sheet_y":59,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1FAF1-1F3FF-200D-1FAF2-1F3FC","non_qualified":null,"image":"1faf1-1f3ff-200d-1faf2-1f3fc.png","sheet_x":39,"sheet_y":60,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1FAF1-1F3FF-200D-1FAF2-1F3FD","non_qualified":null,"image":"1faf1-1f3ff-200d-1faf2-1f3fd.png","sheet_x":40,"sheet_y":0,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1FAF1-1F3FF-200D-1FAF2-1F3FE","non_qualified":null,"image":"1faf1-1f3ff-200d-1faf2-1f3fe.png","sheet_x":40,"sheet_y":1,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Handshake","b":"1F91D","d":true,"e":true,"f":true,"h":true,"j":["handshake","agreement","shake"],"k":[39,37],"o":3},"pray":{"subcategory":"hands","skin_variations":{"1F3FB":{"unified":"1F64F-1F3FB","non_qualified":null,"image":"1f64f-1f3fb.png","sheet_x":35,"sheet_y":28,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64F-1F3FC","non_qualified":null,"image":"1f64f-1f3fc.png","sheet_x":35,"sheet_y":29,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64F-1F3FD","non_qualified":null,"image":"1f64f-1f3fd.png","sheet_x":35,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64F-1F3FE","non_qualified":null,"image":"1f64f-1f3fe.png","sheet_x":35,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64F-1F3FF","non_qualified":null,"image":"1f64f-1f3ff.png","sheet_x":35,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person with Folded Hands","b":"1F64F","d":true,"e":true,"f":true,"h":true,"j":["folded_hands","please","hope","wish","namaste","highfive","pray","thank you","thanks","appreciate"],"k":[35,27],"o":0},"writing_hand":{"subcategory":"hand-prop","skin_variations":{"1F3FB":{"unified":"270D-1F3FB","non_qualified":null,"image":"270d-1f3fb.png","sheet_x":59,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"270D-1F3FC","non_qualified":null,"image":"270d-1f3fc.png","sheet_x":59,"sheet_y":17,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"270D-1F3FD","non_qualified":null,"image":"270d-1f3fd.png","sheet_x":59,"sheet_y":18,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"270D-1F3FE","non_qualified":null,"image":"270d-1f3fe.png","sheet_x":59,"sheet_y":19,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"270D-1F3FF","non_qualified":null,"image":"270d-1f3ff.png","sheet_x":59,"sheet_y":20,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Writing Hand","b":"270D-FE0F","c":"270D","d":true,"e":true,"f":true,"h":true,"j":["writing_hand","lower_left_ballpoint_pen","stationery","write","compose"],"k":[59,15],"o":0},"nail_care":{"subcategory":"hand-prop","skin_variations":{"1F3FB":{"unified":"1F485-1F3FB","non_qualified":null,"image":"1f485-1f3fb.png","sheet_x":25,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F485-1F3FC","non_qualified":null,"image":"1f485-1f3fc.png","sheet_x":25,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F485-1F3FD","non_qualified":null,"image":"1f485-1f3fd.png","sheet_x":25,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F485-1F3FE","non_qualified":null,"image":"1f485-1f3fe.png","sheet_x":25,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F485-1F3FF","non_qualified":null,"image":"1f485-1f3ff.png","sheet_x":25,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Nail Polish","b":"1F485","d":true,"e":true,"f":true,"h":true,"j":["nail_polish","nail_care","beauty","manicure","finger","fashion","nail","slay"],"k":[25,54],"o":0},"selfie":{"subcategory":"hand-prop","skin_variations":{"1F3FB":{"unified":"1F933-1F3FB","non_qualified":null,"image":"1f933-1f3fb.png","sheet_x":41,"sheet_y":5,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F933-1F3FC","non_qualified":null,"image":"1f933-1f3fc.png","sheet_x":41,"sheet_y":6,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F933-1F3FD","non_qualified":null,"image":"1f933-1f3fd.png","sheet_x":41,"sheet_y":7,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F933-1F3FE","non_qualified":null,"image":"1f933-1f3fe.png","sheet_x":41,"sheet_y":8,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F933-1F3FF","non_qualified":null,"image":"1f933-1f3ff.png","sheet_x":41,"sheet_y":9,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Selfie","b":"1F933","d":true,"e":true,"f":true,"h":true,"j":["selfie","camera","phone"],"k":[41,4],"o":3},"muscle":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F4AA-1F3FB","non_qualified":null,"image":"1f4aa-1f3fb.png","sheet_x":27,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F4AA-1F3FC","non_qualified":null,"image":"1f4aa-1f3fc.png","sheet_x":27,"sheet_y":60,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F4AA-1F3FD","non_qualified":null,"image":"1f4aa-1f3fd.png","sheet_x":28,"sheet_y":0,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F4AA-1F3FE","non_qualified":null,"image":"1f4aa-1f3fe.png","sheet_x":28,"sheet_y":1,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F4AA-1F3FF","non_qualified":null,"image":"1f4aa-1f3ff.png","sheet_x":28,"sheet_y":2,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Flexed Biceps","b":"1F4AA","d":true,"e":true,"f":true,"h":true,"j":["flexed_biceps","arm","flex","hand","summer","strong","biceps"],"k":[27,58],"o":0},"mechanical_arm":{"subcategory":"body-parts","a":"Mechanical Arm","b":"1F9BE","d":true,"e":true,"f":true,"h":true,"j":["mechanical_arm","accessibility"],"k":[46,5],"o":12},"mechanical_leg":{"subcategory":"body-parts","a":"Mechanical Leg","b":"1F9BF","d":true,"e":true,"f":true,"h":true,"j":["mechanical_leg","accessibility"],"k":[46,6],"o":12},"leg":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F9B5-1F3FB","non_qualified":null,"image":"1f9b5-1f3fb.png","sheet_x":45,"sheet_y":9,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B5-1F3FC","non_qualified":null,"image":"1f9b5-1f3fc.png","sheet_x":45,"sheet_y":10,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B5-1F3FD","non_qualified":null,"image":"1f9b5-1f3fd.png","sheet_x":45,"sheet_y":11,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B5-1F3FE","non_qualified":null,"image":"1f9b5-1f3fe.png","sheet_x":45,"sheet_y":12,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B5-1F3FF","non_qualified":null,"image":"1f9b5-1f3ff.png","sheet_x":45,"sheet_y":13,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Leg","b":"1F9B5","d":true,"e":true,"f":true,"h":true,"j":["leg","kick","limb"],"k":[45,8],"o":11},"foot":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F9B6-1F3FB","non_qualified":null,"image":"1f9b6-1f3fb.png","sheet_x":45,"sheet_y":15,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B6-1F3FC","non_qualified":null,"image":"1f9b6-1f3fc.png","sheet_x":45,"sheet_y":16,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B6-1F3FD","non_qualified":null,"image":"1f9b6-1f3fd.png","sheet_x":45,"sheet_y":17,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B6-1F3FE","non_qualified":null,"image":"1f9b6-1f3fe.png","sheet_x":45,"sheet_y":18,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B6-1F3FF","non_qualified":null,"image":"1f9b6-1f3ff.png","sheet_x":45,"sheet_y":19,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Foot","b":"1F9B6","d":true,"e":true,"f":true,"h":true,"j":["foot","kick","stomp"],"k":[45,14],"o":11},"ear":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F442-1F3FB","non_qualified":null,"image":"1f442-1f3fb.png","sheet_x":11,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F442-1F3FC","non_qualified":null,"image":"1f442-1f3fc.png","sheet_x":11,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F442-1F3FD","non_qualified":null,"image":"1f442-1f3fd.png","sheet_x":11,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F442-1F3FE","non_qualified":null,"image":"1f442-1f3fe.png","sheet_x":11,"sheet_y":60,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F442-1F3FF","non_qualified":null,"image":"1f442-1f3ff.png","sheet_x":12,"sheet_y":0,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Ear","b":"1F442","d":true,"e":true,"f":true,"h":true,"j":["ear","face","hear","sound","listen"],"k":[11,56],"o":0},"ear_with_hearing_aid":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F9BB-1F3FB","non_qualified":null,"image":"1f9bb-1f3fb.png","sheet_x":45,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9BB-1F3FC","non_qualified":null,"image":"1f9bb-1f3fc.png","sheet_x":45,"sheet_y":60,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9BB-1F3FD","non_qualified":null,"image":"1f9bb-1f3fd.png","sheet_x":46,"sheet_y":0,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9BB-1F3FE","non_qualified":null,"image":"1f9bb-1f3fe.png","sheet_x":46,"sheet_y":1,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9BB-1F3FF","non_qualified":null,"image":"1f9bb-1f3ff.png","sheet_x":46,"sheet_y":2,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Ear with Hearing Aid","b":"1F9BB","d":true,"e":true,"f":true,"h":true,"j":["ear_with_hearing_aid","accessibility"],"k":[45,58],"o":12},"nose":{"subcategory":"body-parts","skin_variations":{"1F3FB":{"unified":"1F443-1F3FB","non_qualified":null,"image":"1f443-1f3fb.png","sheet_x":12,"sheet_y":2,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F443-1F3FC","non_qualified":null,"image":"1f443-1f3fc.png","sheet_x":12,"sheet_y":3,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F443-1F3FD","non_qualified":null,"image":"1f443-1f3fd.png","sheet_x":12,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F443-1F3FE","non_qualified":null,"image":"1f443-1f3fe.png","sheet_x":12,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F443-1F3FF","non_qualified":null,"image":"1f443-1f3ff.png","sheet_x":12,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Nose","b":"1F443","d":true,"e":true,"f":true,"h":true,"j":["nose","smell","sniff"],"k":[12,1],"o":0},"brain":{"subcategory":"body-parts","a":"Brain","b":"1F9E0","d":true,"e":true,"f":true,"h":true,"j":["brain","smart","intelligent"],"k":[53,16],"o":5},"anatomical_heart":{"subcategory":"body-parts","a":"Anatomical Heart","b":"1FAC0","d":true,"e":true,"f":true,"h":true,"j":["anatomical heart","health","heartbeat"],"k":[54,56],"o":13},"lungs":{"subcategory":"body-parts","a":"Lungs","b":"1FAC1","d":true,"e":true,"f":true,"h":true,"j":["lungs","breathe"],"k":[54,57],"o":13},"tooth":{"subcategory":"body-parts","a":"Tooth","b":"1F9B7","d":true,"e":true,"f":true,"h":true,"j":["tooth","teeth","dentist"],"k":[45,20],"o":11},"bone":{"subcategory":"body-parts","a":"Bone","b":"1F9B4","d":true,"e":true,"f":true,"h":true,"j":["bone","skeleton"],"k":[45,7],"o":11},"eyes":{"subcategory":"body-parts","a":"Eyes","b":"1F440","d":true,"e":true,"f":true,"h":true,"j":["eyes","look","watch","stalk","peek","see"],"k":[11,53],"o":0},"eye":{"subcategory":"body-parts","a":"Eye","b":"1F441-FE0F","c":"1F441","d":true,"e":true,"f":true,"h":true,"j":["eye","face","look","see","watch","stare"],"k":[11,55],"o":0},"tongue":{"subcategory":"body-parts","a":"Tongue","b":"1F445","d":true,"e":true,"f":true,"h":true,"j":["tongue","mouth","playful"],"k":[12,8],"o":0},"lips":{"subcategory":"body-parts","a":"Mouth","b":"1F444","d":true,"e":true,"f":true,"h":true,"j":["mouth","kiss"],"k":[12,7],"o":0},"biting_lip":{"subcategory":"body-parts","a":"Biting Lip","b":"1FAE6","d":true,"e":true,"f":true,"h":true,"j":["biting lip","flirt","sexy","pain","worry"],"k":[55,36],"o":14},"baby":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F476-1F3FB","non_qualified":null,"image":"1f476-1f3fb.png","sheet_x":24,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F476-1F3FC","non_qualified":null,"image":"1f476-1f3fc.png","sheet_x":24,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F476-1F3FD","non_qualified":null,"image":"1f476-1f3fd.png","sheet_x":24,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F476-1F3FE","non_qualified":null,"image":"1f476-1f3fe.png","sheet_x":24,"sheet_y":33,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F476-1F3FF","non_qualified":null,"image":"1f476-1f3ff.png","sheet_x":24,"sheet_y":34,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Baby","b":"1F476","d":true,"e":true,"f":true,"h":true,"j":["baby","child","boy","girl","toddler"],"k":[24,29],"o":0},"child":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D2-1F3FB","non_qualified":null,"image":"1f9d2-1f3fb.png","sheet_x":50,"sheet_y":14,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D2-1F3FC","non_qualified":null,"image":"1f9d2-1f3fc.png","sheet_x":50,"sheet_y":15,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D2-1F3FD","non_qualified":null,"image":"1f9d2-1f3fd.png","sheet_x":50,"sheet_y":16,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D2-1F3FE","non_qualified":null,"image":"1f9d2-1f3fe.png","sheet_x":50,"sheet_y":17,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D2-1F3FF","non_qualified":null,"image":"1f9d2-1f3ff.png","sheet_x":50,"sheet_y":18,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Child","b":"1F9D2","d":true,"e":true,"f":true,"h":true,"j":["child","gender-neutral","young"],"k":[50,13],"o":5},"boy":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F466-1F3FB","non_qualified":null,"image":"1f466-1f3fb.png","sheet_x":13,"sheet_y":36,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F466-1F3FC","non_qualified":null,"image":"1f466-1f3fc.png","sheet_x":13,"sheet_y":37,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F466-1F3FD","non_qualified":null,"image":"1f466-1f3fd.png","sheet_x":13,"sheet_y":38,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F466-1F3FE","non_qualified":null,"image":"1f466-1f3fe.png","sheet_x":13,"sheet_y":39,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F466-1F3FF","non_qualified":null,"image":"1f466-1f3ff.png","sheet_x":13,"sheet_y":40,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Boy","b":"1F466","d":true,"e":true,"f":true,"h":true,"j":["boy","man","male","guy","teenager"],"k":[13,35],"o":0},"girl":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F467-1F3FB","non_qualified":null,"image":"1f467-1f3fb.png","sheet_x":13,"sheet_y":42,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F467-1F3FC","non_qualified":null,"image":"1f467-1f3fc.png","sheet_x":13,"sheet_y":43,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F467-1F3FD","non_qualified":null,"image":"1f467-1f3fd.png","sheet_x":13,"sheet_y":44,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F467-1F3FE","non_qualified":null,"image":"1f467-1f3fe.png","sheet_x":13,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F467-1F3FF","non_qualified":null,"image":"1f467-1f3ff.png","sheet_x":13,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Girl","b":"1F467","d":true,"e":true,"f":true,"h":true,"j":["girl","female","woman","teenager"],"k":[13,41],"o":0},"adult":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3fb.png","sheet_x":50,"sheet_y":8,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3fc.png","sheet_x":50,"sheet_y":9,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3fd.png","sheet_x":50,"sheet_y":10,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3fe.png","sheet_x":50,"sheet_y":11,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3ff.png","sheet_x":50,"sheet_y":12,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Adult","b":"1F9D1","d":true,"e":true,"f":true,"h":true,"j":["person","gender-neutral"],"k":[50,7],"o":5},"person_with_blond_hair":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F471-1F3FB","non_qualified":null,"image":"1f471-1f3fb.png","sheet_x":23,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F471-1F3FC","non_qualified":null,"image":"1f471-1f3fc.png","sheet_x":23,"sheet_y":50,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F471-1F3FD","non_qualified":null,"image":"1f471-1f3fd.png","sheet_x":23,"sheet_y":51,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F471-1F3FE","non_qualified":null,"image":"1f471-1f3fe.png","sheet_x":23,"sheet_y":52,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F471-1F3FF","non_qualified":null,"image":"1f471-1f3ff.png","sheet_x":23,"sheet_y":53,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F471-200D-2642-FE0F","a":"Person with Blond Hair","b":"1F471","d":true,"e":true,"f":true,"h":true,"j":["person_blond_hair","hairstyle"],"k":[23,48],"o":0},"man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB","non_qualified":null,"image":"1f468-1f3fb.png","sheet_x":17,"sheet_y":15,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC","non_qualified":null,"image":"1f468-1f3fc.png","sheet_x":17,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD","non_qualified":null,"image":"1f468-1f3fd.png","sheet_x":17,"sheet_y":17,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE","non_qualified":null,"image":"1f468-1f3fe.png","sheet_x":17,"sheet_y":18,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF","non_qualified":null,"image":"1f468-1f3ff.png","sheet_x":17,"sheet_y":19,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man","b":"1F468","d":true,"e":true,"f":true,"h":true,"j":["man","mustache","father","dad","guy","classy","sir","moustache"],"k":[17,14],"o":0},"bearded_person":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D4-1F3FB","non_qualified":null,"image":"1f9d4-1f3fb.png","sheet_x":50,"sheet_y":38,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D4-1F3FC","non_qualified":null,"image":"1f9d4-1f3fc.png","sheet_x":50,"sheet_y":39,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D4-1F3FD","non_qualified":null,"image":"1f9d4-1f3fd.png","sheet_x":50,"sheet_y":40,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D4-1F3FE","non_qualified":null,"image":"1f9d4-1f3fe.png","sheet_x":50,"sheet_y":41,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D4-1F3FF","non_qualified":null,"image":"1f9d4-1f3ff.png","sheet_x":50,"sheet_y":42,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Bearded Person","b":"1F9D4","d":true,"e":true,"f":true,"h":true,"j":["man_beard","person","bewhiskered"],"k":[50,37],"o":5},"man_with_beard":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D4-1F3FB-200D-2642-FE0F","non_qualified":"1F9D4-1F3FB-200D-2642","image":"1f9d4-1f3fb-200d-2642-fe0f.png","sheet_x":50,"sheet_y":32,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D4-1F3FC-200D-2642-FE0F","non_qualified":"1F9D4-1F3FC-200D-2642","image":"1f9d4-1f3fc-200d-2642-fe0f.png","sheet_x":50,"sheet_y":33,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D4-1F3FD-200D-2642-FE0F","non_qualified":"1F9D4-1F3FD-200D-2642","image":"1f9d4-1f3fd-200d-2642-fe0f.png","sheet_x":50,"sheet_y":34,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D4-1F3FE-200D-2642-FE0F","non_qualified":"1F9D4-1F3FE-200D-2642","image":"1f9d4-1f3fe-200d-2642-fe0f.png","sheet_x":50,"sheet_y":35,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D4-1F3FF-200D-2642-FE0F","non_qualified":"1F9D4-1F3FF-200D-2642","image":"1f9d4-1f3ff-200d-2642-fe0f.png","sheet_x":50,"sheet_y":36,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man: Beard","b":"1F9D4-200D-2642-FE0F","c":"1F9D4-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man beard","facial hair"],"k":[50,31],"o":13},"woman_with_beard":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D4-1F3FB-200D-2640-FE0F","non_qualified":"1F9D4-1F3FB-200D-2640","image":"1f9d4-1f3fb-200d-2640-fe0f.png","sheet_x":50,"sheet_y":26,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D4-1F3FC-200D-2640-FE0F","non_qualified":"1F9D4-1F3FC-200D-2640","image":"1f9d4-1f3fc-200d-2640-fe0f.png","sheet_x":50,"sheet_y":27,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D4-1F3FD-200D-2640-FE0F","non_qualified":"1F9D4-1F3FD-200D-2640","image":"1f9d4-1f3fd-200d-2640-fe0f.png","sheet_x":50,"sheet_y":28,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D4-1F3FE-200D-2640-FE0F","non_qualified":"1F9D4-1F3FE-200D-2640","image":"1f9d4-1f3fe-200d-2640-fe0f.png","sheet_x":50,"sheet_y":29,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D4-1F3FF-200D-2640-FE0F","non_qualified":"1F9D4-1F3FF-200D-2640","image":"1f9d4-1f3ff-200d-2640-fe0f.png","sheet_x":50,"sheet_y":30,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: Beard","b":"1F9D4-200D-2640-FE0F","c":"1F9D4-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman beard","facial hair"],"k":[50,25],"o":13},"red_haired_man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9B0","non_qualified":null,"image":"1f468-1f3fb-200d-1f9b0.png","sheet_x":15,"sheet_y":31,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9B0","non_qualified":null,"image":"1f468-1f3fc-200d-1f9b0.png","sheet_x":15,"sheet_y":32,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9B0","non_qualified":null,"image":"1f468-1f3fd-200d-1f9b0.png","sheet_x":15,"sheet_y":33,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9B0","non_qualified":null,"image":"1f468-1f3fe-200d-1f9b0.png","sheet_x":15,"sheet_y":34,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9B0","non_qualified":null,"image":"1f468-1f3ff-200d-1f9b0.png","sheet_x":15,"sheet_y":35,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man: Red Hair","b":"1F468-200D-1F9B0","d":true,"e":true,"f":true,"h":true,"j":["man_red_hair","hairstyle"],"k":[15,30],"o":11},"curly_haired_man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9B1","non_qualified":null,"image":"1f468-1f3fb-200d-1f9b1.png","sheet_x":15,"sheet_y":37,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9B1","non_qualified":null,"image":"1f468-1f3fc-200d-1f9b1.png","sheet_x":15,"sheet_y":38,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9B1","non_qualified":null,"image":"1f468-1f3fd-200d-1f9b1.png","sheet_x":15,"sheet_y":39,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9B1","non_qualified":null,"image":"1f468-1f3fe-200d-1f9b1.png","sheet_x":15,"sheet_y":40,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9B1","non_qualified":null,"image":"1f468-1f3ff-200d-1f9b1.png","sheet_x":15,"sheet_y":41,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man: Curly Hair","b":"1F468-200D-1F9B1","d":true,"e":true,"f":true,"h":true,"j":["man_curly_hair","hairstyle"],"k":[15,36],"o":11},"white_haired_man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9B3","non_qualified":null,"image":"1f468-1f3fb-200d-1f9b3.png","sheet_x":15,"sheet_y":49,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9B3","non_qualified":null,"image":"1f468-1f3fc-200d-1f9b3.png","sheet_x":15,"sheet_y":50,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9B3","non_qualified":null,"image":"1f468-1f3fd-200d-1f9b3.png","sheet_x":15,"sheet_y":51,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9B3","non_qualified":null,"image":"1f468-1f3fe-200d-1f9b3.png","sheet_x":15,"sheet_y":52,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9B3","non_qualified":null,"image":"1f468-1f3ff-200d-1f9b3.png","sheet_x":15,"sheet_y":53,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man: White Hair","b":"1F468-200D-1F9B3","d":true,"e":true,"f":true,"h":true,"j":["man_white_hair","old","elder"],"k":[15,48],"o":11},"bald_man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9B2","non_qualified":null,"image":"1f468-1f3fb-200d-1f9b2.png","sheet_x":15,"sheet_y":43,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9B2","non_qualified":null,"image":"1f468-1f3fc-200d-1f9b2.png","sheet_x":15,"sheet_y":44,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9B2","non_qualified":null,"image":"1f468-1f3fd-200d-1f9b2.png","sheet_x":15,"sheet_y":45,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9B2","non_qualified":null,"image":"1f468-1f3fe-200d-1f9b2.png","sheet_x":15,"sheet_y":46,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9B2","non_qualified":null,"image":"1f468-1f3ff-200d-1f9b2.png","sheet_x":15,"sheet_y":47,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man: Bald","b":"1F468-200D-1F9B2","d":true,"e":true,"f":true,"h":true,"j":["man_bald","hairless"],"k":[15,42],"o":11},"woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB","non_qualified":null,"image":"1f469-1f3fb.png","sheet_x":21,"sheet_y":35,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC","non_qualified":null,"image":"1f469-1f3fc.png","sheet_x":21,"sheet_y":36,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD","non_qualified":null,"image":"1f469-1f3fd.png","sheet_x":21,"sheet_y":37,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE","non_qualified":null,"image":"1f469-1f3fe.png","sheet_x":21,"sheet_y":38,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF","non_qualified":null,"image":"1f469-1f3ff.png","sheet_x":21,"sheet_y":39,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman","b":"1F469","d":true,"e":true,"f":true,"h":true,"j":["woman","female","girls","lady"],"k":[21,34],"o":0},"red_haired_woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9B0","non_qualified":null,"image":"1f469-1f3fb-200d-1f9b0.png","sheet_x":18,"sheet_y":60,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9B0","non_qualified":null,"image":"1f469-1f3fc-200d-1f9b0.png","sheet_x":19,"sheet_y":0,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9B0","non_qualified":null,"image":"1f469-1f3fd-200d-1f9b0.png","sheet_x":19,"sheet_y":1,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9B0","non_qualified":null,"image":"1f469-1f3fe-200d-1f9b0.png","sheet_x":19,"sheet_y":2,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9B0","non_qualified":null,"image":"1f469-1f3ff-200d-1f9b0.png","sheet_x":19,"sheet_y":3,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: Red Hair","b":"1F469-200D-1F9B0","d":true,"e":true,"f":true,"h":true,"j":["woman_red_hair","hairstyle"],"k":[18,59],"o":11},"red_haired_person":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9B0","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9b0.png","sheet_x":49,"sheet_y":15,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9B0","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9b0.png","sheet_x":49,"sheet_y":16,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9B0","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9b0.png","sheet_x":49,"sheet_y":17,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9B0","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9b0.png","sheet_x":49,"sheet_y":18,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9B0","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9b0.png","sheet_x":49,"sheet_y":19,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person: Red Hair","b":"1F9D1-200D-1F9B0","d":true,"e":true,"f":true,"h":true,"j":["person_red_hair","hairstyle"],"k":[49,14],"o":12},"curly_haired_woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9B1","non_qualified":null,"image":"1f469-1f3fb-200d-1f9b1.png","sheet_x":19,"sheet_y":5,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9B1","non_qualified":null,"image":"1f469-1f3fc-200d-1f9b1.png","sheet_x":19,"sheet_y":6,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9B1","non_qualified":null,"image":"1f469-1f3fd-200d-1f9b1.png","sheet_x":19,"sheet_y":7,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9B1","non_qualified":null,"image":"1f469-1f3fe-200d-1f9b1.png","sheet_x":19,"sheet_y":8,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9B1","non_qualified":null,"image":"1f469-1f3ff-200d-1f9b1.png","sheet_x":19,"sheet_y":9,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: Curly Hair","b":"1F469-200D-1F9B1","d":true,"e":true,"f":true,"h":true,"j":["woman_curly_hair","hairstyle"],"k":[19,4],"o":11},"curly_haired_person":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9B1","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9b1.png","sheet_x":49,"sheet_y":21,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9B1","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9b1.png","sheet_x":49,"sheet_y":22,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9B1","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9b1.png","sheet_x":49,"sheet_y":23,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9B1","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9b1.png","sheet_x":49,"sheet_y":24,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9B1","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9b1.png","sheet_x":49,"sheet_y":25,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person: Curly Hair","b":"1F9D1-200D-1F9B1","d":true,"e":true,"f":true,"h":true,"j":["person_curly_hair","hairstyle"],"k":[49,20],"o":12},"white_haired_woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9B3","non_qualified":null,"image":"1f469-1f3fb-200d-1f9b3.png","sheet_x":19,"sheet_y":17,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9B3","non_qualified":null,"image":"1f469-1f3fc-200d-1f9b3.png","sheet_x":19,"sheet_y":18,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9B3","non_qualified":null,"image":"1f469-1f3fd-200d-1f9b3.png","sheet_x":19,"sheet_y":19,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9B3","non_qualified":null,"image":"1f469-1f3fe-200d-1f9b3.png","sheet_x":19,"sheet_y":20,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9B3","non_qualified":null,"image":"1f469-1f3ff-200d-1f9b3.png","sheet_x":19,"sheet_y":21,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: White Hair","b":"1F469-200D-1F9B3","d":true,"e":true,"f":true,"h":true,"j":["woman_white_hair","old","elder"],"k":[19,16],"o":11},"white_haired_person":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9B3","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9b3.png","sheet_x":49,"sheet_y":33,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9B3","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9b3.png","sheet_x":49,"sheet_y":34,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9B3","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9b3.png","sheet_x":49,"sheet_y":35,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9B3","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9b3.png","sheet_x":49,"sheet_y":36,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9B3","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9b3.png","sheet_x":49,"sheet_y":37,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person: White Hair","b":"1F9D1-200D-1F9B3","d":true,"e":true,"f":true,"h":true,"j":["person_white_hair","elder","old"],"k":[49,32],"o":12},"bald_woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9B2","non_qualified":null,"image":"1f469-1f3fb-200d-1f9b2.png","sheet_x":19,"sheet_y":11,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9B2","non_qualified":null,"image":"1f469-1f3fc-200d-1f9b2.png","sheet_x":19,"sheet_y":12,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9B2","non_qualified":null,"image":"1f469-1f3fd-200d-1f9b2.png","sheet_x":19,"sheet_y":13,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9B2","non_qualified":null,"image":"1f469-1f3fe-200d-1f9b2.png","sheet_x":19,"sheet_y":14,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9B2","non_qualified":null,"image":"1f469-1f3ff-200d-1f9b2.png","sheet_x":19,"sheet_y":15,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: Bald","b":"1F469-200D-1F9B2","d":true,"e":true,"f":true,"h":true,"j":["woman_bald","hairless"],"k":[19,10],"o":11},"bald_person":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9B2","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9b2.png","sheet_x":49,"sheet_y":27,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9B2","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9b2.png","sheet_x":49,"sheet_y":28,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9B2","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9b2.png","sheet_x":49,"sheet_y":29,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9B2","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9b2.png","sheet_x":49,"sheet_y":30,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9B2","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9b2.png","sheet_x":49,"sheet_y":31,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person: Bald","b":"1F9D1-200D-1F9B2","d":true,"e":true,"f":true,"h":true,"j":["person_bald","hairless"],"k":[49,26],"o":12},"blond-haired-woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2640-FE0F","non_qualified":"1F471-1F3FB-200D-2640","image":"1f471-1f3fb-200d-2640-fe0f.png","sheet_x":23,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F471-1F3FC-200D-2640-FE0F","non_qualified":"1F471-1F3FC-200D-2640","image":"1f471-1f3fc-200d-2640-fe0f.png","sheet_x":23,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F471-1F3FD-200D-2640-FE0F","non_qualified":"1F471-1F3FD-200D-2640","image":"1f471-1f3fd-200d-2640-fe0f.png","sheet_x":23,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F471-1F3FE-200D-2640-FE0F","non_qualified":"1F471-1F3FE-200D-2640","image":"1f471-1f3fe-200d-2640-fe0f.png","sheet_x":23,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F471-1F3FF-200D-2640-FE0F","non_qualified":"1F471-1F3FF-200D-2640","image":"1f471-1f3ff-200d-2640-fe0f.png","sheet_x":23,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman: Blond Hair","b":"1F471-200D-2640-FE0F","c":"1F471-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_blond_hair","woman","female","girl","blonde","person"],"k":[23,36],"o":4},"blond-haired-man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2642-FE0F","non_qualified":"1F471-1F3FB-200D-2642","image":"1f471-1f3fb-200d-2642-fe0f.png","sheet_x":23,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F471-1F3FC-200D-2642-FE0F","non_qualified":"1F471-1F3FC-200D-2642","image":"1f471-1f3fc-200d-2642-fe0f.png","sheet_x":23,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F471-1F3FD-200D-2642-FE0F","non_qualified":"1F471-1F3FD-200D-2642","image":"1f471-1f3fd-200d-2642-fe0f.png","sheet_x":23,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F471-1F3FE-200D-2642-FE0F","non_qualified":"1F471-1F3FE-200D-2642","image":"1f471-1f3fe-200d-2642-fe0f.png","sheet_x":23,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F471-1F3FF-200D-2642-FE0F","non_qualified":"1F471-1F3FF-200D-2642","image":"1f471-1f3ff-200d-2642-fe0f.png","sheet_x":23,"sheet_y":47,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F471","a":"Man: Blond Hair","b":"1F471-200D-2642-FE0F","c":"1F471-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_blond_hair","man","male","boy","blonde","guy","person"],"k":[23,42],"o":4},"older_adult":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F9D3-1F3FB","non_qualified":null,"image":"1f9d3-1f3fb.png","sheet_x":50,"sheet_y":20,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D3-1F3FC","non_qualified":null,"image":"1f9d3-1f3fc.png","sheet_x":50,"sheet_y":21,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D3-1F3FD","non_qualified":null,"image":"1f9d3-1f3fd.png","sheet_x":50,"sheet_y":22,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D3-1F3FE","non_qualified":null,"image":"1f9d3-1f3fe.png","sheet_x":50,"sheet_y":23,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D3-1F3FF","non_qualified":null,"image":"1f9d3-1f3ff.png","sheet_x":50,"sheet_y":24,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Older Adult","b":"1F9D3","d":true,"e":true,"f":true,"h":true,"j":["older_person","human","elder","senior","gender-neutral"],"k":[50,19],"o":5},"older_man":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F474-1F3FB","non_qualified":null,"image":"1f474-1f3fb.png","sheet_x":24,"sheet_y":18,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F474-1F3FC","non_qualified":null,"image":"1f474-1f3fc.png","sheet_x":24,"sheet_y":19,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F474-1F3FD","non_qualified":null,"image":"1f474-1f3fd.png","sheet_x":24,"sheet_y":20,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F474-1F3FE","non_qualified":null,"image":"1f474-1f3fe.png","sheet_x":24,"sheet_y":21,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F474-1F3FF","non_qualified":null,"image":"1f474-1f3ff.png","sheet_x":24,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Older Man","b":"1F474","d":true,"e":true,"f":true,"h":true,"j":["old_man","human","male","men","old","elder","senior"],"k":[24,17],"o":0},"older_woman":{"subcategory":"person","skin_variations":{"1F3FB":{"unified":"1F475-1F3FB","non_qualified":null,"image":"1f475-1f3fb.png","sheet_x":24,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F475-1F3FC","non_qualified":null,"image":"1f475-1f3fc.png","sheet_x":24,"sheet_y":25,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F475-1F3FD","non_qualified":null,"image":"1f475-1f3fd.png","sheet_x":24,"sheet_y":26,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F475-1F3FE","non_qualified":null,"image":"1f475-1f3fe.png","sheet_x":24,"sheet_y":27,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F475-1F3FF","non_qualified":null,"image":"1f475-1f3ff.png","sheet_x":24,"sheet_y":28,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Older Woman","b":"1F475","d":true,"e":true,"f":true,"h":true,"j":["old_woman","human","female","women","lady","old","elder","senior"],"k":[24,23],"o":0},"person_frowning":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB","non_qualified":null,"image":"1f64d-1f3fb.png","sheet_x":35,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64D-1F3FC","non_qualified":null,"image":"1f64d-1f3fc.png","sheet_x":35,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64D-1F3FD","non_qualified":null,"image":"1f64d-1f3fd.png","sheet_x":35,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64D-1F3FE","non_qualified":null,"image":"1f64d-1f3fe.png","sheet_x":35,"sheet_y":7,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64D-1F3FF","non_qualified":null,"image":"1f64d-1f3ff.png","sheet_x":35,"sheet_y":8,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F64D-200D-2640-FE0F","a":"Person Frowning","b":"1F64D","d":true,"e":true,"f":true,"h":true,"j":["person_frowning","worried"],"k":[35,3],"o":0},"man-frowning":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2642-FE0F","non_qualified":"1F64D-1F3FB-200D-2642","image":"1f64d-1f3fb-200d-2642-fe0f.png","sheet_x":34,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64D-1F3FC-200D-2642-FE0F","non_qualified":"1F64D-1F3FC-200D-2642","image":"1f64d-1f3fc-200d-2642-fe0f.png","sheet_x":34,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64D-1F3FD-200D-2642-FE0F","non_qualified":"1F64D-1F3FD-200D-2642","image":"1f64d-1f3fd-200d-2642-fe0f.png","sheet_x":35,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64D-1F3FE-200D-2642-FE0F","non_qualified":"1F64D-1F3FE-200D-2642","image":"1f64d-1f3fe-200d-2642-fe0f.png","sheet_x":35,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64D-1F3FF-200D-2642-FE0F","non_qualified":"1F64D-1F3FF-200D-2642","image":"1f64d-1f3ff-200d-2642-fe0f.png","sheet_x":35,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Frowning","b":"1F64D-200D-2642-FE0F","c":"1F64D-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_frowning","male","boy","man","sad","depressed","discouraged","unhappy"],"k":[34,58],"o":4},"woman-frowning":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2640-FE0F","non_qualified":"1F64D-1F3FB-200D-2640","image":"1f64d-1f3fb-200d-2640-fe0f.png","sheet_x":34,"sheet_y":53,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64D-1F3FC-200D-2640-FE0F","non_qualified":"1F64D-1F3FC-200D-2640","image":"1f64d-1f3fc-200d-2640-fe0f.png","sheet_x":34,"sheet_y":54,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64D-1F3FD-200D-2640-FE0F","non_qualified":"1F64D-1F3FD-200D-2640","image":"1f64d-1f3fd-200d-2640-fe0f.png","sheet_x":34,"sheet_y":55,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64D-1F3FE-200D-2640-FE0F","non_qualified":"1F64D-1F3FE-200D-2640","image":"1f64d-1f3fe-200d-2640-fe0f.png","sheet_x":34,"sheet_y":56,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64D-1F3FF-200D-2640-FE0F","non_qualified":"1F64D-1F3FF-200D-2640","image":"1f64d-1f3ff-200d-2640-fe0f.png","sheet_x":34,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F64D","a":"Woman Frowning","b":"1F64D-200D-2640-FE0F","c":"1F64D-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_frowning","female","girl","woman","sad","depressed","discouraged","unhappy"],"k":[34,52],"o":4},"person_with_pouting_face":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB","non_qualified":null,"image":"1f64e-1f3fb.png","sheet_x":35,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64E-1F3FC","non_qualified":null,"image":"1f64e-1f3fc.png","sheet_x":35,"sheet_y":23,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64E-1F3FD","non_qualified":null,"image":"1f64e-1f3fd.png","sheet_x":35,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64E-1F3FE","non_qualified":null,"image":"1f64e-1f3fe.png","sheet_x":35,"sheet_y":25,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64E-1F3FF","non_qualified":null,"image":"1f64e-1f3ff.png","sheet_x":35,"sheet_y":26,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F64E-200D-2640-FE0F","a":"Person with Pouting Face","b":"1F64E","d":true,"e":true,"f":true,"h":true,"j":["person_pouting","upset"],"k":[35,21],"o":0},"man-pouting":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2642-FE0F","non_qualified":"1F64E-1F3FB-200D-2642","image":"1f64e-1f3fb-200d-2642-fe0f.png","sheet_x":35,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64E-1F3FC-200D-2642-FE0F","non_qualified":"1F64E-1F3FC-200D-2642","image":"1f64e-1f3fc-200d-2642-fe0f.png","sheet_x":35,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64E-1F3FD-200D-2642-FE0F","non_qualified":"1F64E-1F3FD-200D-2642","image":"1f64e-1f3fd-200d-2642-fe0f.png","sheet_x":35,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64E-1F3FE-200D-2642-FE0F","non_qualified":"1F64E-1F3FE-200D-2642","image":"1f64e-1f3fe-200d-2642-fe0f.png","sheet_x":35,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64E-1F3FF-200D-2642-FE0F","non_qualified":"1F64E-1F3FF-200D-2642","image":"1f64e-1f3ff-200d-2642-fe0f.png","sheet_x":35,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Pouting","b":"1F64E-200D-2642-FE0F","c":"1F64E-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_pouting","male","boy","man"],"k":[35,15],"o":4},"woman-pouting":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2640-FE0F","non_qualified":"1F64E-1F3FB-200D-2640","image":"1f64e-1f3fb-200d-2640-fe0f.png","sheet_x":35,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64E-1F3FC-200D-2640-FE0F","non_qualified":"1F64E-1F3FC-200D-2640","image":"1f64e-1f3fc-200d-2640-fe0f.png","sheet_x":35,"sheet_y":11,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64E-1F3FD-200D-2640-FE0F","non_qualified":"1F64E-1F3FD-200D-2640","image":"1f64e-1f3fd-200d-2640-fe0f.png","sheet_x":35,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64E-1F3FE-200D-2640-FE0F","non_qualified":"1F64E-1F3FE-200D-2640","image":"1f64e-1f3fe-200d-2640-fe0f.png","sheet_x":35,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64E-1F3FF-200D-2640-FE0F","non_qualified":"1F64E-1F3FF-200D-2640","image":"1f64e-1f3ff-200d-2640-fe0f.png","sheet_x":35,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F64E","a":"Woman Pouting","b":"1F64E-200D-2640-FE0F","c":"1F64E-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_pouting","female","girl","woman"],"k":[35,9],"o":4},"no_good":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F645-1F3FB","non_qualified":null,"image":"1f645-1f3fb.png","sheet_x":33,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F645-1F3FC","non_qualified":null,"image":"1f645-1f3fc.png","sheet_x":33,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F645-1F3FD","non_qualified":null,"image":"1f645-1f3fd.png","sheet_x":33,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F645-1F3FE","non_qualified":null,"image":"1f645-1f3fe.png","sheet_x":33,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F645-1F3FF","non_qualified":null,"image":"1f645-1f3ff.png","sheet_x":33,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F645-200D-2640-FE0F","a":"Face with No Good Gesture","b":"1F645","d":true,"e":true,"f":true,"h":true,"j":["person_gesturing_no","decline"],"k":[33,44],"o":0},"man-gesturing-no":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2642-FE0F","non_qualified":"1F645-1F3FB-200D-2642","image":"1f645-1f3fb-200d-2642-fe0f.png","sheet_x":33,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F645-1F3FC-200D-2642-FE0F","non_qualified":"1F645-1F3FC-200D-2642","image":"1f645-1f3fc-200d-2642-fe0f.png","sheet_x":33,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F645-1F3FD-200D-2642-FE0F","non_qualified":"1F645-1F3FD-200D-2642","image":"1f645-1f3fd-200d-2642-fe0f.png","sheet_x":33,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F645-1F3FE-200D-2642-FE0F","non_qualified":"1F645-1F3FE-200D-2642","image":"1f645-1f3fe-200d-2642-fe0f.png","sheet_x":33,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F645-1F3FF-200D-2642-FE0F","non_qualified":"1F645-1F3FF-200D-2642","image":"1f645-1f3ff-200d-2642-fe0f.png","sheet_x":33,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Gesturing No","b":"1F645-200D-2642-FE0F","c":"1F645-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_gesturing_no","male","boy","man","nope"],"k":[33,38],"o":4},"woman-gesturing-no":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2640-FE0F","non_qualified":"1F645-1F3FB-200D-2640","image":"1f645-1f3fb-200d-2640-fe0f.png","sheet_x":33,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F645-1F3FC-200D-2640-FE0F","non_qualified":"1F645-1F3FC-200D-2640","image":"1f645-1f3fc-200d-2640-fe0f.png","sheet_x":33,"sheet_y":34,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F645-1F3FD-200D-2640-FE0F","non_qualified":"1F645-1F3FD-200D-2640","image":"1f645-1f3fd-200d-2640-fe0f.png","sheet_x":33,"sheet_y":35,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F645-1F3FE-200D-2640-FE0F","non_qualified":"1F645-1F3FE-200D-2640","image":"1f645-1f3fe-200d-2640-fe0f.png","sheet_x":33,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F645-1F3FF-200D-2640-FE0F","non_qualified":"1F645-1F3FF-200D-2640","image":"1f645-1f3ff-200d-2640-fe0f.png","sheet_x":33,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F645","a":"Woman Gesturing No","b":"1F645-200D-2640-FE0F","c":"1F645-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_gesturing_no","female","girl","woman","nope"],"k":[33,32],"o":4},"ok_woman":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F646-1F3FB","non_qualified":null,"image":"1f646-1f3fb.png","sheet_x":34,"sheet_y":2,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F646-1F3FC","non_qualified":null,"image":"1f646-1f3fc.png","sheet_x":34,"sheet_y":3,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F646-1F3FD","non_qualified":null,"image":"1f646-1f3fd.png","sheet_x":34,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F646-1F3FE","non_qualified":null,"image":"1f646-1f3fe.png","sheet_x":34,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F646-1F3FF","non_qualified":null,"image":"1f646-1f3ff.png","sheet_x":34,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F646-200D-2640-FE0F","a":"Face with Ok Gesture","b":"1F646","d":true,"e":true,"f":true,"h":true,"j":["person_gesturing_ok","agree"],"k":[34,1],"o":0},"man-gesturing-ok":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2642-FE0F","non_qualified":"1F646-1F3FB-200D-2642","image":"1f646-1f3fb-200d-2642-fe0f.png","sheet_x":33,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F646-1F3FC-200D-2642-FE0F","non_qualified":"1F646-1F3FC-200D-2642","image":"1f646-1f3fc-200d-2642-fe0f.png","sheet_x":33,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F646-1F3FD-200D-2642-FE0F","non_qualified":"1F646-1F3FD-200D-2642","image":"1f646-1f3fd-200d-2642-fe0f.png","sheet_x":33,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F646-1F3FE-200D-2642-FE0F","non_qualified":"1F646-1F3FE-200D-2642","image":"1f646-1f3fe-200d-2642-fe0f.png","sheet_x":33,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F646-1F3FF-200D-2642-FE0F","non_qualified":"1F646-1F3FF-200D-2642","image":"1f646-1f3ff-200d-2642-fe0f.png","sheet_x":34,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Gesturing Ok","b":"1F646-200D-2642-FE0F","c":"1F646-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_gesturing_ok","men","boy","male","blue","human","man"],"k":[33,56],"o":4},"woman-gesturing-ok":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2640-FE0F","non_qualified":"1F646-1F3FB-200D-2640","image":"1f646-1f3fb-200d-2640-fe0f.png","sheet_x":33,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F646-1F3FC-200D-2640-FE0F","non_qualified":"1F646-1F3FC-200D-2640","image":"1f646-1f3fc-200d-2640-fe0f.png","sheet_x":33,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F646-1F3FD-200D-2640-FE0F","non_qualified":"1F646-1F3FD-200D-2640","image":"1f646-1f3fd-200d-2640-fe0f.png","sheet_x":33,"sheet_y":53,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F646-1F3FE-200D-2640-FE0F","non_qualified":"1F646-1F3FE-200D-2640","image":"1f646-1f3fe-200d-2640-fe0f.png","sheet_x":33,"sheet_y":54,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F646-1F3FF-200D-2640-FE0F","non_qualified":"1F646-1F3FF-200D-2640","image":"1f646-1f3ff-200d-2640-fe0f.png","sheet_x":33,"sheet_y":55,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F646","a":"Woman Gesturing Ok","b":"1F646-200D-2640-FE0F","c":"1F646-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_gesturing_ok","women","girl","female","pink","human","woman"],"k":[33,50],"o":4},"information_desk_person":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F481-1F3FB","non_qualified":null,"image":"1f481-1f3fb.png","sheet_x":25,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F481-1F3FC","non_qualified":null,"image":"1f481-1f3fc.png","sheet_x":25,"sheet_y":25,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F481-1F3FD","non_qualified":null,"image":"1f481-1f3fd.png","sheet_x":25,"sheet_y":26,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F481-1F3FE","non_qualified":null,"image":"1f481-1f3fe.png","sheet_x":25,"sheet_y":27,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F481-1F3FF","non_qualified":null,"image":"1f481-1f3ff.png","sheet_x":25,"sheet_y":28,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F481-200D-2640-FE0F","a":"Information Desk Person","b":"1F481","d":true,"e":true,"f":true,"h":true,"j":["person_tipping_hand","information"],"k":[25,23],"o":0},"man-tipping-hand":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2642-FE0F","non_qualified":"1F481-1F3FB-200D-2642","image":"1f481-1f3fb-200d-2642-fe0f.png","sheet_x":25,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F481-1F3FC-200D-2642-FE0F","non_qualified":"1F481-1F3FC-200D-2642","image":"1f481-1f3fc-200d-2642-fe0f.png","sheet_x":25,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F481-1F3FD-200D-2642-FE0F","non_qualified":"1F481-1F3FD-200D-2642","image":"1f481-1f3fd-200d-2642-fe0f.png","sheet_x":25,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F481-1F3FE-200D-2642-FE0F","non_qualified":"1F481-1F3FE-200D-2642","image":"1f481-1f3fe-200d-2642-fe0f.png","sheet_x":25,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F481-1F3FF-200D-2642-FE0F","non_qualified":"1F481-1F3FF-200D-2642","image":"1f481-1f3ff-200d-2642-fe0f.png","sheet_x":25,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Tipping Hand","b":"1F481-200D-2642-FE0F","c":"1F481-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_tipping_hand","male","boy","man","human","information"],"k":[25,17],"o":4},"woman-tipping-hand":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2640-FE0F","non_qualified":"1F481-1F3FB-200D-2640","image":"1f481-1f3fb-200d-2640-fe0f.png","sheet_x":25,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F481-1F3FC-200D-2640-FE0F","non_qualified":"1F481-1F3FC-200D-2640","image":"1f481-1f3fc-200d-2640-fe0f.png","sheet_x":25,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F481-1F3FD-200D-2640-FE0F","non_qualified":"1F481-1F3FD-200D-2640","image":"1f481-1f3fd-200d-2640-fe0f.png","sheet_x":25,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F481-1F3FE-200D-2640-FE0F","non_qualified":"1F481-1F3FE-200D-2640","image":"1f481-1f3fe-200d-2640-fe0f.png","sheet_x":25,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F481-1F3FF-200D-2640-FE0F","non_qualified":"1F481-1F3FF-200D-2640","image":"1f481-1f3ff-200d-2640-fe0f.png","sheet_x":25,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F481","a":"Woman Tipping Hand","b":"1F481-200D-2640-FE0F","c":"1F481-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_tipping_hand","female","girl","woman","human","information"],"k":[25,11],"o":4},"raising_hand":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB","non_qualified":null,"image":"1f64b-1f3fb.png","sheet_x":34,"sheet_y":41,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64B-1F3FC","non_qualified":null,"image":"1f64b-1f3fc.png","sheet_x":34,"sheet_y":42,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64B-1F3FD","non_qualified":null,"image":"1f64b-1f3fd.png","sheet_x":34,"sheet_y":43,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64B-1F3FE","non_qualified":null,"image":"1f64b-1f3fe.png","sheet_x":34,"sheet_y":44,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64B-1F3FF","non_qualified":null,"image":"1f64b-1f3ff.png","sheet_x":34,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F64B-200D-2640-FE0F","a":"Happy Person Raising One Hand","b":"1F64B","d":true,"e":true,"f":true,"h":true,"j":["person_raising_hand","question"],"k":[34,40],"o":0},"man-raising-hand":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2642-FE0F","non_qualified":"1F64B-1F3FB-200D-2642","image":"1f64b-1f3fb-200d-2642-fe0f.png","sheet_x":34,"sheet_y":35,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64B-1F3FC-200D-2642-FE0F","non_qualified":"1F64B-1F3FC-200D-2642","image":"1f64b-1f3fc-200d-2642-fe0f.png","sheet_x":34,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64B-1F3FD-200D-2642-FE0F","non_qualified":"1F64B-1F3FD-200D-2642","image":"1f64b-1f3fd-200d-2642-fe0f.png","sheet_x":34,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64B-1F3FE-200D-2642-FE0F","non_qualified":"1F64B-1F3FE-200D-2642","image":"1f64b-1f3fe-200d-2642-fe0f.png","sheet_x":34,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64B-1F3FF-200D-2642-FE0F","non_qualified":"1F64B-1F3FF-200D-2642","image":"1f64b-1f3ff-200d-2642-fe0f.png","sheet_x":34,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Raising Hand","b":"1F64B-200D-2642-FE0F","c":"1F64B-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_raising_hand","male","boy","man"],"k":[34,34],"o":4},"woman-raising-hand":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2640-FE0F","non_qualified":"1F64B-1F3FB-200D-2640","image":"1f64b-1f3fb-200d-2640-fe0f.png","sheet_x":34,"sheet_y":29,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F64B-1F3FC-200D-2640-FE0F","non_qualified":"1F64B-1F3FC-200D-2640","image":"1f64b-1f3fc-200d-2640-fe0f.png","sheet_x":34,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F64B-1F3FD-200D-2640-FE0F","non_qualified":"1F64B-1F3FD-200D-2640","image":"1f64b-1f3fd-200d-2640-fe0f.png","sheet_x":34,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F64B-1F3FE-200D-2640-FE0F","non_qualified":"1F64B-1F3FE-200D-2640","image":"1f64b-1f3fe-200d-2640-fe0f.png","sheet_x":34,"sheet_y":32,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F64B-1F3FF-200D-2640-FE0F","non_qualified":"1F64B-1F3FF-200D-2640","image":"1f64b-1f3ff-200d-2640-fe0f.png","sheet_x":34,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F64B","a":"Woman Raising Hand","b":"1F64B-200D-2640-FE0F","c":"1F64B-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_raising_hand","female","girl","woman"],"k":[34,28],"o":4},"deaf_person":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F9CF-1F3FB","non_qualified":null,"image":"1f9cf-1f3fb.png","sheet_x":47,"sheet_y":8,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CF-1F3FC","non_qualified":null,"image":"1f9cf-1f3fc.png","sheet_x":47,"sheet_y":9,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CF-1F3FD","non_qualified":null,"image":"1f9cf-1f3fd.png","sheet_x":47,"sheet_y":10,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CF-1F3FE","non_qualified":null,"image":"1f9cf-1f3fe.png","sheet_x":47,"sheet_y":11,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CF-1F3FF","non_qualified":null,"image":"1f9cf-1f3ff.png","sheet_x":47,"sheet_y":12,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Deaf Person","b":"1F9CF","d":true,"e":true,"f":true,"h":true,"j":["deaf_person","accessibility"],"k":[47,7],"o":12},"deaf_man":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F9CF-1F3FB-200D-2642-FE0F","non_qualified":"1F9CF-1F3FB-200D-2642","image":"1f9cf-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":2,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CF-1F3FC-200D-2642-FE0F","non_qualified":"1F9CF-1F3FC-200D-2642","image":"1f9cf-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":3,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CF-1F3FD-200D-2642-FE0F","non_qualified":"1F9CF-1F3FD-200D-2642","image":"1f9cf-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":4,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CF-1F3FE-200D-2642-FE0F","non_qualified":"1F9CF-1F3FE-200D-2642","image":"1f9cf-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":5,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CF-1F3FF-200D-2642-FE0F","non_qualified":"1F9CF-1F3FF-200D-2642","image":"1f9cf-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":6,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Deaf Man","b":"1F9CF-200D-2642-FE0F","c":"1F9CF-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["deaf_man","accessibility"],"k":[47,1],"o":12},"deaf_woman":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F9CF-1F3FB-200D-2640-FE0F","non_qualified":"1F9CF-1F3FB-200D-2640","image":"1f9cf-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CF-1F3FC-200D-2640-FE0F","non_qualified":"1F9CF-1F3FC-200D-2640","image":"1f9cf-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":58,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CF-1F3FD-200D-2640-FE0F","non_qualified":"1F9CF-1F3FD-200D-2640","image":"1f9cf-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CF-1F3FE-200D-2640-FE0F","non_qualified":"1F9CF-1F3FE-200D-2640","image":"1f9cf-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":60,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CF-1F3FF-200D-2640-FE0F","non_qualified":"1F9CF-1F3FF-200D-2640","image":"1f9cf-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":0,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Deaf Woman","b":"1F9CF-200D-2640-FE0F","c":"1F9CF-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["deaf_woman","accessibility"],"k":[46,56],"o":12},"bow":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F647-1F3FB","non_qualified":null,"image":"1f647-1f3fb.png","sheet_x":34,"sheet_y":20,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F647-1F3FC","non_qualified":null,"image":"1f647-1f3fc.png","sheet_x":34,"sheet_y":21,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F647-1F3FD","non_qualified":null,"image":"1f647-1f3fd.png","sheet_x":34,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F647-1F3FE","non_qualified":null,"image":"1f647-1f3fe.png","sheet_x":34,"sheet_y":23,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F647-1F3FF","non_qualified":null,"image":"1f647-1f3ff.png","sheet_x":34,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person Bowing Deeply","b":"1F647","d":true,"e":true,"f":true,"h":true,"j":["person_bowing","respectiful"],"k":[34,19],"o":0},"man-bowing":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2642-FE0F","non_qualified":"1F647-1F3FB-200D-2642","image":"1f647-1f3fb-200d-2642-fe0f.png","sheet_x":34,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F647-1F3FC-200D-2642-FE0F","non_qualified":"1F647-1F3FC-200D-2642","image":"1f647-1f3fc-200d-2642-fe0f.png","sheet_x":34,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F647-1F3FD-200D-2642-FE0F","non_qualified":"1F647-1F3FD-200D-2642","image":"1f647-1f3fd-200d-2642-fe0f.png","sheet_x":34,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F647-1F3FE-200D-2642-FE0F","non_qualified":"1F647-1F3FE-200D-2642","image":"1f647-1f3fe-200d-2642-fe0f.png","sheet_x":34,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F647-1F3FF-200D-2642-FE0F","non_qualified":"1F647-1F3FF-200D-2642","image":"1f647-1f3ff-200d-2642-fe0f.png","sheet_x":34,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Bowing","b":"1F647-200D-2642-FE0F","c":"1F647-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_bowing","man","male","boy"],"k":[34,13],"o":4},"woman-bowing":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2640-FE0F","non_qualified":"1F647-1F3FB-200D-2640","image":"1f647-1f3fb-200d-2640-fe0f.png","sheet_x":34,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F647-1F3FC-200D-2640-FE0F","non_qualified":"1F647-1F3FC-200D-2640","image":"1f647-1f3fc-200d-2640-fe0f.png","sheet_x":34,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F647-1F3FD-200D-2640-FE0F","non_qualified":"1F647-1F3FD-200D-2640","image":"1f647-1f3fd-200d-2640-fe0f.png","sheet_x":34,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F647-1F3FE-200D-2640-FE0F","non_qualified":"1F647-1F3FE-200D-2640","image":"1f647-1f3fe-200d-2640-fe0f.png","sheet_x":34,"sheet_y":11,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F647-1F3FF-200D-2640-FE0F","non_qualified":"1F647-1F3FF-200D-2640","image":"1f647-1f3ff-200d-2640-fe0f.png","sheet_x":34,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Bowing","b":"1F647-200D-2640-FE0F","c":"1F647-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_bowing","woman","female","girl"],"k":[34,7],"o":4},"face_palm":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F926-1F3FB","non_qualified":null,"image":"1f926-1f3fb.png","sheet_x":40,"sheet_y":33,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F926-1F3FC","non_qualified":null,"image":"1f926-1f3fc.png","sheet_x":40,"sheet_y":34,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F926-1F3FD","non_qualified":null,"image":"1f926-1f3fd.png","sheet_x":40,"sheet_y":35,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F926-1F3FE","non_qualified":null,"image":"1f926-1f3fe.png","sheet_x":40,"sheet_y":36,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F926-1F3FF","non_qualified":null,"image":"1f926-1f3ff.png","sheet_x":40,"sheet_y":37,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Face Palm","b":"1F926","d":true,"e":true,"f":true,"h":true,"j":["person_facepalming","disappointed"],"k":[40,32],"o":3},"man-facepalming":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2642-FE0F","non_qualified":"1F926-1F3FB-200D-2642","image":"1f926-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F926-1F3FC-200D-2642-FE0F","non_qualified":"1F926-1F3FC-200D-2642","image":"1f926-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":28,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F926-1F3FD-200D-2642-FE0F","non_qualified":"1F926-1F3FD-200D-2642","image":"1f926-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":29,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F926-1F3FE-200D-2642-FE0F","non_qualified":"1F926-1F3FE-200D-2642","image":"1f926-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F926-1F3FF-200D-2642-FE0F","non_qualified":"1F926-1F3FF-200D-2642","image":"1f926-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Facepalming","b":"1F926-200D-2642-FE0F","c":"1F926-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_facepalming","man","male","boy","disbelief"],"k":[40,26],"o":4},"woman-facepalming":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2640-FE0F","non_qualified":"1F926-1F3FB-200D-2640","image":"1f926-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F926-1F3FC-200D-2640-FE0F","non_qualified":"1F926-1F3FC-200D-2640","image":"1f926-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F926-1F3FD-200D-2640-FE0F","non_qualified":"1F926-1F3FD-200D-2640","image":"1f926-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F926-1F3FE-200D-2640-FE0F","non_qualified":"1F926-1F3FE-200D-2640","image":"1f926-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F926-1F3FF-200D-2640-FE0F","non_qualified":"1F926-1F3FF-200D-2640","image":"1f926-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Facepalming","b":"1F926-200D-2640-FE0F","c":"1F926-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_facepalming","woman","female","girl","disbelief"],"k":[40,20],"o":4},"shrug":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F937-1F3FB","non_qualified":null,"image":"1f937-1f3fb.png","sheet_x":41,"sheet_y":53,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F937-1F3FC","non_qualified":null,"image":"1f937-1f3fc.png","sheet_x":41,"sheet_y":54,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F937-1F3FD","non_qualified":null,"image":"1f937-1f3fd.png","sheet_x":41,"sheet_y":55,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F937-1F3FE","non_qualified":null,"image":"1f937-1f3fe.png","sheet_x":41,"sheet_y":56,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F937-1F3FF","non_qualified":null,"image":"1f937-1f3ff.png","sheet_x":41,"sheet_y":57,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Shrug","b":"1F937","d":true,"e":true,"f":true,"h":true,"j":["person_shrugging","regardless"],"k":[41,52],"o":3},"man-shrugging":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2642-FE0F","non_qualified":"1F937-1F3FB-200D-2642","image":"1f937-1f3fb-200d-2642-fe0f.png","sheet_x":41,"sheet_y":47,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F937-1F3FC-200D-2642-FE0F","non_qualified":"1F937-1F3FC-200D-2642","image":"1f937-1f3fc-200d-2642-fe0f.png","sheet_x":41,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F937-1F3FD-200D-2642-FE0F","non_qualified":"1F937-1F3FD-200D-2642","image":"1f937-1f3fd-200d-2642-fe0f.png","sheet_x":41,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F937-1F3FE-200D-2642-FE0F","non_qualified":"1F937-1F3FE-200D-2642","image":"1f937-1f3fe-200d-2642-fe0f.png","sheet_x":41,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F937-1F3FF-200D-2642-FE0F","non_qualified":"1F937-1F3FF-200D-2642","image":"1f937-1f3ff-200d-2642-fe0f.png","sheet_x":41,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Shrugging","b":"1F937-200D-2642-FE0F","c":"1F937-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_shrugging","man","male","boy","confused","indifferent","doubt"],"k":[41,46],"o":4},"woman-shrugging":{"subcategory":"person-gesture","skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2640-FE0F","non_qualified":"1F937-1F3FB-200D-2640","image":"1f937-1f3fb-200d-2640-fe0f.png","sheet_x":41,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F937-1F3FC-200D-2640-FE0F","non_qualified":"1F937-1F3FC-200D-2640","image":"1f937-1f3fc-200d-2640-fe0f.png","sheet_x":41,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F937-1F3FD-200D-2640-FE0F","non_qualified":"1F937-1F3FD-200D-2640","image":"1f937-1f3fd-200d-2640-fe0f.png","sheet_x":41,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F937-1F3FE-200D-2640-FE0F","non_qualified":"1F937-1F3FE-200D-2640","image":"1f937-1f3fe-200d-2640-fe0f.png","sheet_x":41,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F937-1F3FF-200D-2640-FE0F","non_qualified":"1F937-1F3FF-200D-2640","image":"1f937-1f3ff-200d-2640-fe0f.png","sheet_x":41,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Shrugging","b":"1F937-200D-2640-FE0F","c":"1F937-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_shrugging","woman","female","girl","confused","indifferent","doubt"],"k":[41,40],"o":4},"health_worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-2695-FE0F","non_qualified":"1F9D1-1F3FB-200D-2695","image":"1f9d1-1f3fb-200d-2695-fe0f.png","sheet_x":49,"sheet_y":51,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-2695-FE0F","non_qualified":"1F9D1-1F3FC-200D-2695","image":"1f9d1-1f3fc-200d-2695-fe0f.png","sheet_x":49,"sheet_y":52,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-2695-FE0F","non_qualified":"1F9D1-1F3FD-200D-2695","image":"1f9d1-1f3fd-200d-2695-fe0f.png","sheet_x":49,"sheet_y":53,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-2695-FE0F","non_qualified":"1F9D1-1F3FE-200D-2695","image":"1f9d1-1f3fe-200d-2695-fe0f.png","sheet_x":49,"sheet_y":54,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-2695-FE0F","non_qualified":"1F9D1-1F3FF-200D-2695","image":"1f9d1-1f3ff-200d-2695-fe0f.png","sheet_x":49,"sheet_y":55,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Health Worker","b":"1F9D1-200D-2695-FE0F","c":"1F9D1-200D-2695","d":true,"e":true,"f":true,"h":true,"j":["health_worker","hospital"],"k":[49,50],"o":12},"male-doctor":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2695-FE0F","non_qualified":"1F468-1F3FB-200D-2695","image":"1f468-1f3fb-200d-2695-fe0f.png","sheet_x":16,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-2695-FE0F","non_qualified":"1F468-1F3FC-200D-2695","image":"1f468-1f3fc-200d-2695-fe0f.png","sheet_x":16,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-2695-FE0F","non_qualified":"1F468-1F3FD-200D-2695","image":"1f468-1f3fd-200d-2695-fe0f.png","sheet_x":16,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-2695-FE0F","non_qualified":"1F468-1F3FE-200D-2695","image":"1f468-1f3fe-200d-2695-fe0f.png","sheet_x":16,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-2695-FE0F","non_qualified":"1F468-1F3FF-200D-2695","image":"1f468-1f3ff-200d-2695-fe0f.png","sheet_x":16,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Health Worker","b":"1F468-200D-2695-FE0F","c":"1F468-200D-2695","d":true,"e":true,"f":true,"h":true,"j":["man_health_worker","doctor","nurse","therapist","healthcare","man","human"],"k":[16,5],"o":4},"female-doctor":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2695-FE0F","non_qualified":"1F469-1F3FB-200D-2695","image":"1f469-1f3fb-200d-2695-fe0f.png","sheet_x":19,"sheet_y":35,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-2695-FE0F","non_qualified":"1F469-1F3FC-200D-2695","image":"1f469-1f3fc-200d-2695-fe0f.png","sheet_x":19,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-2695-FE0F","non_qualified":"1F469-1F3FD-200D-2695","image":"1f469-1f3fd-200d-2695-fe0f.png","sheet_x":19,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-2695-FE0F","non_qualified":"1F469-1F3FE-200D-2695","image":"1f469-1f3fe-200d-2695-fe0f.png","sheet_x":19,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-2695-FE0F","non_qualified":"1F469-1F3FF-200D-2695","image":"1f469-1f3ff-200d-2695-fe0f.png","sheet_x":19,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Health Worker","b":"1F469-200D-2695-FE0F","c":"1F469-200D-2695","d":true,"e":true,"f":true,"h":true,"j":["woman_health_worker","doctor","nurse","therapist","healthcare","woman","human"],"k":[19,34],"o":4},"student":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F393","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f393.png","sheet_x":47,"sheet_y":39,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F393","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f393.png","sheet_x":47,"sheet_y":40,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F393","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f393.png","sheet_x":47,"sheet_y":41,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F393","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f393.png","sheet_x":47,"sheet_y":42,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F393","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f393.png","sheet_x":47,"sheet_y":43,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Student","b":"1F9D1-200D-1F393","d":true,"e":true,"f":true,"h":true,"j":["student","learn"],"k":[47,38],"o":12},"male-student":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F393","non_qualified":null,"image":"1f468-1f3fb-200d-1f393.png","sheet_x":14,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F393","non_qualified":null,"image":"1f468-1f3fc-200d-1f393.png","sheet_x":14,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F393","non_qualified":null,"image":"1f468-1f3fd-200d-1f393.png","sheet_x":14,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F393","non_qualified":null,"image":"1f468-1f3fe-200d-1f393.png","sheet_x":14,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F393","non_qualified":null,"image":"1f468-1f3ff-200d-1f393.png","sheet_x":14,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Student","b":"1F468-200D-1F393","d":true,"e":true,"f":true,"h":true,"j":["man_student","graduate","man","human"],"k":[14,4],"o":4},"female-student":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F393","non_qualified":null,"image":"1f469-1f3fb-200d-1f393.png","sheet_x":17,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F393","non_qualified":null,"image":"1f469-1f3fc-200d-1f393.png","sheet_x":17,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F393","non_qualified":null,"image":"1f469-1f3fd-200d-1f393.png","sheet_x":17,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F393","non_qualified":null,"image":"1f469-1f3fe-200d-1f393.png","sheet_x":17,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F393","non_qualified":null,"image":"1f469-1f3ff-200d-1f393.png","sheet_x":17,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Student","b":"1F469-200D-1F393","d":true,"e":true,"f":true,"h":true,"j":["woman_student","graduate","woman","human"],"k":[17,38],"o":4},"teacher":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F3EB","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f3eb.png","sheet_x":47,"sheet_y":57,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F3EB","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f3eb.png","sheet_x":47,"sheet_y":58,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F3EB","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f3eb.png","sheet_x":47,"sheet_y":59,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F3EB","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f3eb.png","sheet_x":47,"sheet_y":60,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F3EB","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f3eb.png","sheet_x":48,"sheet_y":0,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Teacher","b":"1F9D1-200D-1F3EB","d":true,"e":true,"f":true,"h":true,"j":["teacher","professor"],"k":[47,56],"o":12},"male-teacher":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3EB","non_qualified":null,"image":"1f468-1f3fb-200d-1f3eb.png","sheet_x":14,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3EB","non_qualified":null,"image":"1f468-1f3fc-200d-1f3eb.png","sheet_x":14,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3EB","non_qualified":null,"image":"1f468-1f3fd-200d-1f3eb.png","sheet_x":14,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3EB","non_qualified":null,"image":"1f468-1f3fe-200d-1f3eb.png","sheet_x":14,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3EB","non_qualified":null,"image":"1f468-1f3ff-200d-1f3eb.png","sheet_x":14,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Teacher","b":"1F468-200D-1F3EB","d":true,"e":true,"f":true,"h":true,"j":["man_teacher","instructor","professor","man","human"],"k":[14,22],"o":4},"female-teacher":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3EB","non_qualified":null,"image":"1f469-1f3fb-200d-1f3eb.png","sheet_x":17,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3EB","non_qualified":null,"image":"1f469-1f3fc-200d-1f3eb.png","sheet_x":17,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3EB","non_qualified":null,"image":"1f469-1f3fd-200d-1f3eb.png","sheet_x":17,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3EB","non_qualified":null,"image":"1f469-1f3fe-200d-1f3eb.png","sheet_x":17,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3EB","non_qualified":null,"image":"1f469-1f3ff-200d-1f3eb.png","sheet_x":18,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Teacher","b":"1F469-200D-1F3EB","d":true,"e":true,"f":true,"h":true,"j":["woman_teacher","instructor","professor","woman","human"],"k":[17,56],"o":4},"judge":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-2696-FE0F","non_qualified":"1F9D1-1F3FB-200D-2696","image":"1f9d1-1f3fb-200d-2696-fe0f.png","sheet_x":49,"sheet_y":57,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-2696-FE0F","non_qualified":"1F9D1-1F3FC-200D-2696","image":"1f9d1-1f3fc-200d-2696-fe0f.png","sheet_x":49,"sheet_y":58,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-2696-FE0F","non_qualified":"1F9D1-1F3FD-200D-2696","image":"1f9d1-1f3fd-200d-2696-fe0f.png","sheet_x":49,"sheet_y":59,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-2696-FE0F","non_qualified":"1F9D1-1F3FE-200D-2696","image":"1f9d1-1f3fe-200d-2696-fe0f.png","sheet_x":49,"sheet_y":60,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-2696-FE0F","non_qualified":"1F9D1-1F3FF-200D-2696","image":"1f9d1-1f3ff-200d-2696-fe0f.png","sheet_x":50,"sheet_y":0,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Judge","b":"1F9D1-200D-2696-FE0F","c":"1F9D1-200D-2696","d":true,"e":true,"f":true,"h":true,"j":["judge","law"],"k":[49,56],"o":12},"male-judge":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2696-FE0F","non_qualified":"1F468-1F3FB-200D-2696","image":"1f468-1f3fb-200d-2696-fe0f.png","sheet_x":16,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-2696-FE0F","non_qualified":"1F468-1F3FC-200D-2696","image":"1f468-1f3fc-200d-2696-fe0f.png","sheet_x":16,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-2696-FE0F","non_qualified":"1F468-1F3FD-200D-2696","image":"1f468-1f3fd-200d-2696-fe0f.png","sheet_x":16,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-2696-FE0F","non_qualified":"1F468-1F3FE-200D-2696","image":"1f468-1f3fe-200d-2696-fe0f.png","sheet_x":16,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-2696-FE0F","non_qualified":"1F468-1F3FF-200D-2696","image":"1f468-1f3ff-200d-2696-fe0f.png","sheet_x":16,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Judge","b":"1F468-200D-2696-FE0F","c":"1F468-200D-2696","d":true,"e":true,"f":true,"h":true,"j":["man_judge","justice","court","man","human"],"k":[16,11],"o":4},"female-judge":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2696-FE0F","non_qualified":"1F469-1F3FB-200D-2696","image":"1f469-1f3fb-200d-2696-fe0f.png","sheet_x":19,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-2696-FE0F","non_qualified":"1F469-1F3FC-200D-2696","image":"1f469-1f3fc-200d-2696-fe0f.png","sheet_x":19,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-2696-FE0F","non_qualified":"1F469-1F3FD-200D-2696","image":"1f469-1f3fd-200d-2696-fe0f.png","sheet_x":19,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-2696-FE0F","non_qualified":"1F469-1F3FE-200D-2696","image":"1f469-1f3fe-200d-2696-fe0f.png","sheet_x":19,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-2696-FE0F","non_qualified":"1F469-1F3FF-200D-2696","image":"1f469-1f3ff-200d-2696-fe0f.png","sheet_x":19,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Judge","b":"1F469-200D-2696-FE0F","c":"1F469-200D-2696","d":true,"e":true,"f":true,"h":true,"j":["woman_judge","justice","court","woman","human"],"k":[19,40],"o":4},"farmer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F33E","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f33e.png","sheet_x":47,"sheet_y":15,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F33E","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f33e.png","sheet_x":47,"sheet_y":16,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F33E","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f33e.png","sheet_x":47,"sheet_y":17,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F33E","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f33e.png","sheet_x":47,"sheet_y":18,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F33E","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f33e.png","sheet_x":47,"sheet_y":19,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Farmer","b":"1F9D1-200D-1F33E","d":true,"e":true,"f":true,"h":true,"j":["farmer","crops"],"k":[47,14],"o":12},"male-farmer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F33E","non_qualified":null,"image":"1f468-1f3fb-200d-1f33e.png","sheet_x":13,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F33E","non_qualified":null,"image":"1f468-1f3fc-200d-1f33e.png","sheet_x":13,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F33E","non_qualified":null,"image":"1f468-1f3fd-200d-1f33e.png","sheet_x":13,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F33E","non_qualified":null,"image":"1f468-1f3fe-200d-1f33e.png","sheet_x":13,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F33E","non_qualified":null,"image":"1f468-1f3ff-200d-1f33e.png","sheet_x":13,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Farmer","b":"1F468-200D-1F33E","d":true,"e":true,"f":true,"h":true,"j":["man_farmer","rancher","gardener","man","human"],"k":[13,47],"o":4},"female-farmer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F33E","non_qualified":null,"image":"1f469-1f3fb-200d-1f33e.png","sheet_x":17,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F33E","non_qualified":null,"image":"1f469-1f3fc-200d-1f33e.png","sheet_x":17,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F33E","non_qualified":null,"image":"1f469-1f3fd-200d-1f33e.png","sheet_x":17,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F33E","non_qualified":null,"image":"1f469-1f3fe-200d-1f33e.png","sheet_x":17,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F33E","non_qualified":null,"image":"1f469-1f3ff-200d-1f33e.png","sheet_x":17,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Farmer","b":"1F469-200D-1F33E","d":true,"e":true,"f":true,"h":true,"j":["woman_farmer","rancher","gardener","woman","human"],"k":[17,20],"o":4},"cook":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F373","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f373.png","sheet_x":47,"sheet_y":21,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F373","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f373.png","sheet_x":47,"sheet_y":22,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F373","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f373.png","sheet_x":47,"sheet_y":23,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F373","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f373.png","sheet_x":47,"sheet_y":24,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F373","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f373.png","sheet_x":47,"sheet_y":25,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Cook","b":"1F9D1-200D-1F373","d":true,"e":true,"f":true,"h":true,"j":["cook","food","kitchen","culinary"],"k":[47,20],"o":12},"male-cook":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F373","non_qualified":null,"image":"1f468-1f3fb-200d-1f373.png","sheet_x":13,"sheet_y":54,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F373","non_qualified":null,"image":"1f468-1f3fc-200d-1f373.png","sheet_x":13,"sheet_y":55,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F373","non_qualified":null,"image":"1f468-1f3fd-200d-1f373.png","sheet_x":13,"sheet_y":56,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F373","non_qualified":null,"image":"1f468-1f3fe-200d-1f373.png","sheet_x":13,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F373","non_qualified":null,"image":"1f468-1f3ff-200d-1f373.png","sheet_x":13,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Cook","b":"1F468-200D-1F373","d":true,"e":true,"f":true,"h":true,"j":["man_cook","chef","man","human"],"k":[13,53],"o":4},"female-cook":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F373","non_qualified":null,"image":"1f469-1f3fb-200d-1f373.png","sheet_x":17,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F373","non_qualified":null,"image":"1f469-1f3fc-200d-1f373.png","sheet_x":17,"sheet_y":28,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F373","non_qualified":null,"image":"1f469-1f3fd-200d-1f373.png","sheet_x":17,"sheet_y":29,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F373","non_qualified":null,"image":"1f469-1f3fe-200d-1f373.png","sheet_x":17,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F373","non_qualified":null,"image":"1f469-1f3ff-200d-1f373.png","sheet_x":17,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Cook","b":"1F469-200D-1F373","d":true,"e":true,"f":true,"h":true,"j":["woman_cook","chef","woman","human"],"k":[17,26],"o":4},"mechanic":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F527","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f527.png","sheet_x":48,"sheet_y":20,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F527","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f527.png","sheet_x":48,"sheet_y":21,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F527","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f527.png","sheet_x":48,"sheet_y":22,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F527","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f527.png","sheet_x":48,"sheet_y":23,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F527","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f527.png","sheet_x":48,"sheet_y":24,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Mechanic","b":"1F9D1-200D-1F527","d":true,"e":true,"f":true,"h":true,"j":["mechanic","worker","technician"],"k":[48,19],"o":12},"male-mechanic":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F527","non_qualified":null,"image":"1f468-1f3fb-200d-1f527.png","sheet_x":15,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F527","non_qualified":null,"image":"1f468-1f3fc-200d-1f527.png","sheet_x":15,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F527","non_qualified":null,"image":"1f468-1f3fd-200d-1f527.png","sheet_x":15,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F527","non_qualified":null,"image":"1f468-1f3fe-200d-1f527.png","sheet_x":15,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F527","non_qualified":null,"image":"1f468-1f3ff-200d-1f527.png","sheet_x":15,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Mechanic","b":"1F468-200D-1F527","d":true,"e":true,"f":true,"h":true,"j":["man_mechanic","plumber","man","human","wrench"],"k":[15,0],"o":4},"female-mechanic":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F527","non_qualified":null,"image":"1f469-1f3fb-200d-1f527.png","sheet_x":18,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F527","non_qualified":null,"image":"1f469-1f3fc-200d-1f527.png","sheet_x":18,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F527","non_qualified":null,"image":"1f469-1f3fd-200d-1f527.png","sheet_x":18,"sheet_y":32,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F527","non_qualified":null,"image":"1f469-1f3fe-200d-1f527.png","sheet_x":18,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F527","non_qualified":null,"image":"1f469-1f3ff-200d-1f527.png","sheet_x":18,"sheet_y":34,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Mechanic","b":"1F469-200D-1F527","d":true,"e":true,"f":true,"h":true,"j":["woman_mechanic","plumber","woman","human","wrench"],"k":[18,29],"o":4},"factory_worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F3ED","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f3ed.png","sheet_x":48,"sheet_y":2,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F3ED","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f3ed.png","sheet_x":48,"sheet_y":3,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F3ED","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f3ed.png","sheet_x":48,"sheet_y":4,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F3ED","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f3ed.png","sheet_x":48,"sheet_y":5,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F3ED","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f3ed.png","sheet_x":48,"sheet_y":6,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Factory Worker","b":"1F9D1-200D-1F3ED","d":true,"e":true,"f":true,"h":true,"j":["factory_worker","labor"],"k":[48,1],"o":12},"male-factory-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3ED","non_qualified":null,"image":"1f468-1f3fb-200d-1f3ed.png","sheet_x":14,"sheet_y":29,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3ED","non_qualified":null,"image":"1f468-1f3fc-200d-1f3ed.png","sheet_x":14,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3ED","non_qualified":null,"image":"1f468-1f3fd-200d-1f3ed.png","sheet_x":14,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3ED","non_qualified":null,"image":"1f468-1f3fe-200d-1f3ed.png","sheet_x":14,"sheet_y":32,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3ED","non_qualified":null,"image":"1f468-1f3ff-200d-1f3ed.png","sheet_x":14,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Factory Worker","b":"1F468-200D-1F3ED","d":true,"e":true,"f":true,"h":true,"j":["man_factory_worker","assembly","industrial","man","human"],"k":[14,28],"o":4},"female-factory-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3ED","non_qualified":null,"image":"1f469-1f3fb-200d-1f3ed.png","sheet_x":18,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3ED","non_qualified":null,"image":"1f469-1f3fc-200d-1f3ed.png","sheet_x":18,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3ED","non_qualified":null,"image":"1f469-1f3fd-200d-1f3ed.png","sheet_x":18,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3ED","non_qualified":null,"image":"1f469-1f3fe-200d-1f3ed.png","sheet_x":18,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3ED","non_qualified":null,"image":"1f469-1f3ff-200d-1f3ed.png","sheet_x":18,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Factory Worker","b":"1F469-200D-1F3ED","d":true,"e":true,"f":true,"h":true,"j":["woman_factory_worker","assembly","industrial","woman","human"],"k":[18,1],"o":4},"office_worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F4BC","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f4bc.png","sheet_x":48,"sheet_y":14,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F4BC","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f4bc.png","sheet_x":48,"sheet_y":15,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F4BC","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f4bc.png","sheet_x":48,"sheet_y":16,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F4BC","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f4bc.png","sheet_x":48,"sheet_y":17,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F4BC","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f4bc.png","sheet_x":48,"sheet_y":18,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Office Worker","b":"1F9D1-200D-1F4BC","d":true,"e":true,"f":true,"h":true,"j":["office_worker","business"],"k":[48,13],"o":12},"male-office-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BC","non_qualified":null,"image":"1f468-1f3fb-200d-1f4bc.png","sheet_x":14,"sheet_y":56,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BC","non_qualified":null,"image":"1f468-1f3fc-200d-1f4bc.png","sheet_x":14,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BC","non_qualified":null,"image":"1f468-1f3fd-200d-1f4bc.png","sheet_x":14,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BC","non_qualified":null,"image":"1f468-1f3fe-200d-1f4bc.png","sheet_x":14,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BC","non_qualified":null,"image":"1f468-1f3ff-200d-1f4bc.png","sheet_x":14,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Office Worker","b":"1F468-200D-1F4BC","d":true,"e":true,"f":true,"h":true,"j":["man_office_worker","business","manager","man","human"],"k":[14,55],"o":4},"female-office-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BC","non_qualified":null,"image":"1f469-1f3fb-200d-1f4bc.png","sheet_x":18,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BC","non_qualified":null,"image":"1f469-1f3fc-200d-1f4bc.png","sheet_x":18,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BC","non_qualified":null,"image":"1f469-1f3fd-200d-1f4bc.png","sheet_x":18,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BC","non_qualified":null,"image":"1f469-1f3fe-200d-1f4bc.png","sheet_x":18,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BC","non_qualified":null,"image":"1f469-1f3ff-200d-1f4bc.png","sheet_x":18,"sheet_y":28,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Office Worker","b":"1F469-200D-1F4BC","d":true,"e":true,"f":true,"h":true,"j":["woman_office_worker","business","manager","woman","human"],"k":[18,23],"o":4},"scientist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F52C","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f52c.png","sheet_x":48,"sheet_y":26,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F52C","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f52c.png","sheet_x":48,"sheet_y":27,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F52C","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f52c.png","sheet_x":48,"sheet_y":28,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F52C","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f52c.png","sheet_x":48,"sheet_y":29,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F52C","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f52c.png","sheet_x":48,"sheet_y":30,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Scientist","b":"1F9D1-200D-1F52C","d":true,"e":true,"f":true,"h":true,"j":["scientist","chemistry"],"k":[48,25],"o":12},"male-scientist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F52C","non_qualified":null,"image":"1f468-1f3fb-200d-1f52c.png","sheet_x":15,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F52C","non_qualified":null,"image":"1f468-1f3fc-200d-1f52c.png","sheet_x":15,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F52C","non_qualified":null,"image":"1f468-1f3fd-200d-1f52c.png","sheet_x":15,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F52C","non_qualified":null,"image":"1f468-1f3fe-200d-1f52c.png","sheet_x":15,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F52C","non_qualified":null,"image":"1f468-1f3ff-200d-1f52c.png","sheet_x":15,"sheet_y":11,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Scientist","b":"1F468-200D-1F52C","d":true,"e":true,"f":true,"h":true,"j":["man_scientist","biologist","chemist","engineer","physicist","man","human"],"k":[15,6],"o":4},"female-scientist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F52C","non_qualified":null,"image":"1f469-1f3fb-200d-1f52c.png","sheet_x":18,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F52C","non_qualified":null,"image":"1f469-1f3fc-200d-1f52c.png","sheet_x":18,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F52C","non_qualified":null,"image":"1f469-1f3fd-200d-1f52c.png","sheet_x":18,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F52C","non_qualified":null,"image":"1f469-1f3fe-200d-1f52c.png","sheet_x":18,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F52C","non_qualified":null,"image":"1f469-1f3ff-200d-1f52c.png","sheet_x":18,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Scientist","b":"1F469-200D-1F52C","d":true,"e":true,"f":true,"h":true,"j":["woman_scientist","biologist","chemist","engineer","physicist","woman","human"],"k":[18,35],"o":4},"technologist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F4BB","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f4bb.png","sheet_x":48,"sheet_y":8,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F4BB","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f4bb.png","sheet_x":48,"sheet_y":9,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F4BB","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f4bb.png","sheet_x":48,"sheet_y":10,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F4BB","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f4bb.png","sheet_x":48,"sheet_y":11,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F4BB","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f4bb.png","sheet_x":48,"sheet_y":12,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Technologist","b":"1F9D1-200D-1F4BB","d":true,"e":true,"f":true,"h":true,"j":["technologist","computer"],"k":[48,7],"o":12},"male-technologist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BB","non_qualified":null,"image":"1f468-1f3fb-200d-1f4bb.png","sheet_x":14,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BB","non_qualified":null,"image":"1f468-1f3fc-200d-1f4bb.png","sheet_x":14,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BB","non_qualified":null,"image":"1f468-1f3fd-200d-1f4bb.png","sheet_x":14,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BB","non_qualified":null,"image":"1f468-1f3fe-200d-1f4bb.png","sheet_x":14,"sheet_y":53,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BB","non_qualified":null,"image":"1f468-1f3ff-200d-1f4bb.png","sheet_x":14,"sheet_y":54,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Technologist","b":"1F468-200D-1F4BB","d":true,"e":true,"f":true,"h":true,"j":["man_technologist","coder","developer","engineer","programmer","software","man","human","laptop","computer"],"k":[14,49],"o":4},"female-technologist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BB","non_qualified":null,"image":"1f469-1f3fb-200d-1f4bb.png","sheet_x":18,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BB","non_qualified":null,"image":"1f469-1f3fc-200d-1f4bb.png","sheet_x":18,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BB","non_qualified":null,"image":"1f469-1f3fd-200d-1f4bb.png","sheet_x":18,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BB","non_qualified":null,"image":"1f469-1f3fe-200d-1f4bb.png","sheet_x":18,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BB","non_qualified":null,"image":"1f469-1f3ff-200d-1f4bb.png","sheet_x":18,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Technologist","b":"1F469-200D-1F4BB","d":true,"e":true,"f":true,"h":true,"j":["woman_technologist","coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"k":[18,17],"o":4},"singer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F3A4","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f3a4.png","sheet_x":47,"sheet_y":45,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F3A4","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f3a4.png","sheet_x":47,"sheet_y":46,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F3A4","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f3a4.png","sheet_x":47,"sheet_y":47,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F3A4","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f3a4.png","sheet_x":47,"sheet_y":48,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F3A4","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f3a4.png","sheet_x":47,"sheet_y":49,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Singer","b":"1F9D1-200D-1F3A4","d":true,"e":true,"f":true,"h":true,"j":["singer","song","artist","performer"],"k":[47,44],"o":12},"male-singer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A4","non_qualified":null,"image":"1f468-1f3fb-200d-1f3a4.png","sheet_x":14,"sheet_y":11,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A4","non_qualified":null,"image":"1f468-1f3fc-200d-1f3a4.png","sheet_x":14,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A4","non_qualified":null,"image":"1f468-1f3fd-200d-1f3a4.png","sheet_x":14,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A4","non_qualified":null,"image":"1f468-1f3fe-200d-1f3a4.png","sheet_x":14,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A4","non_qualified":null,"image":"1f468-1f3ff-200d-1f3a4.png","sheet_x":14,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Singer","b":"1F468-200D-1F3A4","d":true,"e":true,"f":true,"h":true,"j":["man_singer","rockstar","entertainer","man","human"],"k":[14,10],"o":4},"female-singer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A4","non_qualified":null,"image":"1f469-1f3fb-200d-1f3a4.png","sheet_x":17,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A4","non_qualified":null,"image":"1f469-1f3fc-200d-1f3a4.png","sheet_x":17,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A4","non_qualified":null,"image":"1f469-1f3fd-200d-1f3a4.png","sheet_x":17,"sheet_y":47,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A4","non_qualified":null,"image":"1f469-1f3fe-200d-1f3a4.png","sheet_x":17,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A4","non_qualified":null,"image":"1f469-1f3ff-200d-1f3a4.png","sheet_x":17,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Singer","b":"1F469-200D-1F3A4","d":true,"e":true,"f":true,"h":true,"j":["woman_singer","rockstar","entertainer","woman","human"],"k":[17,44],"o":4},"artist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F3A8","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f3a8.png","sheet_x":47,"sheet_y":51,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F3A8","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f3a8.png","sheet_x":47,"sheet_y":52,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F3A8","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f3a8.png","sheet_x":47,"sheet_y":53,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F3A8","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f3a8.png","sheet_x":47,"sheet_y":54,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F3A8","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f3a8.png","sheet_x":47,"sheet_y":55,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Artist","b":"1F9D1-200D-1F3A8","d":true,"e":true,"f":true,"h":true,"j":["artist","painting","draw","creativity"],"k":[47,50],"o":12},"male-artist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A8","non_qualified":null,"image":"1f468-1f3fb-200d-1f3a8.png","sheet_x":14,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A8","non_qualified":null,"image":"1f468-1f3fc-200d-1f3a8.png","sheet_x":14,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A8","non_qualified":null,"image":"1f468-1f3fd-200d-1f3a8.png","sheet_x":14,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A8","non_qualified":null,"image":"1f468-1f3fe-200d-1f3a8.png","sheet_x":14,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A8","non_qualified":null,"image":"1f468-1f3ff-200d-1f3a8.png","sheet_x":14,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Artist","b":"1F468-200D-1F3A8","d":true,"e":true,"f":true,"h":true,"j":["man_artist","painter","man","human"],"k":[14,16],"o":4},"female-artist":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A8","non_qualified":null,"image":"1f469-1f3fb-200d-1f3a8.png","sheet_x":17,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A8","non_qualified":null,"image":"1f469-1f3fc-200d-1f3a8.png","sheet_x":17,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A8","non_qualified":null,"image":"1f469-1f3fd-200d-1f3a8.png","sheet_x":17,"sheet_y":53,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A8","non_qualified":null,"image":"1f469-1f3fe-200d-1f3a8.png","sheet_x":17,"sheet_y":54,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A8","non_qualified":null,"image":"1f469-1f3ff-200d-1f3a8.png","sheet_x":17,"sheet_y":55,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Artist","b":"1F469-200D-1F3A8","d":true,"e":true,"f":true,"h":true,"j":["woman_artist","painter","woman","human"],"k":[17,50],"o":4},"pilot":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-2708-FE0F","non_qualified":"1F9D1-1F3FB-200D-2708","image":"1f9d1-1f3fb-200d-2708-fe0f.png","sheet_x":50,"sheet_y":2,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-2708-FE0F","non_qualified":"1F9D1-1F3FC-200D-2708","image":"1f9d1-1f3fc-200d-2708-fe0f.png","sheet_x":50,"sheet_y":3,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-2708-FE0F","non_qualified":"1F9D1-1F3FD-200D-2708","image":"1f9d1-1f3fd-200d-2708-fe0f.png","sheet_x":50,"sheet_y":4,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-2708-FE0F","non_qualified":"1F9D1-1F3FE-200D-2708","image":"1f9d1-1f3fe-200d-2708-fe0f.png","sheet_x":50,"sheet_y":5,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-2708-FE0F","non_qualified":"1F9D1-1F3FF-200D-2708","image":"1f9d1-1f3ff-200d-2708-fe0f.png","sheet_x":50,"sheet_y":6,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pilot","b":"1F9D1-200D-2708-FE0F","c":"1F9D1-200D-2708","d":true,"e":true,"f":true,"h":true,"j":["pilot","fly","plane","airplane"],"k":[50,1],"o":12},"male-pilot":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2708-FE0F","non_qualified":"1F468-1F3FB-200D-2708","image":"1f468-1f3fb-200d-2708-fe0f.png","sheet_x":16,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-2708-FE0F","non_qualified":"1F468-1F3FC-200D-2708","image":"1f468-1f3fc-200d-2708-fe0f.png","sheet_x":16,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-2708-FE0F","non_qualified":"1F468-1F3FD-200D-2708","image":"1f468-1f3fd-200d-2708-fe0f.png","sheet_x":16,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-2708-FE0F","non_qualified":"1F468-1F3FE-200D-2708","image":"1f468-1f3fe-200d-2708-fe0f.png","sheet_x":16,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-2708-FE0F","non_qualified":"1F468-1F3FF-200D-2708","image":"1f468-1f3ff-200d-2708-fe0f.png","sheet_x":16,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Pilot","b":"1F468-200D-2708-FE0F","c":"1F468-200D-2708","d":true,"e":true,"f":true,"h":true,"j":["man_pilot","aviator","plane","man","human"],"k":[16,17],"o":4},"female-pilot":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2708-FE0F","non_qualified":"1F469-1F3FB-200D-2708","image":"1f469-1f3fb-200d-2708-fe0f.png","sheet_x":19,"sheet_y":47,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-2708-FE0F","non_qualified":"1F469-1F3FC-200D-2708","image":"1f469-1f3fc-200d-2708-fe0f.png","sheet_x":19,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-2708-FE0F","non_qualified":"1F469-1F3FD-200D-2708","image":"1f469-1f3fd-200d-2708-fe0f.png","sheet_x":19,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-2708-FE0F","non_qualified":"1F469-1F3FE-200D-2708","image":"1f469-1f3fe-200d-2708-fe0f.png","sheet_x":19,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-2708-FE0F","non_qualified":"1F469-1F3FF-200D-2708","image":"1f469-1f3ff-200d-2708-fe0f.png","sheet_x":19,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Pilot","b":"1F469-200D-2708-FE0F","c":"1F469-200D-2708","d":true,"e":true,"f":true,"h":true,"j":["woman_pilot","aviator","plane","woman","human"],"k":[19,46],"o":4},"astronaut":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F680","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f680.png","sheet_x":48,"sheet_y":32,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F680","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f680.png","sheet_x":48,"sheet_y":33,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F680","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f680.png","sheet_x":48,"sheet_y":34,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F680","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f680.png","sheet_x":48,"sheet_y":35,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F680","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f680.png","sheet_x":48,"sheet_y":36,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Astronaut","b":"1F9D1-200D-1F680","d":true,"e":true,"f":true,"h":true,"j":["astronaut","outerspace"],"k":[48,31],"o":12},"male-astronaut":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F680","non_qualified":null,"image":"1f468-1f3fb-200d-1f680.png","sheet_x":15,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F680","non_qualified":null,"image":"1f468-1f3fc-200d-1f680.png","sheet_x":15,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F680","non_qualified":null,"image":"1f468-1f3fd-200d-1f680.png","sheet_x":15,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F680","non_qualified":null,"image":"1f468-1f3fe-200d-1f680.png","sheet_x":15,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F680","non_qualified":null,"image":"1f468-1f3ff-200d-1f680.png","sheet_x":15,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Astronaut","b":"1F468-200D-1F680","d":true,"e":true,"f":true,"h":true,"j":["man_astronaut","space","rocket","man","human"],"k":[15,12],"o":4},"female-astronaut":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F680","non_qualified":null,"image":"1f469-1f3fb-200d-1f680.png","sheet_x":18,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F680","non_qualified":null,"image":"1f469-1f3fc-200d-1f680.png","sheet_x":18,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F680","non_qualified":null,"image":"1f469-1f3fd-200d-1f680.png","sheet_x":18,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F680","non_qualified":null,"image":"1f469-1f3fe-200d-1f680.png","sheet_x":18,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F680","non_qualified":null,"image":"1f469-1f3ff-200d-1f680.png","sheet_x":18,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Astronaut","b":"1F469-200D-1F680","d":true,"e":true,"f":true,"h":true,"j":["woman_astronaut","space","rocket","woman","human"],"k":[18,41],"o":4},"firefighter":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F692","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f692.png","sheet_x":48,"sheet_y":38,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F692","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f692.png","sheet_x":48,"sheet_y":39,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F692","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f692.png","sheet_x":48,"sheet_y":40,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F692","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f692.png","sheet_x":48,"sheet_y":41,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F692","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f692.png","sheet_x":48,"sheet_y":42,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Firefighter","b":"1F9D1-200D-1F692","d":true,"e":true,"f":true,"h":true,"j":["firefighter","fire"],"k":[48,37],"o":12},"male-firefighter":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F692","non_qualified":null,"image":"1f468-1f3fb-200d-1f692.png","sheet_x":15,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F692","non_qualified":null,"image":"1f468-1f3fc-200d-1f692.png","sheet_x":15,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F692","non_qualified":null,"image":"1f468-1f3fd-200d-1f692.png","sheet_x":15,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F692","non_qualified":null,"image":"1f468-1f3fe-200d-1f692.png","sheet_x":15,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F692","non_qualified":null,"image":"1f468-1f3ff-200d-1f692.png","sheet_x":15,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Firefighter","b":"1F468-200D-1F692","d":true,"e":true,"f":true,"h":true,"j":["man_firefighter","fireman","man","human"],"k":[15,18],"o":4},"female-firefighter":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F692","non_qualified":null,"image":"1f469-1f3fb-200d-1f692.png","sheet_x":18,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F692","non_qualified":null,"image":"1f469-1f3fc-200d-1f692.png","sheet_x":18,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F692","non_qualified":null,"image":"1f469-1f3fd-200d-1f692.png","sheet_x":18,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F692","non_qualified":null,"image":"1f469-1f3fe-200d-1f692.png","sheet_x":18,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F692","non_qualified":null,"image":"1f469-1f3ff-200d-1f692.png","sheet_x":18,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Firefighter","b":"1F469-200D-1F692","d":true,"e":true,"f":true,"h":true,"j":["woman_firefighter","fireman","woman","human"],"k":[18,47],"o":4},"cop":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB","non_qualified":null,"image":"1f46e-1f3fb.png","sheet_x":23,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46E-1F3FC","non_qualified":null,"image":"1f46e-1f3fc.png","sheet_x":23,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46E-1F3FD","non_qualified":null,"image":"1f46e-1f3fd.png","sheet_x":23,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46E-1F3FE","non_qualified":null,"image":"1f46e-1f3fe.png","sheet_x":23,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46E-1F3FF","non_qualified":null,"image":"1f46e-1f3ff.png","sheet_x":23,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F46E-200D-2642-FE0F","a":"Police Officer","b":"1F46E","d":true,"e":true,"f":true,"h":true,"j":["police_officer","cop"],"k":[23,9],"o":0},"male-police-officer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2642-FE0F","non_qualified":"1F46E-1F3FB-200D-2642","image":"1f46e-1f3fb-200d-2642-fe0f.png","sheet_x":23,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46E-1F3FC-200D-2642-FE0F","non_qualified":"1F46E-1F3FC-200D-2642","image":"1f46e-1f3fc-200d-2642-fe0f.png","sheet_x":23,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46E-1F3FD-200D-2642-FE0F","non_qualified":"1F46E-1F3FD-200D-2642","image":"1f46e-1f3fd-200d-2642-fe0f.png","sheet_x":23,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46E-1F3FE-200D-2642-FE0F","non_qualified":"1F46E-1F3FE-200D-2642","image":"1f46e-1f3fe-200d-2642-fe0f.png","sheet_x":23,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46E-1F3FF-200D-2642-FE0F","non_qualified":"1F46E-1F3FF-200D-2642","image":"1f46e-1f3ff-200d-2642-fe0f.png","sheet_x":23,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F46E","a":"Man Police Officer","b":"1F46E-200D-2642-FE0F","c":"1F46E-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_police_officer","man","police","law","legal","enforcement","arrest","911"],"k":[23,3],"o":4},"female-police-officer":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2640-FE0F","non_qualified":"1F46E-1F3FB-200D-2640","image":"1f46e-1f3fb-200d-2640-fe0f.png","sheet_x":22,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46E-1F3FC-200D-2640-FE0F","non_qualified":"1F46E-1F3FC-200D-2640","image":"1f46e-1f3fc-200d-2640-fe0f.png","sheet_x":22,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46E-1F3FD-200D-2640-FE0F","non_qualified":"1F46E-1F3FD-200D-2640","image":"1f46e-1f3fd-200d-2640-fe0f.png","sheet_x":23,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46E-1F3FE-200D-2640-FE0F","non_qualified":"1F46E-1F3FE-200D-2640","image":"1f46e-1f3fe-200d-2640-fe0f.png","sheet_x":23,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46E-1F3FF-200D-2640-FE0F","non_qualified":"1F46E-1F3FF-200D-2640","image":"1f46e-1f3ff-200d-2640-fe0f.png","sheet_x":23,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Police Officer","b":"1F46E-200D-2640-FE0F","c":"1F46E-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_police_officer","woman","police","law","legal","enforcement","arrest","911","female"],"k":[22,58],"o":4},"sleuth_or_spy":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F575-1F3FB","non_qualified":null,"image":"1f575-1f3fb.png","sheet_x":31,"sheet_y":18,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F575-1F3FC","non_qualified":null,"image":"1f575-1f3fc.png","sheet_x":31,"sheet_y":19,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F575-1F3FD","non_qualified":null,"image":"1f575-1f3fd.png","sheet_x":31,"sheet_y":20,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F575-1F3FE","non_qualified":null,"image":"1f575-1f3fe.png","sheet_x":31,"sheet_y":21,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F575-1F3FF","non_qualified":null,"image":"1f575-1f3ff.png","sheet_x":31,"sheet_y":22,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F575-FE0F-200D-2642-FE0F","a":"Detective","b":"1F575-FE0F","c":"1F575","d":true,"e":true,"f":true,"h":true,"j":["detective","human","spy"],"k":[31,17],"o":0},"male-detective":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2642-FE0F","non_qualified":"1F575-1F3FB-200D-2642","image":"1f575-1f3fb-200d-2642-fe0f.png","sheet_x":31,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F575-1F3FC-200D-2642-FE0F","non_qualified":"1F575-1F3FC-200D-2642","image":"1f575-1f3fc-200d-2642-fe0f.png","sheet_x":31,"sheet_y":13,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F575-1F3FD-200D-2642-FE0F","non_qualified":"1F575-1F3FD-200D-2642","image":"1f575-1f3fd-200d-2642-fe0f.png","sheet_x":31,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F575-1F3FE-200D-2642-FE0F","non_qualified":"1F575-1F3FE-200D-2642","image":"1f575-1f3fe-200d-2642-fe0f.png","sheet_x":31,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F575-1F3FF-200D-2642-FE0F","non_qualified":"1F575-1F3FF-200D-2642","image":"1f575-1f3ff-200d-2642-fe0f.png","sheet_x":31,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F575-FE0F","a":"Man Detective","b":"1F575-FE0F-200D-2642-FE0F","d":true,"e":true,"f":true,"h":false,"j":["man_detective","crime"],"k":[31,11],"o":4},"female-detective":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2640-FE0F","non_qualified":"1F575-1F3FB-200D-2640","image":"1f575-1f3fb-200d-2640-fe0f.png","sheet_x":31,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F575-1F3FC-200D-2640-FE0F","non_qualified":"1F575-1F3FC-200D-2640","image":"1f575-1f3fc-200d-2640-fe0f.png","sheet_x":31,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F575-1F3FD-200D-2640-FE0F","non_qualified":"1F575-1F3FD-200D-2640","image":"1f575-1f3fd-200d-2640-fe0f.png","sheet_x":31,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F575-1F3FE-200D-2640-FE0F","non_qualified":"1F575-1F3FE-200D-2640","image":"1f575-1f3fe-200d-2640-fe0f.png","sheet_x":31,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F575-1F3FF-200D-2640-FE0F","non_qualified":"1F575-1F3FF-200D-2640","image":"1f575-1f3ff-200d-2640-fe0f.png","sheet_x":31,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Detective","b":"1F575-FE0F-200D-2640-FE0F","d":true,"e":true,"f":true,"h":false,"j":["woman_detective","human","spy","detective","female","woman"],"k":[31,5],"o":4},"guardsman":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F482-1F3FB","non_qualified":null,"image":"1f482-1f3fb.png","sheet_x":25,"sheet_y":42,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F482-1F3FC","non_qualified":null,"image":"1f482-1f3fc.png","sheet_x":25,"sheet_y":43,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F482-1F3FD","non_qualified":null,"image":"1f482-1f3fd.png","sheet_x":25,"sheet_y":44,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F482-1F3FE","non_qualified":null,"image":"1f482-1f3fe.png","sheet_x":25,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F482-1F3FF","non_qualified":null,"image":"1f482-1f3ff.png","sheet_x":25,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F482-200D-2642-FE0F","a":"Guardsman","b":"1F482","d":true,"e":true,"f":true,"h":true,"j":["guard","protect"],"k":[25,41],"o":0},"male-guard":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2642-FE0F","non_qualified":"1F482-1F3FB-200D-2642","image":"1f482-1f3fb-200d-2642-fe0f.png","sheet_x":25,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F482-1F3FC-200D-2642-FE0F","non_qualified":"1F482-1F3FC-200D-2642","image":"1f482-1f3fc-200d-2642-fe0f.png","sheet_x":25,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F482-1F3FD-200D-2642-FE0F","non_qualified":"1F482-1F3FD-200D-2642","image":"1f482-1f3fd-200d-2642-fe0f.png","sheet_x":25,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F482-1F3FE-200D-2642-FE0F","non_qualified":"1F482-1F3FE-200D-2642","image":"1f482-1f3fe-200d-2642-fe0f.png","sheet_x":25,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F482-1F3FF-200D-2642-FE0F","non_qualified":"1F482-1F3FF-200D-2642","image":"1f482-1f3ff-200d-2642-fe0f.png","sheet_x":25,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F482","a":"Man Guard","b":"1F482-200D-2642-FE0F","c":"1F482-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_guard","uk","gb","british","male","guy","royal"],"k":[25,35],"o":4},"female-guard":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2640-FE0F","non_qualified":"1F482-1F3FB-200D-2640","image":"1f482-1f3fb-200d-2640-fe0f.png","sheet_x":25,"sheet_y":30,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F482-1F3FC-200D-2640-FE0F","non_qualified":"1F482-1F3FC-200D-2640","image":"1f482-1f3fc-200d-2640-fe0f.png","sheet_x":25,"sheet_y":31,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F482-1F3FD-200D-2640-FE0F","non_qualified":"1F482-1F3FD-200D-2640","image":"1f482-1f3fd-200d-2640-fe0f.png","sheet_x":25,"sheet_y":32,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F482-1F3FE-200D-2640-FE0F","non_qualified":"1F482-1F3FE-200D-2640","image":"1f482-1f3fe-200d-2640-fe0f.png","sheet_x":25,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F482-1F3FF-200D-2640-FE0F","non_qualified":"1F482-1F3FF-200D-2640","image":"1f482-1f3ff-200d-2640-fe0f.png","sheet_x":25,"sheet_y":34,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Guard","b":"1F482-200D-2640-FE0F","c":"1F482-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_guard","uk","gb","british","female","royal","woman"],"k":[25,29],"o":4},"ninja":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F977-1F3FB","non_qualified":null,"image":"1f977-1f3fb.png","sheet_x":44,"sheet_y":7,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F977-1F3FC","non_qualified":null,"image":"1f977-1f3fc.png","sheet_x":44,"sheet_y":8,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F977-1F3FD","non_qualified":null,"image":"1f977-1f3fd.png","sheet_x":44,"sheet_y":9,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F977-1F3FE","non_qualified":null,"image":"1f977-1f3fe.png","sheet_x":44,"sheet_y":10,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F977-1F3FF","non_qualified":null,"image":"1f977-1f3ff.png","sheet_x":44,"sheet_y":11,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Ninja","b":"1F977","d":true,"e":true,"f":true,"h":true,"j":["ninja","ninjutsu","skills","japanese"],"k":[44,6],"o":13},"construction_worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F477-1F3FB","non_qualified":null,"image":"1f477-1f3fb.png","sheet_x":24,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F477-1F3FC","non_qualified":null,"image":"1f477-1f3fc.png","sheet_x":24,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F477-1F3FD","non_qualified":null,"image":"1f477-1f3fd.png","sheet_x":24,"sheet_y":50,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F477-1F3FE","non_qualified":null,"image":"1f477-1f3fe.png","sheet_x":24,"sheet_y":51,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F477-1F3FF","non_qualified":null,"image":"1f477-1f3ff.png","sheet_x":24,"sheet_y":52,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F477-200D-2642-FE0F","a":"Construction Worker","b":"1F477","d":true,"e":true,"f":true,"h":true,"j":["construction_worker","labor","build"],"k":[24,47],"o":0},"male-construction-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2642-FE0F","non_qualified":"1F477-1F3FB-200D-2642","image":"1f477-1f3fb-200d-2642-fe0f.png","sheet_x":24,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F477-1F3FC-200D-2642-FE0F","non_qualified":"1F477-1F3FC-200D-2642","image":"1f477-1f3fc-200d-2642-fe0f.png","sheet_x":24,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F477-1F3FD-200D-2642-FE0F","non_qualified":"1F477-1F3FD-200D-2642","image":"1f477-1f3fd-200d-2642-fe0f.png","sheet_x":24,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F477-1F3FE-200D-2642-FE0F","non_qualified":"1F477-1F3FE-200D-2642","image":"1f477-1f3fe-200d-2642-fe0f.png","sheet_x":24,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F477-1F3FF-200D-2642-FE0F","non_qualified":"1F477-1F3FF-200D-2642","image":"1f477-1f3ff-200d-2642-fe0f.png","sheet_x":24,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F477","a":"Man Construction Worker","b":"1F477-200D-2642-FE0F","c":"1F477-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_construction_worker","male","human","wip","guy","build","construction","worker","labor"],"k":[24,41],"o":4},"female-construction-worker":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2640-FE0F","non_qualified":"1F477-1F3FB-200D-2640","image":"1f477-1f3fb-200d-2640-fe0f.png","sheet_x":24,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F477-1F3FC-200D-2640-FE0F","non_qualified":"1F477-1F3FC-200D-2640","image":"1f477-1f3fc-200d-2640-fe0f.png","sheet_x":24,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F477-1F3FD-200D-2640-FE0F","non_qualified":"1F477-1F3FD-200D-2640","image":"1f477-1f3fd-200d-2640-fe0f.png","sheet_x":24,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F477-1F3FE-200D-2640-FE0F","non_qualified":"1F477-1F3FE-200D-2640","image":"1f477-1f3fe-200d-2640-fe0f.png","sheet_x":24,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F477-1F3FF-200D-2640-FE0F","non_qualified":"1F477-1F3FF-200D-2640","image":"1f477-1f3ff-200d-2640-fe0f.png","sheet_x":24,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Construction Worker","b":"1F477-200D-2640-FE0F","c":"1F477-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_construction_worker","female","human","wip","build","construction","worker","labor","woman"],"k":[24,35],"o":4},"person_with_crown":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1FAC5-1F3FB","non_qualified":null,"image":"1fac5-1f3fb.png","sheet_x":55,"sheet_y":11,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAC5-1F3FC","non_qualified":null,"image":"1fac5-1f3fc.png","sheet_x":55,"sheet_y":12,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAC5-1F3FD","non_qualified":null,"image":"1fac5-1f3fd.png","sheet_x":55,"sheet_y":13,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAC5-1F3FE","non_qualified":null,"image":"1fac5-1f3fe.png","sheet_x":55,"sheet_y":14,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAC5-1F3FF","non_qualified":null,"image":"1fac5-1f3ff.png","sheet_x":55,"sheet_y":15,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person with Crown","b":"1FAC5","d":true,"e":true,"f":true,"h":true,"j":["person with crown","royalty","power"],"k":[55,10],"o":14},"prince":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F934-1F3FB","non_qualified":null,"image":"1f934-1f3fb.png","sheet_x":41,"sheet_y":11,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F934-1F3FC","non_qualified":null,"image":"1f934-1f3fc.png","sheet_x":41,"sheet_y":12,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F934-1F3FD","non_qualified":null,"image":"1f934-1f3fd.png","sheet_x":41,"sheet_y":13,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F934-1F3FE","non_qualified":null,"image":"1f934-1f3fe.png","sheet_x":41,"sheet_y":14,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F934-1F3FF","non_qualified":null,"image":"1f934-1f3ff.png","sheet_x":41,"sheet_y":15,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Prince","b":"1F934","d":true,"e":true,"f":true,"h":true,"j":["prince","boy","man","male","crown","royal","king"],"k":[41,10],"o":3},"princess":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F478-1F3FB","non_qualified":null,"image":"1f478-1f3fb.png","sheet_x":24,"sheet_y":54,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F478-1F3FC","non_qualified":null,"image":"1f478-1f3fc.png","sheet_x":24,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F478-1F3FD","non_qualified":null,"image":"1f478-1f3fd.png","sheet_x":24,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F478-1F3FE","non_qualified":null,"image":"1f478-1f3fe.png","sheet_x":24,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F478-1F3FF","non_qualified":null,"image":"1f478-1f3ff.png","sheet_x":24,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Princess","b":"1F478","d":true,"e":true,"f":true,"h":true,"j":["princess","girl","woman","female","blond","crown","royal","queen"],"k":[24,53],"o":0},"man_with_turban":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F473-1F3FB","non_qualified":null,"image":"1f473-1f3fb.png","sheet_x":24,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F473-1F3FC","non_qualified":null,"image":"1f473-1f3fc.png","sheet_x":24,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F473-1F3FD","non_qualified":null,"image":"1f473-1f3fd.png","sheet_x":24,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F473-1F3FE","non_qualified":null,"image":"1f473-1f3fe.png","sheet_x":24,"sheet_y":15,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F473-1F3FF","non_qualified":null,"image":"1f473-1f3ff.png","sheet_x":24,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F473-200D-2642-FE0F","a":"Man with Turban","b":"1F473","d":true,"e":true,"f":true,"h":true,"j":["person_wearing_turban","headdress"],"k":[24,11],"o":0},"man-wearing-turban":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2642-FE0F","non_qualified":"1F473-1F3FB-200D-2642","image":"1f473-1f3fb-200d-2642-fe0f.png","sheet_x":24,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F473-1F3FC-200D-2642-FE0F","non_qualified":"1F473-1F3FC-200D-2642","image":"1f473-1f3fc-200d-2642-fe0f.png","sheet_x":24,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F473-1F3FD-200D-2642-FE0F","non_qualified":"1F473-1F3FD-200D-2642","image":"1f473-1f3fd-200d-2642-fe0f.png","sheet_x":24,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F473-1F3FE-200D-2642-FE0F","non_qualified":"1F473-1F3FE-200D-2642","image":"1f473-1f3fe-200d-2642-fe0f.png","sheet_x":24,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F473-1F3FF-200D-2642-FE0F","non_qualified":"1F473-1F3FF-200D-2642","image":"1f473-1f3ff-200d-2642-fe0f.png","sheet_x":24,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F473","a":"Man Wearing Turban","b":"1F473-200D-2642-FE0F","c":"1F473-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_wearing_turban","male","indian","hinduism","arabs"],"k":[24,5],"o":4},"woman-wearing-turban":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2640-FE0F","non_qualified":"1F473-1F3FB-200D-2640","image":"1f473-1f3fb-200d-2640-fe0f.png","sheet_x":24,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F473-1F3FC-200D-2640-FE0F","non_qualified":"1F473-1F3FC-200D-2640","image":"1f473-1f3fc-200d-2640-fe0f.png","sheet_x":24,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F473-1F3FD-200D-2640-FE0F","non_qualified":"1F473-1F3FD-200D-2640","image":"1f473-1f3fd-200d-2640-fe0f.png","sheet_x":24,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F473-1F3FE-200D-2640-FE0F","non_qualified":"1F473-1F3FE-200D-2640","image":"1f473-1f3fe-200d-2640-fe0f.png","sheet_x":24,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F473-1F3FF-200D-2640-FE0F","non_qualified":"1F473-1F3FF-200D-2640","image":"1f473-1f3ff-200d-2640-fe0f.png","sheet_x":24,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Wearing Turban","b":"1F473-200D-2640-FE0F","c":"1F473-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_wearing_turban","female","indian","hinduism","arabs","woman"],"k":[23,60],"o":4},"man_with_gua_pi_mao":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F472-1F3FB","non_qualified":null,"image":"1f472-1f3fb.png","sheet_x":23,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F472-1F3FC","non_qualified":null,"image":"1f472-1f3fc.png","sheet_x":23,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F472-1F3FD","non_qualified":null,"image":"1f472-1f3fd.png","sheet_x":23,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F472-1F3FE","non_qualified":null,"image":"1f472-1f3fe.png","sheet_x":23,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F472-1F3FF","non_qualified":null,"image":"1f472-1f3ff.png","sheet_x":23,"sheet_y":59,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man with Gua Pi Mao","b":"1F472","d":true,"e":true,"f":true,"h":true,"j":["man_with_skullcap","male","boy","chinese"],"k":[23,54],"o":0},"person_with_headscarf":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D5-1F3FB","non_qualified":null,"image":"1f9d5-1f3fb.png","sheet_x":50,"sheet_y":44,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D5-1F3FC","non_qualified":null,"image":"1f9d5-1f3fc.png","sheet_x":50,"sheet_y":45,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D5-1F3FD","non_qualified":null,"image":"1f9d5-1f3fd.png","sheet_x":50,"sheet_y":46,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D5-1F3FE","non_qualified":null,"image":"1f9d5-1f3fe.png","sheet_x":50,"sheet_y":47,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D5-1F3FF","non_qualified":null,"image":"1f9d5-1f3ff.png","sheet_x":50,"sheet_y":48,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person with Headscarf","b":"1F9D5","d":true,"e":true,"f":true,"h":true,"j":["woman_with_headscarf","female","hijab","mantilla","tichel"],"k":[50,43],"o":5},"person_in_tuxedo":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F935-1F3FB","non_qualified":null,"image":"1f935-1f3fb.png","sheet_x":41,"sheet_y":29,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F935-1F3FC","non_qualified":null,"image":"1f935-1f3fc.png","sheet_x":41,"sheet_y":30,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F935-1F3FD","non_qualified":null,"image":"1f935-1f3fd.png","sheet_x":41,"sheet_y":31,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F935-1F3FE","non_qualified":null,"image":"1f935-1f3fe.png","sheet_x":41,"sheet_y":32,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F935-1F3FF","non_qualified":null,"image":"1f935-1f3ff.png","sheet_x":41,"sheet_y":33,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man in Tuxedo","b":"1F935","d":true,"e":true,"f":true,"h":true,"j":["man_in_tuxedo","couple","marriage","wedding","groom"],"k":[41,28],"o":3},"man_in_tuxedo":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F935-1F3FB-200D-2642-FE0F","non_qualified":"1F935-1F3FB-200D-2642","image":"1f935-1f3fb-200d-2642-fe0f.png","sheet_x":41,"sheet_y":23,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F935-1F3FC-200D-2642-FE0F","non_qualified":"1F935-1F3FC-200D-2642","image":"1f935-1f3fc-200d-2642-fe0f.png","sheet_x":41,"sheet_y":24,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F935-1F3FD-200D-2642-FE0F","non_qualified":"1F935-1F3FD-200D-2642","image":"1f935-1f3fd-200d-2642-fe0f.png","sheet_x":41,"sheet_y":25,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F935-1F3FE-200D-2642-FE0F","non_qualified":"1F935-1F3FE-200D-2642","image":"1f935-1f3fe-200d-2642-fe0f.png","sheet_x":41,"sheet_y":26,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F935-1F3FF-200D-2642-FE0F","non_qualified":"1F935-1F3FF-200D-2642","image":"1f935-1f3ff-200d-2642-fe0f.png","sheet_x":41,"sheet_y":27,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man in Tuxedo","b":"1F935-200D-2642-FE0F","c":"1F935-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man in tuxedo","formal","fashion"],"k":[41,22],"o":13},"woman_in_tuxedo":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F935-1F3FB-200D-2640-FE0F","non_qualified":"1F935-1F3FB-200D-2640","image":"1f935-1f3fb-200d-2640-fe0f.png","sheet_x":41,"sheet_y":17,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F935-1F3FC-200D-2640-FE0F","non_qualified":"1F935-1F3FC-200D-2640","image":"1f935-1f3fc-200d-2640-fe0f.png","sheet_x":41,"sheet_y":18,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F935-1F3FD-200D-2640-FE0F","non_qualified":"1F935-1F3FD-200D-2640","image":"1f935-1f3fd-200d-2640-fe0f.png","sheet_x":41,"sheet_y":19,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F935-1F3FE-200D-2640-FE0F","non_qualified":"1F935-1F3FE-200D-2640","image":"1f935-1f3fe-200d-2640-fe0f.png","sheet_x":41,"sheet_y":20,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F935-1F3FF-200D-2640-FE0F","non_qualified":"1F935-1F3FF-200D-2640","image":"1f935-1f3ff-200d-2640-fe0f.png","sheet_x":41,"sheet_y":21,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman in Tuxedo","b":"1F935-200D-2640-FE0F","c":"1F935-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman in tuxedo","formal","fashion"],"k":[41,16],"o":13},"bride_with_veil":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F470-1F3FB","non_qualified":null,"image":"1f470-1f3fb.png","sheet_x":23,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F470-1F3FC","non_qualified":null,"image":"1f470-1f3fc.png","sheet_x":23,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F470-1F3FD","non_qualified":null,"image":"1f470-1f3fd.png","sheet_x":23,"sheet_y":33,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F470-1F3FE","non_qualified":null,"image":"1f470-1f3fe.png","sheet_x":23,"sheet_y":34,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F470-1F3FF","non_qualified":null,"image":"1f470-1f3ff.png","sheet_x":23,"sheet_y":35,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Bride with Veil","b":"1F470","d":true,"e":true,"f":true,"h":true,"j":["bride_with_veil","couple","marriage","wedding","woman","bride"],"k":[23,30],"o":0},"man_with_veil":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F470-1F3FB-200D-2642-FE0F","non_qualified":"1F470-1F3FB-200D-2642","image":"1f470-1f3fb-200d-2642-fe0f.png","sheet_x":23,"sheet_y":25,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F470-1F3FC-200D-2642-FE0F","non_qualified":"1F470-1F3FC-200D-2642","image":"1f470-1f3fc-200d-2642-fe0f.png","sheet_x":23,"sheet_y":26,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F470-1F3FD-200D-2642-FE0F","non_qualified":"1F470-1F3FD-200D-2642","image":"1f470-1f3fd-200d-2642-fe0f.png","sheet_x":23,"sheet_y":27,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F470-1F3FE-200D-2642-FE0F","non_qualified":"1F470-1F3FE-200D-2642","image":"1f470-1f3fe-200d-2642-fe0f.png","sheet_x":23,"sheet_y":28,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F470-1F3FF-200D-2642-FE0F","non_qualified":"1F470-1F3FF-200D-2642","image":"1f470-1f3ff-200d-2642-fe0f.png","sheet_x":23,"sheet_y":29,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man with Veil","b":"1F470-200D-2642-FE0F","c":"1F470-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man with veil","wedding","marriage"],"k":[23,24],"o":13},"woman_with_veil":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F470-1F3FB-200D-2640-FE0F","non_qualified":"1F470-1F3FB-200D-2640","image":"1f470-1f3fb-200d-2640-fe0f.png","sheet_x":23,"sheet_y":19,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F470-1F3FC-200D-2640-FE0F","non_qualified":"1F470-1F3FC-200D-2640","image":"1f470-1f3fc-200d-2640-fe0f.png","sheet_x":23,"sheet_y":20,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F470-1F3FD-200D-2640-FE0F","non_qualified":"1F470-1F3FD-200D-2640","image":"1f470-1f3fd-200d-2640-fe0f.png","sheet_x":23,"sheet_y":21,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F470-1F3FE-200D-2640-FE0F","non_qualified":"1F470-1F3FE-200D-2640","image":"1f470-1f3fe-200d-2640-fe0f.png","sheet_x":23,"sheet_y":22,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F470-1F3FF-200D-2640-FE0F","non_qualified":"1F470-1F3FF-200D-2640","image":"1f470-1f3ff-200d-2640-fe0f.png","sheet_x":23,"sheet_y":23,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman with Veil","b":"1F470-200D-2640-FE0F","c":"1F470-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman with veil","wedding","marriage"],"k":[23,18],"o":13},"pregnant_woman":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F930-1F3FB","non_qualified":null,"image":"1f930-1f3fb.png","sheet_x":40,"sheet_y":48,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F930-1F3FC","non_qualified":null,"image":"1f930-1f3fc.png","sheet_x":40,"sheet_y":49,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F930-1F3FD","non_qualified":null,"image":"1f930-1f3fd.png","sheet_x":40,"sheet_y":50,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F930-1F3FE","non_qualified":null,"image":"1f930-1f3fe.png","sheet_x":40,"sheet_y":51,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F930-1F3FF","non_qualified":null,"image":"1f930-1f3ff.png","sheet_x":40,"sheet_y":52,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pregnant Woman","b":"1F930","d":true,"e":true,"f":true,"h":true,"j":["pregnant_woman","baby"],"k":[40,47],"o":3},"pregnant_man":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1FAC3-1F3FB","non_qualified":null,"image":"1fac3-1f3fb.png","sheet_x":54,"sheet_y":60,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAC3-1F3FC","non_qualified":null,"image":"1fac3-1f3fc.png","sheet_x":55,"sheet_y":0,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAC3-1F3FD","non_qualified":null,"image":"1fac3-1f3fd.png","sheet_x":55,"sheet_y":1,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAC3-1F3FE","non_qualified":null,"image":"1fac3-1f3fe.png","sheet_x":55,"sheet_y":2,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAC3-1F3FF","non_qualified":null,"image":"1fac3-1f3ff.png","sheet_x":55,"sheet_y":3,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pregnant Man","b":"1FAC3","d":true,"e":true,"f":true,"h":true,"j":["pregnant man","baby","belly"],"k":[54,59],"o":14},"pregnant_person":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1FAC4-1F3FB","non_qualified":null,"image":"1fac4-1f3fb.png","sheet_x":55,"sheet_y":5,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1FAC4-1F3FC","non_qualified":null,"image":"1fac4-1f3fc.png","sheet_x":55,"sheet_y":6,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1FAC4-1F3FD","non_qualified":null,"image":"1fac4-1f3fd.png","sheet_x":55,"sheet_y":7,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1FAC4-1F3FE","non_qualified":null,"image":"1fac4-1f3fe.png","sheet_x":55,"sheet_y":8,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1FAC4-1F3FF","non_qualified":null,"image":"1fac4-1f3ff.png","sheet_x":55,"sheet_y":9,"added_in":"14.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Pregnant Person","b":"1FAC4","d":true,"e":true,"f":true,"h":true,"j":["pregnant person","baby","belly"],"k":[55,4],"o":14},"breast-feeding":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F931-1F3FB","non_qualified":null,"image":"1f931-1f3fb.png","sheet_x":40,"sheet_y":54,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F931-1F3FC","non_qualified":null,"image":"1f931-1f3fc.png","sheet_x":40,"sheet_y":55,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F931-1F3FD","non_qualified":null,"image":"1f931-1f3fd.png","sheet_x":40,"sheet_y":56,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F931-1F3FE","non_qualified":null,"image":"1f931-1f3fe.png","sheet_x":40,"sheet_y":57,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F931-1F3FF","non_qualified":null,"image":"1f931-1f3ff.png","sheet_x":40,"sheet_y":58,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Breast-Feeding","b":"1F931","d":true,"e":true,"f":true,"h":true,"j":["breast_feeding","nursing","baby"],"k":[40,53],"o":5},"woman_feeding_baby":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F37C","non_qualified":null,"image":"1f469-1f3fb-200d-1f37c.png","sheet_x":17,"sheet_y":33,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F37C","non_qualified":null,"image":"1f469-1f3fc-200d-1f37c.png","sheet_x":17,"sheet_y":34,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F37C","non_qualified":null,"image":"1f469-1f3fd-200d-1f37c.png","sheet_x":17,"sheet_y":35,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F37C","non_qualified":null,"image":"1f469-1f3fe-200d-1f37c.png","sheet_x":17,"sheet_y":36,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F37C","non_qualified":null,"image":"1f469-1f3ff-200d-1f37c.png","sheet_x":17,"sheet_y":37,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Feeding Baby","b":"1F469-200D-1F37C","d":true,"e":true,"f":true,"h":true,"j":["woman feeding baby","birth","food"],"k":[17,32],"o":13},"man_feeding_baby":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F37C","non_qualified":null,"image":"1f468-1f3fb-200d-1f37c.png","sheet_x":13,"sheet_y":60,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F37C","non_qualified":null,"image":"1f468-1f3fc-200d-1f37c.png","sheet_x":14,"sheet_y":0,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F37C","non_qualified":null,"image":"1f468-1f3fd-200d-1f37c.png","sheet_x":14,"sheet_y":1,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F37C","non_qualified":null,"image":"1f468-1f3fe-200d-1f37c.png","sheet_x":14,"sheet_y":2,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F37C","non_qualified":null,"image":"1f468-1f3ff-200d-1f37c.png","sheet_x":14,"sheet_y":3,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Feeding Baby","b":"1F468-200D-1F37C","d":true,"e":true,"f":true,"h":true,"j":["man feeding baby","birth","food"],"k":[13,59],"o":13},"person_feeding_baby":{"subcategory":"person-role","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F37C","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f37c.png","sheet_x":47,"sheet_y":27,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F37C","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f37c.png","sheet_x":47,"sheet_y":28,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F37C","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f37c.png","sheet_x":47,"sheet_y":29,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F37C","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f37c.png","sheet_x":47,"sheet_y":30,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F37C","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f37c.png","sheet_x":47,"sheet_y":31,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person Feeding Baby","b":"1F9D1-200D-1F37C","d":true,"e":true,"f":true,"h":true,"j":["person feeding baby","birth","food"],"k":[47,26],"o":13},"angel":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F47C-1F3FB","non_qualified":null,"image":"1f47c-1f3fb.png","sheet_x":25,"sheet_y":2,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F47C-1F3FC","non_qualified":null,"image":"1f47c-1f3fc.png","sheet_x":25,"sheet_y":3,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F47C-1F3FD","non_qualified":null,"image":"1f47c-1f3fd.png","sheet_x":25,"sheet_y":4,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F47C-1F3FE","non_qualified":null,"image":"1f47c-1f3fe.png","sheet_x":25,"sheet_y":5,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F47C-1F3FF","non_qualified":null,"image":"1f47c-1f3ff.png","sheet_x":25,"sheet_y":6,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Baby Angel","b":"1F47C","d":true,"e":true,"f":true,"h":true,"j":["baby_angel","heaven","wings","halo"],"k":[25,1],"o":0},"santa":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F385-1F3FB","non_qualified":null,"image":"1f385-1f3fb.png","sheet_x":7,"sheet_y":9,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F385-1F3FC","non_qualified":null,"image":"1f385-1f3fc.png","sheet_x":7,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F385-1F3FD","non_qualified":null,"image":"1f385-1f3fd.png","sheet_x":7,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F385-1F3FE","non_qualified":null,"image":"1f385-1f3fe.png","sheet_x":7,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F385-1F3FF","non_qualified":null,"image":"1f385-1f3ff.png","sheet_x":7,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Father Christmas","b":"1F385","d":true,"e":true,"f":true,"h":true,"j":["santa_claus","festival","man","male","xmas","father christmas"],"k":[7,8],"o":0},"mrs_claus":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F936-1F3FB","non_qualified":null,"image":"1f936-1f3fb.png","sheet_x":41,"sheet_y":35,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F936-1F3FC","non_qualified":null,"image":"1f936-1f3fc.png","sheet_x":41,"sheet_y":36,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F936-1F3FD","non_qualified":null,"image":"1f936-1f3fd.png","sheet_x":41,"sheet_y":37,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F936-1F3FE","non_qualified":null,"image":"1f936-1f3fe.png","sheet_x":41,"sheet_y":38,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F936-1F3FF","non_qualified":null,"image":"1f936-1f3ff.png","sheet_x":41,"sheet_y":39,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Mother Christmas","b":"1F936","d":true,"e":true,"f":true,"h":true,"j":["mrs_claus","woman","female","xmas","mother christmas"],"k":[41,34],"n":["mother_christmas"],"o":3},"mx_claus":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F384","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f384.png","sheet_x":47,"sheet_y":33,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F384","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f384.png","sheet_x":47,"sheet_y":34,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F384","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f384.png","sheet_x":47,"sheet_y":35,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F384","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f384.png","sheet_x":47,"sheet_y":36,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F384","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f384.png","sheet_x":47,"sheet_y":37,"added_in":"13.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Mx Claus","b":"1F9D1-200D-1F384","d":true,"e":true,"f":true,"h":true,"j":["mx claus","christmas"],"k":[47,32],"o":13},"superhero":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B8-1F3FB","non_qualified":null,"image":"1f9b8-1f3fb.png","sheet_x":45,"sheet_y":34,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B8-1F3FC","non_qualified":null,"image":"1f9b8-1f3fc.png","sheet_x":45,"sheet_y":35,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B8-1F3FD","non_qualified":null,"image":"1f9b8-1f3fd.png","sheet_x":45,"sheet_y":36,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B8-1F3FE","non_qualified":null,"image":"1f9b8-1f3fe.png","sheet_x":45,"sheet_y":37,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B8-1F3FF","non_qualified":null,"image":"1f9b8-1f3ff.png","sheet_x":45,"sheet_y":38,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Superhero","b":"1F9B8","d":true,"e":true,"f":true,"h":true,"j":["superhero","marvel"],"k":[45,33],"o":11},"male_superhero":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B8-1F3FB-200D-2642-FE0F","non_qualified":"1F9B8-1F3FB-200D-2642","image":"1f9b8-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":28,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B8-1F3FC-200D-2642-FE0F","non_qualified":"1F9B8-1F3FC-200D-2642","image":"1f9b8-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":29,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B8-1F3FD-200D-2642-FE0F","non_qualified":"1F9B8-1F3FD-200D-2642","image":"1f9b8-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":30,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B8-1F3FE-200D-2642-FE0F","non_qualified":"1F9B8-1F3FE-200D-2642","image":"1f9b8-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":31,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B8-1F3FF-200D-2642-FE0F","non_qualified":"1F9B8-1F3FF-200D-2642","image":"1f9b8-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":32,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Superhero","b":"1F9B8-200D-2642-FE0F","c":"1F9B8-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_superhero","man","male","good","hero","superpowers"],"k":[45,27],"o":11},"female_superhero":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B8-1F3FB-200D-2640-FE0F","non_qualified":"1F9B8-1F3FB-200D-2640","image":"1f9b8-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":22,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B8-1F3FC-200D-2640-FE0F","non_qualified":"1F9B8-1F3FC-200D-2640","image":"1f9b8-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":23,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B8-1F3FD-200D-2640-FE0F","non_qualified":"1F9B8-1F3FD-200D-2640","image":"1f9b8-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":24,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B8-1F3FE-200D-2640-FE0F","non_qualified":"1F9B8-1F3FE-200D-2640","image":"1f9b8-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":25,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B8-1F3FF-200D-2640-FE0F","non_qualified":"1F9B8-1F3FF-200D-2640","image":"1f9b8-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":26,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Superhero","b":"1F9B8-200D-2640-FE0F","c":"1F9B8-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_superhero","woman","female","good","heroine","superpowers"],"k":[45,21],"o":11},"supervillain":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B9-1F3FB","non_qualified":null,"image":"1f9b9-1f3fb.png","sheet_x":45,"sheet_y":52,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B9-1F3FC","non_qualified":null,"image":"1f9b9-1f3fc.png","sheet_x":45,"sheet_y":53,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B9-1F3FD","non_qualified":null,"image":"1f9b9-1f3fd.png","sheet_x":45,"sheet_y":54,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B9-1F3FE","non_qualified":null,"image":"1f9b9-1f3fe.png","sheet_x":45,"sheet_y":55,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B9-1F3FF","non_qualified":null,"image":"1f9b9-1f3ff.png","sheet_x":45,"sheet_y":56,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Supervillain","b":"1F9B9","d":true,"e":true,"f":true,"h":true,"j":["supervillain","marvel"],"k":[45,51],"o":11},"male_supervillain":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B9-1F3FB-200D-2642-FE0F","non_qualified":"1F9B9-1F3FB-200D-2642","image":"1f9b9-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":46,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B9-1F3FC-200D-2642-FE0F","non_qualified":"1F9B9-1F3FC-200D-2642","image":"1f9b9-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":47,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B9-1F3FD-200D-2642-FE0F","non_qualified":"1F9B9-1F3FD-200D-2642","image":"1f9b9-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":48,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B9-1F3FE-200D-2642-FE0F","non_qualified":"1F9B9-1F3FE-200D-2642","image":"1f9b9-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":49,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B9-1F3FF-200D-2642-FE0F","non_qualified":"1F9B9-1F3FF-200D-2642","image":"1f9b9-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":50,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Supervillain","b":"1F9B9-200D-2642-FE0F","c":"1F9B9-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_supervillain","man","male","evil","bad","criminal","hero","superpowers"],"k":[45,45],"o":11},"female_supervillain":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9B9-1F3FB-200D-2640-FE0F","non_qualified":"1F9B9-1F3FB-200D-2640","image":"1f9b9-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":40,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9B9-1F3FC-200D-2640-FE0F","non_qualified":"1F9B9-1F3FC-200D-2640","image":"1f9b9-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":41,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9B9-1F3FD-200D-2640-FE0F","non_qualified":"1F9B9-1F3FD-200D-2640","image":"1f9b9-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":42,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9B9-1F3FE-200D-2640-FE0F","non_qualified":"1F9B9-1F3FE-200D-2640","image":"1f9b9-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":43,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9B9-1F3FF-200D-2640-FE0F","non_qualified":"1F9B9-1F3FF-200D-2640","image":"1f9b9-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":44,"added_in":"11.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Supervillain","b":"1F9B9-200D-2640-FE0F","c":"1F9B9-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_supervillain","woman","female","evil","bad","criminal","heroine","superpowers"],"k":[45,39],"o":11},"mage":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9D9-1F3FB","non_qualified":null,"image":"1f9d9-1f3fb.png","sheet_x":51,"sheet_y":55,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D9-1F3FB-200D-2640-FE0F"},"1F3FC":{"unified":"1F9D9-1F3FC","non_qualified":null,"image":"1f9d9-1f3fc.png","sheet_x":51,"sheet_y":56,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D9-1F3FC-200D-2640-FE0F"},"1F3FD":{"unified":"1F9D9-1F3FD","non_qualified":null,"image":"1f9d9-1f3fd.png","sheet_x":51,"sheet_y":57,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D9-1F3FD-200D-2640-FE0F"},"1F3FE":{"unified":"1F9D9-1F3FE","non_qualified":null,"image":"1f9d9-1f3fe.png","sheet_x":51,"sheet_y":58,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D9-1F3FE-200D-2640-FE0F"},"1F3FF":{"unified":"1F9D9-1F3FF","non_qualified":null,"image":"1f9d9-1f3ff.png","sheet_x":51,"sheet_y":59,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D9-1F3FF-200D-2640-FE0F"}},"obsoleted_by":"1F9D9-200D-2640-FE0F","a":"Mage","b":"1F9D9","d":true,"e":true,"f":true,"h":true,"j":["mage","magic"],"k":[51,54],"o":5},"male_mage":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9D9-1F3FB-200D-2642-FE0F","non_qualified":"1F9D9-1F3FB-200D-2642","image":"1f9d9-1f3fb-200d-2642-fe0f.png","sheet_x":51,"sheet_y":49,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D9-1F3FC-200D-2642-FE0F","non_qualified":"1F9D9-1F3FC-200D-2642","image":"1f9d9-1f3fc-200d-2642-fe0f.png","sheet_x":51,"sheet_y":50,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D9-1F3FD-200D-2642-FE0F","non_qualified":"1F9D9-1F3FD-200D-2642","image":"1f9d9-1f3fd-200d-2642-fe0f.png","sheet_x":51,"sheet_y":51,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D9-1F3FE-200D-2642-FE0F","non_qualified":"1F9D9-1F3FE-200D-2642","image":"1f9d9-1f3fe-200d-2642-fe0f.png","sheet_x":51,"sheet_y":52,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D9-1F3FF-200D-2642-FE0F","non_qualified":"1F9D9-1F3FF-200D-2642","image":"1f9d9-1f3ff-200d-2642-fe0f.png","sheet_x":51,"sheet_y":53,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Mage","b":"1F9D9-200D-2642-FE0F","c":"1F9D9-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_mage","man","male","mage","sorcerer"],"k":[51,48],"o":5},"female_mage":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9D9-1F3FB-200D-2640-FE0F","non_qualified":"1F9D9-1F3FB-200D-2640","image":"1f9d9-1f3fb-200d-2640-fe0f.png","sheet_x":51,"sheet_y":43,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D9-1F3FB"},"1F3FC":{"unified":"1F9D9-1F3FC-200D-2640-FE0F","non_qualified":"1F9D9-1F3FC-200D-2640","image":"1f9d9-1f3fc-200d-2640-fe0f.png","sheet_x":51,"sheet_y":44,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D9-1F3FC"},"1F3FD":{"unified":"1F9D9-1F3FD-200D-2640-FE0F","non_qualified":"1F9D9-1F3FD-200D-2640","image":"1f9d9-1f3fd-200d-2640-fe0f.png","sheet_x":51,"sheet_y":45,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D9-1F3FD"},"1F3FE":{"unified":"1F9D9-1F3FE-200D-2640-FE0F","non_qualified":"1F9D9-1F3FE-200D-2640","image":"1f9d9-1f3fe-200d-2640-fe0f.png","sheet_x":51,"sheet_y":46,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D9-1F3FE"},"1F3FF":{"unified":"1F9D9-1F3FF-200D-2640-FE0F","non_qualified":"1F9D9-1F3FF-200D-2640","image":"1f9d9-1f3ff-200d-2640-fe0f.png","sheet_x":51,"sheet_y":47,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D9-1F3FF"}},"obsoletes":"1F9D9","a":"Woman Mage","b":"1F9D9-200D-2640-FE0F","c":"1F9D9-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_mage","woman","female","mage","witch"],"k":[51,42],"o":5},"fairy":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DA-1F3FB","non_qualified":null,"image":"1f9da-1f3fb.png","sheet_x":52,"sheet_y":12,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DA-1F3FB-200D-2640-FE0F"},"1F3FC":{"unified":"1F9DA-1F3FC","non_qualified":null,"image":"1f9da-1f3fc.png","sheet_x":52,"sheet_y":13,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DA-1F3FC-200D-2640-FE0F"},"1F3FD":{"unified":"1F9DA-1F3FD","non_qualified":null,"image":"1f9da-1f3fd.png","sheet_x":52,"sheet_y":14,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DA-1F3FD-200D-2640-FE0F"},"1F3FE":{"unified":"1F9DA-1F3FE","non_qualified":null,"image":"1f9da-1f3fe.png","sheet_x":52,"sheet_y":15,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DA-1F3FE-200D-2640-FE0F"},"1F3FF":{"unified":"1F9DA-1F3FF","non_qualified":null,"image":"1f9da-1f3ff.png","sheet_x":52,"sheet_y":16,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DA-1F3FF-200D-2640-FE0F"}},"obsoleted_by":"1F9DA-200D-2640-FE0F","a":"Fairy","b":"1F9DA","d":true,"e":true,"f":true,"h":true,"j":["fairy","wings","magical"],"k":[52,11],"o":5},"male_fairy":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DA-1F3FB-200D-2642-FE0F","non_qualified":"1F9DA-1F3FB-200D-2642","image":"1f9da-1f3fb-200d-2642-fe0f.png","sheet_x":52,"sheet_y":6,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9DA-1F3FC-200D-2642-FE0F","non_qualified":"1F9DA-1F3FC-200D-2642","image":"1f9da-1f3fc-200d-2642-fe0f.png","sheet_x":52,"sheet_y":7,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9DA-1F3FD-200D-2642-FE0F","non_qualified":"1F9DA-1F3FD-200D-2642","image":"1f9da-1f3fd-200d-2642-fe0f.png","sheet_x":52,"sheet_y":8,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9DA-1F3FE-200D-2642-FE0F","non_qualified":"1F9DA-1F3FE-200D-2642","image":"1f9da-1f3fe-200d-2642-fe0f.png","sheet_x":52,"sheet_y":9,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9DA-1F3FF-200D-2642-FE0F","non_qualified":"1F9DA-1F3FF-200D-2642","image":"1f9da-1f3ff-200d-2642-fe0f.png","sheet_x":52,"sheet_y":10,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Fairy","b":"1F9DA-200D-2642-FE0F","c":"1F9DA-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_fairy","man","male"],"k":[52,5],"o":5},"female_fairy":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DA-1F3FB-200D-2640-FE0F","non_qualified":"1F9DA-1F3FB-200D-2640","image":"1f9da-1f3fb-200d-2640-fe0f.png","sheet_x":52,"sheet_y":0,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DA-1F3FB"},"1F3FC":{"unified":"1F9DA-1F3FC-200D-2640-FE0F","non_qualified":"1F9DA-1F3FC-200D-2640","image":"1f9da-1f3fc-200d-2640-fe0f.png","sheet_x":52,"sheet_y":1,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DA-1F3FC"},"1F3FD":{"unified":"1F9DA-1F3FD-200D-2640-FE0F","non_qualified":"1F9DA-1F3FD-200D-2640","image":"1f9da-1f3fd-200d-2640-fe0f.png","sheet_x":52,"sheet_y":2,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DA-1F3FD"},"1F3FE":{"unified":"1F9DA-1F3FE-200D-2640-FE0F","non_qualified":"1F9DA-1F3FE-200D-2640","image":"1f9da-1f3fe-200d-2640-fe0f.png","sheet_x":52,"sheet_y":3,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DA-1F3FE"},"1F3FF":{"unified":"1F9DA-1F3FF-200D-2640-FE0F","non_qualified":"1F9DA-1F3FF-200D-2640","image":"1f9da-1f3ff-200d-2640-fe0f.png","sheet_x":52,"sheet_y":4,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DA-1F3FF"}},"obsoletes":"1F9DA","a":"Woman Fairy","b":"1F9DA-200D-2640-FE0F","c":"1F9DA-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_fairy","woman","female"],"k":[51,60],"o":5},"vampire":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DB-1F3FB","non_qualified":null,"image":"1f9db-1f3fb.png","sheet_x":52,"sheet_y":30,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DB-1F3FB-200D-2640-FE0F"},"1F3FC":{"unified":"1F9DB-1F3FC","non_qualified":null,"image":"1f9db-1f3fc.png","sheet_x":52,"sheet_y":31,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DB-1F3FC-200D-2640-FE0F"},"1F3FD":{"unified":"1F9DB-1F3FD","non_qualified":null,"image":"1f9db-1f3fd.png","sheet_x":52,"sheet_y":32,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DB-1F3FD-200D-2640-FE0F"},"1F3FE":{"unified":"1F9DB-1F3FE","non_qualified":null,"image":"1f9db-1f3fe.png","sheet_x":52,"sheet_y":33,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DB-1F3FE-200D-2640-FE0F"},"1F3FF":{"unified":"1F9DB-1F3FF","non_qualified":null,"image":"1f9db-1f3ff.png","sheet_x":52,"sheet_y":34,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DB-1F3FF-200D-2640-FE0F"}},"obsoleted_by":"1F9DB-200D-2640-FE0F","a":"Vampire","b":"1F9DB","d":true,"e":true,"f":true,"h":true,"j":["vampire","blood","twilight"],"k":[52,29],"o":5},"male_vampire":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DB-1F3FB-200D-2642-FE0F","non_qualified":"1F9DB-1F3FB-200D-2642","image":"1f9db-1f3fb-200d-2642-fe0f.png","sheet_x":52,"sheet_y":24,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9DB-1F3FC-200D-2642-FE0F","non_qualified":"1F9DB-1F3FC-200D-2642","image":"1f9db-1f3fc-200d-2642-fe0f.png","sheet_x":52,"sheet_y":25,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9DB-1F3FD-200D-2642-FE0F","non_qualified":"1F9DB-1F3FD-200D-2642","image":"1f9db-1f3fd-200d-2642-fe0f.png","sheet_x":52,"sheet_y":26,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9DB-1F3FE-200D-2642-FE0F","non_qualified":"1F9DB-1F3FE-200D-2642","image":"1f9db-1f3fe-200d-2642-fe0f.png","sheet_x":52,"sheet_y":27,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9DB-1F3FF-200D-2642-FE0F","non_qualified":"1F9DB-1F3FF-200D-2642","image":"1f9db-1f3ff-200d-2642-fe0f.png","sheet_x":52,"sheet_y":28,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Vampire","b":"1F9DB-200D-2642-FE0F","c":"1F9DB-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_vampire","man","male","dracula"],"k":[52,23],"o":5},"female_vampire":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DB-1F3FB-200D-2640-FE0F","non_qualified":"1F9DB-1F3FB-200D-2640","image":"1f9db-1f3fb-200d-2640-fe0f.png","sheet_x":52,"sheet_y":18,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DB-1F3FB"},"1F3FC":{"unified":"1F9DB-1F3FC-200D-2640-FE0F","non_qualified":"1F9DB-1F3FC-200D-2640","image":"1f9db-1f3fc-200d-2640-fe0f.png","sheet_x":52,"sheet_y":19,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DB-1F3FC"},"1F3FD":{"unified":"1F9DB-1F3FD-200D-2640-FE0F","non_qualified":"1F9DB-1F3FD-200D-2640","image":"1f9db-1f3fd-200d-2640-fe0f.png","sheet_x":52,"sheet_y":20,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DB-1F3FD"},"1F3FE":{"unified":"1F9DB-1F3FE-200D-2640-FE0F","non_qualified":"1F9DB-1F3FE-200D-2640","image":"1f9db-1f3fe-200d-2640-fe0f.png","sheet_x":52,"sheet_y":21,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DB-1F3FE"},"1F3FF":{"unified":"1F9DB-1F3FF-200D-2640-FE0F","non_qualified":"1F9DB-1F3FF-200D-2640","image":"1f9db-1f3ff-200d-2640-fe0f.png","sheet_x":52,"sheet_y":22,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DB-1F3FF"}},"obsoletes":"1F9DB","a":"Woman Vampire","b":"1F9DB-200D-2640-FE0F","c":"1F9DB-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_vampire","woman","female"],"k":[52,17],"o":5},"merperson":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DC-1F3FB","non_qualified":null,"image":"1f9dc-1f3fb.png","sheet_x":52,"sheet_y":48,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DC-1F3FB-200D-2642-FE0F"},"1F3FC":{"unified":"1F9DC-1F3FC","non_qualified":null,"image":"1f9dc-1f3fc.png","sheet_x":52,"sheet_y":49,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DC-1F3FC-200D-2642-FE0F"},"1F3FD":{"unified":"1F9DC-1F3FD","non_qualified":null,"image":"1f9dc-1f3fd.png","sheet_x":52,"sheet_y":50,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DC-1F3FD-200D-2642-FE0F"},"1F3FE":{"unified":"1F9DC-1F3FE","non_qualified":null,"image":"1f9dc-1f3fe.png","sheet_x":52,"sheet_y":51,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DC-1F3FE-200D-2642-FE0F"},"1F3FF":{"unified":"1F9DC-1F3FF","non_qualified":null,"image":"1f9dc-1f3ff.png","sheet_x":52,"sheet_y":52,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DC-1F3FF-200D-2642-FE0F"}},"obsoleted_by":"1F9DC-200D-2642-FE0F","a":"Merperson","b":"1F9DC","d":true,"e":true,"f":true,"h":true,"j":["merperson","sea"],"k":[52,47],"o":5},"merman":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DC-1F3FB-200D-2642-FE0F","non_qualified":"1F9DC-1F3FB-200D-2642","image":"1f9dc-1f3fb-200d-2642-fe0f.png","sheet_x":52,"sheet_y":42,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DC-1F3FB"},"1F3FC":{"unified":"1F9DC-1F3FC-200D-2642-FE0F","non_qualified":"1F9DC-1F3FC-200D-2642","image":"1f9dc-1f3fc-200d-2642-fe0f.png","sheet_x":52,"sheet_y":43,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DC-1F3FC"},"1F3FD":{"unified":"1F9DC-1F3FD-200D-2642-FE0F","non_qualified":"1F9DC-1F3FD-200D-2642","image":"1f9dc-1f3fd-200d-2642-fe0f.png","sheet_x":52,"sheet_y":44,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DC-1F3FD"},"1F3FE":{"unified":"1F9DC-1F3FE-200D-2642-FE0F","non_qualified":"1F9DC-1F3FE-200D-2642","image":"1f9dc-1f3fe-200d-2642-fe0f.png","sheet_x":52,"sheet_y":45,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DC-1F3FE"},"1F3FF":{"unified":"1F9DC-1F3FF-200D-2642-FE0F","non_qualified":"1F9DC-1F3FF-200D-2642","image":"1f9dc-1f3ff-200d-2642-fe0f.png","sheet_x":52,"sheet_y":46,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DC-1F3FF"}},"obsoletes":"1F9DC","a":"Merman","b":"1F9DC-200D-2642-FE0F","c":"1F9DC-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["merman","man","male","triton"],"k":[52,41],"o":5},"mermaid":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DC-1F3FB-200D-2640-FE0F","non_qualified":"1F9DC-1F3FB-200D-2640","image":"1f9dc-1f3fb-200d-2640-fe0f.png","sheet_x":52,"sheet_y":36,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9DC-1F3FC-200D-2640-FE0F","non_qualified":"1F9DC-1F3FC-200D-2640","image":"1f9dc-1f3fc-200d-2640-fe0f.png","sheet_x":52,"sheet_y":37,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9DC-1F3FD-200D-2640-FE0F","non_qualified":"1F9DC-1F3FD-200D-2640","image":"1f9dc-1f3fd-200d-2640-fe0f.png","sheet_x":52,"sheet_y":38,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9DC-1F3FE-200D-2640-FE0F","non_qualified":"1F9DC-1F3FE-200D-2640","image":"1f9dc-1f3fe-200d-2640-fe0f.png","sheet_x":52,"sheet_y":39,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9DC-1F3FF-200D-2640-FE0F","non_qualified":"1F9DC-1F3FF-200D-2640","image":"1f9dc-1f3ff-200d-2640-fe0f.png","sheet_x":52,"sheet_y":40,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Mermaid","b":"1F9DC-200D-2640-FE0F","c":"1F9DC-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["mermaid","woman","female","merwoman","ariel"],"k":[52,35],"o":5},"elf":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DD-1F3FB","non_qualified":null,"image":"1f9dd-1f3fb.png","sheet_x":53,"sheet_y":5,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DD-1F3FB-200D-2642-FE0F"},"1F3FC":{"unified":"1F9DD-1F3FC","non_qualified":null,"image":"1f9dd-1f3fc.png","sheet_x":53,"sheet_y":6,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DD-1F3FC-200D-2642-FE0F"},"1F3FD":{"unified":"1F9DD-1F3FD","non_qualified":null,"image":"1f9dd-1f3fd.png","sheet_x":53,"sheet_y":7,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DD-1F3FD-200D-2642-FE0F"},"1F3FE":{"unified":"1F9DD-1F3FE","non_qualified":null,"image":"1f9dd-1f3fe.png","sheet_x":53,"sheet_y":8,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DD-1F3FE-200D-2642-FE0F"},"1F3FF":{"unified":"1F9DD-1F3FF","non_qualified":null,"image":"1f9dd-1f3ff.png","sheet_x":53,"sheet_y":9,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9DD-1F3FF-200D-2642-FE0F"}},"obsoleted_by":"1F9DD-200D-2642-FE0F","a":"Elf","b":"1F9DD","d":true,"e":true,"f":true,"h":true,"j":["elf","magical"],"k":[53,4],"o":5},"male_elf":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DD-1F3FB-200D-2642-FE0F","non_qualified":"1F9DD-1F3FB-200D-2642","image":"1f9dd-1f3fb-200d-2642-fe0f.png","sheet_x":52,"sheet_y":60,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DD-1F3FB"},"1F3FC":{"unified":"1F9DD-1F3FC-200D-2642-FE0F","non_qualified":"1F9DD-1F3FC-200D-2642","image":"1f9dd-1f3fc-200d-2642-fe0f.png","sheet_x":53,"sheet_y":0,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DD-1F3FC"},"1F3FD":{"unified":"1F9DD-1F3FD-200D-2642-FE0F","non_qualified":"1F9DD-1F3FD-200D-2642","image":"1f9dd-1f3fd-200d-2642-fe0f.png","sheet_x":53,"sheet_y":1,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DD-1F3FD"},"1F3FE":{"unified":"1F9DD-1F3FE-200D-2642-FE0F","non_qualified":"1F9DD-1F3FE-200D-2642","image":"1f9dd-1f3fe-200d-2642-fe0f.png","sheet_x":53,"sheet_y":2,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DD-1F3FE"},"1F3FF":{"unified":"1F9DD-1F3FF-200D-2642-FE0F","non_qualified":"1F9DD-1F3FF-200D-2642","image":"1f9dd-1f3ff-200d-2642-fe0f.png","sheet_x":53,"sheet_y":3,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9DD-1F3FF"}},"obsoletes":"1F9DD","a":"Man Elf","b":"1F9DD-200D-2642-FE0F","c":"1F9DD-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_elf","man","male"],"k":[52,59],"o":5},"female_elf":{"subcategory":"person-fantasy","skin_variations":{"1F3FB":{"unified":"1F9DD-1F3FB-200D-2640-FE0F","non_qualified":"1F9DD-1F3FB-200D-2640","image":"1f9dd-1f3fb-200d-2640-fe0f.png","sheet_x":52,"sheet_y":54,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9DD-1F3FC-200D-2640-FE0F","non_qualified":"1F9DD-1F3FC-200D-2640","image":"1f9dd-1f3fc-200d-2640-fe0f.png","sheet_x":52,"sheet_y":55,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9DD-1F3FD-200D-2640-FE0F","non_qualified":"1F9DD-1F3FD-200D-2640","image":"1f9dd-1f3fd-200d-2640-fe0f.png","sheet_x":52,"sheet_y":56,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9DD-1F3FE-200D-2640-FE0F","non_qualified":"1F9DD-1F3FE-200D-2640","image":"1f9dd-1f3fe-200d-2640-fe0f.png","sheet_x":52,"sheet_y":57,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9DD-1F3FF-200D-2640-FE0F","non_qualified":"1F9DD-1F3FF-200D-2640","image":"1f9dd-1f3ff-200d-2640-fe0f.png","sheet_x":52,"sheet_y":58,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Elf","b":"1F9DD-200D-2640-FE0F","c":"1F9DD-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_elf","woman","female"],"k":[52,53],"o":5},"genie":{"subcategory":"person-fantasy","obsoleted_by":"1F9DE-200D-2642-FE0F","a":"Genie","b":"1F9DE","d":true,"e":true,"f":true,"h":true,"j":["genie","magical","wishes"],"k":[53,12],"o":5},"male_genie":{"subcategory":"person-fantasy","obsoletes":"1F9DE","a":"Man Genie","b":"1F9DE-200D-2642-FE0F","c":"1F9DE-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_genie","man","male"],"k":[53,11],"o":5},"female_genie":{"subcategory":"person-fantasy","a":"Woman Genie","b":"1F9DE-200D-2640-FE0F","c":"1F9DE-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_genie","woman","female"],"k":[53,10],"o":5},"zombie":{"subcategory":"person-fantasy","obsoleted_by":"1F9DF-200D-2642-FE0F","a":"Zombie","b":"1F9DF","d":true,"e":true,"f":true,"h":true,"j":["zombie","dead"],"k":[53,15],"o":5},"male_zombie":{"subcategory":"person-fantasy","obsoletes":"1F9DF","a":"Man Zombie","b":"1F9DF-200D-2642-FE0F","c":"1F9DF-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_zombie","man","male","dracula","undead","walking dead"],"k":[53,14],"o":5},"female_zombie":{"subcategory":"person-fantasy","a":"Woman Zombie","b":"1F9DF-200D-2640-FE0F","c":"1F9DF-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_zombie","woman","female","undead","walking dead"],"k":[53,13],"o":5},"troll":{"subcategory":"person-fantasy","a":"Troll","b":"1F9CC","d":true,"e":true,"f":true,"h":true,"j":["troll","mystical","monster"],"k":[46,19],"o":14},"massage":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F486-1F3FB","non_qualified":null,"image":"1f486-1f3fb.png","sheet_x":26,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F486-1F3FC","non_qualified":null,"image":"1f486-1f3fc.png","sheet_x":26,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F486-1F3FD","non_qualified":null,"image":"1f486-1f3fd.png","sheet_x":26,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F486-1F3FE","non_qualified":null,"image":"1f486-1f3fe.png","sheet_x":26,"sheet_y":15,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F486-1F3FF","non_qualified":null,"image":"1f486-1f3ff.png","sheet_x":26,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F486-200D-2640-FE0F","a":"Face Massage","b":"1F486","d":true,"e":true,"f":true,"h":true,"j":["person_getting_massage","relax"],"k":[26,11],"o":0},"man-getting-massage":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2642-FE0F","non_qualified":"1F486-1F3FB-200D-2642","image":"1f486-1f3fb-200d-2642-fe0f.png","sheet_x":26,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F486-1F3FC-200D-2642-FE0F","non_qualified":"1F486-1F3FC-200D-2642","image":"1f486-1f3fc-200d-2642-fe0f.png","sheet_x":26,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F486-1F3FD-200D-2642-FE0F","non_qualified":"1F486-1F3FD-200D-2642","image":"1f486-1f3fd-200d-2642-fe0f.png","sheet_x":26,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F486-1F3FE-200D-2642-FE0F","non_qualified":"1F486-1F3FE-200D-2642","image":"1f486-1f3fe-200d-2642-fe0f.png","sheet_x":26,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F486-1F3FF-200D-2642-FE0F","non_qualified":"1F486-1F3FF-200D-2642","image":"1f486-1f3ff-200d-2642-fe0f.png","sheet_x":26,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Getting Massage","b":"1F486-200D-2642-FE0F","c":"1F486-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_getting_massage","male","boy","man","head"],"k":[26,5],"o":4},"woman-getting-massage":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2640-FE0F","non_qualified":"1F486-1F3FB-200D-2640","image":"1f486-1f3fb-200d-2640-fe0f.png","sheet_x":26,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F486-1F3FC-200D-2640-FE0F","non_qualified":"1F486-1F3FC-200D-2640","image":"1f486-1f3fc-200d-2640-fe0f.png","sheet_x":26,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F486-1F3FD-200D-2640-FE0F","non_qualified":"1F486-1F3FD-200D-2640","image":"1f486-1f3fd-200d-2640-fe0f.png","sheet_x":26,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F486-1F3FE-200D-2640-FE0F","non_qualified":"1F486-1F3FE-200D-2640","image":"1f486-1f3fe-200d-2640-fe0f.png","sheet_x":26,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F486-1F3FF-200D-2640-FE0F","non_qualified":"1F486-1F3FF-200D-2640","image":"1f486-1f3ff-200d-2640-fe0f.png","sheet_x":26,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F486","a":"Woman Getting Massage","b":"1F486-200D-2640-FE0F","c":"1F486-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_getting_massage","female","girl","woman","head"],"k":[25,60],"o":4},"haircut":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F487-1F3FB","non_qualified":null,"image":"1f487-1f3fb.png","sheet_x":26,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F487-1F3FC","non_qualified":null,"image":"1f487-1f3fc.png","sheet_x":26,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F487-1F3FD","non_qualified":null,"image":"1f487-1f3fd.png","sheet_x":26,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F487-1F3FE","non_qualified":null,"image":"1f487-1f3fe.png","sheet_x":26,"sheet_y":33,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F487-1F3FF","non_qualified":null,"image":"1f487-1f3ff.png","sheet_x":26,"sheet_y":34,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F487-200D-2640-FE0F","a":"Haircut","b":"1F487","d":true,"e":true,"f":true,"h":true,"j":["person_getting_haircut","hairstyle"],"k":[26,29],"o":0},"man-getting-haircut":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2642-FE0F","non_qualified":"1F487-1F3FB-200D-2642","image":"1f487-1f3fb-200d-2642-fe0f.png","sheet_x":26,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F487-1F3FC-200D-2642-FE0F","non_qualified":"1F487-1F3FC-200D-2642","image":"1f487-1f3fc-200d-2642-fe0f.png","sheet_x":26,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F487-1F3FD-200D-2642-FE0F","non_qualified":"1F487-1F3FD-200D-2642","image":"1f487-1f3fd-200d-2642-fe0f.png","sheet_x":26,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F487-1F3FE-200D-2642-FE0F","non_qualified":"1F487-1F3FE-200D-2642","image":"1f487-1f3fe-200d-2642-fe0f.png","sheet_x":26,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F487-1F3FF-200D-2642-FE0F","non_qualified":"1F487-1F3FF-200D-2642","image":"1f487-1f3ff-200d-2642-fe0f.png","sheet_x":26,"sheet_y":28,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Getting Haircut","b":"1F487-200D-2642-FE0F","c":"1F487-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_getting_haircut","male","boy","man"],"k":[26,23],"o":4},"woman-getting-haircut":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2640-FE0F","non_qualified":"1F487-1F3FB-200D-2640","image":"1f487-1f3fb-200d-2640-fe0f.png","sheet_x":26,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F487-1F3FC-200D-2640-FE0F","non_qualified":"1F487-1F3FC-200D-2640","image":"1f487-1f3fc-200d-2640-fe0f.png","sheet_x":26,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F487-1F3FD-200D-2640-FE0F","non_qualified":"1F487-1F3FD-200D-2640","image":"1f487-1f3fd-200d-2640-fe0f.png","sheet_x":26,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F487-1F3FE-200D-2640-FE0F","non_qualified":"1F487-1F3FE-200D-2640","image":"1f487-1f3fe-200d-2640-fe0f.png","sheet_x":26,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F487-1F3FF-200D-2640-FE0F","non_qualified":"1F487-1F3FF-200D-2640","image":"1f487-1f3ff-200d-2640-fe0f.png","sheet_x":26,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F487","a":"Woman Getting Haircut","b":"1F487-200D-2640-FE0F","c":"1F487-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_getting_haircut","female","girl","woman"],"k":[26,17],"o":4},"walking":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB","non_qualified":null,"image":"1f6b6-1f3fb.png","sheet_x":37,"sheet_y":29,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B6-1F3FC","non_qualified":null,"image":"1f6b6-1f3fc.png","sheet_x":37,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B6-1F3FD","non_qualified":null,"image":"1f6b6-1f3fd.png","sheet_x":37,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B6-1F3FE","non_qualified":null,"image":"1f6b6-1f3fe.png","sheet_x":37,"sheet_y":32,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B6-1F3FF","non_qualified":null,"image":"1f6b6-1f3ff.png","sheet_x":37,"sheet_y":33,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F6B6-200D-2642-FE0F","a":"Pedestrian","b":"1F6B6","d":true,"e":true,"f":true,"h":true,"j":["person_walking","move"],"k":[37,28],"o":0},"man-walking":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2642-FE0F","non_qualified":"1F6B6-1F3FB-200D-2642","image":"1f6b6-1f3fb-200d-2642-fe0f.png","sheet_x":37,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2642-FE0F","non_qualified":"1F6B6-1F3FC-200D-2642","image":"1f6b6-1f3fc-200d-2642-fe0f.png","sheet_x":37,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2642-FE0F","non_qualified":"1F6B6-1F3FD-200D-2642","image":"1f6b6-1f3fd-200d-2642-fe0f.png","sheet_x":37,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2642-FE0F","non_qualified":"1F6B6-1F3FE-200D-2642","image":"1f6b6-1f3fe-200d-2642-fe0f.png","sheet_x":37,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2642-FE0F","non_qualified":"1F6B6-1F3FF-200D-2642","image":"1f6b6-1f3ff-200d-2642-fe0f.png","sheet_x":37,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F6B6","a":"Man Walking","b":"1F6B6-200D-2642-FE0F","c":"1F6B6-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_walking","human","feet","steps"],"k":[37,22],"o":4},"woman-walking":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2640-FE0F","non_qualified":"1F6B6-1F3FB-200D-2640","image":"1f6b6-1f3fb-200d-2640-fe0f.png","sheet_x":37,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2640-FE0F","non_qualified":"1F6B6-1F3FC-200D-2640","image":"1f6b6-1f3fc-200d-2640-fe0f.png","sheet_x":37,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2640-FE0F","non_qualified":"1F6B6-1F3FD-200D-2640","image":"1f6b6-1f3fd-200d-2640-fe0f.png","sheet_x":37,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2640-FE0F","non_qualified":"1F6B6-1F3FE-200D-2640","image":"1f6b6-1f3fe-200d-2640-fe0f.png","sheet_x":37,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2640-FE0F","non_qualified":"1F6B6-1F3FF-200D-2640","image":"1f6b6-1f3ff-200d-2640-fe0f.png","sheet_x":37,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Walking","b":"1F6B6-200D-2640-FE0F","c":"1F6B6-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_walking","human","feet","steps","woman","female"],"k":[37,16],"o":4},"standing_person":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CD-1F3FB","non_qualified":null,"image":"1f9cd-1f3fb.png","sheet_x":46,"sheet_y":33,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CD-1F3FC","non_qualified":null,"image":"1f9cd-1f3fc.png","sheet_x":46,"sheet_y":34,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CD-1F3FD","non_qualified":null,"image":"1f9cd-1f3fd.png","sheet_x":46,"sheet_y":35,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CD-1F3FE","non_qualified":null,"image":"1f9cd-1f3fe.png","sheet_x":46,"sheet_y":36,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CD-1F3FF","non_qualified":null,"image":"1f9cd-1f3ff.png","sheet_x":46,"sheet_y":37,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Standing Person","b":"1F9CD","d":true,"e":true,"f":true,"h":true,"j":["person_standing","still"],"k":[46,32],"o":12},"man_standing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CD-1F3FB-200D-2642-FE0F","non_qualified":"1F9CD-1F3FB-200D-2642","image":"1f9cd-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":27,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CD-1F3FC-200D-2642-FE0F","non_qualified":"1F9CD-1F3FC-200D-2642","image":"1f9cd-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":28,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CD-1F3FD-200D-2642-FE0F","non_qualified":"1F9CD-1F3FD-200D-2642","image":"1f9cd-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":29,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CD-1F3FE-200D-2642-FE0F","non_qualified":"1F9CD-1F3FE-200D-2642","image":"1f9cd-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":30,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CD-1F3FF-200D-2642-FE0F","non_qualified":"1F9CD-1F3FF-200D-2642","image":"1f9cd-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":31,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Standing","b":"1F9CD-200D-2642-FE0F","c":"1F9CD-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_standing","still"],"k":[46,26],"o":12},"woman_standing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CD-1F3FB-200D-2640-FE0F","non_qualified":"1F9CD-1F3FB-200D-2640","image":"1f9cd-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":21,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CD-1F3FC-200D-2640-FE0F","non_qualified":"1F9CD-1F3FC-200D-2640","image":"1f9cd-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":22,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CD-1F3FD-200D-2640-FE0F","non_qualified":"1F9CD-1F3FD-200D-2640","image":"1f9cd-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":23,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CD-1F3FE-200D-2640-FE0F","non_qualified":"1F9CD-1F3FE-200D-2640","image":"1f9cd-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":24,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CD-1F3FF-200D-2640-FE0F","non_qualified":"1F9CD-1F3FF-200D-2640","image":"1f9cd-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":25,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Standing","b":"1F9CD-200D-2640-FE0F","c":"1F9CD-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_standing","still"],"k":[46,20],"o":12},"kneeling_person":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CE-1F3FB","non_qualified":null,"image":"1f9ce-1f3fb.png","sheet_x":46,"sheet_y":51,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CE-1F3FC","non_qualified":null,"image":"1f9ce-1f3fc.png","sheet_x":46,"sheet_y":52,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CE-1F3FD","non_qualified":null,"image":"1f9ce-1f3fd.png","sheet_x":46,"sheet_y":53,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CE-1F3FE","non_qualified":null,"image":"1f9ce-1f3fe.png","sheet_x":46,"sheet_y":54,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CE-1F3FF","non_qualified":null,"image":"1f9ce-1f3ff.png","sheet_x":46,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Kneeling Person","b":"1F9CE","d":true,"e":true,"f":true,"h":true,"j":["person_kneeling","pray","respectful"],"k":[46,50],"o":12},"man_kneeling":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CE-1F3FB-200D-2642-FE0F","non_qualified":"1F9CE-1F3FB-200D-2642","image":"1f9ce-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":45,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CE-1F3FC-200D-2642-FE0F","non_qualified":"1F9CE-1F3FC-200D-2642","image":"1f9ce-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":46,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CE-1F3FD-200D-2642-FE0F","non_qualified":"1F9CE-1F3FD-200D-2642","image":"1f9ce-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":47,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CE-1F3FE-200D-2642-FE0F","non_qualified":"1F9CE-1F3FE-200D-2642","image":"1f9ce-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":48,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CE-1F3FF-200D-2642-FE0F","non_qualified":"1F9CE-1F3FF-200D-2642","image":"1f9ce-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":49,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Kneeling","b":"1F9CE-200D-2642-FE0F","c":"1F9CE-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_kneeling","pray","respectful"],"k":[46,44],"o":12},"woman_kneeling":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9CE-1F3FB-200D-2640-FE0F","non_qualified":"1F9CE-1F3FB-200D-2640","image":"1f9ce-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":39,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9CE-1F3FC-200D-2640-FE0F","non_qualified":"1F9CE-1F3FC-200D-2640","image":"1f9ce-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":40,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9CE-1F3FD-200D-2640-FE0F","non_qualified":"1F9CE-1F3FD-200D-2640","image":"1f9ce-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":41,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9CE-1F3FE-200D-2640-FE0F","non_qualified":"1F9CE-1F3FE-200D-2640","image":"1f9ce-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":42,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9CE-1F3FF-200D-2640-FE0F","non_qualified":"1F9CE-1F3FF-200D-2640","image":"1f9ce-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":43,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Kneeling","b":"1F9CE-200D-2640-FE0F","c":"1F9CE-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_kneeling","respectful","pray"],"k":[46,38],"o":12},"person_with_probing_cane":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9AF","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9af.png","sheet_x":49,"sheet_y":9,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9AF","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9af.png","sheet_x":49,"sheet_y":10,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9AF","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9af.png","sheet_x":49,"sheet_y":11,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9AF","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9af.png","sheet_x":49,"sheet_y":12,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9AF","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9af.png","sheet_x":49,"sheet_y":13,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person with White Cane","b":"1F9D1-200D-1F9AF","d":true,"e":true,"f":true,"h":true,"j":["person_with_probing_cane","blind"],"k":[49,8],"o":12},"man_with_probing_cane":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9AF","non_qualified":null,"image":"1f468-1f3fb-200d-1f9af.png","sheet_x":15,"sheet_y":25,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9AF","non_qualified":null,"image":"1f468-1f3fc-200d-1f9af.png","sheet_x":15,"sheet_y":26,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9AF","non_qualified":null,"image":"1f468-1f3fd-200d-1f9af.png","sheet_x":15,"sheet_y":27,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9AF","non_qualified":null,"image":"1f468-1f3fe-200d-1f9af.png","sheet_x":15,"sheet_y":28,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9AF","non_qualified":null,"image":"1f468-1f3ff-200d-1f9af.png","sheet_x":15,"sheet_y":29,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man with White Cane","b":"1F468-200D-1F9AF","d":true,"e":true,"f":true,"h":true,"j":["man_with_probing_cane","blind"],"k":[15,24],"o":12},"woman_with_probing_cane":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9AF","non_qualified":null,"image":"1f469-1f3fb-200d-1f9af.png","sheet_x":18,"sheet_y":54,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9AF","non_qualified":null,"image":"1f469-1f3fc-200d-1f9af.png","sheet_x":18,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9AF","non_qualified":null,"image":"1f469-1f3fd-200d-1f9af.png","sheet_x":18,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9AF","non_qualified":null,"image":"1f469-1f3fe-200d-1f9af.png","sheet_x":18,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9AF","non_qualified":null,"image":"1f469-1f3ff-200d-1f9af.png","sheet_x":18,"sheet_y":58,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman with White Cane","b":"1F469-200D-1F9AF","d":true,"e":true,"f":true,"h":true,"j":["woman_with_probing_cane","blind"],"k":[18,53],"o":12},"person_in_motorized_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9BC","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9bc.png","sheet_x":49,"sheet_y":39,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9BC","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9bc.png","sheet_x":49,"sheet_y":40,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9BC","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9bc.png","sheet_x":49,"sheet_y":41,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9BC","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9bc.png","sheet_x":49,"sheet_y":42,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9BC","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9bc.png","sheet_x":49,"sheet_y":43,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person in Motorized Wheelchair","b":"1F9D1-200D-1F9BC","d":true,"e":true,"f":true,"h":true,"j":["person_in_motorized_wheelchair","disability","accessibility"],"k":[49,38],"o":12},"man_in_motorized_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9BC","non_qualified":null,"image":"1f468-1f3fb-200d-1f9bc.png","sheet_x":15,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9BC","non_qualified":null,"image":"1f468-1f3fc-200d-1f9bc.png","sheet_x":15,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9BC","non_qualified":null,"image":"1f468-1f3fd-200d-1f9bc.png","sheet_x":15,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9BC","non_qualified":null,"image":"1f468-1f3fe-200d-1f9bc.png","sheet_x":15,"sheet_y":58,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9BC","non_qualified":null,"image":"1f468-1f3ff-200d-1f9bc.png","sheet_x":15,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man in Motorized Wheelchair","b":"1F468-200D-1F9BC","d":true,"e":true,"f":true,"h":true,"j":["man_in_motorized_wheelchair","disability","accessibility"],"k":[15,54],"o":12},"woman_in_motorized_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9BC","non_qualified":null,"image":"1f469-1f3fb-200d-1f9bc.png","sheet_x":19,"sheet_y":23,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9BC","non_qualified":null,"image":"1f469-1f3fc-200d-1f9bc.png","sheet_x":19,"sheet_y":24,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9BC","non_qualified":null,"image":"1f469-1f3fd-200d-1f9bc.png","sheet_x":19,"sheet_y":25,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9BC","non_qualified":null,"image":"1f469-1f3fe-200d-1f9bc.png","sheet_x":19,"sheet_y":26,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9BC","non_qualified":null,"image":"1f469-1f3ff-200d-1f9bc.png","sheet_x":19,"sheet_y":27,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman in Motorized Wheelchair","b":"1F469-200D-1F9BC","d":true,"e":true,"f":true,"h":true,"j":["woman_in_motorized_wheelchair","disability","accessibility"],"k":[19,22],"o":12},"person_in_manual_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D1-1F3FB-200D-1F9BD","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f9bd.png","sheet_x":49,"sheet_y":45,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D1-1F3FC-200D-1F9BD","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f9bd.png","sheet_x":49,"sheet_y":46,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D1-1F3FD-200D-1F9BD","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f9bd.png","sheet_x":49,"sheet_y":47,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D1-1F3FE-200D-1F9BD","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f9bd.png","sheet_x":49,"sheet_y":48,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D1-1F3FF-200D-1F9BD","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f9bd.png","sheet_x":49,"sheet_y":49,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person in Manual Wheelchair","b":"1F9D1-200D-1F9BD","d":true,"e":true,"f":true,"h":true,"j":["person_in_manual_wheelchair","disability","accessibility"],"k":[49,44],"o":12},"man_in_manual_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F9BD","non_qualified":null,"image":"1f468-1f3fb-200d-1f9bd.png","sheet_x":16,"sheet_y":0,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F468-1F3FC-200D-1F9BD","non_qualified":null,"image":"1f468-1f3fc-200d-1f9bd.png","sheet_x":16,"sheet_y":1,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F468-1F3FD-200D-1F9BD","non_qualified":null,"image":"1f468-1f3fd-200d-1f9bd.png","sheet_x":16,"sheet_y":2,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F468-1F3FE-200D-1F9BD","non_qualified":null,"image":"1f468-1f3fe-200d-1f9bd.png","sheet_x":16,"sheet_y":3,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F468-1F3FF-200D-1F9BD","non_qualified":null,"image":"1f468-1f3ff-200d-1f9bd.png","sheet_x":16,"sheet_y":4,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man in Manual Wheelchair","b":"1F468-200D-1F9BD","d":true,"e":true,"f":true,"h":true,"j":["man_in_manual_wheelchair","disability","accessibility"],"k":[15,60],"o":12},"woman_in_manual_wheelchair":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F9BD","non_qualified":null,"image":"1f469-1f3fb-200d-1f9bd.png","sheet_x":19,"sheet_y":29,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F469-1F3FC-200D-1F9BD","non_qualified":null,"image":"1f469-1f3fc-200d-1f9bd.png","sheet_x":19,"sheet_y":30,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F469-1F3FD-200D-1F9BD","non_qualified":null,"image":"1f469-1f3fd-200d-1f9bd.png","sheet_x":19,"sheet_y":31,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F469-1F3FE-200D-1F9BD","non_qualified":null,"image":"1f469-1f3fe-200d-1f9bd.png","sheet_x":19,"sheet_y":32,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F469-1F3FF-200D-1F9BD","non_qualified":null,"image":"1f469-1f3ff-200d-1f9bd.png","sheet_x":19,"sheet_y":33,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman in Manual Wheelchair","b":"1F469-200D-1F9BD","d":true,"e":true,"f":true,"h":true,"j":["woman_in_manual_wheelchair","disability","accessibility"],"k":[19,28],"o":12},"runner":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB","non_qualified":null,"image":"1f3c3-1f3fb.png","sheet_x":8,"sheet_y":27,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C3-1F3FC","non_qualified":null,"image":"1f3c3-1f3fc.png","sheet_x":8,"sheet_y":28,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C3-1F3FD","non_qualified":null,"image":"1f3c3-1f3fd.png","sheet_x":8,"sheet_y":29,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C3-1F3FE","non_qualified":null,"image":"1f3c3-1f3fe.png","sheet_x":8,"sheet_y":30,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C3-1F3FF","non_qualified":null,"image":"1f3c3-1f3ff.png","sheet_x":8,"sheet_y":31,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F3C3-200D-2642-FE0F","a":"Runner","b":"1F3C3","d":true,"e":true,"f":true,"h":true,"j":["person_running","move"],"k":[8,26],"n":["running"],"o":0},"man-running":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2642-FE0F","non_qualified":"1F3C3-1F3FB-200D-2642","image":"1f3c3-1f3fb-200d-2642-fe0f.png","sheet_x":8,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2642-FE0F","non_qualified":"1F3C3-1F3FC-200D-2642","image":"1f3c3-1f3fc-200d-2642-fe0f.png","sheet_x":8,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2642-FE0F","non_qualified":"1F3C3-1F3FD-200D-2642","image":"1f3c3-1f3fd-200d-2642-fe0f.png","sheet_x":8,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2642-FE0F","non_qualified":"1F3C3-1F3FE-200D-2642","image":"1f3c3-1f3fe-200d-2642-fe0f.png","sheet_x":8,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2642-FE0F","non_qualified":"1F3C3-1F3FF-200D-2642","image":"1f3c3-1f3ff-200d-2642-fe0f.png","sheet_x":8,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F3C3","a":"Man Running","b":"1F3C3-200D-2642-FE0F","c":"1F3C3-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_running","man","walking","exercise","race","running"],"k":[8,20],"o":4},"woman-running":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2640-FE0F","non_qualified":"1F3C3-1F3FB-200D-2640","image":"1f3c3-1f3fb-200d-2640-fe0f.png","sheet_x":8,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2640-FE0F","non_qualified":"1F3C3-1F3FC-200D-2640","image":"1f3c3-1f3fc-200d-2640-fe0f.png","sheet_x":8,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2640-FE0F","non_qualified":"1F3C3-1F3FD-200D-2640","image":"1f3c3-1f3fd-200d-2640-fe0f.png","sheet_x":8,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2640-FE0F","non_qualified":"1F3C3-1F3FE-200D-2640","image":"1f3c3-1f3fe-200d-2640-fe0f.png","sheet_x":8,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2640-FE0F","non_qualified":"1F3C3-1F3FF-200D-2640","image":"1f3c3-1f3ff-200d-2640-fe0f.png","sheet_x":8,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Running","b":"1F3C3-200D-2640-FE0F","c":"1F3C3-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_running","woman","walking","exercise","race","running","female"],"k":[8,14],"o":4},"dancer":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F483-1F3FB","non_qualified":null,"image":"1f483-1f3fb.png","sheet_x":25,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F483-1F3FC","non_qualified":null,"image":"1f483-1f3fc.png","sheet_x":25,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F483-1F3FD","non_qualified":null,"image":"1f483-1f3fd.png","sheet_x":25,"sheet_y":50,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F483-1F3FE","non_qualified":null,"image":"1f483-1f3fe.png","sheet_x":25,"sheet_y":51,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F483-1F3FF","non_qualified":null,"image":"1f483-1f3ff.png","sheet_x":25,"sheet_y":52,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Dancer","b":"1F483","d":true,"e":true,"f":true,"h":true,"j":["woman_dancing","female","girl","woman","fun"],"k":[25,47],"o":0},"man_dancing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F57A-1F3FB","non_qualified":null,"image":"1f57a-1f3fb.png","sheet_x":31,"sheet_y":28,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F57A-1F3FC","non_qualified":null,"image":"1f57a-1f3fc.png","sheet_x":31,"sheet_y":29,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F57A-1F3FD","non_qualified":null,"image":"1f57a-1f3fd.png","sheet_x":31,"sheet_y":30,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F57A-1F3FE","non_qualified":null,"image":"1f57a-1f3fe.png","sheet_x":31,"sheet_y":31,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F57A-1F3FF","non_qualified":null,"image":"1f57a-1f3ff.png","sheet_x":31,"sheet_y":32,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Dancing","b":"1F57A","d":true,"e":true,"f":true,"h":true,"j":["man_dancing","male","boy","fun","dancer"],"k":[31,27],"o":3},"man_in_business_suit_levitating":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F574-1F3FB","non_qualified":null,"image":"1f574-1f3fb.png","sheet_x":31,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F574-1F3FC","non_qualified":null,"image":"1f574-1f3fc.png","sheet_x":31,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F574-1F3FD","non_qualified":null,"image":"1f574-1f3fd.png","sheet_x":31,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F574-1F3FE","non_qualified":null,"image":"1f574-1f3fe.png","sheet_x":31,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F574-1F3FF","non_qualified":null,"image":"1f574-1f3ff.png","sheet_x":31,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person in Suit Levitating","b":"1F574-FE0F","c":"1F574","d":true,"e":true,"f":true,"h":true,"j":["man_in_suit_levitating","suit","business","levitate","hover","jump"],"k":[30,60],"o":0},"dancers":{"subcategory":"person-activity","obsoleted_by":"1F46F-200D-2640-FE0F","a":"Woman with Bunny Ears","b":"1F46F","d":true,"e":true,"f":true,"h":true,"j":["people_with_bunny_ears","perform","costume"],"k":[23,17],"o":0},"men-with-bunny-ears-partying":{"subcategory":"person-activity","a":"Men with Bunny Ears","b":"1F46F-200D-2642-FE0F","c":"1F46F-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["men_with_bunny_ears","male","bunny","men","boys"],"k":[23,16],"n":["man-with-bunny-ears-partying"],"o":4},"women-with-bunny-ears-partying":{"subcategory":"person-activity","obsoletes":"1F46F","a":"Women with Bunny Ears","b":"1F46F-200D-2640-FE0F","c":"1F46F-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["women_with_bunny_ears","female","bunny","women","girls"],"k":[23,15],"n":["woman-with-bunny-ears-partying"],"o":4},"person_in_steamy_room":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D6-1F3FB","non_qualified":null,"image":"1f9d6-1f3fb.png","sheet_x":51,"sheet_y":1,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D6-1F3FB-200D-2642-FE0F"},"1F3FC":{"unified":"1F9D6-1F3FC","non_qualified":null,"image":"1f9d6-1f3fc.png","sheet_x":51,"sheet_y":2,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D6-1F3FC-200D-2642-FE0F"},"1F3FD":{"unified":"1F9D6-1F3FD","non_qualified":null,"image":"1f9d6-1f3fd.png","sheet_x":51,"sheet_y":3,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D6-1F3FD-200D-2642-FE0F"},"1F3FE":{"unified":"1F9D6-1F3FE","non_qualified":null,"image":"1f9d6-1f3fe.png","sheet_x":51,"sheet_y":4,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D6-1F3FE-200D-2642-FE0F"},"1F3FF":{"unified":"1F9D6-1F3FF","non_qualified":null,"image":"1f9d6-1f3ff.png","sheet_x":51,"sheet_y":5,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D6-1F3FF-200D-2642-FE0F"}},"obsoleted_by":"1F9D6-200D-2642-FE0F","a":"Person in Steamy Room","b":"1F9D6","d":true,"e":true,"f":true,"h":true,"j":["person_in_steamy_room","relax","spa"],"k":[51,0],"o":5},"man_in_steamy_room":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D6-1F3FB-200D-2642-FE0F","non_qualified":"1F9D6-1F3FB-200D-2642","image":"1f9d6-1f3fb-200d-2642-fe0f.png","sheet_x":50,"sheet_y":56,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D6-1F3FB"},"1F3FC":{"unified":"1F9D6-1F3FC-200D-2642-FE0F","non_qualified":"1F9D6-1F3FC-200D-2642","image":"1f9d6-1f3fc-200d-2642-fe0f.png","sheet_x":50,"sheet_y":57,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D6-1F3FC"},"1F3FD":{"unified":"1F9D6-1F3FD-200D-2642-FE0F","non_qualified":"1F9D6-1F3FD-200D-2642","image":"1f9d6-1f3fd-200d-2642-fe0f.png","sheet_x":50,"sheet_y":58,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D6-1F3FD"},"1F3FE":{"unified":"1F9D6-1F3FE-200D-2642-FE0F","non_qualified":"1F9D6-1F3FE-200D-2642","image":"1f9d6-1f3fe-200d-2642-fe0f.png","sheet_x":50,"sheet_y":59,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D6-1F3FE"},"1F3FF":{"unified":"1F9D6-1F3FF-200D-2642-FE0F","non_qualified":"1F9D6-1F3FF-200D-2642","image":"1f9d6-1f3ff-200d-2642-fe0f.png","sheet_x":50,"sheet_y":60,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D6-1F3FF"}},"obsoletes":"1F9D6","a":"Man in Steamy Room","b":"1F9D6-200D-2642-FE0F","c":"1F9D6-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_in_steamy_room","male","man","spa","steamroom","sauna"],"k":[50,55],"o":5},"woman_in_steamy_room":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D6-1F3FB-200D-2640-FE0F","non_qualified":"1F9D6-1F3FB-200D-2640","image":"1f9d6-1f3fb-200d-2640-fe0f.png","sheet_x":50,"sheet_y":50,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D6-1F3FC-200D-2640-FE0F","non_qualified":"1F9D6-1F3FC-200D-2640","image":"1f9d6-1f3fc-200d-2640-fe0f.png","sheet_x":50,"sheet_y":51,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D6-1F3FD-200D-2640-FE0F","non_qualified":"1F9D6-1F3FD-200D-2640","image":"1f9d6-1f3fd-200d-2640-fe0f.png","sheet_x":50,"sheet_y":52,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D6-1F3FE-200D-2640-FE0F","non_qualified":"1F9D6-1F3FE-200D-2640","image":"1f9d6-1f3fe-200d-2640-fe0f.png","sheet_x":50,"sheet_y":53,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D6-1F3FF-200D-2640-FE0F","non_qualified":"1F9D6-1F3FF-200D-2640","image":"1f9d6-1f3ff-200d-2640-fe0f.png","sheet_x":50,"sheet_y":54,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman in Steamy Room","b":"1F9D6-200D-2640-FE0F","c":"1F9D6-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_in_steamy_room","female","woman","spa","steamroom","sauna"],"k":[50,49],"o":5},"person_climbing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D7-1F3FB","non_qualified":null,"image":"1f9d7-1f3fb.png","sheet_x":51,"sheet_y":19,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D7-1F3FB-200D-2640-FE0F"},"1F3FC":{"unified":"1F9D7-1F3FC","non_qualified":null,"image":"1f9d7-1f3fc.png","sheet_x":51,"sheet_y":20,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D7-1F3FC-200D-2640-FE0F"},"1F3FD":{"unified":"1F9D7-1F3FD","non_qualified":null,"image":"1f9d7-1f3fd.png","sheet_x":51,"sheet_y":21,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D7-1F3FD-200D-2640-FE0F"},"1F3FE":{"unified":"1F9D7-1F3FE","non_qualified":null,"image":"1f9d7-1f3fe.png","sheet_x":51,"sheet_y":22,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D7-1F3FE-200D-2640-FE0F"},"1F3FF":{"unified":"1F9D7-1F3FF","non_qualified":null,"image":"1f9d7-1f3ff.png","sheet_x":51,"sheet_y":23,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D7-1F3FF-200D-2640-FE0F"}},"obsoleted_by":"1F9D7-200D-2640-FE0F","a":"Person Climbing","b":"1F9D7","d":true,"e":true,"f":true,"h":true,"j":["person_climbing","sport"],"k":[51,18],"o":5},"man_climbing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D7-1F3FB-200D-2642-FE0F","non_qualified":"1F9D7-1F3FB-200D-2642","image":"1f9d7-1f3fb-200d-2642-fe0f.png","sheet_x":51,"sheet_y":13,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D7-1F3FC-200D-2642-FE0F","non_qualified":"1F9D7-1F3FC-200D-2642","image":"1f9d7-1f3fc-200d-2642-fe0f.png","sheet_x":51,"sheet_y":14,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D7-1F3FD-200D-2642-FE0F","non_qualified":"1F9D7-1F3FD-200D-2642","image":"1f9d7-1f3fd-200d-2642-fe0f.png","sheet_x":51,"sheet_y":15,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D7-1F3FE-200D-2642-FE0F","non_qualified":"1F9D7-1F3FE-200D-2642","image":"1f9d7-1f3fe-200d-2642-fe0f.png","sheet_x":51,"sheet_y":16,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D7-1F3FF-200D-2642-FE0F","non_qualified":"1F9D7-1F3FF-200D-2642","image":"1f9d7-1f3ff-200d-2642-fe0f.png","sheet_x":51,"sheet_y":17,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Climbing","b":"1F9D7-200D-2642-FE0F","c":"1F9D7-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_climbing","sports","hobby","man","male","rock"],"k":[51,12],"o":5},"woman_climbing":{"subcategory":"person-activity","skin_variations":{"1F3FB":{"unified":"1F9D7-1F3FB-200D-2640-FE0F","non_qualified":"1F9D7-1F3FB-200D-2640","image":"1f9d7-1f3fb-200d-2640-fe0f.png","sheet_x":51,"sheet_y":7,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D7-1F3FB"},"1F3FC":{"unified":"1F9D7-1F3FC-200D-2640-FE0F","non_qualified":"1F9D7-1F3FC-200D-2640","image":"1f9d7-1f3fc-200d-2640-fe0f.png","sheet_x":51,"sheet_y":8,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D7-1F3FC"},"1F3FD":{"unified":"1F9D7-1F3FD-200D-2640-FE0F","non_qualified":"1F9D7-1F3FD-200D-2640","image":"1f9d7-1f3fd-200d-2640-fe0f.png","sheet_x":51,"sheet_y":9,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D7-1F3FD"},"1F3FE":{"unified":"1F9D7-1F3FE-200D-2640-FE0F","non_qualified":"1F9D7-1F3FE-200D-2640","image":"1f9d7-1f3fe-200d-2640-fe0f.png","sheet_x":51,"sheet_y":10,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D7-1F3FE"},"1F3FF":{"unified":"1F9D7-1F3FF-200D-2640-FE0F","non_qualified":"1F9D7-1F3FF-200D-2640","image":"1f9d7-1f3ff-200d-2640-fe0f.png","sheet_x":51,"sheet_y":11,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D7-1F3FF"}},"obsoletes":"1F9D7","a":"Woman Climbing","b":"1F9D7-200D-2640-FE0F","c":"1F9D7-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_climbing","sports","hobby","woman","female","rock"],"k":[51,6],"o":5},"fencer":{"subcategory":"person-sport","a":"Fencer","b":"1F93A","d":true,"e":true,"f":true,"h":true,"j":["person_fencing","sports","fencing","sword"],"k":[42,33],"o":3},"horse_racing":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3C7-1F3FB","non_qualified":null,"image":"1f3c7-1f3fb.png","sheet_x":8,"sheet_y":53,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C7-1F3FC","non_qualified":null,"image":"1f3c7-1f3fc.png","sheet_x":8,"sheet_y":54,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C7-1F3FD","non_qualified":null,"image":"1f3c7-1f3fd.png","sheet_x":8,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C7-1F3FE","non_qualified":null,"image":"1f3c7-1f3fe.png","sheet_x":8,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C7-1F3FF","non_qualified":null,"image":"1f3c7-1f3ff.png","sheet_x":8,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Horse Racing","b":"1F3C7","d":true,"e":true,"f":true,"h":true,"j":["horse_racing","animal","betting","competition","gambling","luck"],"k":[8,52],"o":1},"skier":{"subcategory":"person-sport","a":"Skier","b":"26F7-FE0F","c":"26F7","d":true,"e":true,"f":true,"h":true,"j":["skier","sports","winter","snow"],"k":[58,32],"o":0},"snowboarder":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3C2-1F3FB","non_qualified":null,"image":"1f3c2-1f3fb.png","sheet_x":8,"sheet_y":9,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C2-1F3FC","non_qualified":null,"image":"1f3c2-1f3fc.png","sheet_x":8,"sheet_y":10,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C2-1F3FD","non_qualified":null,"image":"1f3c2-1f3fd.png","sheet_x":8,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C2-1F3FE","non_qualified":null,"image":"1f3c2-1f3fe.png","sheet_x":8,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C2-1F3FF","non_qualified":null,"image":"1f3c2-1f3ff.png","sheet_x":8,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Snowboarder","b":"1F3C2","d":true,"e":true,"f":true,"h":true,"j":["snowboarder","sports","winter"],"k":[8,8],"o":0},"golfer":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB","non_qualified":null,"image":"1f3cc-1f3fb.png","sheet_x":9,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CC-1F3FC","non_qualified":null,"image":"1f3cc-1f3fc.png","sheet_x":9,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CC-1F3FD","non_qualified":null,"image":"1f3cc-1f3fd.png","sheet_x":9,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CC-1F3FE","non_qualified":null,"image":"1f3cc-1f3fe.png","sheet_x":9,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CC-1F3FF","non_qualified":null,"image":"1f3cc-1f3ff.png","sheet_x":9,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F3CC-FE0F-200D-2642-FE0F","a":"Person Golfing","b":"1F3CC-FE0F","c":"1F3CC","d":true,"e":true,"f":true,"h":true,"j":["person_golfing","sports","business"],"k":[9,47],"o":0},"man-golfing":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2642-FE0F","non_qualified":"1F3CC-1F3FB-200D-2642","image":"1f3cc-1f3fb-200d-2642-fe0f.png","sheet_x":9,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2642-FE0F","non_qualified":"1F3CC-1F3FC-200D-2642","image":"1f3cc-1f3fc-200d-2642-fe0f.png","sheet_x":9,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2642-FE0F","non_qualified":"1F3CC-1F3FD-200D-2642","image":"1f3cc-1f3fd-200d-2642-fe0f.png","sheet_x":9,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2642-FE0F","non_qualified":"1F3CC-1F3FE-200D-2642","image":"1f3cc-1f3fe-200d-2642-fe0f.png","sheet_x":9,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2642-FE0F","non_qualified":"1F3CC-1F3FF-200D-2642","image":"1f3cc-1f3ff-200d-2642-fe0f.png","sheet_x":9,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F3CC-FE0F","a":"Man Golfing","b":"1F3CC-FE0F-200D-2642-FE0F","d":true,"e":true,"f":true,"h":false,"j":["man_golfing","sport"],"k":[9,41],"o":4},"woman-golfing":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2640-FE0F","non_qualified":"1F3CC-1F3FB-200D-2640","image":"1f3cc-1f3fb-200d-2640-fe0f.png","sheet_x":9,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2640-FE0F","non_qualified":"1F3CC-1F3FC-200D-2640","image":"1f3cc-1f3fc-200d-2640-fe0f.png","sheet_x":9,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2640-FE0F","non_qualified":"1F3CC-1F3FD-200D-2640","image":"1f3cc-1f3fd-200d-2640-fe0f.png","sheet_x":9,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2640-FE0F","non_qualified":"1F3CC-1F3FE-200D-2640","image":"1f3cc-1f3fe-200d-2640-fe0f.png","sheet_x":9,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2640-FE0F","non_qualified":"1F3CC-1F3FF-200D-2640","image":"1f3cc-1f3ff-200d-2640-fe0f.png","sheet_x":9,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Golfing","b":"1F3CC-FE0F-200D-2640-FE0F","d":true,"e":true,"f":true,"h":false,"j":["woman_golfing","sports","business","woman","female"],"k":[9,35],"o":4},"surfer":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB","non_qualified":null,"image":"1f3c4-1f3fb.png","sheet_x":8,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C4-1F3FC","non_qualified":null,"image":"1f3c4-1f3fc.png","sheet_x":8,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C4-1F3FD","non_qualified":null,"image":"1f3c4-1f3fd.png","sheet_x":8,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C4-1F3FE","non_qualified":null,"image":"1f3c4-1f3fe.png","sheet_x":8,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C4-1F3FF","non_qualified":null,"image":"1f3c4-1f3ff.png","sheet_x":8,"sheet_y":49,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F3C4-200D-2642-FE0F","a":"Surfer","b":"1F3C4","d":true,"e":true,"f":true,"h":true,"j":["person_surfing","sport","sea"],"k":[8,44],"o":0},"man-surfing":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2642-FE0F","non_qualified":"1F3C4-1F3FB-200D-2642","image":"1f3c4-1f3fb-200d-2642-fe0f.png","sheet_x":8,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2642-FE0F","non_qualified":"1F3C4-1F3FC-200D-2642","image":"1f3c4-1f3fc-200d-2642-fe0f.png","sheet_x":8,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2642-FE0F","non_qualified":"1F3C4-1F3FD-200D-2642","image":"1f3c4-1f3fd-200d-2642-fe0f.png","sheet_x":8,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2642-FE0F","non_qualified":"1F3C4-1F3FE-200D-2642","image":"1f3c4-1f3fe-200d-2642-fe0f.png","sheet_x":8,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2642-FE0F","non_qualified":"1F3C4-1F3FF-200D-2642","image":"1f3c4-1f3ff-200d-2642-fe0f.png","sheet_x":8,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F3C4","a":"Man Surfing","b":"1F3C4-200D-2642-FE0F","c":"1F3C4-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_surfing","sports","ocean","sea","summer","beach"],"k":[8,38],"o":4},"woman-surfing":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2640-FE0F","non_qualified":"1F3C4-1F3FB-200D-2640","image":"1f3c4-1f3fb-200d-2640-fe0f.png","sheet_x":8,"sheet_y":33,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2640-FE0F","non_qualified":"1F3C4-1F3FC-200D-2640","image":"1f3c4-1f3fc-200d-2640-fe0f.png","sheet_x":8,"sheet_y":34,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2640-FE0F","non_qualified":"1F3C4-1F3FD-200D-2640","image":"1f3c4-1f3fd-200d-2640-fe0f.png","sheet_x":8,"sheet_y":35,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2640-FE0F","non_qualified":"1F3C4-1F3FE-200D-2640","image":"1f3c4-1f3fe-200d-2640-fe0f.png","sheet_x":8,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2640-FE0F","non_qualified":"1F3C4-1F3FF-200D-2640","image":"1f3c4-1f3ff-200d-2640-fe0f.png","sheet_x":8,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Surfing","b":"1F3C4-200D-2640-FE0F","c":"1F3C4-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_surfing","sports","ocean","sea","summer","beach","woman","female"],"k":[8,32],"o":4},"rowboat":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB","non_qualified":null,"image":"1f6a3-1f3fb.png","sheet_x":36,"sheet_y":20,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6A3-1F3FC","non_qualified":null,"image":"1f6a3-1f3fc.png","sheet_x":36,"sheet_y":21,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6A3-1F3FD","non_qualified":null,"image":"1f6a3-1f3fd.png","sheet_x":36,"sheet_y":22,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6A3-1F3FE","non_qualified":null,"image":"1f6a3-1f3fe.png","sheet_x":36,"sheet_y":23,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6A3-1F3FF","non_qualified":null,"image":"1f6a3-1f3ff.png","sheet_x":36,"sheet_y":24,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F6A3-200D-2642-FE0F","a":"Rowboat","b":"1F6A3","d":true,"e":true,"f":true,"h":true,"j":["person_rowing_boat","sport","move"],"k":[36,19],"o":1},"man-rowing-boat":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2642-FE0F","non_qualified":"1F6A3-1F3FB-200D-2642","image":"1f6a3-1f3fb-200d-2642-fe0f.png","sheet_x":36,"sheet_y":14,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2642-FE0F","non_qualified":"1F6A3-1F3FC-200D-2642","image":"1f6a3-1f3fc-200d-2642-fe0f.png","sheet_x":36,"sheet_y":15,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2642-FE0F","non_qualified":"1F6A3-1F3FD-200D-2642","image":"1f6a3-1f3fd-200d-2642-fe0f.png","sheet_x":36,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2642-FE0F","non_qualified":"1F6A3-1F3FE-200D-2642","image":"1f6a3-1f3fe-200d-2642-fe0f.png","sheet_x":36,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2642-FE0F","non_qualified":"1F6A3-1F3FF-200D-2642","image":"1f6a3-1f3ff-200d-2642-fe0f.png","sheet_x":36,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F6A3","a":"Man Rowing Boat","b":"1F6A3-200D-2642-FE0F","c":"1F6A3-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_rowing_boat","sports","hobby","water","ship"],"k":[36,13],"o":4},"woman-rowing-boat":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2640-FE0F","non_qualified":"1F6A3-1F3FB-200D-2640","image":"1f6a3-1f3fb-200d-2640-fe0f.png","sheet_x":36,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2640-FE0F","non_qualified":"1F6A3-1F3FC-200D-2640","image":"1f6a3-1f3fc-200d-2640-fe0f.png","sheet_x":36,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2640-FE0F","non_qualified":"1F6A3-1F3FD-200D-2640","image":"1f6a3-1f3fd-200d-2640-fe0f.png","sheet_x":36,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2640-FE0F","non_qualified":"1F6A3-1F3FE-200D-2640","image":"1f6a3-1f3fe-200d-2640-fe0f.png","sheet_x":36,"sheet_y":11,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2640-FE0F","non_qualified":"1F6A3-1F3FF-200D-2640","image":"1f6a3-1f3ff-200d-2640-fe0f.png","sheet_x":36,"sheet_y":12,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Rowing Boat","b":"1F6A3-200D-2640-FE0F","c":"1F6A3-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_rowing_boat","sports","hobby","water","ship","woman","female"],"k":[36,7],"o":4},"swimmer":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB","non_qualified":null,"image":"1f3ca-1f3fb.png","sheet_x":9,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CA-1F3FC","non_qualified":null,"image":"1f3ca-1f3fc.png","sheet_x":9,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CA-1F3FD","non_qualified":null,"image":"1f3ca-1f3fd.png","sheet_x":9,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CA-1F3FE","non_qualified":null,"image":"1f3ca-1f3fe.png","sheet_x":9,"sheet_y":15,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CA-1F3FF","non_qualified":null,"image":"1f3ca-1f3ff.png","sheet_x":9,"sheet_y":16,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F3CA-200D-2642-FE0F","a":"Swimmer","b":"1F3CA","d":true,"e":true,"f":true,"h":true,"j":["person_swimming","sport","pool"],"k":[9,11],"o":0},"man-swimming":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2642-FE0F","non_qualified":"1F3CA-1F3FB-200D-2642","image":"1f3ca-1f3fb-200d-2642-fe0f.png","sheet_x":9,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2642-FE0F","non_qualified":"1F3CA-1F3FC-200D-2642","image":"1f3ca-1f3fc-200d-2642-fe0f.png","sheet_x":9,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2642-FE0F","non_qualified":"1F3CA-1F3FD-200D-2642","image":"1f3ca-1f3fd-200d-2642-fe0f.png","sheet_x":9,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2642-FE0F","non_qualified":"1F3CA-1F3FE-200D-2642","image":"1f3ca-1f3fe-200d-2642-fe0f.png","sheet_x":9,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2642-FE0F","non_qualified":"1F3CA-1F3FF-200D-2642","image":"1f3ca-1f3ff-200d-2642-fe0f.png","sheet_x":9,"sheet_y":10,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F3CA","a":"Man Swimming","b":"1F3CA-200D-2642-FE0F","c":"1F3CA-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_swimming","sports","exercise","human","athlete","water","summer"],"k":[9,5],"o":4},"woman-swimming":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2640-FE0F","non_qualified":"1F3CA-1F3FB-200D-2640","image":"1f3ca-1f3fb-200d-2640-fe0f.png","sheet_x":9,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2640-FE0F","non_qualified":"1F3CA-1F3FC-200D-2640","image":"1f3ca-1f3fc-200d-2640-fe0f.png","sheet_x":9,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2640-FE0F","non_qualified":"1F3CA-1F3FD-200D-2640","image":"1f3ca-1f3fd-200d-2640-fe0f.png","sheet_x":9,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2640-FE0F","non_qualified":"1F3CA-1F3FE-200D-2640","image":"1f3ca-1f3fe-200d-2640-fe0f.png","sheet_x":9,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2640-FE0F","non_qualified":"1F3CA-1F3FF-200D-2640","image":"1f3ca-1f3ff-200d-2640-fe0f.png","sheet_x":9,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Swimming","b":"1F3CA-200D-2640-FE0F","c":"1F3CA-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_swimming","sports","exercise","human","athlete","water","summer","woman","female"],"k":[8,60],"o":4},"person_with_ball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"26F9-1F3FB","non_qualified":null,"image":"26f9-1f3fb.png","sheet_x":58,"sheet_y":47,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"26F9-1F3FC","non_qualified":null,"image":"26f9-1f3fc.png","sheet_x":58,"sheet_y":48,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"26F9-1F3FD","non_qualified":null,"image":"26f9-1f3fd.png","sheet_x":58,"sheet_y":49,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"26F9-1F3FE","non_qualified":null,"image":"26f9-1f3fe.png","sheet_x":58,"sheet_y":50,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"26F9-1F3FF","non_qualified":null,"image":"26f9-1f3ff.png","sheet_x":58,"sheet_y":51,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"26F9-FE0F-200D-2642-FE0F","a":"Person Bouncing Ball","b":"26F9-FE0F","c":"26F9","d":true,"e":true,"f":true,"h":true,"j":["person_bouncing_ball","sports","human"],"k":[58,46],"o":0},"man-bouncing-ball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2642-FE0F","non_qualified":"26F9-1F3FB-200D-2642","image":"26f9-1f3fb-200d-2642-fe0f.png","sheet_x":58,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"26F9-1F3FC-200D-2642-FE0F","non_qualified":"26F9-1F3FC-200D-2642","image":"26f9-1f3fc-200d-2642-fe0f.png","sheet_x":58,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"26F9-1F3FD-200D-2642-FE0F","non_qualified":"26F9-1F3FD-200D-2642","image":"26f9-1f3fd-200d-2642-fe0f.png","sheet_x":58,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"26F9-1F3FE-200D-2642-FE0F","non_qualified":"26F9-1F3FE-200D-2642","image":"26f9-1f3fe-200d-2642-fe0f.png","sheet_x":58,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"26F9-1F3FF-200D-2642-FE0F","non_qualified":"26F9-1F3FF-200D-2642","image":"26f9-1f3ff-200d-2642-fe0f.png","sheet_x":58,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"26F9-FE0F","a":"Man Bouncing Ball","b":"26F9-FE0F-200D-2642-FE0F","d":true,"e":true,"f":true,"h":false,"j":["man_bouncing_ball","sport"],"k":[58,40],"o":4},"woman-bouncing-ball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2640-FE0F","non_qualified":"26F9-1F3FB-200D-2640","image":"26f9-1f3fb-200d-2640-fe0f.png","sheet_x":58,"sheet_y":35,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"26F9-1F3FC-200D-2640-FE0F","non_qualified":"26F9-1F3FC-200D-2640","image":"26f9-1f3fc-200d-2640-fe0f.png","sheet_x":58,"sheet_y":36,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"26F9-1F3FD-200D-2640-FE0F","non_qualified":"26F9-1F3FD-200D-2640","image":"26f9-1f3fd-200d-2640-fe0f.png","sheet_x":58,"sheet_y":37,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"26F9-1F3FE-200D-2640-FE0F","non_qualified":"26F9-1F3FE-200D-2640","image":"26f9-1f3fe-200d-2640-fe0f.png","sheet_x":58,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"26F9-1F3FF-200D-2640-FE0F","non_qualified":"26F9-1F3FF-200D-2640","image":"26f9-1f3ff-200d-2640-fe0f.png","sheet_x":58,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Bouncing Ball","b":"26F9-FE0F-200D-2640-FE0F","d":true,"e":true,"f":true,"h":false,"j":["woman_bouncing_ball","sports","human","woman","female"],"k":[58,34],"o":4},"weight_lifter":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB","non_qualified":null,"image":"1f3cb-1f3fb.png","sheet_x":9,"sheet_y":30,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CB-1F3FC","non_qualified":null,"image":"1f3cb-1f3fc.png","sheet_x":9,"sheet_y":31,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CB-1F3FD","non_qualified":null,"image":"1f3cb-1f3fd.png","sheet_x":9,"sheet_y":32,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CB-1F3FE","non_qualified":null,"image":"1f3cb-1f3fe.png","sheet_x":9,"sheet_y":33,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CB-1F3FF","non_qualified":null,"image":"1f3cb-1f3ff.png","sheet_x":9,"sheet_y":34,"added_in":"2.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F3CB-FE0F-200D-2642-FE0F","a":"Person Lifting Weights","b":"1F3CB-FE0F","c":"1F3CB","d":true,"e":true,"f":true,"h":true,"j":["person_lifting_weights","sports","training","exercise"],"k":[9,29],"o":0},"man-lifting-weights":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2642-FE0F","non_qualified":"1F3CB-1F3FB-200D-2642","image":"1f3cb-1f3fb-200d-2642-fe0f.png","sheet_x":9,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2642-FE0F","non_qualified":"1F3CB-1F3FC-200D-2642","image":"1f3cb-1f3fc-200d-2642-fe0f.png","sheet_x":9,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2642-FE0F","non_qualified":"1F3CB-1F3FD-200D-2642","image":"1f3cb-1f3fd-200d-2642-fe0f.png","sheet_x":9,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2642-FE0F","non_qualified":"1F3CB-1F3FE-200D-2642","image":"1f3cb-1f3fe-200d-2642-fe0f.png","sheet_x":9,"sheet_y":27,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2642-FE0F","non_qualified":"1F3CB-1F3FF-200D-2642","image":"1f3cb-1f3ff-200d-2642-fe0f.png","sheet_x":9,"sheet_y":28,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F3CB-FE0F","a":"Man Lifting Weights","b":"1F3CB-FE0F-200D-2642-FE0F","d":true,"e":true,"f":true,"h":false,"j":["man_lifting_weights","sport"],"k":[9,23],"o":4},"woman-lifting-weights":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2640-FE0F","non_qualified":"1F3CB-1F3FB-200D-2640","image":"1f3cb-1f3fb-200d-2640-fe0f.png","sheet_x":9,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2640-FE0F","non_qualified":"1F3CB-1F3FC-200D-2640","image":"1f3cb-1f3fc-200d-2640-fe0f.png","sheet_x":9,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2640-FE0F","non_qualified":"1F3CB-1F3FD-200D-2640","image":"1f3cb-1f3fd-200d-2640-fe0f.png","sheet_x":9,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2640-FE0F","non_qualified":"1F3CB-1F3FE-200D-2640","image":"1f3cb-1f3fe-200d-2640-fe0f.png","sheet_x":9,"sheet_y":21,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2640-FE0F","non_qualified":"1F3CB-1F3FF-200D-2640","image":"1f3cb-1f3ff-200d-2640-fe0f.png","sheet_x":9,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Lifting Weights","b":"1F3CB-FE0F-200D-2640-FE0F","d":true,"e":true,"f":true,"h":false,"j":["woman_lifting_weights","sports","training","exercise","woman","female"],"k":[9,17],"o":4},"bicyclist":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB","non_qualified":null,"image":"1f6b4-1f3fb.png","sheet_x":36,"sheet_y":54,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B4-1F3FC","non_qualified":null,"image":"1f6b4-1f3fc.png","sheet_x":36,"sheet_y":55,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B4-1F3FD","non_qualified":null,"image":"1f6b4-1f3fd.png","sheet_x":36,"sheet_y":56,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B4-1F3FE","non_qualified":null,"image":"1f6b4-1f3fe.png","sheet_x":36,"sheet_y":57,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B4-1F3FF","non_qualified":null,"image":"1f6b4-1f3ff.png","sheet_x":36,"sheet_y":58,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F6B4-200D-2642-FE0F","a":"Bicyclist","b":"1F6B4","d":true,"e":true,"f":true,"h":true,"j":["person_biking","bicycle","bike","cyclist","sport","move"],"k":[36,53],"o":1},"man-biking":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2642-FE0F","non_qualified":"1F6B4-1F3FB-200D-2642","image":"1f6b4-1f3fb-200d-2642-fe0f.png","sheet_x":36,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2642-FE0F","non_qualified":"1F6B4-1F3FC-200D-2642","image":"1f6b4-1f3fc-200d-2642-fe0f.png","sheet_x":36,"sheet_y":49,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2642-FE0F","non_qualified":"1F6B4-1F3FD-200D-2642","image":"1f6b4-1f3fd-200d-2642-fe0f.png","sheet_x":36,"sheet_y":50,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2642-FE0F","non_qualified":"1F6B4-1F3FE-200D-2642","image":"1f6b4-1f3fe-200d-2642-fe0f.png","sheet_x":36,"sheet_y":51,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2642-FE0F","non_qualified":"1F6B4-1F3FF-200D-2642","image":"1f6b4-1f3ff-200d-2642-fe0f.png","sheet_x":36,"sheet_y":52,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F6B4","a":"Man Biking","b":"1F6B4-200D-2642-FE0F","c":"1F6B4-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_biking","bicycle","bike","cyclist","sports","exercise","hipster"],"k":[36,47],"o":4},"woman-biking":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2640-FE0F","non_qualified":"1F6B4-1F3FB-200D-2640","image":"1f6b4-1f3fb-200d-2640-fe0f.png","sheet_x":36,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2640-FE0F","non_qualified":"1F6B4-1F3FC-200D-2640","image":"1f6b4-1f3fc-200d-2640-fe0f.png","sheet_x":36,"sheet_y":43,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2640-FE0F","non_qualified":"1F6B4-1F3FD-200D-2640","image":"1f6b4-1f3fd-200d-2640-fe0f.png","sheet_x":36,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2640-FE0F","non_qualified":"1F6B4-1F3FE-200D-2640","image":"1f6b4-1f3fe-200d-2640-fe0f.png","sheet_x":36,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2640-FE0F","non_qualified":"1F6B4-1F3FF-200D-2640","image":"1f6b4-1f3ff-200d-2640-fe0f.png","sheet_x":36,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Biking","b":"1F6B4-200D-2640-FE0F","c":"1F6B4-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_biking","bicycle","bike","cyclist","sports","exercise","hipster","woman","female"],"k":[36,41],"o":4},"mountain_bicyclist":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB","non_qualified":null,"image":"1f6b5-1f3fb.png","sheet_x":37,"sheet_y":11,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B5-1F3FC","non_qualified":null,"image":"1f6b5-1f3fc.png","sheet_x":37,"sheet_y":12,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B5-1F3FD","non_qualified":null,"image":"1f6b5-1f3fd.png","sheet_x":37,"sheet_y":13,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B5-1F3FE","non_qualified":null,"image":"1f6b5-1f3fe.png","sheet_x":37,"sheet_y":14,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B5-1F3FF","non_qualified":null,"image":"1f6b5-1f3ff.png","sheet_x":37,"sheet_y":15,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoleted_by":"1F6B5-200D-2642-FE0F","a":"Mountain Bicyclist","b":"1F6B5","d":true,"e":true,"f":true,"h":true,"j":["person_mountain_biking","bicycle","bike","cyclist","sport","move"],"k":[37,10],"o":1},"man-mountain-biking":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2642-FE0F","non_qualified":"1F6B5-1F3FB-200D-2642","image":"1f6b5-1f3fb-200d-2642-fe0f.png","sheet_x":37,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2642-FE0F","non_qualified":"1F6B5-1F3FC-200D-2642","image":"1f6b5-1f3fc-200d-2642-fe0f.png","sheet_x":37,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2642-FE0F","non_qualified":"1F6B5-1F3FD-200D-2642","image":"1f6b5-1f3fd-200d-2642-fe0f.png","sheet_x":37,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2642-FE0F","non_qualified":"1F6B5-1F3FE-200D-2642","image":"1f6b5-1f3fe-200d-2642-fe0f.png","sheet_x":37,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2642-FE0F","non_qualified":"1F6B5-1F3FF-200D-2642","image":"1f6b5-1f3ff-200d-2642-fe0f.png","sheet_x":37,"sheet_y":9,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"obsoletes":"1F6B5","a":"Man Mountain Biking","b":"1F6B5-200D-2642-FE0F","c":"1F6B5-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_mountain_biking","bicycle","bike","cyclist","transportation","sports","human","race"],"k":[37,4],"o":4},"woman-mountain-biking":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2640-FE0F","non_qualified":"1F6B5-1F3FB-200D-2640","image":"1f6b5-1f3fb-200d-2640-fe0f.png","sheet_x":36,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2640-FE0F","non_qualified":"1F6B5-1F3FC-200D-2640","image":"1f6b5-1f3fc-200d-2640-fe0f.png","sheet_x":37,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2640-FE0F","non_qualified":"1F6B5-1F3FD-200D-2640","image":"1f6b5-1f3fd-200d-2640-fe0f.png","sheet_x":37,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2640-FE0F","non_qualified":"1F6B5-1F3FE-200D-2640","image":"1f6b5-1f3fe-200d-2640-fe0f.png","sheet_x":37,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2640-FE0F","non_qualified":"1F6B5-1F3FF-200D-2640","image":"1f6b5-1f3ff-200d-2640-fe0f.png","sheet_x":37,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Mountain Biking","b":"1F6B5-200D-2640-FE0F","c":"1F6B5-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_mountain_biking","bicycle","bike","cyclist","transportation","sports","human","race","woman","female"],"k":[36,59],"o":4},"person_doing_cartwheel":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F938-1F3FB","non_qualified":null,"image":"1f938-1f3fb.png","sheet_x":42,"sheet_y":10,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F938-1F3FC","non_qualified":null,"image":"1f938-1f3fc.png","sheet_x":42,"sheet_y":11,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F938-1F3FD","non_qualified":null,"image":"1f938-1f3fd.png","sheet_x":42,"sheet_y":12,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F938-1F3FE","non_qualified":null,"image":"1f938-1f3fe.png","sheet_x":42,"sheet_y":13,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F938-1F3FF","non_qualified":null,"image":"1f938-1f3ff.png","sheet_x":42,"sheet_y":14,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Person Doing Cartwheel","b":"1F938","d":true,"e":true,"f":true,"h":true,"j":["person_cartwheeling","sport","gymnastic"],"k":[42,9],"o":3},"man-cartwheeling":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2642-FE0F","non_qualified":"1F938-1F3FB-200D-2642","image":"1f938-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F938-1F3FC-200D-2642-FE0F","non_qualified":"1F938-1F3FC-200D-2642","image":"1f938-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F938-1F3FD-200D-2642-FE0F","non_qualified":"1F938-1F3FD-200D-2642","image":"1f938-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":6,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F938-1F3FE-200D-2642-FE0F","non_qualified":"1F938-1F3FE-200D-2642","image":"1f938-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":7,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F938-1F3FF-200D-2642-FE0F","non_qualified":"1F938-1F3FF-200D-2642","image":"1f938-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":8,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Cartwheeling","b":"1F938-200D-2642-FE0F","c":"1F938-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_cartwheeling","gymnastics"],"k":[42,3],"o":4},"woman-cartwheeling":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2640-FE0F","non_qualified":"1F938-1F3FB-200D-2640","image":"1f938-1f3fb-200d-2640-fe0f.png","sheet_x":41,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F938-1F3FC-200D-2640-FE0F","non_qualified":"1F938-1F3FC-200D-2640","image":"1f938-1f3fc-200d-2640-fe0f.png","sheet_x":41,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F938-1F3FD-200D-2640-FE0F","non_qualified":"1F938-1F3FD-200D-2640","image":"1f938-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":0,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F938-1F3FE-200D-2640-FE0F","non_qualified":"1F938-1F3FE-200D-2640","image":"1f938-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F938-1F3FF-200D-2640-FE0F","non_qualified":"1F938-1F3FF-200D-2640","image":"1f938-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Cartwheeling","b":"1F938-200D-2640-FE0F","c":"1F938-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_cartwheeling","gymnastics"],"k":[41,58],"o":4},"wrestlers":{"subcategory":"person-sport","a":"Wrestlers","b":"1F93C","d":true,"e":true,"f":true,"h":true,"j":["people_wrestling","sport"],"k":[42,36],"o":3},"man-wrestling":{"subcategory":"person-sport","a":"Men Wrestling","b":"1F93C-200D-2642-FE0F","c":"1F93C-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["men_wrestling","sports","wrestlers"],"k":[42,35],"o":4},"woman-wrestling":{"subcategory":"person-sport","a":"Women Wrestling","b":"1F93C-200D-2640-FE0F","c":"1F93C-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["women_wrestling","sports","wrestlers"],"k":[42,34],"o":4},"water_polo":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB","non_qualified":null,"image":"1f93d-1f3fb.png","sheet_x":42,"sheet_y":50,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93D-1F3FC","non_qualified":null,"image":"1f93d-1f3fc.png","sheet_x":42,"sheet_y":51,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93D-1F3FD","non_qualified":null,"image":"1f93d-1f3fd.png","sheet_x":42,"sheet_y":52,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93D-1F3FE","non_qualified":null,"image":"1f93d-1f3fe.png","sheet_x":42,"sheet_y":53,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93D-1F3FF","non_qualified":null,"image":"1f93d-1f3ff.png","sheet_x":42,"sheet_y":54,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Water Polo","b":"1F93D","d":true,"e":true,"f":true,"h":true,"j":["person_playing_water_polo","sport"],"k":[42,49],"o":3},"man-playing-water-polo":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2642-FE0F","non_qualified":"1F93D-1F3FB-200D-2642","image":"1f93d-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":44,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93D-1F3FC-200D-2642-FE0F","non_qualified":"1F93D-1F3FC-200D-2642","image":"1f93d-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":45,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93D-1F3FD-200D-2642-FE0F","non_qualified":"1F93D-1F3FD-200D-2642","image":"1f93d-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":46,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93D-1F3FE-200D-2642-FE0F","non_qualified":"1F93D-1F3FE-200D-2642","image":"1f93d-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":47,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93D-1F3FF-200D-2642-FE0F","non_qualified":"1F93D-1F3FF-200D-2642","image":"1f93d-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":48,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Playing Water Polo","b":"1F93D-200D-2642-FE0F","c":"1F93D-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_playing_water_polo","sports","pool"],"k":[42,43],"o":4},"woman-playing-water-polo":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2640-FE0F","non_qualified":"1F93D-1F3FB-200D-2640","image":"1f93d-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":38,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93D-1F3FC-200D-2640-FE0F","non_qualified":"1F93D-1F3FC-200D-2640","image":"1f93d-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":39,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93D-1F3FD-200D-2640-FE0F","non_qualified":"1F93D-1F3FD-200D-2640","image":"1f93d-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":40,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93D-1F3FE-200D-2640-FE0F","non_qualified":"1F93D-1F3FE-200D-2640","image":"1f93d-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":41,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93D-1F3FF-200D-2640-FE0F","non_qualified":"1F93D-1F3FF-200D-2640","image":"1f93d-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":42,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Playing Water Polo","b":"1F93D-200D-2640-FE0F","c":"1F93D-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_playing_water_polo","sports","pool"],"k":[42,37],"o":4},"handball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB","non_qualified":null,"image":"1f93e-1f3fb.png","sheet_x":43,"sheet_y":7,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93E-1F3FC","non_qualified":null,"image":"1f93e-1f3fc.png","sheet_x":43,"sheet_y":8,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93E-1F3FD","non_qualified":null,"image":"1f93e-1f3fd.png","sheet_x":43,"sheet_y":9,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93E-1F3FE","non_qualified":null,"image":"1f93e-1f3fe.png","sheet_x":43,"sheet_y":10,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93E-1F3FF","non_qualified":null,"image":"1f93e-1f3ff.png","sheet_x":43,"sheet_y":11,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Handball","b":"1F93E","d":true,"e":true,"f":true,"h":true,"j":["person_playing_handball","sport"],"k":[43,6],"o":3},"man-playing-handball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2642-FE0F","non_qualified":"1F93E-1F3FB-200D-2642","image":"1f93e-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":1,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93E-1F3FC-200D-2642-FE0F","non_qualified":"1F93E-1F3FC-200D-2642","image":"1f93e-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":2,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93E-1F3FD-200D-2642-FE0F","non_qualified":"1F93E-1F3FD-200D-2642","image":"1f93e-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":3,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93E-1F3FE-200D-2642-FE0F","non_qualified":"1F93E-1F3FE-200D-2642","image":"1f93e-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":4,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93E-1F3FF-200D-2642-FE0F","non_qualified":"1F93E-1F3FF-200D-2642","image":"1f93e-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":5,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Playing Handball","b":"1F93E-200D-2642-FE0F","c":"1F93E-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_playing_handball","sports"],"k":[43,0],"o":4},"woman-playing-handball":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2640-FE0F","non_qualified":"1F93E-1F3FB-200D-2640","image":"1f93e-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":56,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F93E-1F3FC-200D-2640-FE0F","non_qualified":"1F93E-1F3FC-200D-2640","image":"1f93e-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F93E-1F3FD-200D-2640-FE0F","non_qualified":"1F93E-1F3FD-200D-2640","image":"1f93e-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F93E-1F3FE-200D-2640-FE0F","non_qualified":"1F93E-1F3FE-200D-2640","image":"1f93e-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F93E-1F3FF-200D-2640-FE0F","non_qualified":"1F93E-1F3FF-200D-2640","image":"1f93e-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Playing Handball","b":"1F93E-200D-2640-FE0F","c":"1F93E-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_playing_handball","sports"],"k":[42,55],"o":4},"juggling":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F939-1F3FB","non_qualified":null,"image":"1f939-1f3fb.png","sheet_x":42,"sheet_y":28,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F939-1F3FC","non_qualified":null,"image":"1f939-1f3fc.png","sheet_x":42,"sheet_y":29,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F939-1F3FD","non_qualified":null,"image":"1f939-1f3fd.png","sheet_x":42,"sheet_y":30,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F939-1F3FE","non_qualified":null,"image":"1f939-1f3fe.png","sheet_x":42,"sheet_y":31,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F939-1F3FF","non_qualified":null,"image":"1f939-1f3ff.png","sheet_x":42,"sheet_y":32,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Juggling","b":"1F939","d":true,"e":true,"f":true,"h":true,"j":["person_juggling","performance","balance"],"k":[42,27],"o":3},"man-juggling":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2642-FE0F","non_qualified":"1F939-1F3FB-200D-2642","image":"1f939-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":22,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F939-1F3FC-200D-2642-FE0F","non_qualified":"1F939-1F3FC-200D-2642","image":"1f939-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":23,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F939-1F3FD-200D-2642-FE0F","non_qualified":"1F939-1F3FD-200D-2642","image":"1f939-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":24,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F939-1F3FE-200D-2642-FE0F","non_qualified":"1F939-1F3FE-200D-2642","image":"1f939-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":25,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F939-1F3FF-200D-2642-FE0F","non_qualified":"1F939-1F3FF-200D-2642","image":"1f939-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":26,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man Juggling","b":"1F939-200D-2642-FE0F","c":"1F939-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_juggling","juggle","balance","skill","multitask"],"k":[42,21],"o":4},"woman-juggling":{"subcategory":"person-sport","skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2640-FE0F","non_qualified":"1F939-1F3FB-200D-2640","image":"1f939-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":16,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F939-1F3FC-200D-2640-FE0F","non_qualified":"1F939-1F3FC-200D-2640","image":"1f939-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":17,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F939-1F3FD-200D-2640-FE0F","non_qualified":"1F939-1F3FD-200D-2640","image":"1f939-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":18,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F939-1F3FE-200D-2640-FE0F","non_qualified":"1F939-1F3FE-200D-2640","image":"1f939-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":19,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F939-1F3FF-200D-2640-FE0F","non_qualified":"1F939-1F3FF-200D-2640","image":"1f939-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":20,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Woman Juggling","b":"1F939-200D-2640-FE0F","c":"1F939-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_juggling","juggle","balance","skill","multitask"],"k":[42,15],"o":4},"person_in_lotus_position":{"subcategory":"person-resting","skin_variations":{"1F3FB":{"unified":"1F9D8-1F3FB","non_qualified":null,"image":"1f9d8-1f3fb.png","sheet_x":51,"sheet_y":37,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D8-1F3FB-200D-2640-FE0F"},"1F3FC":{"unified":"1F9D8-1F3FC","non_qualified":null,"image":"1f9d8-1f3fc.png","sheet_x":51,"sheet_y":38,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D8-1F3FC-200D-2640-FE0F"},"1F3FD":{"unified":"1F9D8-1F3FD","non_qualified":null,"image":"1f9d8-1f3fd.png","sheet_x":51,"sheet_y":39,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D8-1F3FD-200D-2640-FE0F"},"1F3FE":{"unified":"1F9D8-1F3FE","non_qualified":null,"image":"1f9d8-1f3fe.png","sheet_x":51,"sheet_y":40,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D8-1F3FE-200D-2640-FE0F"},"1F3FF":{"unified":"1F9D8-1F3FF","non_qualified":null,"image":"1f9d8-1f3ff.png","sheet_x":51,"sheet_y":41,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoleted_by":"1F9D8-1F3FF-200D-2640-FE0F"}},"obsoleted_by":"1F9D8-200D-2640-FE0F","a":"Person in Lotus Position","b":"1F9D8","d":true,"e":true,"f":true,"h":true,"j":["person_in_lotus_position","meditate"],"k":[51,36],"o":5},"man_in_lotus_position":{"subcategory":"person-resting","skin_variations":{"1F3FB":{"unified":"1F9D8-1F3FB-200D-2642-FE0F","non_qualified":"1F9D8-1F3FB-200D-2642","image":"1f9d8-1f3fb-200d-2642-fe0f.png","sheet_x":51,"sheet_y":31,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F9D8-1F3FC-200D-2642-FE0F","non_qualified":"1F9D8-1F3FC-200D-2642","image":"1f9d8-1f3fc-200d-2642-fe0f.png","sheet_x":51,"sheet_y":32,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F9D8-1F3FD-200D-2642-FE0F","non_qualified":"1F9D8-1F3FD-200D-2642","image":"1f9d8-1f3fd-200d-2642-fe0f.png","sheet_x":51,"sheet_y":33,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F9D8-1F3FE-200D-2642-FE0F","non_qualified":"1F9D8-1F3FE-200D-2642","image":"1f9d8-1f3fe-200d-2642-fe0f.png","sheet_x":51,"sheet_y":34,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F9D8-1F3FF-200D-2642-FE0F","non_qualified":"1F9D8-1F3FF-200D-2642","image":"1f9d8-1f3ff-200d-2642-fe0f.png","sheet_x":51,"sheet_y":35,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man in Lotus Position","b":"1F9D8-200D-2642-FE0F","c":"1F9D8-200D-2642","d":true,"e":true,"f":true,"h":true,"j":["man_in_lotus_position","man","male","meditation","yoga","serenity","zen","mindfulness"],"k":[51,30],"o":5},"woman_in_lotus_position":{"subcategory":"person-resting","skin_variations":{"1F3FB":{"unified":"1F9D8-1F3FB-200D-2640-FE0F","non_qualified":"1F9D8-1F3FB-200D-2640","image":"1f9d8-1f3fb-200d-2640-fe0f.png","sheet_x":51,"sheet_y":25,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D8-1F3FB"},"1F3FC":{"unified":"1F9D8-1F3FC-200D-2640-FE0F","non_qualified":"1F9D8-1F3FC-200D-2640","image":"1f9d8-1f3fc-200d-2640-fe0f.png","sheet_x":51,"sheet_y":26,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D8-1F3FC"},"1F3FD":{"unified":"1F9D8-1F3FD-200D-2640-FE0F","non_qualified":"1F9D8-1F3FD-200D-2640","image":"1f9d8-1f3fd-200d-2640-fe0f.png","sheet_x":51,"sheet_y":27,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D8-1F3FD"},"1F3FE":{"unified":"1F9D8-1F3FE-200D-2640-FE0F","non_qualified":"1F9D8-1F3FE-200D-2640","image":"1f9d8-1f3fe-200d-2640-fe0f.png","sheet_x":51,"sheet_y":28,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D8-1F3FE"},"1F3FF":{"unified":"1F9D8-1F3FF-200D-2640-FE0F","non_qualified":"1F9D8-1F3FF-200D-2640","image":"1f9d8-1f3ff-200d-2640-fe0f.png","sheet_x":51,"sheet_y":29,"added_in":"5.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true,"obsoletes":"1F9D8-1F3FF"}},"obsoletes":"1F9D8","a":"Woman in Lotus Position","b":"1F9D8-200D-2640-FE0F","c":"1F9D8-200D-2640","d":true,"e":true,"f":true,"h":true,"j":["woman_in_lotus_position","woman","female","meditation","yoga","serenity","zen","mindfulness"],"k":[51,24],"o":5},"bath":{"subcategory":"person-resting","skin_variations":{"1F3FB":{"unified":"1F6C0-1F3FB","non_qualified":null,"image":"1f6c0-1f3fb.png","sheet_x":37,"sheet_y":44,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6C0-1F3FC","non_qualified":null,"image":"1f6c0-1f3fc.png","sheet_x":37,"sheet_y":45,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6C0-1F3FD","non_qualified":null,"image":"1f6c0-1f3fd.png","sheet_x":37,"sheet_y":46,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6C0-1F3FE","non_qualified":null,"image":"1f6c0-1f3fe.png","sheet_x":37,"sheet_y":47,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6C0-1F3FF","non_qualified":null,"image":"1f6c0-1f3ff.png","sheet_x":37,"sheet_y":48,"added_in":"1.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Bath","b":"1F6C0","d":true,"e":true,"f":true,"h":true,"j":["person_taking_bath","clean","shower","bathroom"],"k":[37,43],"o":0},"sleeping_accommodation":{"subcategory":"person-resting","skin_variations":{"1F3FB":{"unified":"1F6CC-1F3FB","non_qualified":null,"image":"1f6cc-1f3fb.png","sheet_x":37,"sheet_y":56,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F6CC-1F3FC","non_qualified":null,"image":"1f6cc-1f3fc.png","sheet_x":37,"sheet_y":57,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F6CC-1F3FD","non_qualified":null,"image":"1f6cc-1f3fd.png","sheet_x":37,"sheet_y":58,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F6CC-1F3FE","non_qualified":null,"image":"1f6cc-1f3fe.png","sheet_x":37,"sheet_y":59,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F6CC-1F3FF","non_qualified":null,"image":"1f6cc-1f3ff.png","sheet_x":37,"sheet_y":60,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Sleeping Accommodation","b":"1F6CC","d":true,"e":true,"f":true,"h":true,"j":["person_in_bed","bed","rest"],"k":[37,55],"o":1},"people_holding_hands":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb.png","sheet_x":48,"sheet_y":44,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc.png","sheet_x":48,"sheet_y":45,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd.png","sheet_x":48,"sheet_y":46,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe.png","sheet_x":48,"sheet_y":47,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff.png","sheet_x":48,"sheet_y":48,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb.png","sheet_x":48,"sheet_y":49,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc.png","sheet_x":48,"sheet_y":50,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd.png","sheet_x":48,"sheet_y":51,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe.png","sheet_x":48,"sheet_y":52,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff.png","sheet_x":48,"sheet_y":53,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb.png","sheet_x":48,"sheet_y":54,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc.png","sheet_x":48,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd.png","sheet_x":48,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe.png","sheet_x":48,"sheet_y":57,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff.png","sheet_x":48,"sheet_y":58,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb.png","sheet_x":48,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc.png","sheet_x":48,"sheet_y":60,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd.png","sheet_x":49,"sheet_y":0,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe.png","sheet_x":49,"sheet_y":1,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff.png","sheet_x":49,"sheet_y":2,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FB","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb.png","sheet_x":49,"sheet_y":3,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FC","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc.png","sheet_x":49,"sheet_y":4,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FD","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd.png","sheet_x":49,"sheet_y":5,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FE","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe.png","sheet_x":49,"sheet_y":6,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FF","non_qualified":null,"image":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff.png","sheet_x":49,"sheet_y":7,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"People Holding Hands","b":"1F9D1-200D-1F91D-200D-1F9D1","d":true,"e":true,"f":true,"h":true,"j":["people_holding_hands","friendship"],"k":[48,43],"o":12},"two_women_holding_hands":{"subcategory":"family","skin_variations":{"1F3FB":{"unified":"1F46D-1F3FB","non_qualified":null,"image":"1f46d-1f3fb.png","sheet_x":22,"sheet_y":33,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46D-1F3FC","non_qualified":null,"image":"1f46d-1f3fc.png","sheet_x":22,"sheet_y":34,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46D-1F3FD","non_qualified":null,"image":"1f46d-1f3fd.png","sheet_x":22,"sheet_y":35,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46D-1F3FE","non_qualified":null,"image":"1f46d-1f3fe.png","sheet_x":22,"sheet_y":36,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46D-1F3FF","non_qualified":null,"image":"1f46d-1f3ff.png","sheet_x":22,"sheet_y":37,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FC","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc.png","sheet_x":22,"sheet_y":38,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FD","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd.png","sheet_x":22,"sheet_y":39,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FE","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe.png","sheet_x":22,"sheet_y":40,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FF","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff.png","sheet_x":22,"sheet_y":41,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FB","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb.png","sheet_x":22,"sheet_y":42,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FD","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd.png","sheet_x":22,"sheet_y":43,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FE","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe.png","sheet_x":22,"sheet_y":44,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FF","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff.png","sheet_x":22,"sheet_y":45,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FB","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb.png","sheet_x":22,"sheet_y":46,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FC","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc.png","sheet_x":22,"sheet_y":47,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FE","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe.png","sheet_x":22,"sheet_y":48,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FF","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff.png","sheet_x":22,"sheet_y":49,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FB","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb.png","sheet_x":22,"sheet_y":50,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FC","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc.png","sheet_x":22,"sheet_y":51,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FD","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd.png","sheet_x":22,"sheet_y":52,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FF","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff.png","sheet_x":22,"sheet_y":53,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FB","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb.png","sheet_x":22,"sheet_y":54,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FC","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc.png","sheet_x":22,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FD","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd.png","sheet_x":22,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FE","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe.png","sheet_x":22,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Two Women Holding Hands","b":"1F46D","d":true,"e":true,"f":true,"h":true,"j":["women_holding_hands","pair","friendship","couple","love","like","female","people","human"],"k":[22,32],"n":["women_holding_hands"],"o":1},"man_and_woman_holding_hands":{"subcategory":"family","skin_variations":{"1F3FB":{"unified":"1F46B-1F3FB","non_qualified":null,"image":"1f46b-1f3fb.png","sheet_x":21,"sheet_y":42,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46B-1F3FC","non_qualified":null,"image":"1f46b-1f3fc.png","sheet_x":21,"sheet_y":43,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46B-1F3FD","non_qualified":null,"image":"1f46b-1f3fd.png","sheet_x":21,"sheet_y":44,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46B-1F3FE","non_qualified":null,"image":"1f46b-1f3fe.png","sheet_x":21,"sheet_y":45,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46B-1F3FF","non_qualified":null,"image":"1f46b-1f3ff.png","sheet_x":21,"sheet_y":46,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":21,"sheet_y":47,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":21,"sheet_y":48,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":21,"sheet_y":49,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":21,"sheet_y":50,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":21,"sheet_y":51,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":21,"sheet_y":52,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":21,"sheet_y":53,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":21,"sheet_y":54,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":21,"sheet_y":55,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":21,"sheet_y":56,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":21,"sheet_y":57,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":21,"sheet_y":58,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":21,"sheet_y":59,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":21,"sheet_y":60,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":0,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":22,"sheet_y":1,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":22,"sheet_y":2,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":22,"sheet_y":3,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":4,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":22,"sheet_y":5,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Man and Woman Holding Hands","b":"1F46B","d":true,"e":true,"f":true,"h":true,"j":["woman_and_man_holding_hands","pair","people","human","love","date","dating","like","affection","valentines","marriage"],"k":[21,41],"n":["woman_and_man_holding_hands","couple"],"o":0},"two_men_holding_hands":{"subcategory":"family","skin_variations":{"1F3FB":{"unified":"1F46C-1F3FB","non_qualified":null,"image":"1f46c-1f3fb.png","sheet_x":22,"sheet_y":7,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F46C-1F3FC","non_qualified":null,"image":"1f46c-1f3fc.png","sheet_x":22,"sheet_y":8,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F46C-1F3FD","non_qualified":null,"image":"1f46c-1f3fd.png","sheet_x":22,"sheet_y":9,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F46C-1F3FE","non_qualified":null,"image":"1f46c-1f3fe.png","sheet_x":22,"sheet_y":10,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F46C-1F3FF","non_qualified":null,"image":"1f46c-1f3ff.png","sheet_x":22,"sheet_y":11,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":22,"sheet_y":12,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":13,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":22,"sheet_y":14,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":22,"sheet_y":15,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":22,"sheet_y":16,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":17,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":22,"sheet_y":18,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":22,"sheet_y":19,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":22,"sheet_y":20,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":22,"sheet_y":21,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":22,"sheet_y":22,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":22,"sheet_y":23,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":22,"sheet_y":24,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":22,"sheet_y":25,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":26,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FF","non_qualified":null,"image":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff.png","sheet_x":22,"sheet_y":27,"added_in":"12.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FB","non_qualified":null,"image":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb.png","sheet_x":22,"sheet_y":28,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FC","non_qualified":null,"image":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc.png","sheet_x":22,"sheet_y":29,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FD","non_qualified":null,"image":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd.png","sheet_x":22,"sheet_y":30,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FE","non_qualified":null,"image":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe.png","sheet_x":22,"sheet_y":31,"added_in":"12.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Two Men Holding Hands","b":"1F46C","d":true,"e":true,"f":true,"h":true,"j":["men_holding_hands","pair","couple","love","like","bromance","friendship","people","human"],"k":[22,6],"n":["men_holding_hands"],"o":1},"couplekiss":{"subcategory":"family","skin_variations":{"1F3FB":{"unified":"1F48F-1F3FB","non_qualified":null,"image":"1f48f-1f3fb.png","sheet_x":26,"sheet_y":43,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F48F-1F3FC","non_qualified":null,"image":"1f48f-1f3fc.png","sheet_x":26,"sheet_y":44,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F48F-1F3FD","non_qualified":null,"image":"1f48f-1f3fd.png","sheet_x":26,"sheet_y":45,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F48F-1F3FE","non_qualified":null,"image":"1f48f-1f3fe.png","sheet_x":26,"sheet_y":46,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F48F-1F3FF","non_qualified":null,"image":"1f48f-1f3ff.png","sheet_x":26,"sheet_y":47,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F48B-200D-1F9D1-1F3FC","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.png","sheet_x":26,"sheet_y":48,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F48B-200D-1F9D1-1F3FD","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.png","sheet_x":26,"sheet_y":49,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F48B-200D-1F9D1-1F3FE","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.png","sheet_x":26,"sheet_y":50,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F48B-200D-1F9D1-1F3FF","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.png","sheet_x":26,"sheet_y":51,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F48B-200D-1F9D1-1F3FB","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.png","sheet_x":26,"sheet_y":52,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F48B-200D-1F9D1-1F3FD","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.png","sheet_x":26,"sheet_y":53,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F48B-200D-1F9D1-1F3FE","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.png","sheet_x":26,"sheet_y":54,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F48B-200D-1F9D1-1F3FF","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.png","sheet_x":26,"sheet_y":55,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F48B-200D-1F9D1-1F3FB","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.png","sheet_x":26,"sheet_y":56,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F48B-200D-1F9D1-1F3FC","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.png","sheet_x":26,"sheet_y":57,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F48B-200D-1F9D1-1F3FE","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.png","sheet_x":26,"sheet_y":58,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F48B-200D-1F9D1-1F3FF","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.png","sheet_x":26,"sheet_y":59,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F48B-200D-1F9D1-1F3FB","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.png","sheet_x":26,"sheet_y":60,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F48B-200D-1F9D1-1F3FC","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":0,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F48B-200D-1F9D1-1F3FD","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":1,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F48B-200D-1F9D1-1F3FF","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff.png","sheet_x":27,"sheet_y":2,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F48B-200D-1F9D1-1F3FB","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb.png","sheet_x":27,"sheet_y":3,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F48B-200D-1F9D1-1F3FC","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":4,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F48B-200D-1F9D1-1F3FD","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":5,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F48B-200D-1F9D1-1F3FE","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe.png","sheet_x":27,"sheet_y":6,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Kiss","b":"1F48F","d":true,"e":true,"f":true,"h":true,"j":["kiss","pair","valentines","love","like","dating","marriage"],"k":[26,42],"o":0},"woman-kiss-man":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":44,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":45,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":46,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":47,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":48,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":49,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":50,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":51,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":52,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":53,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":54,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":55,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":56,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":57,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":58,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":59,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":60,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":21,"sheet_y":0,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":21,"sheet_y":1,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":21,"sheet_y":2,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":21,"sheet_y":3,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":21,"sheet_y":4,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":21,"sheet_y":5,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":21,"sheet_y":6,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":21,"sheet_y":7,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Kiss: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","c":"1F469-200D-2764-200D-1F48B-200D-1F468","d":true,"e":true,"f":true,"h":true,"j":["kiss_woman_man","love"],"k":[20,43],"o":2},"man-kiss-man":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F468-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":50,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F468-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":51,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F468-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":52,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F468-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":53,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F468-1F3FB-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":54,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F468-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":55,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F468-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":56,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F468-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":57,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F468-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":58,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F468-1F3FC-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":59,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F468-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":60,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F468-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":17,"sheet_y":0,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F468-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":17,"sheet_y":1,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F468-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":17,"sheet_y":2,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F468-1F3FD-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":17,"sheet_y":3,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F468-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":17,"sheet_y":4,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F468-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":17,"sheet_y":5,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F468-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":17,"sheet_y":6,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F468-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":17,"sheet_y":7,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F468-1F3FE-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":17,"sheet_y":8,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB","non_qualified":"1F468-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FB","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb.png","sheet_x":17,"sheet_y":9,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC","non_qualified":"1F468-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FC","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc.png","sheet_x":17,"sheet_y":10,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD","non_qualified":"1F468-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FD","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd.png","sheet_x":17,"sheet_y":11,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE","non_qualified":"1F468-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FE","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe.png","sheet_x":17,"sheet_y":12,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF","non_qualified":"1F468-1F3FF-200D-2764-200D-1F48B-200D-1F468-1F3FF","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff.png","sheet_x":17,"sheet_y":13,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Kiss: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","c":"1F468-200D-2764-200D-1F48B-200D-1F468","d":true,"e":true,"f":true,"h":true,"j":["kiss_man_man","pair","valentines","love","like","dating","marriage"],"k":[16,49],"o":2},"woman-kiss-woman":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F469-1F3FB","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.png","sheet_x":21,"sheet_y":9,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F469-1F3FC","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.png","sheet_x":21,"sheet_y":10,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F469-1F3FD","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.png","sheet_x":21,"sheet_y":11,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F469-1F3FE","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.png","sheet_x":21,"sheet_y":12,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF","non_qualified":"1F469-1F3FB-200D-2764-200D-1F48B-200D-1F469-1F3FF","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.png","sheet_x":21,"sheet_y":13,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F469-1F3FB","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.png","sheet_x":21,"sheet_y":14,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F469-1F3FC","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.png","sheet_x":21,"sheet_y":15,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F469-1F3FD","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.png","sheet_x":21,"sheet_y":16,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F469-1F3FE","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.png","sheet_x":21,"sheet_y":17,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF","non_qualified":"1F469-1F3FC-200D-2764-200D-1F48B-200D-1F469-1F3FF","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.png","sheet_x":21,"sheet_y":18,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F469-1F3FB","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.png","sheet_x":21,"sheet_y":19,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F469-1F3FC","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.png","sheet_x":21,"sheet_y":20,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F469-1F3FD","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.png","sheet_x":21,"sheet_y":21,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F469-1F3FE","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.png","sheet_x":21,"sheet_y":22,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF","non_qualified":"1F469-1F3FD-200D-2764-200D-1F48B-200D-1F469-1F3FF","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.png","sheet_x":21,"sheet_y":23,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F469-1F3FB","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.png","sheet_x":21,"sheet_y":24,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F469-1F3FC","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.png","sheet_x":21,"sheet_y":25,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F469-1F3FD","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.png","sheet_x":21,"sheet_y":26,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F469-1F3FE","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.png","sheet_x":21,"sheet_y":27,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF","non_qualified":"1F469-1F3FE-200D-2764-200D-1F48B-200D-1F469-1F3FF","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.png","sheet_x":21,"sheet_y":28,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F469-1F3FB","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb.png","sheet_x":21,"sheet_y":29,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F469-1F3FC","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc.png","sheet_x":21,"sheet_y":30,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F469-1F3FD","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd.png","sheet_x":21,"sheet_y":31,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F469-1F3FE","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe.png","sheet_x":21,"sheet_y":32,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF","non_qualified":"1F469-1F3FF-200D-2764-200D-1F48B-200D-1F469-1F3FF","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff.png","sheet_x":21,"sheet_y":33,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Kiss: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","c":"1F469-200D-2764-200D-1F48B-200D-1F469","d":true,"e":true,"f":true,"h":true,"j":["kiss_woman_woman","pair","valentines","love","like","dating","marriage"],"k":[21,8],"o":2},"couple_with_heart":{"subcategory":"family","skin_variations":{"1F3FB":{"unified":"1F491-1F3FB","non_qualified":null,"image":"1f491-1f3fb.png","sheet_x":27,"sheet_y":9,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC":{"unified":"1F491-1F3FC","non_qualified":null,"image":"1f491-1f3fc.png","sheet_x":27,"sheet_y":10,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD":{"unified":"1F491-1F3FD","non_qualified":null,"image":"1f491-1f3fd.png","sheet_x":27,"sheet_y":11,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE":{"unified":"1F491-1F3FE","non_qualified":null,"image":"1f491-1f3fe.png","sheet_x":27,"sheet_y":12,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF":{"unified":"1F491-1F3FF","non_qualified":null,"image":"1f491-1f3ff.png","sheet_x":27,"sheet_y":13,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F9D1-1F3FC","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":14,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F9D1-1F3FD","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":15,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F9D1-1F3FE","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe.png","sheet_x":27,"sheet_y":16,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FB-200D-2764-200D-1F9D1-1F3FF","image":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff.png","sheet_x":27,"sheet_y":17,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F9D1-1F3FB","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb.png","sheet_x":27,"sheet_y":18,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F9D1-1F3FD","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":19,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F9D1-1F3FE","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe.png","sheet_x":27,"sheet_y":20,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FC-200D-2764-200D-1F9D1-1F3FF","image":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff.png","sheet_x":27,"sheet_y":21,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F9D1-1F3FB","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb.png","sheet_x":27,"sheet_y":22,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F9D1-1F3FC","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":23,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F9D1-1F3FE","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe.png","sheet_x":27,"sheet_y":24,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FD-200D-2764-200D-1F9D1-1F3FF","image":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff.png","sheet_x":27,"sheet_y":25,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F9D1-1F3FB","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb.png","sheet_x":27,"sheet_y":26,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F9D1-1F3FC","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":27,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F9D1-1F3FD","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":28,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FF","non_qualified":"1F9D1-1F3FE-200D-2764-200D-1F9D1-1F3FF","image":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff.png","sheet_x":27,"sheet_y":29,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FB","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F9D1-1F3FB","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb.png","sheet_x":27,"sheet_y":30,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FC","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F9D1-1F3FC","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc.png","sheet_x":27,"sheet_y":31,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FD","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F9D1-1F3FD","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd.png","sheet_x":27,"sheet_y":32,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FE","non_qualified":"1F9D1-1F3FF-200D-2764-200D-1F9D1-1F3FE","image":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe.png","sheet_x":27,"sheet_y":33,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Couple with Heart","b":"1F491","d":true,"e":true,"f":true,"h":true,"j":["couple_with_heart","pair","love","like","affection","human","dating","valentines","marriage"],"k":[27,8],"o":0},"woman-heart-man":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F469-1F3FB-200D-2764-200D-1F468-1F3FB","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":19,"sheet_y":53,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F469-1F3FB-200D-2764-200D-1F468-1F3FC","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":19,"sheet_y":54,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F469-1F3FB-200D-2764-200D-1F468-1F3FD","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":19,"sheet_y":55,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F469-1F3FB-200D-2764-200D-1F468-1F3FE","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":19,"sheet_y":56,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F469-1F3FB-200D-2764-200D-1F468-1F3FF","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":19,"sheet_y":57,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F469-1F3FC-200D-2764-200D-1F468-1F3FB","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":19,"sheet_y":58,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F469-1F3FC-200D-2764-200D-1F468-1F3FC","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":19,"sheet_y":59,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F469-1F3FC-200D-2764-200D-1F468-1F3FD","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":19,"sheet_y":60,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F469-1F3FC-200D-2764-200D-1F468-1F3FE","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":0,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F469-1F3FC-200D-2764-200D-1F468-1F3FF","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":1,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F469-1F3FD-200D-2764-200D-1F468-1F3FB","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":2,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F469-1F3FD-200D-2764-200D-1F468-1F3FC","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":3,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F469-1F3FD-200D-2764-200D-1F468-1F3FD","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":4,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F469-1F3FD-200D-2764-200D-1F468-1F3FE","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":5,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F469-1F3FD-200D-2764-200D-1F468-1F3FF","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":6,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F469-1F3FE-200D-2764-200D-1F468-1F3FB","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":7,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F469-1F3FE-200D-2764-200D-1F468-1F3FC","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":8,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F469-1F3FE-200D-2764-200D-1F468-1F3FD","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":9,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F469-1F3FE-200D-2764-200D-1F468-1F3FE","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":10,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F469-1F3FE-200D-2764-200D-1F468-1F3FF","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":11,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F469-1F3FF-200D-2764-200D-1F468-1F3FB","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":20,"sheet_y":12,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F469-1F3FF-200D-2764-200D-1F468-1F3FC","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":20,"sheet_y":13,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F469-1F3FF-200D-2764-200D-1F468-1F3FD","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":20,"sheet_y":14,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F469-1F3FF-200D-2764-200D-1F468-1F3FE","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":20,"sheet_y":15,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F469-1F3FF-200D-2764-200D-1F468-1F3FF","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":20,"sheet_y":16,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Couple with Heart: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F468","c":"1F469-200D-2764-200D-1F468","d":true,"e":true,"f":true,"h":true,"j":["couple_with_heart_woman_man","love"],"k":[19,52],"o":2},"man-heart-man":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F468-1F3FB-200D-2764-200D-1F468-1F3FB","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":24,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F468-1F3FB-200D-2764-200D-1F468-1F3FC","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":25,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F468-1F3FB-200D-2764-200D-1F468-1F3FD","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":26,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F468-1F3FB-200D-2764-200D-1F468-1F3FE","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":27,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F468-1F3FB-200D-2764-200D-1F468-1F3FF","image":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":28,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F468-1F3FC-200D-2764-200D-1F468-1F3FB","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":29,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F468-1F3FC-200D-2764-200D-1F468-1F3FC","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":30,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F468-1F3FC-200D-2764-200D-1F468-1F3FD","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":31,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F468-1F3FC-200D-2764-200D-1F468-1F3FE","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":32,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F468-1F3FC-200D-2764-200D-1F468-1F3FF","image":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":33,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F468-1F3FD-200D-2764-200D-1F468-1F3FB","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":34,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F468-1F3FD-200D-2764-200D-1F468-1F3FC","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":35,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F468-1F3FD-200D-2764-200D-1F468-1F3FD","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":36,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F468-1F3FD-200D-2764-200D-1F468-1F3FE","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":37,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F468-1F3FD-200D-2764-200D-1F468-1F3FF","image":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":38,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F468-1F3FE-200D-2764-200D-1F468-1F3FB","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":39,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F468-1F3FE-200D-2764-200D-1F468-1F3FC","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":40,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F468-1F3FE-200D-2764-200D-1F468-1F3FD","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":41,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F468-1F3FE-200D-2764-200D-1F468-1F3FE","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":42,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F468-1F3FE-200D-2764-200D-1F468-1F3FF","image":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":43,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FB","non_qualified":"1F468-1F3FF-200D-2764-200D-1F468-1F3FB","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb.png","sheet_x":16,"sheet_y":44,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FC","non_qualified":"1F468-1F3FF-200D-2764-200D-1F468-1F3FC","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc.png","sheet_x":16,"sheet_y":45,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FD","non_qualified":"1F468-1F3FF-200D-2764-200D-1F468-1F3FD","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd.png","sheet_x":16,"sheet_y":46,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FE","non_qualified":"1F468-1F3FF-200D-2764-200D-1F468-1F3FE","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe.png","sheet_x":16,"sheet_y":47,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FF","non_qualified":"1F468-1F3FF-200D-2764-200D-1F468-1F3FF","image":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff.png","sheet_x":16,"sheet_y":48,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Couple with Heart: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F468","c":"1F468-200D-2764-200D-1F468","d":true,"e":true,"f":true,"h":true,"j":["couple_with_heart_man_man","pair","love","like","affection","human","dating","valentines","marriage"],"k":[16,23],"o":2},"woman-heart-woman":{"subcategory":"family","skin_variations":{"1F3FB-1F3FB":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FB","non_qualified":"1F469-1F3FB-200D-2764-200D-1F469-1F3FB","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb.png","sheet_x":20,"sheet_y":18,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FC":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FC","non_qualified":"1F469-1F3FB-200D-2764-200D-1F469-1F3FC","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc.png","sheet_x":20,"sheet_y":19,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FD":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FD","non_qualified":"1F469-1F3FB-200D-2764-200D-1F469-1F3FD","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd.png","sheet_x":20,"sheet_y":20,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FE":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FE","non_qualified":"1F469-1F3FB-200D-2764-200D-1F469-1F3FE","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe.png","sheet_x":20,"sheet_y":21,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FB-1F3FF":{"unified":"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FF","non_qualified":"1F469-1F3FB-200D-2764-200D-1F469-1F3FF","image":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff.png","sheet_x":20,"sheet_y":22,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FB":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FB","non_qualified":"1F469-1F3FC-200D-2764-200D-1F469-1F3FB","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb.png","sheet_x":20,"sheet_y":23,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FC":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FC","non_qualified":"1F469-1F3FC-200D-2764-200D-1F469-1F3FC","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc.png","sheet_x":20,"sheet_y":24,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FD":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FD","non_qualified":"1F469-1F3FC-200D-2764-200D-1F469-1F3FD","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd.png","sheet_x":20,"sheet_y":25,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FE":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FE","non_qualified":"1F469-1F3FC-200D-2764-200D-1F469-1F3FE","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe.png","sheet_x":20,"sheet_y":26,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FC-1F3FF":{"unified":"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FF","non_qualified":"1F469-1F3FC-200D-2764-200D-1F469-1F3FF","image":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff.png","sheet_x":20,"sheet_y":27,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FB":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FB","non_qualified":"1F469-1F3FD-200D-2764-200D-1F469-1F3FB","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb.png","sheet_x":20,"sheet_y":28,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FC":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FC","non_qualified":"1F469-1F3FD-200D-2764-200D-1F469-1F3FC","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc.png","sheet_x":20,"sheet_y":29,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FD":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FD","non_qualified":"1F469-1F3FD-200D-2764-200D-1F469-1F3FD","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd.png","sheet_x":20,"sheet_y":30,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FE":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FE","non_qualified":"1F469-1F3FD-200D-2764-200D-1F469-1F3FE","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe.png","sheet_x":20,"sheet_y":31,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FD-1F3FF":{"unified":"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FF","non_qualified":"1F469-1F3FD-200D-2764-200D-1F469-1F3FF","image":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff.png","sheet_x":20,"sheet_y":32,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FB":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FB","non_qualified":"1F469-1F3FE-200D-2764-200D-1F469-1F3FB","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb.png","sheet_x":20,"sheet_y":33,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FC":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FC","non_qualified":"1F469-1F3FE-200D-2764-200D-1F469-1F3FC","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc.png","sheet_x":20,"sheet_y":34,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FD":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FD","non_qualified":"1F469-1F3FE-200D-2764-200D-1F469-1F3FD","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd.png","sheet_x":20,"sheet_y":35,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FE":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FE","non_qualified":"1F469-1F3FE-200D-2764-200D-1F469-1F3FE","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe.png","sheet_x":20,"sheet_y":36,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FE-1F3FF":{"unified":"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FF","non_qualified":"1F469-1F3FE-200D-2764-200D-1F469-1F3FF","image":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff.png","sheet_x":20,"sheet_y":37,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FB":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FB","non_qualified":"1F469-1F3FF-200D-2764-200D-1F469-1F3FB","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb.png","sheet_x":20,"sheet_y":38,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FC":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FC","non_qualified":"1F469-1F3FF-200D-2764-200D-1F469-1F3FC","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc.png","sheet_x":20,"sheet_y":39,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FD":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FD","non_qualified":"1F469-1F3FF-200D-2764-200D-1F469-1F3FD","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd.png","sheet_x":20,"sheet_y":40,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FE":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FE","non_qualified":"1F469-1F3FF-200D-2764-200D-1F469-1F3FE","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe.png","sheet_x":20,"sheet_y":41,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true},"1F3FF-1F3FF":{"unified":"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FF","non_qualified":"1F469-1F3FF-200D-2764-200D-1F469-1F3FF","image":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff.png","sheet_x":20,"sheet_y":42,"added_in":"13.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_facebook":true}},"a":"Couple with Heart: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F469","c":"1F469-200D-2764-200D-1F469","d":true,"e":true,"f":true,"h":true,"j":["couple_with_heart_woman_woman","pair","love","like","affection","human","dating","valentines","marriage"],"k":[20,17],"o":2},"family":{"subcategory":"family","obsoleted_by":"1F468-200D-1F469-200D-1F466","a":"Family","b":"1F46A","d":true,"e":true,"f":true,"h":true,"j":["family","home","parents","child","mom","dad","father","mother","people","human"],"k":[21,40],"o":0},"man-woman-boy":{"subcategory":"family","obsoletes":"1F46A","a":"Family: Man, Woman, Boy","b":"1F468-200D-1F469-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_woman_boy","love"],"k":[14,44],"o":2},"man-woman-girl":{"subcategory":"family","a":"Family: Man, Woman, Girl","b":"1F468-200D-1F469-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_woman_girl","home","parents","people","human","child"],"k":[14,46],"o":2},"man-woman-girl-boy":{"subcategory":"family","a":"Family: Man, Woman, Girl, Boy","b":"1F468-200D-1F469-200D-1F467-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_woman_girl_boy","home","parents","people","human","children"],"k":[14,47],"o":2},"man-woman-boy-boy":{"subcategory":"family","a":"Family: Man, Woman, Boy, Boy","b":"1F468-200D-1F469-200D-1F466-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_woman_boy_boy","home","parents","people","human","children"],"k":[14,45],"o":2},"man-woman-girl-girl":{"subcategory":"family","a":"Family: Man, Woman, Girl, Girl","b":"1F468-200D-1F469-200D-1F467-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_woman_girl_girl","home","parents","people","human","children"],"k":[14,48],"o":2},"man-man-boy":{"subcategory":"family","a":"Family: Man, Man, Boy","b":"1F468-200D-1F468-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_man_boy","home","parents","people","human","children"],"k":[14,39],"o":2},"man-man-girl":{"subcategory":"family","a":"Family: Man, Man, Girl","b":"1F468-200D-1F468-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_man_girl","home","parents","people","human","children"],"k":[14,41],"o":2},"man-man-girl-boy":{"subcategory":"family","a":"Family: Man, Man, Girl, Boy","b":"1F468-200D-1F468-200D-1F467-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_man_girl_boy","home","parents","people","human","children"],"k":[14,42],"o":2},"man-man-boy-boy":{"subcategory":"family","a":"Family: Man, Man, Boy, Boy","b":"1F468-200D-1F468-200D-1F466-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_man_boy_boy","home","parents","people","human","children"],"k":[14,40],"o":2},"man-man-girl-girl":{"subcategory":"family","a":"Family: Man, Man, Girl, Girl","b":"1F468-200D-1F468-200D-1F467-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_man_girl_girl","home","parents","people","human","children"],"k":[14,43],"o":2},"woman-woman-boy":{"subcategory":"family","a":"Family: Woman, Woman, Boy","b":"1F469-200D-1F469-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_woman_boy","home","parents","people","human","children"],"k":[18,12],"o":2},"woman-woman-girl":{"subcategory":"family","a":"Family: Woman, Woman, Girl","b":"1F469-200D-1F469-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_woman_woman_girl","home","parents","people","human","children"],"k":[18,14],"o":2},"woman-woman-girl-boy":{"subcategory":"family","a":"Family: Woman, Woman, Girl, Boy","b":"1F469-200D-1F469-200D-1F467-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_woman_girl_boy","home","parents","people","human","children"],"k":[18,15],"o":2},"woman-woman-boy-boy":{"subcategory":"family","a":"Family: Woman, Woman, Boy, Boy","b":"1F469-200D-1F469-200D-1F466-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_woman_boy_boy","home","parents","people","human","children"],"k":[18,13],"o":2},"woman-woman-girl-girl":{"subcategory":"family","a":"Family: Woman, Woman, Girl, Girl","b":"1F469-200D-1F469-200D-1F467-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_woman_woman_girl_girl","home","parents","people","human","children"],"k":[18,16],"o":2},"man-boy":{"subcategory":"family","a":"Family: Man, Boy","b":"1F468-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_boy","home","parent","people","human","child"],"k":[14,35],"o":4},"man-boy-boy":{"subcategory":"family","a":"Family: Man, Boy, Boy","b":"1F468-200D-1F466-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_boy_boy","home","parent","people","human","children"],"k":[14,34],"o":4},"man-girl":{"subcategory":"family","a":"Family: Man, Girl","b":"1F468-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_girl","home","parent","people","human","child"],"k":[14,38],"o":4},"man-girl-boy":{"subcategory":"family","a":"Family: Man, Girl, Boy","b":"1F468-200D-1F467-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_man_girl_boy","home","parent","people","human","children"],"k":[14,36],"o":4},"man-girl-girl":{"subcategory":"family","a":"Family: Man, Girl, Girl","b":"1F468-200D-1F467-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_man_girl_girl","home","parent","people","human","children"],"k":[14,37],"o":4},"woman-boy":{"subcategory":"family","a":"Family: Woman, Boy","b":"1F469-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_boy","home","parent","people","human","child"],"k":[18,8],"o":4},"woman-boy-boy":{"subcategory":"family","a":"Family: Woman, Boy, Boy","b":"1F469-200D-1F466-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_boy_boy","home","parent","people","human","children"],"k":[18,7],"o":4},"woman-girl":{"subcategory":"family","a":"Family: Woman, Girl","b":"1F469-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_woman_girl","home","parent","people","human","child"],"k":[18,11],"o":4},"woman-girl-boy":{"subcategory":"family","a":"Family: Woman, Girl, Boy","b":"1F469-200D-1F467-200D-1F466","d":true,"e":true,"f":true,"h":true,"j":["family_woman_girl_boy","home","parent","people","human","children"],"k":[18,9],"o":4},"woman-girl-girl":{"subcategory":"family","a":"Family: Woman, Girl, Girl","b":"1F469-200D-1F467-200D-1F467","d":true,"e":true,"f":true,"h":true,"j":["family_woman_girl_girl","home","parent","people","human","children"],"k":[18,10],"o":4},"speaking_head_in_silhouette":{"subcategory":"person-symbol","a":"Speaking Head","b":"1F5E3-FE0F","c":"1F5E3","d":true,"e":true,"f":true,"h":true,"j":["speaking_head","user","person","human","sing","say","talk"],"k":[32,11],"o":0},"bust_in_silhouette":{"subcategory":"person-symbol","a":"Bust in Silhouette","b":"1F464","d":true,"e":true,"f":true,"h":true,"j":["bust_in_silhouette","user","person","human"],"k":[13,33],"o":0},"busts_in_silhouette":{"subcategory":"person-symbol","a":"Busts in Silhouette","b":"1F465","d":true,"e":true,"f":true,"h":true,"j":["busts_in_silhouette","user","person","human","group","team"],"k":[13,34],"o":1},"people_hugging":{"subcategory":"person-symbol","a":"People Hugging","b":"1FAC2","d":true,"e":true,"f":true,"h":true,"j":["people hugging","care"],"k":[54,58],"o":13},"footprints":{"subcategory":"person-symbol","a":"Footprints","b":"1F463","d":true,"e":true,"f":true,"h":true,"j":["footprints","feet","tracking","walking","beach"],"k":[13,32],"o":0},"monkey_face":{"subcategory":"animal-mammal","a":"Monkey Face","b":"1F435","d":true,"e":true,"f":true,"h":true,"j":["monkey_face","animal","nature","circus"],"k":[11,41],"l":[":o)"],"o":0},"monkey":{"subcategory":"animal-mammal","a":"Monkey","b":"1F412","d":true,"e":true,"f":true,"h":true,"j":["monkey","animal","nature","banana","circus"],"k":[11,4],"o":0},"gorilla":{"subcategory":"animal-mammal","a":"Gorilla","b":"1F98D","d":true,"e":true,"f":true,"h":true,"j":["gorilla","animal","nature","circus"],"k":[44,33],"o":3},"orangutan":{"subcategory":"animal-mammal","a":"Orangutan","b":"1F9A7","d":true,"e":true,"f":true,"h":true,"j":["orangutan","animal"],"k":[44,59],"o":12},"dog":{"subcategory":"animal-mammal","a":"Dog Face","b":"1F436","d":true,"e":true,"f":true,"h":true,"j":["dog_face","animal","friend","nature","woof","puppy","pet","faithful"],"k":[11,42],"o":0},"dog2":{"subcategory":"animal-mammal","a":"Dog","b":"1F415","d":true,"e":true,"f":true,"h":true,"j":["dog","animal","nature","friend","doge","pet","faithful"],"k":[11,8],"o":0},"guide_dog":{"subcategory":"animal-mammal","a":"Guide Dog","b":"1F9AE","d":true,"e":true,"f":true,"h":true,"j":["guide_dog","animal","blind"],"k":[45,5],"o":12},"service_dog":{"subcategory":"animal-mammal","a":"Service Dog","b":"1F415-200D-1F9BA","d":true,"e":true,"f":true,"h":true,"j":["service_dog","blind","animal"],"k":[11,7],"o":12},"poodle":{"subcategory":"animal-mammal","a":"Poodle","b":"1F429","d":true,"e":true,"f":true,"h":true,"j":["poodle","dog","animal","101","nature","pet"],"k":[11,29],"o":0},"wolf":{"subcategory":"animal-mammal","a":"Wolf Face","b":"1F43A","d":true,"e":true,"f":true,"h":true,"j":["wolf","animal","nature","wild"],"k":[11,46],"o":0},"fox_face":{"subcategory":"animal-mammal","a":"Fox Face","b":"1F98A","d":true,"e":true,"f":true,"h":true,"j":["fox","animal","nature","face"],"k":[44,30],"o":3},"raccoon":{"subcategory":"animal-mammal","a":"Raccoon","b":"1F99D","d":true,"e":true,"f":true,"h":true,"j":["raccoon","animal","nature"],"k":[44,49],"o":11},"cat":{"subcategory":"animal-mammal","a":"Cat Face","b":"1F431","d":true,"e":true,"f":true,"h":true,"j":["cat_face","animal","meow","nature","pet","kitten"],"k":[11,37],"o":0},"cat2":{"subcategory":"animal-mammal","a":"Cat","b":"1F408","d":true,"e":true,"f":true,"h":true,"j":["cat","animal","meow","pet","cats"],"k":[10,55],"o":0},"black_cat":{"subcategory":"animal-mammal","a":"Black Cat","b":"1F408-200D-2B1B","d":true,"e":true,"f":true,"h":true,"j":["black cat","superstition","luck"],"k":[10,54],"o":13},"lion_face":{"subcategory":"animal-mammal","a":"Lion Face","b":"1F981","d":true,"e":true,"f":true,"h":true,"j":["lion","animal","nature"],"k":[44,21],"o":1},"tiger":{"subcategory":"animal-mammal","a":"Tiger Face","b":"1F42F","d":true,"e":true,"f":true,"h":true,"j":["tiger_face","animal","cat","danger","wild","nature","roar"],"k":[11,35],"o":0},"tiger2":{"subcategory":"animal-mammal","a":"Tiger","b":"1F405","d":true,"e":true,"f":true,"h":true,"j":["tiger","animal","nature","roar"],"k":[10,51],"o":1},"leopard":{"subcategory":"animal-mammal","a":"Leopard","b":"1F406","d":true,"e":true,"f":true,"h":true,"j":["leopard","animal","nature"],"k":[10,52],"o":1},"horse":{"subcategory":"animal-mammal","a":"Horse Face","b":"1F434","d":true,"e":true,"f":true,"h":true,"j":["horse_face","animal","brown","nature"],"k":[11,40],"o":0},"moose":{"subcategory":"animal-mammal","a":"Moose","b":"1FACE","d":true,"e":true,"f":false,"h":false,"j":["moose","shrek","canada","sweden","sven","cool"],"k":[55,16],"o":15},"donkey":{"subcategory":"animal-mammal","a":"Donkey","b":"1FACF","d":true,"e":true,"f":false,"h":false,"j":["donkey","eeyore","mule"],"k":[55,17],"o":15},"racehorse":{"subcategory":"animal-mammal","a":"Horse","b":"1F40E","d":true,"e":true,"f":true,"h":true,"j":["horse","animal","gamble","luck"],"k":[11,0],"o":0},"unicorn_face":{"subcategory":"animal-mammal","a":"Unicorn Face","b":"1F984","d":true,"e":true,"f":true,"h":true,"j":["unicorn","animal","nature","mystical"],"k":[44,24],"o":1},"zebra_face":{"subcategory":"animal-mammal","a":"Zebra Face","b":"1F993","d":true,"e":true,"f":true,"h":true,"j":["zebra","animal","nature","stripes","safari"],"k":[44,39],"o":5},"deer":{"subcategory":"animal-mammal","a":"Deer","b":"1F98C","d":true,"e":true,"f":true,"h":true,"j":["deer","animal","nature","horns","venison"],"k":[44,32],"o":3},"bison":{"subcategory":"animal-mammal","a":"Bison","b":"1F9AC","d":true,"e":true,"f":true,"h":true,"j":["bison","ox"],"k":[45,3],"o":13},"cow":{"subcategory":"animal-mammal","a":"Cow Face","b":"1F42E","d":true,"e":true,"f":true,"h":true,"j":["cow_face","beef","ox","animal","nature","moo","milk"],"k":[11,34],"o":0},"ox":{"subcategory":"animal-mammal","a":"Ox","b":"1F402","d":true,"e":true,"f":true,"h":true,"j":["ox","animal","cow","beef"],"k":[10,48],"o":1},"water_buffalo":{"subcategory":"animal-mammal","a":"Water Buffalo","b":"1F403","d":true,"e":true,"f":true,"h":true,"j":["water_buffalo","animal","nature","ox","cow"],"k":[10,49],"o":1},"cow2":{"subcategory":"animal-mammal","a":"Cow","b":"1F404","d":true,"e":true,"f":true,"h":true,"j":["cow","beef","ox","animal","nature","moo","milk"],"k":[10,50],"o":1},"pig":{"subcategory":"animal-mammal","a":"Pig Face","b":"1F437","d":true,"e":true,"f":true,"h":true,"j":["pig_face","animal","oink","nature"],"k":[11,43],"o":0},"pig2":{"subcategory":"animal-mammal","a":"Pig","b":"1F416","d":true,"e":true,"f":true,"h":true,"j":["pig","animal","nature"],"k":[11,9],"o":1},"boar":{"subcategory":"animal-mammal","a":"Boar","b":"1F417","d":true,"e":true,"f":true,"h":true,"j":["boar","animal","nature"],"k":[11,10],"o":0},"pig_nose":{"subcategory":"animal-mammal","a":"Pig Nose","b":"1F43D","d":true,"e":true,"f":true,"h":true,"j":["pig_nose","animal","oink"],"k":[11,50],"o":0},"ram":{"subcategory":"animal-mammal","a":"Ram","b":"1F40F","d":true,"e":true,"f":true,"h":true,"j":["ram","animal","sheep","nature"],"k":[11,1],"o":1},"sheep":{"subcategory":"animal-mammal","a":"Sheep","b":"1F411","d":true,"e":true,"f":true,"h":true,"j":["ewe","animal","nature","wool","shipit"],"k":[11,3],"o":0},"goat":{"subcategory":"animal-mammal","a":"Goat","b":"1F410","d":true,"e":true,"f":true,"h":true,"j":["goat","animal","nature"],"k":[11,2],"o":1},"dromedary_camel":{"subcategory":"animal-mammal","a":"Dromedary Camel","b":"1F42A","d":true,"e":true,"f":true,"h":true,"j":["camel","animal","hot","desert","hump"],"k":[11,30],"o":1},"camel":{"subcategory":"animal-mammal","a":"Bactrian Camel","b":"1F42B","d":true,"e":true,"f":true,"h":true,"j":["two_hump_camel","animal","nature","hot","desert","hump"],"k":[11,31],"o":0},"llama":{"subcategory":"animal-mammal","a":"Llama","b":"1F999","d":true,"e":true,"f":true,"h":true,"j":["llama","animal","nature","alpaca"],"k":[44,45],"o":11},"giraffe_face":{"subcategory":"animal-mammal","a":"Giraffe Face","b":"1F992","d":true,"e":true,"f":true,"h":true,"j":["giraffe","animal","nature","spots","safari"],"k":[44,38],"o":5},"elephant":{"subcategory":"animal-mammal","a":"Elephant","b":"1F418","d":true,"e":true,"f":true,"h":true,"j":["elephant","animal","nature","nose","th","circus"],"k":[11,11],"o":0},"mammoth":{"subcategory":"animal-mammal","a":"Mammoth","b":"1F9A3","d":true,"e":true,"f":true,"h":true,"j":["mammoth","elephant","tusks"],"k":[44,55],"o":13},"rhinoceros":{"subcategory":"animal-mammal","a":"Rhinoceros","b":"1F98F","d":true,"e":true,"f":true,"h":true,"j":["rhinoceros","animal","nature","horn"],"k":[44,35],"o":3},"hippopotamus":{"subcategory":"animal-mammal","a":"Hippopotamus","b":"1F99B","d":true,"e":true,"f":true,"h":true,"j":["hippopotamus","animal","nature"],"k":[44,47],"o":11},"mouse":{"subcategory":"animal-mammal","a":"Mouse Face","b":"1F42D","d":true,"e":true,"f":true,"h":true,"j":["mouse_face","animal","nature","cheese_wedge","rodent"],"k":[11,33],"o":0},"mouse2":{"subcategory":"animal-mammal","a":"Mouse","b":"1F401","d":true,"e":true,"f":true,"h":true,"j":["mouse","animal","nature","rodent"],"k":[10,47],"o":1},"rat":{"subcategory":"animal-mammal","a":"Rat","b":"1F400","d":true,"e":true,"f":true,"h":true,"j":["rat","animal","mouse","rodent"],"k":[10,46],"o":1},"hamster":{"subcategory":"animal-mammal","a":"Hamster Face","b":"1F439","d":true,"e":true,"f":true,"h":true,"j":["hamster","animal","nature"],"k":[11,45],"o":0},"rabbit":{"subcategory":"animal-mammal","a":"Rabbit Face","b":"1F430","d":true,"e":true,"f":true,"h":true,"j":["rabbit_face","animal","nature","pet","spring","magic","bunny"],"k":[11,36],"o":0},"rabbit2":{"subcategory":"animal-mammal","a":"Rabbit","b":"1F407","d":true,"e":true,"f":true,"h":true,"j":["rabbit","animal","nature","pet","magic","spring"],"k":[10,53],"o":1},"chipmunk":{"subcategory":"animal-mammal","a":"Chipmunk","b":"1F43F-FE0F","c":"1F43F","d":true,"e":true,"f":true,"h":true,"j":["chipmunk","animal","nature","rodent","squirrel"],"k":[11,52],"o":0},"beaver":{"subcategory":"animal-mammal","a":"Beaver","b":"1F9AB","d":true,"e":true,"f":true,"h":true,"j":["beaver","animal","rodent"],"k":[45,2],"o":13},"hedgehog":{"subcategory":"animal-mammal","a":"Hedgehog","b":"1F994","d":true,"e":true,"f":true,"h":true,"j":["hedgehog","animal","nature","spiny"],"k":[44,40],"o":5},"bat":{"subcategory":"animal-mammal","a":"Bat","b":"1F987","d":true,"e":true,"f":true,"h":true,"j":["bat","animal","nature","blind","vampire"],"k":[44,27],"o":3},"bear":{"subcategory":"animal-mammal","a":"Bear Face","b":"1F43B","d":true,"e":true,"f":true,"h":true,"j":["bear","animal","nature","wild"],"k":[11,48],"o":0},"polar_bear":{"subcategory":"animal-mammal","a":"Polar Bear","b":"1F43B-200D-2744-FE0F","c":"1F43B-200D-2744","d":true,"e":true,"f":true,"h":true,"j":["polar bear","animal","arctic"],"k":[11,47],"o":13},"koala":{"subcategory":"animal-mammal","a":"Koala","b":"1F428","d":true,"e":true,"f":true,"h":true,"j":["koala","animal","nature"],"k":[11,28],"o":0},"panda_face":{"subcategory":"animal-mammal","a":"Panda Face","b":"1F43C","d":true,"e":true,"f":true,"h":true,"j":["panda","animal","nature"],"k":[11,49],"o":0},"sloth":{"subcategory":"animal-mammal","a":"Sloth","b":"1F9A5","d":true,"e":true,"f":true,"h":true,"j":["sloth","animal"],"k":[44,57],"o":12},"otter":{"subcategory":"animal-mammal","a":"Otter","b":"1F9A6","d":true,"e":true,"f":true,"h":true,"j":["otter","animal"],"k":[44,58],"o":12},"skunk":{"subcategory":"animal-mammal","a":"Skunk","b":"1F9A8","d":true,"e":true,"f":true,"h":true,"j":["skunk","animal"],"k":[44,60],"o":12},"kangaroo":{"subcategory":"animal-mammal","a":"Kangaroo","b":"1F998","d":true,"e":true,"f":true,"h":true,"j":["kangaroo","animal","nature","australia","joey","hop","marsupial"],"k":[44,44],"o":11},"badger":{"subcategory":"animal-mammal","a":"Badger","b":"1F9A1","d":true,"e":true,"f":true,"h":true,"j":["badger","animal","nature","honey"],"k":[44,53],"o":11},"feet":{"subcategory":"animal-mammal","a":"Paw Prints","b":"1F43E","d":true,"e":true,"f":true,"h":true,"j":["paw_prints","animal","tracking","footprints","dog","cat","pet","feet"],"k":[11,51],"n":["paw_prints"],"o":0},"turkey":{"subcategory":"animal-bird","a":"Turkey","b":"1F983","d":true,"e":true,"f":true,"h":true,"j":["turkey","animal","bird"],"k":[44,23],"o":1},"chicken":{"subcategory":"animal-bird","a":"Chicken","b":"1F414","d":true,"e":true,"f":true,"h":true,"j":["chicken","animal","cluck","nature","bird"],"k":[11,6],"o":0},"rooster":{"subcategory":"animal-bird","a":"Rooster","b":"1F413","d":true,"e":true,"f":true,"h":true,"j":["rooster","animal","nature","chicken"],"k":[11,5],"o":1},"hatching_chick":{"subcategory":"animal-bird","a":"Hatching Chick","b":"1F423","d":true,"e":true,"f":true,"h":true,"j":["hatching_chick","animal","chicken","egg","born","baby","bird"],"k":[11,22],"o":0},"baby_chick":{"subcategory":"animal-bird","a":"Baby Chick","b":"1F424","d":true,"e":true,"f":true,"h":true,"j":["baby_chick","animal","chicken","bird"],"k":[11,23],"o":0},"hatched_chick":{"subcategory":"animal-bird","a":"Front-Facing Baby Chick","b":"1F425","d":true,"e":true,"f":true,"h":true,"j":["front_facing_baby_chick","animal","chicken","baby","bird"],"k":[11,24],"o":0},"bird":{"subcategory":"animal-bird","a":"Bird","b":"1F426","d":true,"e":true,"f":true,"h":true,"j":["bird","animal","nature","fly","tweet","spring"],"k":[11,26],"o":0},"penguin":{"subcategory":"animal-bird","a":"Penguin","b":"1F427","d":true,"e":true,"f":true,"h":true,"j":["penguin","animal","nature"],"k":[11,27],"o":0},"dove_of_peace":{"subcategory":"animal-bird","a":"Dove","b":"1F54A-FE0F","c":"1F54A","d":true,"e":true,"f":true,"h":true,"j":["dove","animal","bird"],"k":[30,28],"o":0},"eagle":{"subcategory":"animal-bird","a":"Eagle","b":"1F985","d":true,"e":true,"f":true,"h":true,"j":["eagle","animal","nature","bird"],"k":[44,25],"o":3},"duck":{"subcategory":"animal-bird","a":"Duck","b":"1F986","d":true,"e":true,"f":true,"h":true,"j":["duck","animal","nature","bird","mallard"],"k":[44,26],"o":3},"swan":{"subcategory":"animal-bird","a":"Swan","b":"1F9A2","d":true,"e":true,"f":true,"h":true,"j":["swan","animal","nature","bird"],"k":[44,54],"o":11},"owl":{"subcategory":"animal-bird","a":"Owl","b":"1F989","d":true,"e":true,"f":true,"h":true,"j":["owl","animal","nature","bird","hoot"],"k":[44,29],"o":3},"dodo":{"subcategory":"animal-bird","a":"Dodo","b":"1F9A4","d":true,"e":true,"f":true,"h":true,"j":["dodo","animal","bird"],"k":[44,56],"o":13},"feather":{"subcategory":"animal-bird","a":"Feather","b":"1FAB6","d":true,"e":true,"f":true,"h":true,"j":["feather","bird","fly"],"k":[54,47],"o":13},"flamingo":{"subcategory":"animal-bird","a":"Flamingo","b":"1F9A9","d":true,"e":true,"f":true,"h":true,"j":["flamingo","animal"],"k":[45,0],"o":12},"peacock":{"subcategory":"animal-bird","a":"Peacock","b":"1F99A","d":true,"e":true,"f":true,"h":true,"j":["peacock","animal","nature","peahen","bird"],"k":[44,46],"o":11},"parrot":{"subcategory":"animal-bird","a":"Parrot","b":"1F99C","d":true,"e":true,"f":true,"h":true,"j":["parrot","animal","nature","bird","pirate","talk"],"k":[44,48],"o":11},"wing":{"subcategory":"animal-bird","a":"Wing","b":"1FABD","d":true,"e":true,"f":false,"h":false,"j":["wing","angel","birds","flying"],"k":[54,54],"o":15},"black_bird":{"subcategory":"animal-bird","a":"Black Bird","b":"1F426-200D-2B1B","d":true,"e":true,"f":false,"h":false,"j":["black bird","crow"],"k":[11,25],"o":15},"goose":{"subcategory":"animal-bird","a":"Goose","b":"1FABF","d":true,"e":true,"f":false,"h":false,"j":["goose","silly","jemima","goosebumps"],"k":[54,55],"o":15},"frog":{"subcategory":"animal-amphibian","a":"Frog Face","b":"1F438","d":true,"e":true,"f":true,"h":true,"j":["frog","animal","nature","croak","toad"],"k":[11,44],"o":0},"crocodile":{"subcategory":"animal-reptile","a":"Crocodile","b":"1F40A","d":true,"e":true,"f":true,"h":true,"j":["crocodile","animal","nature","reptile","lizard","alligator"],"k":[10,57],"o":1},"turtle":{"subcategory":"animal-reptile","a":"Turtle","b":"1F422","d":true,"e":true,"f":true,"h":true,"j":["turtle","animal","slow","nature","tortoise"],"k":[11,21],"o":0},"lizard":{"subcategory":"animal-reptile","a":"Lizard","b":"1F98E","d":true,"e":true,"f":true,"h":true,"j":["lizard","animal","nature","reptile"],"k":[44,34],"o":3},"snake":{"subcategory":"animal-reptile","a":"Snake","b":"1F40D","d":true,"e":true,"f":true,"h":true,"j":["snake","animal","evil","nature","hiss","python"],"k":[10,60],"o":0},"dragon_face":{"subcategory":"animal-reptile","a":"Dragon Face","b":"1F432","d":true,"e":true,"f":true,"h":true,"j":["dragon_face","animal","myth","nature","chinese","green"],"k":[11,38],"o":0},"dragon":{"subcategory":"animal-reptile","a":"Dragon","b":"1F409","d":true,"e":true,"f":true,"h":true,"j":["dragon","animal","myth","nature","chinese","green"],"k":[10,56],"o":1},"sauropod":{"subcategory":"animal-reptile","a":"Sauropod","b":"1F995","d":true,"e":true,"f":true,"h":true,"j":["sauropod","animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"k":[44,41],"o":5},"t-rex":{"subcategory":"animal-reptile","a":"T-Rex","b":"1F996","d":true,"e":true,"f":true,"h":true,"j":["t_rex","animal","nature","dinosaur","tyrannosaurus","extinct"],"k":[44,42],"o":5},"whale":{"subcategory":"animal-marine","a":"Spouting Whale","b":"1F433","d":true,"e":true,"f":true,"h":true,"j":["spouting_whale","animal","nature","sea","ocean"],"k":[11,39],"o":0},"whale2":{"subcategory":"animal-marine","a":"Whale","b":"1F40B","d":true,"e":true,"f":true,"h":true,"j":["whale","animal","nature","sea","ocean"],"k":[10,58],"o":1},"dolphin":{"subcategory":"animal-marine","a":"Dolphin","b":"1F42C","d":true,"e":true,"f":true,"h":true,"j":["dolphin","animal","nature","fish","sea","ocean","flipper","fins","beach"],"k":[11,32],"n":["flipper"],"o":0},"seal":{"subcategory":"animal-marine","a":"Seal","b":"1F9AD","d":true,"e":true,"f":true,"h":true,"j":["seal","animal","creature","sea"],"k":[45,4],"o":13},"fish":{"subcategory":"animal-marine","a":"Fish","b":"1F41F","d":true,"e":true,"f":true,"h":true,"j":["fish","animal","food","nature"],"k":[11,18],"o":0},"tropical_fish":{"subcategory":"animal-marine","a":"Tropical Fish","b":"1F420","d":true,"e":true,"f":true,"h":true,"j":["tropical_fish","animal","swim","ocean","beach","nemo"],"k":[11,19],"o":0},"blowfish":{"subcategory":"animal-marine","a":"Blowfish","b":"1F421","d":true,"e":true,"f":true,"h":true,"j":["blowfish","animal","nature","food","sea","ocean"],"k":[11,20],"o":0},"shark":{"subcategory":"animal-marine","a":"Shark","b":"1F988","d":true,"e":true,"f":true,"h":true,"j":["shark","animal","nature","fish","sea","ocean","jaws","fins","beach"],"k":[44,28],"o":3},"octopus":{"subcategory":"animal-marine","a":"Octopus","b":"1F419","d":true,"e":true,"f":true,"h":true,"j":["octopus","animal","creature","ocean","sea","nature","beach"],"k":[11,12],"o":0},"shell":{"subcategory":"animal-marine","a":"Spiral Shell","b":"1F41A","d":true,"e":true,"f":true,"h":true,"j":["spiral_shell","nature","sea","beach"],"k":[11,13],"o":0},"coral":{"subcategory":"animal-marine","a":"Coral","b":"1FAB8","d":true,"e":true,"f":true,"h":true,"j":["coral","ocean","sea","reef"],"k":[54,49],"o":14},"jellyfish":{"subcategory":"animal-marine","a":"Jellyfish","b":"1FABC","d":true,"e":true,"f":false,"h":false,"j":["jellyfish","sting","tentacles"],"k":[54,53],"o":15},"snail":{"subcategory":"animal-bug","a":"Snail","b":"1F40C","d":true,"e":true,"f":true,"h":true,"j":["snail","slow","animal","shell"],"k":[10,59],"o":0},"butterfly":{"subcategory":"animal-bug","a":"Butterfly","b":"1F98B","d":true,"e":true,"f":true,"h":true,"j":["butterfly","animal","insect","nature","caterpillar"],"k":[44,31],"o":3},"bug":{"subcategory":"animal-bug","a":"Bug","b":"1F41B","d":true,"e":true,"f":true,"h":true,"j":["bug","animal","insect","nature","worm"],"k":[11,14],"o":0},"ant":{"subcategory":"animal-bug","a":"Ant","b":"1F41C","d":true,"e":true,"f":true,"h":true,"j":["ant","animal","insect","nature","bug"],"k":[11,15],"o":0},"bee":{"subcategory":"animal-bug","a":"Honeybee","b":"1F41D","d":true,"e":true,"f":true,"h":true,"j":["honeybee","animal","insect","nature","bug","spring","honey"],"k":[11,16],"n":["honeybee"],"o":0},"beetle":{"subcategory":"animal-bug","a":"Beetle","b":"1FAB2","d":true,"e":true,"f":true,"h":true,"j":["beetle","insect"],"k":[54,43],"o":13},"ladybug":{"subcategory":"animal-bug","a":"Lady Beetle","b":"1F41E","d":true,"e":true,"f":true,"h":true,"j":["lady_beetle","animal","insect","nature","ladybug"],"k":[11,17],"n":["lady_beetle"],"o":0},"cricket":{"subcategory":"animal-bug","a":"Cricket","b":"1F997","d":true,"e":true,"f":true,"h":true,"j":["cricket","animal","chirp"],"k":[44,43],"o":5},"cockroach":{"subcategory":"animal-bug","a":"Cockroach","b":"1FAB3","d":true,"e":true,"f":true,"h":true,"j":["cockroach","insect","pests"],"k":[54,44],"o":13},"spider":{"subcategory":"animal-bug","a":"Spider","b":"1F577-FE0F","c":"1F577","d":true,"e":true,"f":true,"h":true,"j":["spider","animal","arachnid"],"k":[31,24],"o":0},"spider_web":{"subcategory":"animal-bug","a":"Spider Web","b":"1F578-FE0F","c":"1F578","d":true,"e":true,"f":true,"h":true,"j":["spider_web","animal","insect","arachnid","silk"],"k":[31,25],"o":0},"scorpion":{"subcategory":"animal-bug","a":"Scorpion","b":"1F982","d":true,"e":true,"f":true,"h":true,"j":["scorpion","animal","arachnid"],"k":[44,22],"o":1},"mosquito":{"subcategory":"animal-bug","a":"Mosquito","b":"1F99F","d":true,"e":true,"f":true,"h":true,"j":["mosquito","animal","nature","insect","malaria"],"k":[44,51],"o":11},"fly":{"subcategory":"animal-bug","a":"Fly","b":"1FAB0","d":true,"e":true,"f":true,"h":true,"j":["fly","insect"],"k":[54,41],"o":13},"worm":{"subcategory":"animal-bug","a":"Worm","b":"1FAB1","d":true,"e":true,"f":true,"h":true,"j":["worm","animal"],"k":[54,42],"o":13},"microbe":{"subcategory":"animal-bug","a":"Microbe","b":"1F9A0","d":true,"e":true,"f":true,"h":true,"j":["microbe","amoeba","bacteria","germs","virus","covid"],"k":[44,52],"o":11},"bouquet":{"subcategory":"plant-flower","a":"Bouquet","b":"1F490","d":true,"e":true,"f":true,"h":true,"j":["bouquet","flowers","nature","spring"],"k":[27,7],"o":0},"cherry_blossom":{"subcategory":"plant-flower","a":"Cherry Blossom","b":"1F338","d":true,"e":true,"f":true,"h":true,"j":["cherry_blossom","nature","plant","spring","flower"],"k":[5,53],"o":0},"white_flower":{"subcategory":"plant-flower","a":"White Flower","b":"1F4AE","d":true,"e":true,"f":true,"h":true,"j":["white_flower","japanese","spring"],"k":[28,6],"o":0},"lotus":{"subcategory":"plant-flower","a":"Lotus","b":"1FAB7","d":true,"e":true,"f":true,"h":true,"j":["lotus","flower","calm","meditation"],"k":[54,48],"o":14},"rosette":{"subcategory":"plant-flower","a":"Rosette","b":"1F3F5-FE0F","c":"1F3F5","d":true,"e":true,"f":true,"h":true,"j":["rosette","flower","decoration","military"],"k":[10,36],"o":0},"rose":{"subcategory":"plant-flower","a":"Rose","b":"1F339","d":true,"e":true,"f":true,"h":true,"j":["rose","flowers","valentines","love","spring"],"k":[5,54],"o":0},"wilted_flower":{"subcategory":"plant-flower","a":"Wilted Flower","b":"1F940","d":true,"e":true,"f":true,"h":true,"j":["wilted_flower","plant","nature","flower","rose"],"k":[43,13],"o":3},"hibiscus":{"subcategory":"plant-flower","a":"Hibiscus","b":"1F33A","d":true,"e":true,"f":true,"h":true,"j":["hibiscus","plant","vegetable","flowers","beach"],"k":[5,55],"o":0},"sunflower":{"subcategory":"plant-flower","a":"Sunflower","b":"1F33B","d":true,"e":true,"f":true,"h":true,"j":["sunflower","nature","plant","fall"],"k":[5,56],"o":0},"blossom":{"subcategory":"plant-flower","a":"Blossom","b":"1F33C","d":true,"e":true,"f":true,"h":true,"j":["blossom","nature","flowers","yellow"],"k":[5,57],"o":0},"tulip":{"subcategory":"plant-flower","a":"Tulip","b":"1F337","d":true,"e":true,"f":true,"h":true,"j":["tulip","flowers","plant","nature","summer","spring"],"k":[5,52],"o":0},"hyacinth":{"subcategory":"plant-flower","a":"Hyacinth","b":"1FABB","d":true,"e":true,"f":false,"h":false,"j":["hyacinth","flower","lavender"],"k":[54,52],"o":15},"seedling":{"subcategory":"plant-other","a":"Seedling","b":"1F331","d":true,"e":true,"f":true,"h":true,"j":["seedling","plant","nature","grass","lawn","spring"],"k":[5,46],"o":0},"potted_plant":{"subcategory":"plant-other","a":"Potted Plant","b":"1FAB4","d":true,"e":true,"f":true,"h":true,"j":["potted plant","greenery","house"],"k":[54,45],"o":13},"evergreen_tree":{"subcategory":"plant-other","a":"Evergreen Tree","b":"1F332","d":true,"e":true,"f":true,"h":true,"j":["evergreen_tree","plant","nature"],"k":[5,47],"o":1},"deciduous_tree":{"subcategory":"plant-other","a":"Deciduous Tree","b":"1F333","d":true,"e":true,"f":true,"h":true,"j":["deciduous_tree","plant","nature"],"k":[5,48],"o":1},"palm_tree":{"subcategory":"plant-other","a":"Palm Tree","b":"1F334","d":true,"e":true,"f":true,"h":true,"j":["palm_tree","plant","vegetable","nature","summer","beach","mojito","tropical"],"k":[5,49],"o":0},"cactus":{"subcategory":"plant-other","a":"Cactus","b":"1F335","d":true,"e":true,"f":true,"h":true,"j":["cactus","vegetable","plant","nature"],"k":[5,50],"o":0},"ear_of_rice":{"subcategory":"plant-other","a":"Ear of Rice","b":"1F33E","d":true,"e":true,"f":true,"h":true,"j":["sheaf_of_rice","nature","plant"],"k":[5,59],"o":0},"herb":{"subcategory":"plant-other","a":"Herb","b":"1F33F","d":true,"e":true,"f":true,"h":true,"j":["herb","vegetable","plant","medicine","weed","grass","lawn"],"k":[5,60],"o":0},"shamrock":{"subcategory":"plant-other","a":"Shamrock","b":"2618-FE0F","c":"2618","d":true,"e":true,"f":true,"h":true,"j":["shamrock","vegetable","plant","nature","irish","clover"],"k":[57,19],"o":1},"four_leaf_clover":{"subcategory":"plant-other","a":"Four Leaf Clover","b":"1F340","d":true,"e":true,"f":true,"h":true,"j":["four_leaf_clover","vegetable","plant","nature","lucky","irish"],"k":[6,0],"o":0},"maple_leaf":{"subcategory":"plant-other","a":"Maple Leaf","b":"1F341","d":true,"e":true,"f":true,"h":true,"j":["maple_leaf","nature","plant","vegetable","ca","fall"],"k":[6,1],"o":0},"fallen_leaf":{"subcategory":"plant-other","a":"Fallen Leaf","b":"1F342","d":true,"e":true,"f":true,"h":true,"j":["fallen_leaf","nature","plant","vegetable","leaves"],"k":[6,2],"o":0},"leaves":{"subcategory":"plant-other","a":"Leaf Fluttering in Wind","b":"1F343","d":true,"e":true,"f":true,"h":true,"j":["leaf_fluttering_in_wind","nature","plant","tree","vegetable","grass","lawn","spring"],"k":[6,3],"o":0},"empty_nest":{"subcategory":"plant-other","a":"Empty Nest","b":"1FAB9","d":true,"e":true,"f":true,"h":true,"j":["empty nest","bird"],"k":[54,50],"o":14},"nest_with_eggs":{"subcategory":"plant-other","a":"Nest with Eggs","b":"1FABA","d":true,"e":true,"f":true,"h":true,"j":["nest with eggs","bird"],"k":[54,51],"o":14},"mushroom":{"subcategory":"plant-other","a":"Mushroom","b":"1F344","d":true,"e":true,"f":true,"h":true,"j":["mushroom","plant","vegetable"],"k":[6,4],"o":0},"grapes":{"subcategory":"food-fruit","a":"Grapes","b":"1F347","d":true,"e":true,"f":true,"h":true,"j":["grapes","fruit","food","wine"],"k":[6,7],"o":0},"melon":{"subcategory":"food-fruit","a":"Melon","b":"1F348","d":true,"e":true,"f":true,"h":true,"j":["melon","fruit","nature","food"],"k":[6,8],"o":0},"watermelon":{"subcategory":"food-fruit","a":"Watermelon","b":"1F349","d":true,"e":true,"f":true,"h":true,"j":["watermelon","fruit","food","picnic","summer"],"k":[6,9],"o":0},"tangerine":{"subcategory":"food-fruit","a":"Tangerine","b":"1F34A","d":true,"e":true,"f":true,"h":true,"j":["tangerine","food","fruit","nature","orange"],"k":[6,10],"o":0},"lemon":{"subcategory":"food-fruit","a":"Lemon","b":"1F34B","d":true,"e":true,"f":true,"h":true,"j":["lemon","fruit","nature"],"k":[6,11],"o":1},"banana":{"subcategory":"food-fruit","a":"Banana","b":"1F34C","d":true,"e":true,"f":true,"h":true,"j":["banana","fruit","food","monkey"],"k":[6,12],"o":0},"pineapple":{"subcategory":"food-fruit","a":"Pineapple","b":"1F34D","d":true,"e":true,"f":true,"h":true,"j":["pineapple","fruit","nature","food"],"k":[6,13],"o":0},"mango":{"subcategory":"food-fruit","a":"Mango","b":"1F96D","d":true,"e":true,"f":true,"h":true,"j":["mango","fruit","food","tropical"],"k":[43,57],"o":11},"apple":{"subcategory":"food-fruit","a":"Red Apple","b":"1F34E","d":true,"e":true,"f":true,"h":true,"j":["red_apple","fruit","mac","school"],"k":[6,14],"o":0},"green_apple":{"subcategory":"food-fruit","a":"Green Apple","b":"1F34F","d":true,"e":true,"f":true,"h":true,"j":["green_apple","fruit","nature"],"k":[6,15],"o":0},"pear":{"subcategory":"food-fruit","a":"Pear","b":"1F350","d":true,"e":true,"f":true,"h":true,"j":["pear","fruit","nature","food"],"k":[6,16],"o":1},"peach":{"subcategory":"food-fruit","a":"Peach","b":"1F351","d":true,"e":true,"f":true,"h":true,"j":["peach","fruit","nature","food"],"k":[6,17],"o":0},"cherries":{"subcategory":"food-fruit","a":"Cherries","b":"1F352","d":true,"e":true,"f":true,"h":true,"j":["cherries","food","fruit"],"k":[6,18],"o":0},"strawberry":{"subcategory":"food-fruit","a":"Strawberry","b":"1F353","d":true,"e":true,"f":true,"h":true,"j":["strawberry","fruit","food","nature"],"k":[6,19],"o":0},"blueberries":{"subcategory":"food-fruit","a":"Blueberries","b":"1FAD0","d":true,"e":true,"f":true,"h":true,"j":["blueberries","fruit"],"k":[55,18],"o":13},"kiwifruit":{"subcategory":"food-fruit","a":"Kiwifruit","b":"1F95D","d":true,"e":true,"f":true,"h":true,"j":["kiwi_fruit","fruit","food"],"k":[43,41],"o":3},"tomato":{"subcategory":"food-fruit","a":"Tomato","b":"1F345","d":true,"e":true,"f":true,"h":true,"j":["tomato","fruit","vegetable","nature","food"],"k":[6,5],"o":0},"olive":{"subcategory":"food-fruit","a":"Olive","b":"1FAD2","d":true,"e":true,"f":true,"h":true,"j":["olive","fruit"],"k":[55,20],"o":13},"coconut":{"subcategory":"food-fruit","a":"Coconut","b":"1F965","d":true,"e":true,"f":true,"h":true,"j":["coconut","fruit","nature","food","palm"],"k":[43,49],"o":5},"avocado":{"subcategory":"food-vegetable","a":"Avocado","b":"1F951","d":true,"e":true,"f":true,"h":true,"j":["avocado","fruit","food"],"k":[43,29],"o":3},"eggplant":{"subcategory":"food-vegetable","a":"Aubergine","b":"1F346","d":true,"e":true,"f":true,"h":true,"j":["eggplant","vegetable","nature","food","aubergine"],"k":[6,6],"o":0},"potato":{"subcategory":"food-vegetable","a":"Potato","b":"1F954","d":true,"e":true,"f":true,"h":true,"j":["potato","food","tuber","vegatable","starch"],"k":[43,32],"o":3},"carrot":{"subcategory":"food-vegetable","a":"Carrot","b":"1F955","d":true,"e":true,"f":true,"h":true,"j":["carrot","vegetable","food","orange"],"k":[43,33],"o":3},"corn":{"subcategory":"food-vegetable","a":"Ear of Maize","b":"1F33D","d":true,"e":true,"f":true,"h":true,"j":["ear_of_corn","food","vegetable","plant"],"k":[5,58],"o":0},"hot_pepper":{"subcategory":"food-vegetable","a":"Hot Pepper","b":"1F336-FE0F","c":"1F336","d":true,"e":true,"f":true,"h":true,"j":["hot_pepper","food","spicy","chilli","chili"],"k":[5,51],"o":0},"bell_pepper":{"subcategory":"food-vegetable","a":"Bell Pepper","b":"1FAD1","d":true,"e":true,"f":true,"h":true,"j":["bell pepper","fruit","plant"],"k":[55,19],"o":13},"cucumber":{"subcategory":"food-vegetable","a":"Cucumber","b":"1F952","d":true,"e":true,"f":true,"h":true,"j":["cucumber","fruit","food","pickle"],"k":[43,30],"o":3},"leafy_green":{"subcategory":"food-vegetable","a":"Leafy Green","b":"1F96C","d":true,"e":true,"f":true,"h":true,"j":["leafy_green","food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"k":[43,56],"o":11},"broccoli":{"subcategory":"food-vegetable","a":"Broccoli","b":"1F966","d":true,"e":true,"f":true,"h":true,"j":["broccoli","fruit","food","vegetable"],"k":[43,50],"o":5},"garlic":{"subcategory":"food-vegetable","a":"Garlic","b":"1F9C4","d":true,"e":true,"f":true,"h":true,"j":["garlic","food","spice","cook"],"k":[46,11],"o":12},"onion":{"subcategory":"food-vegetable","a":"Onion","b":"1F9C5","d":true,"e":true,"f":true,"h":true,"j":["onion","cook","food","spice"],"k":[46,12],"o":12},"peanuts":{"subcategory":"food-vegetable","a":"Peanuts","b":"1F95C","d":true,"e":true,"f":true,"h":true,"j":["peanuts","food","nut"],"k":[43,40],"o":3},"beans":{"subcategory":"food-vegetable","a":"Beans","b":"1FAD8","d":true,"e":true,"f":true,"h":true,"j":["beans","food"],"k":[55,26],"o":14},"chestnut":{"subcategory":"food-vegetable","a":"Chestnut","b":"1F330","d":true,"e":true,"f":true,"h":true,"j":["chestnut","food","squirrel"],"k":[5,45],"o":0},"ginger_root":{"subcategory":"food-vegetable","a":"Ginger Root","b":"1FADA","d":true,"e":true,"f":false,"h":false,"j":["ginger root","spice","yellow","cooking","gingerbread"],"k":[55,28],"o":15},"pea_pod":{"subcategory":"food-vegetable","a":"Pea Pod","b":"1FADB","d":true,"e":true,"f":false,"h":false,"j":["pea pod","cozy","green"],"k":[55,29],"o":15},"bread":{"subcategory":"food-prepared","a":"Bread","b":"1F35E","d":true,"e":true,"f":true,"h":true,"j":["bread","food","wheat","breakfast","toast"],"k":[6,30],"o":0},"croissant":{"subcategory":"food-prepared","a":"Croissant","b":"1F950","d":true,"e":true,"f":true,"h":true,"j":["croissant","food","bread","french"],"k":[43,28],"o":3},"baguette_bread":{"subcategory":"food-prepared","a":"Baguette Bread","b":"1F956","d":true,"e":true,"f":true,"h":true,"j":["baguette_bread","food","bread","french","france","bakery"],"k":[43,34],"o":3},"flatbread":{"subcategory":"food-prepared","a":"Flatbread","b":"1FAD3","d":true,"e":true,"f":true,"h":true,"j":["flatbread","flour","food","bakery"],"k":[55,21],"o":13},"pretzel":{"subcategory":"food-prepared","a":"Pretzel","b":"1F968","d":true,"e":true,"f":true,"h":true,"j":["pretzel","food","bread","twisted","germany","bakery"],"k":[43,52],"o":5},"bagel":{"subcategory":"food-prepared","a":"Bagel","b":"1F96F","d":true,"e":true,"f":true,"h":true,"j":["bagel","food","bread","bakery","schmear","jewish_bakery"],"k":[43,59],"o":11},"pancakes":{"subcategory":"food-prepared","a":"Pancakes","b":"1F95E","d":true,"e":true,"f":true,"h":true,"j":["pancakes","food","breakfast","flapjacks","hotcakes","brunch"],"k":[43,42],"o":3},"waffle":{"subcategory":"food-prepared","a":"Waffle","b":"1F9C7","d":true,"e":true,"f":true,"h":true,"j":["waffle","food","breakfast","brunch"],"k":[46,14],"o":12},"cheese_wedge":{"subcategory":"food-prepared","a":"Cheese Wedge","b":"1F9C0","d":true,"e":true,"f":true,"h":true,"j":["cheese_wedge","food","chadder","swiss"],"k":[46,7],"o":1},"meat_on_bone":{"subcategory":"food-prepared","a":"Meat on Bone","b":"1F356","d":true,"e":true,"f":true,"h":true,"j":["meat_on_bone","good","food","drumstick"],"k":[6,22],"o":0},"poultry_leg":{"subcategory":"food-prepared","a":"Poultry Leg","b":"1F357","d":true,"e":true,"f":true,"h":true,"j":["poultry_leg","food","meat","drumstick","bird","chicken","turkey"],"k":[6,23],"o":0},"cut_of_meat":{"subcategory":"food-prepared","a":"Cut of Meat","b":"1F969","d":true,"e":true,"f":true,"h":true,"j":["cut_of_meat","food","cow","meat","cut","chop","lambchop","porkchop"],"k":[43,53],"o":5},"bacon":{"subcategory":"food-prepared","a":"Bacon","b":"1F953","d":true,"e":true,"f":true,"h":true,"j":["bacon","food","breakfast","pork","pig","meat","brunch"],"k":[43,31],"o":3},"hamburger":{"subcategory":"food-prepared","a":"Hamburger","b":"1F354","d":true,"e":true,"f":true,"h":true,"j":["hamburger","meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"k":[6,20],"o":0},"fries":{"subcategory":"food-prepared","a":"French Fries","b":"1F35F","d":true,"e":true,"f":true,"h":true,"j":["french_fries","chips","snack","fast food","potato"],"k":[6,31],"o":0},"pizza":{"subcategory":"food-prepared","a":"Slice of Pizza","b":"1F355","d":true,"e":true,"f":true,"h":true,"j":["pizza","food","party","italy"],"k":[6,21],"o":0},"hotdog":{"subcategory":"food-prepared","a":"Hot Dog","b":"1F32D","d":true,"e":true,"f":true,"h":true,"j":["hot_dog","food","frankfurter","america"],"k":[5,42],"o":1},"sandwich":{"subcategory":"food-prepared","a":"Sandwich","b":"1F96A","d":true,"e":true,"f":true,"h":true,"j":["sandwich","food","lunch","bread","toast","bakery"],"k":[43,54],"o":5},"taco":{"subcategory":"food-prepared","a":"Taco","b":"1F32E","d":true,"e":true,"f":true,"h":true,"j":["taco","food","mexican"],"k":[5,43],"o":1},"burrito":{"subcategory":"food-prepared","a":"Burrito","b":"1F32F","d":true,"e":true,"f":true,"h":true,"j":["burrito","food","mexican"],"k":[5,44],"o":1},"tamale":{"subcategory":"food-prepared","a":"Tamale","b":"1FAD4","d":true,"e":true,"f":true,"h":true,"j":["tamale","food","masa"],"k":[55,22],"o":13},"stuffed_flatbread":{"subcategory":"food-prepared","a":"Stuffed Flatbread","b":"1F959","d":true,"e":true,"f":true,"h":true,"j":["stuffed_flatbread","food","flatbread","stuffed","gyro","mediterranean"],"k":[43,37],"o":3},"falafel":{"subcategory":"food-prepared","a":"Falafel","b":"1F9C6","d":true,"e":true,"f":true,"h":true,"j":["falafel","food","mediterranean"],"k":[46,13],"o":12},"egg":{"subcategory":"food-prepared","a":"Egg","b":"1F95A","d":true,"e":true,"f":true,"h":true,"j":["egg","food","chicken","breakfast"],"k":[43,38],"o":3},"fried_egg":{"subcategory":"food-prepared","a":"Cooking","b":"1F373","d":true,"e":true,"f":true,"h":true,"j":["cooking","food","breakfast","kitchen","egg","skillet"],"k":[6,51],"n":["cooking"],"o":0},"shallow_pan_of_food":{"subcategory":"food-prepared","a":"Shallow Pan of Food","b":"1F958","d":true,"e":true,"f":true,"h":true,"j":["shallow_pan_of_food","food","cooking","casserole","paella","skillet"],"k":[43,36],"o":3},"stew":{"subcategory":"food-prepared","a":"Pot of Food","b":"1F372","d":true,"e":true,"f":true,"h":true,"j":["pot_of_food","food","meat","soup","hot pot"],"k":[6,50],"o":0},"fondue":{"subcategory":"food-prepared","a":"Fondue","b":"1FAD5","d":true,"e":true,"f":true,"h":true,"j":["fondue","cheese","pot","food"],"k":[55,23],"o":13},"bowl_with_spoon":{"subcategory":"food-prepared","a":"Bowl with Spoon","b":"1F963","d":true,"e":true,"f":true,"h":true,"j":["bowl_with_spoon","food","breakfast","cereal","oatmeal","porridge"],"k":[43,47],"o":5},"green_salad":{"subcategory":"food-prepared","a":"Green Salad","b":"1F957","d":true,"e":true,"f":true,"h":true,"j":["green_salad","food","healthy","lettuce","vegetable"],"k":[43,35],"o":3},"popcorn":{"subcategory":"food-prepared","a":"Popcorn","b":"1F37F","d":true,"e":true,"f":true,"h":true,"j":["popcorn","food","movie theater","films","snack","drama"],"k":[7,2],"o":1},"butter":{"subcategory":"food-prepared","a":"Butter","b":"1F9C8","d":true,"e":true,"f":true,"h":true,"j":["butter","food","cook"],"k":[46,15],"o":12},"salt":{"subcategory":"food-prepared","a":"Salt Shaker","b":"1F9C2","d":true,"e":true,"f":true,"h":true,"j":["salt","condiment","shaker"],"k":[46,9],"o":11},"canned_food":{"subcategory":"food-prepared","a":"Canned Food","b":"1F96B","d":true,"e":true,"f":true,"h":true,"j":["canned_food","food","soup","tomatoes"],"k":[43,55],"o":5},"bento":{"subcategory":"food-asian","a":"Bento Box","b":"1F371","d":true,"e":true,"f":true,"h":true,"j":["bento_box","food","japanese","box","lunch"],"k":[6,49],"o":0},"rice_cracker":{"subcategory":"food-asian","a":"Rice Cracker","b":"1F358","d":true,"e":true,"f":true,"h":true,"j":["rice_cracker","food","japanese","snack","senbei"],"k":[6,24],"o":0},"rice_ball":{"subcategory":"food-asian","a":"Rice Ball","b":"1F359","d":true,"e":true,"f":true,"h":true,"j":["rice_ball","food","japanese","onigiri","omusubi"],"k":[6,25],"o":0},"rice":{"subcategory":"food-asian","a":"Cooked Rice","b":"1F35A","d":true,"e":true,"f":true,"h":true,"j":["cooked_rice","food","asian"],"k":[6,26],"o":0},"curry":{"subcategory":"food-asian","a":"Curry and Rice","b":"1F35B","d":true,"e":true,"f":true,"h":true,"j":["curry_rice","food","spicy","hot","indian"],"k":[6,27],"o":0},"ramen":{"subcategory":"food-asian","a":"Steaming Bowl","b":"1F35C","d":true,"e":true,"f":true,"h":true,"j":["steaming_bowl","food","japanese","noodle","chopsticks","ramen"],"k":[6,28],"o":0},"spaghetti":{"subcategory":"food-asian","a":"Spaghetti","b":"1F35D","d":true,"e":true,"f":true,"h":true,"j":["spaghetti","food","italian","pasta","noodle"],"k":[6,29],"o":0},"sweet_potato":{"subcategory":"food-asian","a":"Roasted Sweet Potato","b":"1F360","d":true,"e":true,"f":true,"h":true,"j":["roasted_sweet_potato","food","nature","plant"],"k":[6,32],"o":0},"oden":{"subcategory":"food-asian","a":"Oden","b":"1F362","d":true,"e":true,"f":true,"h":true,"j":["oden","skewer","food","japanese"],"k":[6,34],"o":0},"sushi":{"subcategory":"food-asian","a":"Sushi","b":"1F363","d":true,"e":true,"f":true,"h":true,"j":["sushi","food","fish","japanese","rice"],"k":[6,35],"o":0},"fried_shrimp":{"subcategory":"food-asian","a":"Fried Shrimp","b":"1F364","d":true,"e":true,"f":true,"h":true,"j":["fried_shrimp","food","animal","appetizer","summer"],"k":[6,36],"o":0},"fish_cake":{"subcategory":"food-asian","a":"Fish Cake with Swirl Design","b":"1F365","d":true,"e":true,"f":true,"h":true,"j":["fish_cake_with_swirl","food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"k":[6,37],"o":0},"moon_cake":{"subcategory":"food-asian","a":"Moon Cake","b":"1F96E","d":true,"e":true,"f":true,"h":true,"j":["moon_cake","food","autumn","dessert"],"k":[43,58],"o":11},"dango":{"subcategory":"food-asian","a":"Dango","b":"1F361","d":true,"e":true,"f":true,"h":true,"j":["dango","food","dessert","sweet","japanese","barbecue","meat"],"k":[6,33],"o":0},"dumpling":{"subcategory":"food-asian","a":"Dumpling","b":"1F95F","d":true,"e":true,"f":true,"h":true,"j":["dumpling","food","empanada","pierogi","potsticker","gyoza"],"k":[43,43],"o":5},"fortune_cookie":{"subcategory":"food-asian","a":"Fortune Cookie","b":"1F960","d":true,"e":true,"f":true,"h":true,"j":["fortune_cookie","food","prophecy","dessert"],"k":[43,44],"o":5},"takeout_box":{"subcategory":"food-asian","a":"Takeout Box","b":"1F961","d":true,"e":true,"f":true,"h":true,"j":["takeout_box","food","leftovers"],"k":[43,45],"o":5},"crab":{"subcategory":"food-marine","a":"Crab","b":"1F980","d":true,"e":true,"f":true,"h":true,"j":["crab","animal","crustacean"],"k":[44,20],"o":1},"lobster":{"subcategory":"food-marine","a":"Lobster","b":"1F99E","d":true,"e":true,"f":true,"h":true,"j":["lobster","animal","nature","bisque","claws","seafood"],"k":[44,50],"o":11},"shrimp":{"subcategory":"food-marine","a":"Shrimp","b":"1F990","d":true,"e":true,"f":true,"h":true,"j":["shrimp","animal","ocean","nature","seafood"],"k":[44,36],"o":3},"squid":{"subcategory":"food-marine","a":"Squid","b":"1F991","d":true,"e":true,"f":true,"h":true,"j":["squid","animal","nature","ocean","sea"],"k":[44,37],"o":3},"oyster":{"subcategory":"food-marine","a":"Oyster","b":"1F9AA","d":true,"e":true,"f":true,"h":true,"j":["oyster","food"],"k":[45,1],"o":12},"icecream":{"subcategory":"food-sweet","a":"Soft Ice Cream","b":"1F366","d":true,"e":true,"f":true,"h":true,"j":["soft_ice_cream","food","hot","dessert","summer"],"k":[6,38],"o":0},"shaved_ice":{"subcategory":"food-sweet","a":"Shaved Ice","b":"1F367","d":true,"e":true,"f":true,"h":true,"j":["shaved_ice","hot","dessert","summer"],"k":[6,39],"o":0},"ice_cream":{"subcategory":"food-sweet","a":"Ice Cream","b":"1F368","d":true,"e":true,"f":true,"h":true,"j":["ice_cream","food","hot","dessert"],"k":[6,40],"o":0},"doughnut":{"subcategory":"food-sweet","a":"Doughnut","b":"1F369","d":true,"e":true,"f":true,"h":true,"j":["doughnut","food","dessert","snack","sweet","donut"],"k":[6,41],"o":0},"cookie":{"subcategory":"food-sweet","a":"Cookie","b":"1F36A","d":true,"e":true,"f":true,"h":true,"j":["cookie","food","snack","oreo","chocolate","sweet","dessert"],"k":[6,42],"o":0},"birthday":{"subcategory":"food-sweet","a":"Birthday Cake","b":"1F382","d":true,"e":true,"f":true,"h":true,"j":["birthday_cake","food","dessert","cake"],"k":[7,5],"o":0},"cake":{"subcategory":"food-sweet","a":"Shortcake","b":"1F370","d":true,"e":true,"f":true,"h":true,"j":["shortcake","food","dessert"],"k":[6,48],"o":0},"cupcake":{"subcategory":"food-sweet","a":"Cupcake","b":"1F9C1","d":true,"e":true,"f":true,"h":true,"j":["cupcake","food","dessert","bakery","sweet"],"k":[46,8],"o":11},"pie":{"subcategory":"food-sweet","a":"Pie","b":"1F967","d":true,"e":true,"f":true,"h":true,"j":["pie","food","dessert","pastry"],"k":[43,51],"o":5},"chocolate_bar":{"subcategory":"food-sweet","a":"Chocolate Bar","b":"1F36B","d":true,"e":true,"f":true,"h":true,"j":["chocolate_bar","food","snack","dessert","sweet"],"k":[6,43],"o":0},"candy":{"subcategory":"food-sweet","a":"Candy","b":"1F36C","d":true,"e":true,"f":true,"h":true,"j":["candy","snack","dessert","sweet","lolly"],"k":[6,44],"o":0},"lollipop":{"subcategory":"food-sweet","a":"Lollipop","b":"1F36D","d":true,"e":true,"f":true,"h":true,"j":["lollipop","food","snack","candy","sweet"],"k":[6,45],"o":0},"custard":{"subcategory":"food-sweet","a":"Custard","b":"1F36E","d":true,"e":true,"f":true,"h":true,"j":["custard","dessert","food","pudding","flan"],"k":[6,46],"o":0},"honey_pot":{"subcategory":"food-sweet","a":"Honey Pot","b":"1F36F","d":true,"e":true,"f":true,"h":true,"j":["honey_pot","bees","sweet","kitchen"],"k":[6,47],"o":0},"baby_bottle":{"subcategory":"drink","a":"Baby Bottle","b":"1F37C","d":true,"e":true,"f":true,"h":true,"j":["baby_bottle","food","container","milk"],"k":[6,60],"o":1},"glass_of_milk":{"subcategory":"drink","a":"Glass of Milk","b":"1F95B","d":true,"e":true,"f":true,"h":true,"j":["glass_of_milk","beverage","drink","cow"],"k":[43,39],"o":3},"coffee":{"subcategory":"drink","a":"Hot Beverage","b":"2615","d":true,"e":true,"f":true,"h":true,"j":["hot_beverage","beverage","caffeine","latte","espresso","coffee","mug"],"k":[57,18],"o":0},"teapot":{"subcategory":"drink","a":"Teapot","b":"1FAD6","d":true,"e":true,"f":true,"h":true,"j":["teapot","drink","hot"],"k":[55,24],"o":13},"tea":{"subcategory":"drink","a":"Teacup Without Handle","b":"1F375","d":true,"e":true,"f":true,"h":true,"j":["teacup_without_handle","drink","bowl","breakfast","green","british"],"k":[6,53],"o":0},"sake":{"subcategory":"drink","a":"Sake Bottle and Cup","b":"1F376","d":true,"e":true,"f":true,"h":true,"j":["sake","wine","drink","drunk","beverage","japanese","alcohol","booze"],"k":[6,54],"o":0},"champagne":{"subcategory":"drink","a":"Bottle with Popping Cork","b":"1F37E","d":true,"e":true,"f":true,"h":true,"j":["bottle_with_popping_cork","drink","wine","bottle","celebration"],"k":[7,1],"o":1},"wine_glass":{"subcategory":"drink","a":"Wine Glass","b":"1F377","d":true,"e":true,"f":true,"h":true,"j":["wine_glass","drink","beverage","drunk","alcohol","booze"],"k":[6,55],"o":0},"cocktail":{"subcategory":"drink","a":"Cocktail Glass","b":"1F378","d":true,"e":true,"f":true,"h":true,"j":["cocktail_glass","drink","drunk","alcohol","beverage","booze","mojito"],"k":[6,56],"o":0},"tropical_drink":{"subcategory":"drink","a":"Tropical Drink","b":"1F379","d":true,"e":true,"f":true,"h":true,"j":["tropical_drink","beverage","cocktail","summer","beach","alcohol","booze","mojito"],"k":[6,57],"o":0},"beer":{"subcategory":"drink","a":"Beer Mug","b":"1F37A","d":true,"e":true,"f":true,"h":true,"j":["beer_mug","relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"k":[6,58],"o":0},"beers":{"subcategory":"drink","a":"Clinking Beer Mugs","b":"1F37B","d":true,"e":true,"f":true,"h":true,"j":["clinking_beer_mugs","relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"k":[6,59],"o":0},"clinking_glasses":{"subcategory":"drink","a":"Clinking Glasses","b":"1F942","d":true,"e":true,"f":true,"h":true,"j":["clinking_glasses","beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"k":[43,15],"o":3},"tumbler_glass":{"subcategory":"drink","a":"Tumbler Glass","b":"1F943","d":true,"e":true,"f":true,"h":true,"j":["tumbler_glass","drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"k":[43,16],"o":3},"pouring_liquid":{"subcategory":"drink","a":"Pouring Liquid","b":"1FAD7","d":true,"e":true,"f":true,"h":true,"j":["pouring liquid","cup","water"],"k":[55,25],"o":14},"cup_with_straw":{"subcategory":"drink","a":"Cup with Straw","b":"1F964","d":true,"e":true,"f":true,"h":true,"j":["cup_with_straw","drink","soda"],"k":[43,48],"o":5},"bubble_tea":{"subcategory":"drink","a":"Bubble Tea","b":"1F9CB","d":true,"e":true,"f":true,"h":true,"j":["bubble tea","taiwan","boba","milk tea","straw"],"k":[46,18],"o":13},"beverage_box":{"subcategory":"drink","a":"Beverage Box","b":"1F9C3","d":true,"e":true,"f":true,"h":true,"j":["beverage_box","drink"],"k":[46,10],"o":12},"mate_drink":{"subcategory":"drink","a":"Mate Drink","b":"1F9C9","d":true,"e":true,"f":true,"h":true,"j":["mate","drink","tea","beverage"],"k":[46,16],"o":12},"ice_cube":{"subcategory":"drink","a":"Ice Cube","b":"1F9CA","d":true,"e":true,"f":true,"h":true,"j":["ice","water","cold"],"k":[46,17],"o":12},"chopsticks":{"subcategory":"dishware","a":"Chopsticks","b":"1F962","d":true,"e":true,"f":true,"h":true,"j":["chopsticks","food"],"k":[43,46],"o":5},"knife_fork_plate":{"subcategory":"dishware","a":"Fork and Knife with Plate","b":"1F37D-FE0F","c":"1F37D","d":true,"e":true,"f":true,"h":true,"j":["fork_and_knife_with_plate","food","eat","meal","lunch","dinner","restaurant"],"k":[7,0],"o":0},"fork_and_knife":{"subcategory":"dishware","a":"Fork and Knife","b":"1F374","d":true,"e":true,"f":true,"h":true,"j":["fork_and_knife","cutlery","kitchen"],"k":[6,52],"o":0},"spoon":{"subcategory":"dishware","a":"Spoon","b":"1F944","d":true,"e":true,"f":true,"h":true,"j":["spoon","cutlery","kitchen","tableware"],"k":[43,17],"o":3},"hocho":{"subcategory":"dishware","a":"Hocho","b":"1F52A","d":true,"e":true,"f":true,"h":true,"j":["kitchen_knife","knife","blade","cutlery","kitchen","weapon"],"k":[30,7],"n":["knife"],"o":0},"jar":{"subcategory":"dishware","a":"Jar","b":"1FAD9","d":true,"e":true,"f":true,"h":true,"j":["jar","container","sauce"],"k":[55,27],"o":14},"amphora":{"subcategory":"dishware","a":"Amphora","b":"1F3FA","d":true,"e":true,"f":true,"h":true,"j":["amphora","vase","jar"],"k":[10,40],"o":1},"earth_africa":{"subcategory":"place-map","a":"Earth Globe Europe-Africa","b":"1F30D","d":true,"e":true,"f":true,"h":true,"j":["globe_showing_europe_africa","globe","world","earth","international"],"k":[5,12],"o":0},"earth_americas":{"subcategory":"place-map","a":"Earth Globe Americas","b":"1F30E","d":true,"e":true,"f":true,"h":true,"j":["globe_showing_americas","globe","world","USA","earth","international"],"k":[5,13],"o":0},"earth_asia":{"subcategory":"place-map","a":"Earth Globe Asia-Australia","b":"1F30F","d":true,"e":true,"f":true,"h":true,"j":["globe_showing_asia_australia","globe","world","east","earth","international"],"k":[5,14],"o":0},"globe_with_meridians":{"subcategory":"place-map","a":"Globe with Meridians","b":"1F310","d":true,"e":true,"f":true,"h":true,"j":["globe_with_meridians","earth","international","world","internet","interweb","i18n"],"k":[5,15],"o":1},"world_map":{"subcategory":"place-map","a":"World Map","b":"1F5FA-FE0F","c":"1F5FA","d":true,"e":true,"f":true,"h":true,"j":["world_map","location","direction"],"k":[32,15],"o":0},"japan":{"subcategory":"place-map","a":"Silhouette of Japan","b":"1F5FE","d":true,"e":true,"f":true,"h":true,"j":["map_of_japan","nation","country","japanese","asia"],"k":[32,19],"o":0},"compass":{"subcategory":"place-map","a":"Compass","b":"1F9ED","d":true,"e":true,"f":true,"h":true,"j":["compass","magnetic","navigation","orienteering"],"k":[53,29],"o":11},"snow_capped_mountain":{"subcategory":"place-geographic","a":"Snow-Capped Mountain","b":"1F3D4-FE0F","c":"1F3D4","d":true,"e":true,"f":true,"h":true,"j":["snow_capped_mountain","photo","nature","environment","winter","cold"],"k":[9,60],"o":0},"mountain":{"subcategory":"place-geographic","a":"Mountain","b":"26F0-FE0F","c":"26F0","d":true,"e":true,"f":true,"h":true,"j":["mountain","photo","nature","environment"],"k":[58,26],"o":0},"volcano":{"subcategory":"place-geographic","a":"Volcano","b":"1F30B","d":true,"e":true,"f":true,"h":true,"j":["volcano","photo","nature","disaster"],"k":[5,10],"o":0},"mount_fuji":{"subcategory":"place-geographic","a":"Mount Fuji","b":"1F5FB","d":true,"e":true,"f":true,"h":true,"j":["mount_fuji","photo","mountain","nature","japanese"],"k":[32,16],"o":0},"camping":{"subcategory":"place-geographic","a":"Camping","b":"1F3D5-FE0F","c":"1F3D5","d":true,"e":true,"f":true,"h":true,"j":["camping","photo","outdoors","tent"],"k":[10,0],"o":0},"beach_with_umbrella":{"subcategory":"place-geographic","a":"Beach with Umbrella","b":"1F3D6-FE0F","c":"1F3D6","d":true,"e":true,"f":true,"h":true,"j":["beach_with_umbrella","weather","summer","sunny","sand","mojito"],"k":[10,1],"o":0},"desert":{"subcategory":"place-geographic","a":"Desert","b":"1F3DC-FE0F","c":"1F3DC","d":true,"e":true,"f":true,"h":true,"j":["desert","photo","warm","saharah"],"k":[10,7],"o":0},"desert_island":{"subcategory":"place-geographic","a":"Desert Island","b":"1F3DD-FE0F","c":"1F3DD","d":true,"e":true,"f":true,"h":true,"j":["desert_island","photo","tropical","mojito"],"k":[10,8],"o":0},"national_park":{"subcategory":"place-geographic","a":"National Park","b":"1F3DE-FE0F","c":"1F3DE","d":true,"e":true,"f":true,"h":true,"j":["national_park","photo","environment","nature"],"k":[10,9],"o":0},"stadium":{"subcategory":"place-building","a":"Stadium","b":"1F3DF-FE0F","c":"1F3DF","d":true,"e":true,"f":true,"h":true,"j":["stadium","photo","place","sports","concert","venue"],"k":[10,10],"o":0},"classical_building":{"subcategory":"place-building","a":"Classical Building","b":"1F3DB-FE0F","c":"1F3DB","d":true,"e":true,"f":true,"h":true,"j":["classical_building","art","culture","history"],"k":[10,6],"o":0},"building_construction":{"subcategory":"place-building","a":"Building Construction","b":"1F3D7-FE0F","c":"1F3D7","d":true,"e":true,"f":true,"h":true,"j":["building_construction","wip","working","progress"],"k":[10,2],"o":0},"bricks":{"subcategory":"place-building","a":"Brick","b":"1F9F1","d":true,"e":true,"f":true,"h":true,"j":["brick","bricks"],"k":[53,33],"o":11},"rock":{"subcategory":"place-building","a":"Rock","b":"1FAA8","d":true,"e":true,"f":true,"h":true,"j":["rock","stone"],"k":[54,33],"o":13},"wood":{"subcategory":"place-building","a":"Wood","b":"1FAB5","d":true,"e":true,"f":true,"h":true,"j":["wood","nature","timber","trunk"],"k":[54,46],"o":13},"hut":{"subcategory":"place-building","a":"Hut","b":"1F6D6","d":true,"e":true,"f":true,"h":true,"j":["hut","house","structure"],"k":[38,7],"o":13},"house_buildings":{"subcategory":"place-building","a":"Houses","b":"1F3D8-FE0F","c":"1F3D8","d":true,"e":true,"f":true,"h":true,"j":["houses","buildings","photo"],"k":[10,3],"o":0},"derelict_house_building":{"subcategory":"place-building","a":"Derelict House","b":"1F3DA-FE0F","c":"1F3DA","d":true,"e":true,"f":true,"h":true,"j":["derelict_house","abandon","evict","broken","building"],"k":[10,5],"o":0},"house":{"subcategory":"place-building","a":"House Building","b":"1F3E0","d":true,"e":true,"f":true,"h":true,"j":["house","building","home"],"k":[10,11],"o":0},"house_with_garden":{"subcategory":"place-building","a":"House with Garden","b":"1F3E1","d":true,"e":true,"f":true,"h":true,"j":["house_with_garden","home","plant","nature"],"k":[10,12],"o":0},"office":{"subcategory":"place-building","a":"Office Building","b":"1F3E2","d":true,"e":true,"f":true,"h":true,"j":["office_building","building","bureau","work"],"k":[10,13],"o":0},"post_office":{"subcategory":"place-building","a":"Japanese Post Office","b":"1F3E3","d":true,"e":true,"f":true,"h":true,"j":["japanese_post_office","building","envelope","communication"],"k":[10,14],"o":0},"european_post_office":{"subcategory":"place-building","a":"European Post Office","b":"1F3E4","d":true,"e":true,"f":true,"h":true,"j":["post_office","building","email"],"k":[10,15],"o":1},"hospital":{"subcategory":"place-building","a":"Hospital","b":"1F3E5","d":true,"e":true,"f":true,"h":true,"j":["hospital","building","health","surgery","doctor"],"k":[10,16],"o":0},"bank":{"subcategory":"place-building","a":"Bank","b":"1F3E6","d":true,"e":true,"f":true,"h":true,"j":["bank","building","money","sales","cash","business","enterprise"],"k":[10,17],"o":0},"hotel":{"subcategory":"place-building","a":"Hotel","b":"1F3E8","d":true,"e":true,"f":true,"h":true,"j":["hotel","building","accomodation","checkin"],"k":[10,19],"o":0},"love_hotel":{"subcategory":"place-building","a":"Love Hotel","b":"1F3E9","d":true,"e":true,"f":true,"h":true,"j":["love_hotel","like","affection","dating"],"k":[10,20],"o":0},"convenience_store":{"subcategory":"place-building","a":"Convenience Store","b":"1F3EA","d":true,"e":true,"f":true,"h":true,"j":["convenience_store","building","shopping","groceries"],"k":[10,21],"o":0},"school":{"subcategory":"place-building","a":"School","b":"1F3EB","d":true,"e":true,"f":true,"h":true,"j":["school","building","student","education","learn","teach"],"k":[10,22],"o":0},"department_store":{"subcategory":"place-building","a":"Department Store","b":"1F3EC","d":true,"e":true,"f":true,"h":true,"j":["department_store","building","shopping","mall"],"k":[10,23],"o":0},"factory":{"subcategory":"place-building","a":"Factory","b":"1F3ED","d":true,"e":true,"f":true,"h":true,"j":["factory","building","industry","pollution","smoke"],"k":[10,24],"o":0},"japanese_castle":{"subcategory":"place-building","a":"Japanese Castle","b":"1F3EF","d":true,"e":true,"f":true,"h":true,"j":["japanese_castle","photo","building"],"k":[10,26],"o":0},"european_castle":{"subcategory":"place-building","a":"European Castle","b":"1F3F0","d":true,"e":true,"f":true,"h":true,"j":["castle","building","royalty","history"],"k":[10,27],"o":0},"wedding":{"subcategory":"place-building","a":"Wedding","b":"1F492","d":true,"e":true,"f":true,"h":true,"j":["wedding","love","like","affection","couple","marriage","bride","groom"],"k":[27,34],"o":0},"tokyo_tower":{"subcategory":"place-building","a":"Tokyo Tower","b":"1F5FC","d":true,"e":true,"f":true,"h":true,"j":["tokyo_tower","photo","japanese"],"k":[32,17],"o":0},"statue_of_liberty":{"subcategory":"place-building","a":"Statue of Liberty","b":"1F5FD","d":true,"e":true,"f":true,"h":true,"j":["statue_of_liberty","american","newyork"],"k":[32,18],"o":0},"church":{"subcategory":"place-religious","a":"Church","b":"26EA","d":true,"e":true,"f":true,"h":true,"j":["church","building","religion","christ"],"k":[58,25],"o":0},"mosque":{"subcategory":"place-religious","a":"Mosque","b":"1F54C","d":true,"e":true,"f":true,"h":true,"j":["mosque","islam","worship","minaret"],"k":[30,30],"o":1},"hindu_temple":{"subcategory":"place-religious","a":"Hindu Temple","b":"1F6D5","d":true,"e":true,"f":true,"h":true,"j":["hindu_temple","religion"],"k":[38,6],"o":12},"synagogue":{"subcategory":"place-religious","a":"Synagogue","b":"1F54D","d":true,"e":true,"f":true,"h":true,"j":["synagogue","judaism","worship","temple","jewish"],"k":[30,31],"o":1},"shinto_shrine":{"subcategory":"place-religious","a":"Shinto Shrine","b":"26E9-FE0F","c":"26E9","d":true,"e":true,"f":true,"h":true,"j":["shinto_shrine","temple","japan","kyoto"],"k":[58,24],"o":0},"kaaba":{"subcategory":"place-religious","a":"Kaaba","b":"1F54B","d":true,"e":true,"f":true,"h":true,"j":["kaaba","mecca","mosque","islam"],"k":[30,29],"o":1},"fountain":{"subcategory":"place-other","a":"Fountain","b":"26F2","d":true,"e":true,"f":true,"h":true,"j":["fountain","photo","summer","water","fresh"],"k":[58,28],"o":0},"tent":{"subcategory":"place-other","a":"Tent","b":"26FA","d":true,"e":true,"f":true,"h":true,"j":["tent","photo","camping","outdoors"],"k":[58,52],"o":0},"foggy":{"subcategory":"place-other","a":"Foggy","b":"1F301","d":true,"e":true,"f":true,"h":true,"j":["foggy","photo","mountain"],"k":[5,0],"o":0},"night_with_stars":{"subcategory":"place-other","a":"Night with Stars","b":"1F303","d":true,"e":true,"f":true,"h":true,"j":["night_with_stars","evening","city","downtown"],"k":[5,2],"o":0},"cityscape":{"subcategory":"place-other","a":"Cityscape","b":"1F3D9-FE0F","c":"1F3D9","d":true,"e":true,"f":true,"h":true,"j":["cityscape","photo","night life","urban"],"k":[10,4],"o":0},"sunrise_over_mountains":{"subcategory":"place-other","a":"Sunrise over Mountains","b":"1F304","d":true,"e":true,"f":true,"h":true,"j":["sunrise_over_mountains","view","vacation","photo"],"k":[5,3],"o":0},"sunrise":{"subcategory":"place-other","a":"Sunrise","b":"1F305","d":true,"e":true,"f":true,"h":true,"j":["sunrise","morning","view","vacation","photo"],"k":[5,4],"o":0},"city_sunset":{"subcategory":"place-other","a":"Cityscape at Dusk","b":"1F306","d":true,"e":true,"f":true,"h":true,"j":["cityscape_at_dusk","photo","evening","sky","buildings"],"k":[5,5],"o":0},"city_sunrise":{"subcategory":"place-other","a":"Sunset over Buildings","b":"1F307","d":true,"e":true,"f":true,"h":true,"j":["sunset","photo","good morning","dawn"],"k":[5,6],"o":0},"bridge_at_night":{"subcategory":"place-other","a":"Bridge at Night","b":"1F309","d":true,"e":true,"f":true,"h":true,"j":["bridge_at_night","photo","sanfrancisco"],"k":[5,8],"o":0},"hotsprings":{"subcategory":"place-other","a":"Hot Springs","b":"2668-FE0F","c":"2668","d":true,"e":true,"f":true,"h":true,"j":["hot_springs","bath","warm","relax"],"k":[57,55],"o":0},"carousel_horse":{"subcategory":"place-other","a":"Carousel Horse","b":"1F3A0","d":true,"e":true,"f":true,"h":true,"j":["carousel_horse","photo","carnival"],"k":[7,35],"o":0},"playground_slide":{"subcategory":"place-other","a":"Playground Slide","b":"1F6DD","d":true,"e":true,"f":true,"h":true,"j":["playground slide","fun","park"],"k":[38,10],"o":14},"ferris_wheel":{"subcategory":"place-other","a":"Ferris Wheel","b":"1F3A1","d":true,"e":true,"f":true,"h":true,"j":["ferris_wheel","photo","carnival","londoneye"],"k":[7,36],"o":0},"roller_coaster":{"subcategory":"place-other","a":"Roller Coaster","b":"1F3A2","d":true,"e":true,"f":true,"h":true,"j":["roller_coaster","carnival","playground","photo","fun"],"k":[7,37],"o":0},"barber":{"subcategory":"place-other","a":"Barber Pole","b":"1F488","d":true,"e":true,"f":true,"h":true,"j":["barber_pole","hair","salon","style"],"k":[26,35],"o":0},"circus_tent":{"subcategory":"place-other","a":"Circus Tent","b":"1F3AA","d":true,"e":true,"f":true,"h":true,"j":["circus_tent","festival","carnival","party"],"k":[7,45],"o":0},"steam_locomotive":{"subcategory":"transport-ground","a":"Steam Locomotive","b":"1F682","d":true,"e":true,"f":true,"h":true,"j":["locomotive","transportation","vehicle","train"],"k":[35,35],"o":1},"railway_car":{"subcategory":"transport-ground","a":"Railway Car","b":"1F683","d":true,"e":true,"f":true,"h":true,"j":["railway_car","transportation","vehicle"],"k":[35,36],"o":0},"bullettrain_side":{"subcategory":"transport-ground","a":"High-Speed Train","b":"1F684","d":true,"e":true,"f":true,"h":true,"j":["high_speed_train","transportation","vehicle"],"k":[35,37],"o":0},"bullettrain_front":{"subcategory":"transport-ground","a":"High-Speed Train with Bullet Nose","b":"1F685","d":true,"e":true,"f":true,"h":true,"j":["bullet_train","transportation","vehicle","speed","fast","public","travel"],"k":[35,38],"o":0},"train2":{"subcategory":"transport-ground","a":"Train","b":"1F686","d":true,"e":true,"f":true,"h":true,"j":["train","transportation","vehicle"],"k":[35,39],"o":1},"metro":{"subcategory":"transport-ground","a":"Metro","b":"1F687","d":true,"e":true,"f":true,"h":true,"j":["metro","transportation","blue-square","mrt","underground","tube"],"k":[35,40],"o":0},"light_rail":{"subcategory":"transport-ground","a":"Light Rail","b":"1F688","d":true,"e":true,"f":true,"h":true,"j":["light_rail","transportation","vehicle"],"k":[35,41],"o":1},"station":{"subcategory":"transport-ground","a":"Station","b":"1F689","d":true,"e":true,"f":true,"h":true,"j":["station","transportation","vehicle","public"],"k":[35,42],"o":0},"tram":{"subcategory":"transport-ground","a":"Tram","b":"1F68A","d":true,"e":true,"f":true,"h":true,"j":["tram","transportation","vehicle"],"k":[35,43],"o":1},"monorail":{"subcategory":"transport-ground","a":"Monorail","b":"1F69D","d":true,"e":true,"f":true,"h":true,"j":["monorail","transportation","vehicle"],"k":[36,1],"o":1},"mountain_railway":{"subcategory":"transport-ground","a":"Mountain Railway","b":"1F69E","d":true,"e":true,"f":true,"h":true,"j":["mountain_railway","transportation","vehicle"],"k":[36,2],"o":1},"train":{"subcategory":"transport-ground","a":"Tram Car","b":"1F68B","d":true,"e":true,"f":true,"h":true,"j":["tram_car","transportation","vehicle","carriage","public","travel"],"k":[35,44],"o":1},"bus":{"subcategory":"transport-ground","a":"Bus","b":"1F68C","d":true,"e":true,"f":true,"h":true,"j":["bus","car","vehicle","transportation"],"k":[35,45],"o":0},"oncoming_bus":{"subcategory":"transport-ground","a":"Oncoming Bus","b":"1F68D","d":true,"e":true,"f":true,"h":true,"j":["oncoming_bus","vehicle","transportation"],"k":[35,46],"o":0},"trolleybus":{"subcategory":"transport-ground","a":"Trolleybus","b":"1F68E","d":true,"e":true,"f":true,"h":true,"j":["trolleybus","bart","transportation","vehicle"],"k":[35,47],"o":1},"minibus":{"subcategory":"transport-ground","a":"Minibus","b":"1F690","d":true,"e":true,"f":true,"h":true,"j":["minibus","vehicle","car","transportation"],"k":[35,49],"o":1},"ambulance":{"subcategory":"transport-ground","a":"Ambulance","b":"1F691","d":true,"e":true,"f":true,"h":true,"j":["ambulance","health","911","hospital"],"k":[35,50],"o":0},"fire_engine":{"subcategory":"transport-ground","a":"Fire Engine","b":"1F692","d":true,"e":true,"f":true,"h":true,"j":["fire_engine","transportation","cars","vehicle"],"k":[35,51],"o":0},"police_car":{"subcategory":"transport-ground","a":"Police Car","b":"1F693","d":true,"e":true,"f":true,"h":true,"j":["police_car","vehicle","cars","transportation","law","legal","enforcement"],"k":[35,52],"o":0},"oncoming_police_car":{"subcategory":"transport-ground","a":"Oncoming Police Car","b":"1F694","d":true,"e":true,"f":true,"h":true,"j":["oncoming_police_car","vehicle","law","legal","enforcement","911"],"k":[35,53],"o":0},"taxi":{"subcategory":"transport-ground","a":"Taxi","b":"1F695","d":true,"e":true,"f":true,"h":true,"j":["taxi","uber","vehicle","cars","transportation"],"k":[35,54],"o":0},"oncoming_taxi":{"subcategory":"transport-ground","a":"Oncoming Taxi","b":"1F696","d":true,"e":true,"f":true,"h":true,"j":["oncoming_taxi","vehicle","cars","uber"],"k":[35,55],"o":1},"car":{"subcategory":"transport-ground","a":"Automobile","b":"1F697","d":true,"e":true,"f":true,"h":true,"j":["automobile","red","transportation","vehicle"],"k":[35,56],"n":["red_car"],"o":0},"oncoming_automobile":{"subcategory":"transport-ground","a":"Oncoming Automobile","b":"1F698","d":true,"e":true,"f":true,"h":true,"j":["oncoming_automobile","car","vehicle","transportation"],"k":[35,57],"o":0},"blue_car":{"subcategory":"transport-ground","a":"Recreational Vehicle","b":"1F699","d":true,"e":true,"f":true,"h":true,"j":["sport_utility_vehicle","transportation","vehicle"],"k":[35,58],"o":0},"pickup_truck":{"subcategory":"transport-ground","a":"Pickup Truck","b":"1F6FB","d":true,"e":true,"f":true,"h":true,"j":["pickup truck","car","transportation"],"k":[38,31],"o":13},"truck":{"subcategory":"transport-ground","a":"Delivery Truck","b":"1F69A","d":true,"e":true,"f":true,"h":true,"j":["delivery_truck","cars","transportation"],"k":[35,59],"o":0},"articulated_lorry":{"subcategory":"transport-ground","a":"Articulated Lorry","b":"1F69B","d":true,"e":true,"f":true,"h":true,"j":["articulated_lorry","vehicle","cars","transportation","express"],"k":[35,60],"o":1},"tractor":{"subcategory":"transport-ground","a":"Tractor","b":"1F69C","d":true,"e":true,"f":true,"h":true,"j":["tractor","vehicle","car","farming","agriculture"],"k":[36,0],"o":1},"racing_car":{"subcategory":"transport-ground","a":"Racing Car","b":"1F3CE-FE0F","c":"1F3CE","d":true,"e":true,"f":true,"h":true,"j":["racing_car","sports","race","fast","formula","f1"],"k":[9,54],"o":0},"racing_motorcycle":{"subcategory":"transport-ground","a":"Motorcycle","b":"1F3CD-FE0F","c":"1F3CD","d":true,"e":true,"f":true,"h":true,"j":["motorcycle","race","sports","fast"],"k":[9,53],"o":0},"motor_scooter":{"subcategory":"transport-ground","a":"Motor Scooter","b":"1F6F5","d":true,"e":true,"f":true,"h":true,"j":["motor_scooter","vehicle","vespa","sasha"],"k":[38,25],"o":3},"manual_wheelchair":{"subcategory":"transport-ground","a":"Manual Wheelchair","b":"1F9BD","d":true,"e":true,"f":true,"h":true,"j":["manual_wheelchair","accessibility"],"k":[46,4],"o":12},"motorized_wheelchair":{"subcategory":"transport-ground","a":"Motorized Wheelchair","b":"1F9BC","d":true,"e":true,"f":true,"h":true,"j":["motorized_wheelchair","accessibility"],"k":[46,3],"o":12},"auto_rickshaw":{"subcategory":"transport-ground","a":"Auto Rickshaw","b":"1F6FA","d":true,"e":true,"f":true,"h":true,"j":["auto_rickshaw","move","transportation"],"k":[38,30],"o":12},"bike":{"subcategory":"transport-ground","a":"Bicycle","b":"1F6B2","d":true,"e":true,"f":true,"h":true,"j":["bicycle","bike","sports","exercise","hipster"],"k":[36,39],"o":0},"scooter":{"subcategory":"transport-ground","a":"Scooter","b":"1F6F4","d":true,"e":true,"f":true,"h":true,"j":["kick_scooter","vehicle","kick","razor"],"k":[38,24],"o":3},"skateboard":{"subcategory":"transport-ground","a":"Skateboard","b":"1F6F9","d":true,"e":true,"f":true,"h":true,"j":["skateboard","board"],"k":[38,29],"o":11},"roller_skate":{"subcategory":"transport-ground","a":"Roller Skate","b":"1F6FC","d":true,"e":true,"f":true,"h":true,"j":["roller skate","footwear","sports"],"k":[38,32],"o":13},"busstop":{"subcategory":"transport-ground","a":"Bus Stop","b":"1F68F","d":true,"e":true,"f":true,"h":true,"j":["bus_stop","transportation","wait"],"k":[35,48],"o":0},"motorway":{"subcategory":"transport-ground","a":"Motorway","b":"1F6E3-FE0F","c":"1F6E3","d":true,"e":true,"f":true,"h":true,"j":["motorway","road","cupertino","interstate","highway"],"k":[38,16],"o":0},"railway_track":{"subcategory":"transport-ground","a":"Railway Track","b":"1F6E4-FE0F","c":"1F6E4","d":true,"e":true,"f":true,"h":true,"j":["railway_track","train","transportation"],"k":[38,17],"o":0},"oil_drum":{"subcategory":"transport-ground","a":"Oil Drum","b":"1F6E2-FE0F","c":"1F6E2","d":true,"e":true,"f":true,"h":true,"j":["oil_drum","barrell"],"k":[38,15],"o":0},"fuelpump":{"subcategory":"transport-ground","a":"Fuel Pump","b":"26FD","d":true,"e":true,"f":true,"h":true,"j":["fuel_pump","gas station","petroleum"],"k":[58,53],"o":0},"wheel":{"subcategory":"transport-ground","a":"Wheel","b":"1F6DE","d":true,"e":true,"f":true,"h":true,"j":["wheel","car","transport"],"k":[38,11],"o":14},"rotating_light":{"subcategory":"transport-ground","a":"Police Cars Revolving Light","b":"1F6A8","d":true,"e":true,"f":true,"h":true,"j":["police_car_light","police","ambulance","911","emergency","alert","error","pinged","law","legal"],"k":[36,29],"o":0},"traffic_light":{"subcategory":"transport-ground","a":"Horizontal Traffic Light","b":"1F6A5","d":true,"e":true,"f":true,"h":true,"j":["horizontal_traffic_light","transportation","signal"],"k":[36,26],"o":0},"vertical_traffic_light":{"subcategory":"transport-ground","a":"Vertical Traffic Light","b":"1F6A6","d":true,"e":true,"f":true,"h":true,"j":["vertical_traffic_light","transportation","driving"],"k":[36,27],"o":1},"octagonal_sign":{"subcategory":"transport-ground","a":"Octagonal Sign","b":"1F6D1","d":true,"e":true,"f":true,"h":true,"j":["stop_sign","stop"],"k":[38,4],"o":3},"construction":{"subcategory":"transport-ground","a":"Construction Sign","b":"1F6A7","d":true,"e":true,"f":true,"h":true,"j":["construction","wip","progress","caution","warning"],"k":[36,28],"o":0},"anchor":{"subcategory":"transport-water","a":"Anchor","b":"2693","d":true,"e":true,"f":true,"h":true,"j":["anchor","ship","ferry","sea","boat"],"k":[57,60],"o":0},"ring_buoy":{"subcategory":"transport-water","a":"Ring Buoy","b":"1F6DF","d":true,"e":true,"f":true,"h":true,"j":["ring buoy","life saver","life preserver"],"k":[38,12],"o":14},"boat":{"subcategory":"transport-water","a":"Sailboat","b":"26F5","d":true,"e":true,"f":true,"h":true,"j":["sailboat","ship","summer","transportation","water","sailing"],"k":[58,31],"n":["sailboat"],"o":0},"canoe":{"subcategory":"transport-water","a":"Canoe","b":"1F6F6","d":true,"e":true,"f":true,"h":true,"j":["canoe","boat","paddle","water","ship"],"k":[38,26],"o":3},"speedboat":{"subcategory":"transport-water","a":"Speedboat","b":"1F6A4","d":true,"e":true,"f":true,"h":true,"j":["speedboat","ship","transportation","vehicle","summer"],"k":[36,25],"o":0},"passenger_ship":{"subcategory":"transport-water","a":"Passenger Ship","b":"1F6F3-FE0F","c":"1F6F3","d":true,"e":true,"f":true,"h":true,"j":["passenger_ship","yacht","cruise","ferry"],"k":[38,23],"o":0},"ferry":{"subcategory":"transport-water","a":"Ferry","b":"26F4-FE0F","c":"26F4","d":true,"e":true,"f":true,"h":true,"j":["ferry","boat","ship","yacht"],"k":[58,30],"o":0},"motor_boat":{"subcategory":"transport-water","a":"Motor Boat","b":"1F6E5-FE0F","c":"1F6E5","d":true,"e":true,"f":true,"h":true,"j":["motor_boat","ship"],"k":[38,18],"o":0},"ship":{"subcategory":"transport-water","a":"Ship","b":"1F6A2","d":true,"e":true,"f":true,"h":true,"j":["ship","transportation","titanic","deploy"],"k":[36,6],"o":0},"airplane":{"subcategory":"transport-air","a":"Airplane","b":"2708-FE0F","c":"2708","d":true,"e":true,"f":true,"h":true,"j":["airplane","vehicle","transportation","flight","fly"],"k":[58,56],"o":0},"small_airplane":{"subcategory":"transport-air","a":"Small Airplane","b":"1F6E9-FE0F","c":"1F6E9","d":true,"e":true,"f":true,"h":true,"j":["small_airplane","flight","transportation","fly","vehicle"],"k":[38,19],"o":0},"airplane_departure":{"subcategory":"transport-air","a":"Airplane Departure","b":"1F6EB","d":true,"e":true,"f":true,"h":true,"j":["airplane_departure","airport","flight","landing"],"k":[38,20],"o":1},"airplane_arriving":{"subcategory":"transport-air","a":"Airplane Arriving","b":"1F6EC","d":true,"e":true,"f":true,"h":true,"j":["airplane_arrival","airport","flight","boarding"],"k":[38,21],"o":1},"parachute":{"subcategory":"transport-air","a":"Parachute","b":"1FA82","d":true,"e":true,"f":true,"h":true,"j":["parachute","fly","glide"],"k":[54,2],"o":12},"seat":{"subcategory":"transport-air","a":"Seat","b":"1F4BA","d":true,"e":true,"f":true,"h":true,"j":["seat","sit","airplane","transport","bus","flight","fly"],"k":[28,18],"o":0},"helicopter":{"subcategory":"transport-air","a":"Helicopter","b":"1F681","d":true,"e":true,"f":true,"h":true,"j":["helicopter","transportation","vehicle","fly"],"k":[35,34],"o":1},"suspension_railway":{"subcategory":"transport-air","a":"Suspension Railway","b":"1F69F","d":true,"e":true,"f":true,"h":true,"j":["suspension_railway","vehicle","transportation"],"k":[36,3],"o":1},"mountain_cableway":{"subcategory":"transport-air","a":"Mountain Cableway","b":"1F6A0","d":true,"e":true,"f":true,"h":true,"j":["mountain_cableway","transportation","vehicle","ski"],"k":[36,4],"o":1},"aerial_tramway":{"subcategory":"transport-air","a":"Aerial Tramway","b":"1F6A1","d":true,"e":true,"f":true,"h":true,"j":["aerial_tramway","transportation","vehicle","ski"],"k":[36,5],"o":1},"satellite":{"subcategory":"transport-air","a":"Satellite","b":"1F6F0-FE0F","c":"1F6F0","d":true,"e":true,"f":true,"h":true,"j":["satellite","communication","gps","orbit","spaceflight","NASA","ISS"],"k":[38,22],"o":0},"rocket":{"subcategory":"transport-air","a":"Rocket","b":"1F680","d":true,"e":true,"f":true,"h":true,"j":["rocket","launch","ship","staffmode","NASA","outer space","outer_space","fly"],"k":[35,33],"o":0},"flying_saucer":{"subcategory":"transport-air","a":"Flying Saucer","b":"1F6F8","d":true,"e":true,"f":true,"h":true,"j":["flying_saucer","transportation","vehicle","ufo"],"k":[38,28],"o":5},"bellhop_bell":{"subcategory":"hotel","a":"Bellhop Bell","b":"1F6CE-FE0F","c":"1F6CE","d":true,"e":true,"f":true,"h":true,"j":["bellhop_bell","service"],"k":[38,1],"o":0},"luggage":{"subcategory":"hotel","a":"Luggage","b":"1F9F3","d":true,"e":true,"f":true,"h":true,"j":["luggage","packing","travel"],"k":[53,35],"o":11},"hourglass":{"subcategory":"time","a":"Hourglass","b":"231B","d":true,"e":true,"f":true,"h":true,"j":["hourglass_done","time","clock","oldschool","limit","exam","quiz","test"],"k":[56,45],"o":0},"hourglass_flowing_sand":{"subcategory":"time","a":"Hourglass with Flowing Sand","b":"23F3","d":true,"e":true,"f":true,"h":true,"j":["hourglass_not_done","oldschool","time","countdown"],"k":[56,58],"o":0},"watch":{"subcategory":"time","a":"Watch","b":"231A","d":true,"e":true,"f":true,"h":true,"j":["watch","time","accessories"],"k":[56,44],"o":0},"alarm_clock":{"subcategory":"time","a":"Alarm Clock","b":"23F0","d":true,"e":true,"f":true,"h":true,"j":["alarm_clock","time","wake"],"k":[56,55],"o":0},"stopwatch":{"subcategory":"time","a":"Stopwatch","b":"23F1-FE0F","c":"23F1","d":true,"e":true,"f":true,"h":true,"j":["stopwatch","time","deadline"],"k":[56,56],"o":1},"timer_clock":{"subcategory":"time","a":"Timer Clock","b":"23F2-FE0F","c":"23F2","d":true,"e":true,"f":true,"h":true,"j":["timer_clock","alarm"],"k":[56,57],"o":1},"mantelpiece_clock":{"subcategory":"time","a":"Mantelpiece Clock","b":"1F570-FE0F","c":"1F570","d":true,"e":true,"f":true,"h":true,"j":["mantelpiece_clock","time"],"k":[30,58],"o":0},"clock12":{"subcategory":"time","a":"Clock Face Twelve Oclock","b":"1F55B","d":true,"e":true,"f":true,"h":true,"j":["twelve_o_clock","12","00:00","0000","12:00","1200","time","noon","midnight","midday","late","early","schedule"],"k":[30,44],"o":0},"clock1230":{"subcategory":"time","a":"Clock Face Twelve-Thirty","b":"1F567","d":true,"e":true,"f":true,"h":true,"j":["twelve_thirty","00:30","0030","12:30","1230","time","late","early","schedule"],"k":[30,56],"o":0},"clock1":{"subcategory":"time","a":"Clock Face One Oclock","b":"1F550","d":true,"e":true,"f":true,"h":true,"j":["one_o_clock","1","1:00","100","13:00","1300","time","late","early","schedule"],"k":[30,33],"o":0},"clock130":{"subcategory":"time","a":"Clock Face One-Thirty","b":"1F55C","d":true,"e":true,"f":true,"h":true,"j":["one_thirty","1:30","130","13:30","1330","time","late","early","schedule"],"k":[30,45],"o":0},"clock2":{"subcategory":"time","a":"Clock Face Two Oclock","b":"1F551","d":true,"e":true,"f":true,"h":true,"j":["two_o_clock","2","2:00","200","14:00","1400","time","late","early","schedule"],"k":[30,34],"o":0},"clock230":{"subcategory":"time","a":"Clock Face Two-Thirty","b":"1F55D","d":true,"e":true,"f":true,"h":true,"j":["two_thirty","2:30","230","14:30","1430","time","late","early","schedule"],"k":[30,46],"o":0},"clock3":{"subcategory":"time","a":"Clock Face Three Oclock","b":"1F552","d":true,"e":true,"f":true,"h":true,"j":["three_o_clock","3","3:00","300","15:00","1500","time","late","early","schedule"],"k":[30,35],"o":0},"clock330":{"subcategory":"time","a":"Clock Face Three-Thirty","b":"1F55E","d":true,"e":true,"f":true,"h":true,"j":["three_thirty","3:30","330","15:30","1530","time","late","early","schedule"],"k":[30,47],"o":0},"clock4":{"subcategory":"time","a":"Clock Face Four Oclock","b":"1F553","d":true,"e":true,"f":true,"h":true,"j":["four_o_clock","4","4:00","400","16:00","1600","time","late","early","schedule"],"k":[30,36],"o":0},"clock430":{"subcategory":"time","a":"Clock Face Four-Thirty","b":"1F55F","d":true,"e":true,"f":true,"h":true,"j":["four_thirty","4:30","430","16:30","1630","time","late","early","schedule"],"k":[30,48],"o":0},"clock5":{"subcategory":"time","a":"Clock Face Five Oclock","b":"1F554","d":true,"e":true,"f":true,"h":true,"j":["five_o_clock","5","5:00","500","17:00","1700","time","late","early","schedule"],"k":[30,37],"o":0},"clock530":{"subcategory":"time","a":"Clock Face Five-Thirty","b":"1F560","d":true,"e":true,"f":true,"h":true,"j":["five_thirty","5:30","530","17:30","1730","time","late","early","schedule"],"k":[30,49],"o":0},"clock6":{"subcategory":"time","a":"Clock Face Six Oclock","b":"1F555","d":true,"e":true,"f":true,"h":true,"j":["six_o_clock","6","6:00","600","18:00","1800","time","late","early","schedule","dawn","dusk"],"k":[30,38],"o":0},"clock630":{"subcategory":"time","a":"Clock Face Six-Thirty","b":"1F561","d":true,"e":true,"f":true,"h":true,"j":["six_thirty","6:30","630","18:30","1830","time","late","early","schedule"],"k":[30,50],"o":0},"clock7":{"subcategory":"time","a":"Clock Face Seven Oclock","b":"1F556","d":true,"e":true,"f":true,"h":true,"j":["seven_o_clock","7","7:00","700","19:00","1900","time","late","early","schedule"],"k":[30,39],"o":0},"clock730":{"subcategory":"time","a":"Clock Face Seven-Thirty","b":"1F562","d":true,"e":true,"f":true,"h":true,"j":["seven_thirty","7:30","730","19:30","1930","time","late","early","schedule"],"k":[30,51],"o":0},"clock8":{"subcategory":"time","a":"Clock Face Eight Oclock","b":"1F557","d":true,"e":true,"f":true,"h":true,"j":["eight_o_clock","8","8:00","800","20:00","2000","time","late","early","schedule"],"k":[30,40],"o":0},"clock830":{"subcategory":"time","a":"Clock Face Eight-Thirty","b":"1F563","d":true,"e":true,"f":true,"h":true,"j":["eight_thirty","8:30","830","20:30","2030","time","late","early","schedule"],"k":[30,52],"o":0},"clock9":{"subcategory":"time","a":"Clock Face Nine Oclock","b":"1F558","d":true,"e":true,"f":true,"h":true,"j":["nine_o_clock","9","9:00","900","21:00","2100","time","late","early","schedule"],"k":[30,41],"o":0},"clock930":{"subcategory":"time","a":"Clock Face Nine-Thirty","b":"1F564","d":true,"e":true,"f":true,"h":true,"j":["nine_thirty","9:30","930","21:30","2130","time","late","early","schedule"],"k":[30,53],"o":0},"clock10":{"subcategory":"time","a":"Clock Face Ten Oclock","b":"1F559","d":true,"e":true,"f":true,"h":true,"j":["ten_o_clock","10","10:00","1000","22:00","2200","time","late","early","schedule"],"k":[30,42],"o":0},"clock1030":{"subcategory":"time","a":"Clock Face Ten-Thirty","b":"1F565","d":true,"e":true,"f":true,"h":true,"j":["ten_thirty","10:30","1030","22:30","2230","time","late","early","schedule"],"k":[30,54],"o":0},"clock11":{"subcategory":"time","a":"Clock Face Eleven Oclock","b":"1F55A","d":true,"e":true,"f":true,"h":true,"j":["eleven_o_clock","11","11:00","1100","23:00","2300","time","late","early","schedule"],"k":[30,43],"o":0},"clock1130":{"subcategory":"time","a":"Clock Face Eleven-Thirty","b":"1F566","d":true,"e":true,"f":true,"h":true,"j":["eleven_thirty","11:30","1130","23:30","2330","time","late","early","schedule"],"k":[30,55],"o":0},"new_moon":{"subcategory":"sky & weather","a":"New Moon Symbol","b":"1F311","d":true,"e":true,"f":true,"h":true,"j":["new_moon","nature","twilight","planet","space","night","evening","sleep"],"k":[5,16],"o":0},"waxing_crescent_moon":{"subcategory":"sky & weather","a":"Waxing Crescent Moon Symbol","b":"1F312","d":true,"e":true,"f":true,"h":true,"j":["waxing_crescent_moon","nature","twilight","planet","space","night","evening","sleep"],"k":[5,17],"o":1},"first_quarter_moon":{"subcategory":"sky & weather","a":"First Quarter Moon Symbol","b":"1F313","d":true,"e":true,"f":true,"h":true,"j":["first_quarter_moon","nature","twilight","planet","space","night","evening","sleep"],"k":[5,18],"o":0},"moon":{"subcategory":"sky & weather","a":"Waxing Gibbous Moon Symbol","b":"1F314","d":true,"e":true,"f":true,"h":true,"j":["waxing_gibbous_moon","nature","night","sky","gray","twilight","planet","space","evening","sleep"],"k":[5,19],"n":["waxing_gibbous_moon"],"o":0},"full_moon":{"subcategory":"sky & weather","a":"Full Moon Symbol","b":"1F315","d":true,"e":true,"f":true,"h":true,"j":["full_moon","nature","yellow","twilight","planet","space","night","evening","sleep"],"k":[5,20],"o":0},"waning_gibbous_moon":{"subcategory":"sky & weather","a":"Waning Gibbous Moon Symbol","b":"1F316","d":true,"e":true,"f":true,"h":true,"j":["waning_gibbous_moon","nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"k":[5,21],"o":1},"last_quarter_moon":{"subcategory":"sky & weather","a":"Last Quarter Moon Symbol","b":"1F317","d":true,"e":true,"f":true,"h":true,"j":["last_quarter_moon","nature","twilight","planet","space","night","evening","sleep"],"k":[5,22],"o":1},"waning_crescent_moon":{"subcategory":"sky & weather","a":"Waning Crescent Moon Symbol","b":"1F318","d":true,"e":true,"f":true,"h":true,"j":["waning_crescent_moon","nature","twilight","planet","space","night","evening","sleep"],"k":[5,23],"o":1},"crescent_moon":{"subcategory":"sky & weather","a":"Crescent Moon","b":"1F319","d":true,"e":true,"f":true,"h":true,"j":["crescent_moon","night","sleep","sky","evening","magic"],"k":[5,24],"o":0},"new_moon_with_face":{"subcategory":"sky & weather","a":"New Moon with Face","b":"1F31A","d":true,"e":true,"f":true,"h":true,"j":["new_moon_face","nature","twilight","planet","space","night","evening","sleep"],"k":[5,25],"o":1},"first_quarter_moon_with_face":{"subcategory":"sky & weather","a":"First Quarter Moon with Face","b":"1F31B","d":true,"e":true,"f":true,"h":true,"j":["first_quarter_moon_face","nature","twilight","planet","space","night","evening","sleep"],"k":[5,26],"o":0},"last_quarter_moon_with_face":{"subcategory":"sky & weather","a":"Last Quarter Moon with Face","b":"1F31C","d":true,"e":true,"f":true,"h":true,"j":["last_quarter_moon_face","nature","twilight","planet","space","night","evening","sleep"],"k":[5,27],"o":0},"thermometer":{"subcategory":"sky & weather","a":"Thermometer","b":"1F321-FE0F","c":"1F321","d":true,"e":true,"f":true,"h":true,"j":["thermometer","weather","temperature","hot","cold"],"k":[5,32],"o":0},"sunny":{"subcategory":"sky & weather","a":"Black Sun with Rays","b":"2600-FE0F","c":"2600","d":true,"e":true,"f":true,"h":true,"j":["sun","weather","nature","brightness","summer","beach","spring"],"k":[57,10],"o":0},"full_moon_with_face":{"subcategory":"sky & weather","a":"Full Moon with Face","b":"1F31D","d":true,"e":true,"f":true,"h":true,"j":["full_moon_face","nature","twilight","planet","space","night","evening","sleep"],"k":[5,28],"o":1},"sun_with_face":{"subcategory":"sky & weather","a":"Sun with Face","b":"1F31E","d":true,"e":true,"f":true,"h":true,"j":["sun_with_face","nature","morning","sky"],"k":[5,29],"o":1},"ringed_planet":{"subcategory":"sky & weather","a":"Ringed Planet","b":"1FA90","d":true,"e":true,"f":true,"h":true,"j":["ringed_planet","outerspace"],"k":[54,9],"o":12},"star":{"subcategory":"sky & weather","a":"White Medium Star","b":"2B50","d":true,"e":true,"f":true,"h":true,"j":["star","night","yellow"],"k":[59,55],"o":0},"star2":{"subcategory":"sky & weather","a":"Glowing Star","b":"1F31F","d":true,"e":true,"f":true,"h":true,"j":["glowing_star","night","sparkle","awesome","good","magic"],"k":[5,30],"o":0},"stars":{"subcategory":"sky & weather","a":"Shooting Star","b":"1F320","d":true,"e":true,"f":true,"h":true,"j":["shooting_star","night","photo"],"k":[5,31],"o":0},"milky_way":{"subcategory":"sky & weather","a":"Milky Way","b":"1F30C","d":true,"e":true,"f":true,"h":true,"j":["milky_way","photo","space","stars"],"k":[5,11],"o":0},"cloud":{"subcategory":"sky & weather","a":"Cloud","b":"2601-FE0F","c":"2601","d":true,"e":true,"f":true,"h":true,"j":["cloud","weather","sky"],"k":[57,11],"o":0},"partly_sunny":{"subcategory":"sky & weather","a":"Sun Behind Cloud","b":"26C5","d":true,"e":true,"f":true,"h":true,"j":["sun_behind_cloud","weather","nature","cloudy","morning","fall","spring"],"k":[58,17],"o":0},"thunder_cloud_and_rain":{"subcategory":"sky & weather","a":"Cloud with Lightning and Rain","b":"26C8-FE0F","c":"26C8","d":true,"e":true,"f":true,"h":true,"j":["cloud_with_lightning_and_rain","weather","lightning"],"k":[58,18],"o":0},"mostly_sunny":{"subcategory":"sky & weather","a":"Sun Behind Small Cloud","b":"1F324-FE0F","c":"1F324","d":true,"e":true,"f":true,"h":true,"j":["sun_behind_small_cloud","weather"],"k":[5,33],"n":["sun_small_cloud"],"o":0},"barely_sunny":{"subcategory":"sky & weather","a":"Sun Behind Large Cloud","b":"1F325-FE0F","c":"1F325","d":true,"e":true,"f":true,"h":true,"j":["sun_behind_large_cloud","weather"],"k":[5,34],"n":["sun_behind_cloud"],"o":0},"partly_sunny_rain":{"subcategory":"sky & weather","a":"Sun Behind Rain Cloud","b":"1F326-FE0F","c":"1F326","d":true,"e":true,"f":true,"h":true,"j":["sun_behind_rain_cloud","weather"],"k":[5,35],"n":["sun_behind_rain_cloud"],"o":0},"rain_cloud":{"subcategory":"sky & weather","a":"Cloud with Rain","b":"1F327-FE0F","c":"1F327","d":true,"e":true,"f":true,"h":true,"j":["cloud_with_rain","weather"],"k":[5,36],"o":0},"snow_cloud":{"subcategory":"sky & weather","a":"Cloud with Snow","b":"1F328-FE0F","c":"1F328","d":true,"e":true,"f":true,"h":true,"j":["cloud_with_snow","weather"],"k":[5,37],"o":0},"lightning":{"subcategory":"sky & weather","a":"Cloud with Lightning","b":"1F329-FE0F","c":"1F329","d":true,"e":true,"f":true,"h":true,"j":["cloud_with_lightning","weather","thunder"],"k":[5,38],"n":["lightning_cloud"],"o":0},"tornado":{"subcategory":"sky & weather","a":"Tornado","b":"1F32A-FE0F","c":"1F32A","d":true,"e":true,"f":true,"h":true,"j":["tornado","weather","cyclone","twister"],"k":[5,39],"n":["tornado_cloud"],"o":0},"fog":{"subcategory":"sky & weather","a":"Fog","b":"1F32B-FE0F","c":"1F32B","d":true,"e":true,"f":true,"h":true,"j":["fog","weather"],"k":[5,40],"o":0},"wind_blowing_face":{"subcategory":"sky & weather","a":"Wind Face","b":"1F32C-FE0F","c":"1F32C","d":true,"e":true,"f":true,"h":true,"j":["wind_face","gust","air"],"k":[5,41],"o":0},"cyclone":{"subcategory":"sky & weather","a":"Cyclone","b":"1F300","d":true,"e":true,"f":true,"h":true,"j":["cyclone","weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"k":[4,60],"o":0},"rainbow":{"subcategory":"sky & weather","a":"Rainbow","b":"1F308","d":true,"e":true,"f":true,"h":true,"j":["rainbow","nature","happy","unicorn_face","photo","sky","spring"],"k":[5,7],"o":0},"closed_umbrella":{"subcategory":"sky & weather","a":"Closed Umbrella","b":"1F302","d":true,"e":true,"f":true,"h":true,"j":["closed_umbrella","weather","rain","drizzle"],"k":[5,1],"o":0},"umbrella":{"subcategory":"sky & weather","a":"Umbrella","b":"2602-FE0F","c":"2602","d":true,"e":true,"f":true,"h":true,"j":["umbrella","weather","spring"],"k":[57,12],"o":0},"umbrella_with_rain_drops":{"subcategory":"sky & weather","a":"Umbrella with Rain Drops","b":"2614","d":true,"e":true,"f":true,"h":true,"j":["umbrella_with_rain_drops","rainy","weather","spring"],"k":[57,17],"o":0},"umbrella_on_ground":{"subcategory":"sky & weather","a":"Umbrella on Ground","b":"26F1-FE0F","c":"26F1","d":true,"e":true,"f":true,"h":true,"j":["umbrella_on_ground","weather","summer"],"k":[58,27],"o":0},"zap":{"subcategory":"sky & weather","a":"High Voltage Sign","b":"26A1","d":true,"e":true,"f":true,"h":true,"j":["high_voltage","thunder","weather","lightning bolt","fast","zap"],"k":[58,8],"o":0},"snowflake":{"subcategory":"sky & weather","a":"Snowflake","b":"2744-FE0F","c":"2744","d":true,"e":true,"f":true,"h":true,"j":["snowflake","winter","season","cold","weather","christmas","xmas"],"k":[59,30],"o":0},"snowman":{"subcategory":"sky & weather","a":"Snowman","b":"2603-FE0F","c":"2603","d":true,"e":true,"f":true,"h":true,"j":["snowman","winter","season","cold","weather","christmas","xmas","frozen"],"k":[57,13],"o":0},"snowman_without_snow":{"subcategory":"sky & weather","a":"Snowman Without Snow","b":"26C4","d":true,"e":true,"f":true,"h":true,"j":["snowman_without_snow","winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"k":[58,16],"o":0},"comet":{"subcategory":"sky & weather","a":"Comet","b":"2604-FE0F","c":"2604","d":true,"e":true,"f":true,"h":true,"j":["comet","space"],"k":[57,14],"o":1},"fire":{"subcategory":"sky & weather","a":"Fire","b":"1F525","d":true,"e":true,"f":true,"h":true,"j":["fire","hot","cook","flame"],"k":[30,2],"o":0},"droplet":{"subcategory":"sky & weather","a":"Droplet","b":"1F4A7","d":true,"e":true,"f":true,"h":true,"j":["droplet","water","drip","faucet","spring"],"k":[27,55],"o":0},"ocean":{"subcategory":"sky & weather","a":"Water Wave","b":"1F30A","d":true,"e":true,"f":true,"h":true,"j":["water_wave","sea","water","wave","nature","tsunami","disaster"],"k":[5,9],"o":0},"jack_o_lantern":{"subcategory":"event","a":"Jack-O-Lantern","b":"1F383","d":true,"e":true,"f":true,"h":true,"j":["jack_o_lantern","halloween","light","pumpkin","creepy","fall"],"k":[7,6],"o":0},"christmas_tree":{"subcategory":"event","a":"Christmas Tree","b":"1F384","d":true,"e":true,"f":true,"h":true,"j":["christmas_tree","festival","vacation","december","xmas","celebration"],"k":[7,7],"o":0},"fireworks":{"subcategory":"event","a":"Fireworks","b":"1F386","d":true,"e":true,"f":true,"h":true,"j":["fireworks","photo","festival","carnival","congratulations"],"k":[7,14],"o":0},"sparkler":{"subcategory":"event","a":"Firework Sparkler","b":"1F387","d":true,"e":true,"f":true,"h":true,"j":["sparkler","stars","night","shine"],"k":[7,15],"o":0},"firecracker":{"subcategory":"event","a":"Firecracker","b":"1F9E8","d":true,"e":true,"f":true,"h":true,"j":["firecracker","dynamite","boom","explode","explosion","explosive"],"k":[53,24],"o":11},"sparkles":{"subcategory":"event","a":"Sparkles","b":"2728","d":true,"e":true,"f":true,"h":true,"j":["sparkles","stars","shine","shiny","cool","awesome","good","magic"],"k":[59,27],"o":0},"balloon":{"subcategory":"event","a":"Balloon","b":"1F388","d":true,"e":true,"f":true,"h":true,"j":["balloon","party","celebration","birthday","circus"],"k":[7,16],"o":0},"tada":{"subcategory":"event","a":"Party Popper","b":"1F389","d":true,"e":true,"f":true,"h":true,"j":["party_popper","party","congratulations","birthday","magic","circus","celebration","tada"],"k":[7,17],"o":0},"confetti_ball":{"subcategory":"event","a":"Confetti Ball","b":"1F38A","d":true,"e":true,"f":true,"h":true,"j":["confetti_ball","festival","party","birthday","circus"],"k":[7,18],"o":0},"tanabata_tree":{"subcategory":"event","a":"Tanabata Tree","b":"1F38B","d":true,"e":true,"f":true,"h":true,"j":["tanabata_tree","plant","nature","branch","summer","bamboo","wish","star_festival","tanzaku"],"k":[7,19],"o":0},"bamboo":{"subcategory":"event","a":"Pine Decoration","b":"1F38D","d":true,"e":true,"f":true,"h":true,"j":["pine_decoration","japanese","plant","nature","vegetable","panda","new_years","bamboo"],"k":[7,21],"o":0},"dolls":{"subcategory":"event","a":"Japanese Dolls","b":"1F38E","d":true,"e":true,"f":true,"h":true,"j":["japanese_dolls","japanese","toy","kimono"],"k":[7,22],"o":0},"flags":{"subcategory":"event","a":"Carp Streamer","b":"1F38F","d":true,"e":true,"f":true,"h":true,"j":["carp_streamer","fish","japanese","koinobori","carp","banner"],"k":[7,23],"o":0},"wind_chime":{"subcategory":"event","a":"Wind Chime","b":"1F390","d":true,"e":true,"f":true,"h":true,"j":["wind_chime","nature","ding","spring","bell"],"k":[7,24],"o":0},"rice_scene":{"subcategory":"event","a":"Moon Viewing Ceremony","b":"1F391","d":true,"e":true,"f":true,"h":true,"j":["moon_viewing_ceremony","photo","japan","asia","tsukimi"],"k":[7,25],"o":0},"red_envelope":{"subcategory":"event","a":"Red Gift Envelope","b":"1F9E7","d":true,"e":true,"f":true,"h":true,"j":["red_envelope","gift"],"k":[53,23],"o":11},"ribbon":{"subcategory":"event","a":"Ribbon","b":"1F380","d":true,"e":true,"f":true,"h":true,"j":["ribbon","decoration","pink","girl","bowtie"],"k":[7,3],"o":0},"gift":{"subcategory":"event","a":"Wrapped Present","b":"1F381","d":true,"e":true,"f":true,"h":true,"j":["wrapped_gift","present","birthday","christmas","xmas"],"k":[7,4],"o":0},"reminder_ribbon":{"subcategory":"event","a":"Reminder Ribbon","b":"1F397-FE0F","c":"1F397","d":true,"e":true,"f":true,"h":true,"j":["reminder_ribbon","sports","cause","support","awareness"],"k":[7,29],"o":0},"admission_tickets":{"subcategory":"event","a":"Admission Tickets","b":"1F39F-FE0F","c":"1F39F","d":true,"e":true,"f":true,"h":true,"j":["admission_tickets","sports","concert","entrance"],"k":[7,34],"o":0},"ticket":{"subcategory":"event","a":"Ticket","b":"1F3AB","d":true,"e":true,"f":true,"h":true,"j":["ticket","event","concert","pass"],"k":[7,46],"o":0},"medal":{"subcategory":"award-medal","a":"Military Medal","b":"1F396-FE0F","c":"1F396","d":true,"e":true,"f":true,"h":true,"j":["military_medal","award","winning","army"],"k":[7,28],"o":0},"trophy":{"subcategory":"award-medal","a":"Trophy","b":"1F3C6","d":true,"e":true,"f":true,"h":true,"j":["trophy","win","award","contest","place","ftw","ceremony"],"k":[8,51],"o":0},"sports_medal":{"subcategory":"award-medal","a":"Sports Medal","b":"1F3C5","d":true,"e":true,"f":true,"h":true,"j":["sports_medal","award","winning"],"k":[8,50],"o":1},"first_place_medal":{"subcategory":"award-medal","a":"First Place Medal","b":"1F947","d":true,"e":true,"f":true,"h":true,"j":["1st_place_medal","award","winning","first"],"k":[43,19],"o":3},"second_place_medal":{"subcategory":"award-medal","a":"Second Place Medal","b":"1F948","d":true,"e":true,"f":true,"h":true,"j":["2nd_place_medal","award","second"],"k":[43,20],"o":3},"third_place_medal":{"subcategory":"award-medal","a":"Third Place Medal","b":"1F949","d":true,"e":true,"f":true,"h":true,"j":["3rd_place_medal","award","third"],"k":[43,21],"o":3},"soccer":{"subcategory":"sport","a":"Soccer Ball","b":"26BD","d":true,"e":true,"f":true,"h":true,"j":["soccer_ball","sports","football"],"k":[58,14],"o":0},"baseball":{"subcategory":"sport","a":"Baseball","b":"26BE","d":true,"e":true,"f":true,"h":true,"j":["baseball","sports","balls"],"k":[58,15],"o":0},"softball":{"subcategory":"sport","a":"Softball","b":"1F94E","d":true,"e":true,"f":true,"h":true,"j":["softball","sports","balls"],"k":[43,26],"o":11},"basketball":{"subcategory":"sport","a":"Basketball and Hoop","b":"1F3C0","d":true,"e":true,"f":true,"h":true,"j":["basketball","sports","balls","NBA"],"k":[8,6],"o":0},"volleyball":{"subcategory":"sport","a":"Volleyball","b":"1F3D0","d":true,"e":true,"f":true,"h":true,"j":["volleyball","sports","balls"],"k":[9,56],"o":1},"football":{"subcategory":"sport","a":"American Football","b":"1F3C8","d":true,"e":true,"f":true,"h":true,"j":["american_football","sports","balls","NFL"],"k":[8,58],"o":0},"rugby_football":{"subcategory":"sport","a":"Rugby Football","b":"1F3C9","d":true,"e":true,"f":true,"h":true,"j":["rugby_football","sports","team"],"k":[8,59],"o":1},"tennis":{"subcategory":"sport","a":"Tennis Racquet and Ball","b":"1F3BE","d":true,"e":true,"f":true,"h":true,"j":["tennis","sports","balls","green"],"k":[8,4],"o":0},"flying_disc":{"subcategory":"sport","a":"Flying Disc","b":"1F94F","d":true,"e":true,"f":true,"h":true,"j":["flying_disc","sports","frisbee","ultimate"],"k":[43,27],"o":11},"bowling":{"subcategory":"sport","a":"Bowling","b":"1F3B3","d":true,"e":true,"f":true,"h":true,"j":["bowling","sports","fun","play"],"k":[7,54],"o":0},"cricket_bat_and_ball":{"subcategory":"sport","a":"Cricket Bat and Ball","b":"1F3CF","d":true,"e":true,"f":true,"h":true,"j":["cricket_game","sports"],"k":[9,55],"o":1},"field_hockey_stick_and_ball":{"subcategory":"sport","a":"Field Hockey Stick and Ball","b":"1F3D1","d":true,"e":true,"f":true,"h":true,"j":["field_hockey","sports"],"k":[9,57],"o":1},"ice_hockey_stick_and_puck":{"subcategory":"sport","a":"Ice Hockey Stick and Puck","b":"1F3D2","d":true,"e":true,"f":true,"h":true,"j":["ice_hockey","sports"],"k":[9,58],"o":1},"lacrosse":{"subcategory":"sport","a":"Lacrosse Stick and Ball","b":"1F94D","d":true,"e":true,"f":true,"h":true,"j":["lacrosse","sports","ball","stick"],"k":[43,25],"o":11},"table_tennis_paddle_and_ball":{"subcategory":"sport","a":"Table Tennis Paddle and Ball","b":"1F3D3","d":true,"e":true,"f":true,"h":true,"j":["ping_pong","sports","pingpong"],"k":[9,59],"o":1},"badminton_racquet_and_shuttlecock":{"subcategory":"sport","a":"Badminton Racquet and Shuttlecock","b":"1F3F8","d":true,"e":true,"f":true,"h":true,"j":["badminton","sports"],"k":[10,38],"o":1},"boxing_glove":{"subcategory":"sport","a":"Boxing Glove","b":"1F94A","d":true,"e":true,"f":true,"h":true,"j":["boxing_glove","sports","fighting"],"k":[43,22],"o":3},"martial_arts_uniform":{"subcategory":"sport","a":"Martial Arts Uniform","b":"1F94B","d":true,"e":true,"f":true,"h":true,"j":["martial_arts_uniform","judo","karate","taekwondo"],"k":[43,23],"o":3},"goal_net":{"subcategory":"sport","a":"Goal Net","b":"1F945","d":true,"e":true,"f":true,"h":true,"j":["goal_net","sports"],"k":[43,18],"o":3},"golf":{"subcategory":"sport","a":"Flag in Hole","b":"26F3","d":true,"e":true,"f":true,"h":true,"j":["flag_in_hole","sports","business","flag","hole","summer"],"k":[58,29],"o":0},"ice_skate":{"subcategory":"sport","a":"Ice Skate","b":"26F8-FE0F","c":"26F8","d":true,"e":true,"f":true,"h":true,"j":["ice_skate","sports"],"k":[58,33],"o":0},"fishing_pole_and_fish":{"subcategory":"sport","a":"Fishing Pole and Fish","b":"1F3A3","d":true,"e":true,"f":true,"h":true,"j":["fishing_pole","food","hobby","summer"],"k":[7,38],"o":0},"diving_mask":{"subcategory":"sport","a":"Diving Mask","b":"1F93F","d":true,"e":true,"f":true,"h":true,"j":["diving_mask","sport","ocean"],"k":[43,12],"o":12},"running_shirt_with_sash":{"subcategory":"sport","a":"Running Shirt with Sash","b":"1F3BD","d":true,"e":true,"f":true,"h":true,"j":["running_shirt","play","pageant"],"k":[8,3],"o":0},"ski":{"subcategory":"sport","a":"Ski and Ski Boot","b":"1F3BF","d":true,"e":true,"f":true,"h":true,"j":["skis","sports","winter","cold","snow"],"k":[8,5],"o":0},"sled":{"subcategory":"sport","a":"Sled","b":"1F6F7","d":true,"e":true,"f":true,"h":true,"j":["sled","sleigh","luge","toboggan"],"k":[38,27],"o":5},"curling_stone":{"subcategory":"sport","a":"Curling Stone","b":"1F94C","d":true,"e":true,"f":true,"h":true,"j":["curling_stone","sports"],"k":[43,24],"o":5},"dart":{"subcategory":"game","a":"Direct Hit","b":"1F3AF","d":true,"e":true,"f":true,"h":true,"j":["direct_hit","game","play","bar","target","bullseye"],"k":[7,50],"o":0},"yo-yo":{"subcategory":"game","a":"Yo-Yo","b":"1FA80","d":true,"e":true,"f":true,"h":true,"j":["yo_yo","toy"],"k":[54,0],"o":12},"kite":{"subcategory":"game","a":"Kite","b":"1FA81","d":true,"e":true,"f":true,"h":true,"j":["kite","wind","fly"],"k":[54,1],"o":12},"gun":{"subcategory":"game","a":"Pistol","b":"1F52B","d":true,"e":true,"f":true,"h":true,"j":["pistol","violence","weapon","revolver"],"k":[30,8],"o":0},"8ball":{"subcategory":"game","a":"Billiards","b":"1F3B1","d":true,"e":true,"f":true,"h":true,"j":["pool_8_ball","pool","hobby","game","luck","magic"],"k":[7,52],"o":0},"crystal_ball":{"subcategory":"game","a":"Crystal Ball","b":"1F52E","d":true,"e":true,"f":true,"h":true,"j":["crystal_ball","disco","party","magic","circus","fortune_teller"],"k":[30,11],"o":0},"magic_wand":{"subcategory":"game","a":"Magic Wand","b":"1FA84","d":true,"e":true,"f":true,"h":true,"j":["magic wand","supernature","power"],"k":[54,4],"o":13},"video_game":{"subcategory":"game","a":"Video Game","b":"1F3AE","d":true,"e":true,"f":true,"h":true,"j":["video_game","play","console","PS4","controller"],"k":[7,49],"o":0},"joystick":{"subcategory":"game","a":"Joystick","b":"1F579-FE0F","c":"1F579","d":true,"e":true,"f":true,"h":true,"j":["joystick","game","play"],"k":[31,26],"o":0},"slot_machine":{"subcategory":"game","a":"Slot Machine","b":"1F3B0","d":true,"e":true,"f":true,"h":true,"j":["slot_machine","bet","gamble","vegas","fruit machine","luck","casino"],"k":[7,51],"o":0},"game_die":{"subcategory":"game","a":"Game Die","b":"1F3B2","d":true,"e":true,"f":true,"h":true,"j":["game_die","dice","random","tabletop","play","luck"],"k":[7,53],"o":0},"jigsaw":{"subcategory":"game","a":"Jigsaw Puzzle Piece","b":"1F9E9","d":true,"e":true,"f":true,"h":true,"j":["puzzle_piece","interlocking","puzzle","piece"],"k":[53,25],"o":11},"teddy_bear":{"subcategory":"game","a":"Teddy Bear","b":"1F9F8","d":true,"e":true,"f":true,"h":true,"j":["teddy_bear","plush","stuffed"],"k":[53,40],"o":11},"pinata":{"subcategory":"game","a":"Pinata","b":"1FA85","d":true,"e":true,"f":true,"h":true,"j":["pinata","mexico","candy","celebration"],"k":[54,5],"o":13},"mirror_ball":{"subcategory":"game","a":"Mirror Ball","b":"1FAA9","d":true,"e":true,"f":true,"h":true,"j":["mirror ball","disco","dance","party"],"k":[54,34],"o":14},"nesting_dolls":{"subcategory":"game","a":"Nesting Dolls","b":"1FA86","d":true,"e":true,"f":true,"h":true,"j":["nesting dolls","matryoshka","toy"],"k":[54,6],"o":13},"spades":{"subcategory":"game","a":"Black Spade Suit","b":"2660-FE0F","c":"2660","d":true,"e":true,"f":true,"h":true,"j":["spade_suit","poker","cards","suits","magic"],"k":[57,51],"o":0},"hearts":{"subcategory":"game","a":"Black Heart Suit","b":"2665-FE0F","c":"2665","d":true,"e":true,"f":true,"h":true,"j":["heart_suit","poker","cards","magic","suits"],"k":[57,53],"o":0},"diamonds":{"subcategory":"game","a":"Black Diamond Suit","b":"2666-FE0F","c":"2666","d":true,"e":true,"f":true,"h":true,"j":["diamond_suit","poker","cards","magic","suits"],"k":[57,54],"o":0},"clubs":{"subcategory":"game","a":"Black Club Suit","b":"2663-FE0F","c":"2663","d":true,"e":true,"f":true,"h":true,"j":["club_suit","poker","cards","magic","suits"],"k":[57,52],"o":0},"chess_pawn":{"subcategory":"game","a":"Chess Pawn","b":"265F-FE0F","c":"265F","d":true,"e":true,"f":true,"h":true,"j":["chess_pawn","expendable"],"k":[57,50],"o":11},"black_joker":{"subcategory":"game","a":"Playing Card Black Joker","b":"1F0CF","d":true,"e":true,"f":true,"h":true,"j":["joker","poker","cards","game","play","magic"],"k":[0,15],"o":0},"mahjong":{"subcategory":"game","a":"Mahjong Tile Red Dragon","b":"1F004","d":true,"e":true,"f":true,"h":true,"j":["mahjong_red_dragon","game","play","chinese","kanji"],"k":[0,14],"o":0},"flower_playing_cards":{"subcategory":"game","a":"Flower Playing Cards","b":"1F3B4","d":true,"e":true,"f":true,"h":true,"j":["flower_playing_cards","game","sunset","red"],"k":[7,55],"o":0},"performing_arts":{"subcategory":"arts & crafts","a":"Performing Arts","b":"1F3AD","d":true,"e":true,"f":true,"h":true,"j":["performing_arts","acting","theater","drama"],"k":[7,48],"o":0},"frame_with_picture":{"subcategory":"arts & crafts","a":"Framed Picture","b":"1F5BC-FE0F","c":"1F5BC","d":true,"e":true,"f":true,"h":true,"j":["framed_picture","photography"],"k":[32,0],"o":0},"art":{"subcategory":"arts & crafts","a":"Artist Palette","b":"1F3A8","d":true,"e":true,"f":true,"h":true,"j":["artist_palette","design","paint","draw","colors"],"k":[7,43],"o":0},"thread":{"subcategory":"arts & crafts","a":"Spool of Thread","b":"1F9F5","d":true,"e":true,"f":true,"h":true,"j":["thread","needle","sewing","spool","string"],"k":[53,37],"o":11},"sewing_needle":{"subcategory":"arts & crafts","a":"Sewing Needle","b":"1FAA1","d":true,"e":true,"f":true,"h":true,"j":["sewing needle","stitches"],"k":[54,26],"o":13},"yarn":{"subcategory":"arts & crafts","a":"Ball of Yarn","b":"1F9F6","d":true,"e":true,"f":true,"h":true,"j":["yarn","ball","crochet","knit"],"k":[53,38],"o":11},"knot":{"subcategory":"arts & crafts","a":"Knot","b":"1FAA2","d":true,"e":true,"f":true,"h":true,"j":["knot","rope","scout"],"k":[54,27],"o":13},"eyeglasses":{"subcategory":"clothing","a":"Eyeglasses","b":"1F453","d":true,"e":true,"f":true,"h":true,"j":["glasses","fashion","accessories","eyesight","nerdy","dork","geek"],"k":[13,16],"o":0},"dark_sunglasses":{"subcategory":"clothing","a":"Sunglasses","b":"1F576-FE0F","c":"1F576","d":true,"e":true,"f":true,"h":true,"j":["sunglasses","face","cool","accessories"],"k":[31,23],"o":0},"goggles":{"subcategory":"clothing","a":"Goggles","b":"1F97D","d":true,"e":true,"f":true,"h":true,"j":["goggles","eyes","protection","safety"],"k":[44,17],"o":11},"lab_coat":{"subcategory":"clothing","a":"Lab Coat","b":"1F97C","d":true,"e":true,"f":true,"h":true,"j":["lab_coat","doctor","experiment","scientist","chemist"],"k":[44,16],"o":11},"safety_vest":{"subcategory":"clothing","a":"Safety Vest","b":"1F9BA","d":true,"e":true,"f":true,"h":true,"j":["safety_vest","protection"],"k":[45,57],"o":12},"necktie":{"subcategory":"clothing","a":"Necktie","b":"1F454","d":true,"e":true,"f":true,"h":true,"j":["necktie","shirt","suitup","formal","fashion","cloth","business"],"k":[13,17],"o":0},"shirt":{"subcategory":"clothing","a":"T-Shirt","b":"1F455","d":true,"e":true,"f":true,"h":true,"j":["t_shirt","fashion","cloth","casual","shirt","tee"],"k":[13,18],"n":["tshirt"],"o":0},"jeans":{"subcategory":"clothing","a":"Jeans","b":"1F456","d":true,"e":true,"f":true,"h":true,"j":["jeans","fashion","shopping"],"k":[13,19],"o":0},"scarf":{"subcategory":"clothing","a":"Scarf","b":"1F9E3","d":true,"e":true,"f":true,"h":true,"j":["scarf","neck","winter","clothes"],"k":[53,19],"o":5},"gloves":{"subcategory":"clothing","a":"Gloves","b":"1F9E4","d":true,"e":true,"f":true,"h":true,"j":["gloves","hands","winter","clothes"],"k":[53,20],"o":5},"coat":{"subcategory":"clothing","a":"Coat","b":"1F9E5","d":true,"e":true,"f":true,"h":true,"j":["coat","jacket"],"k":[53,21],"o":5},"socks":{"subcategory":"clothing","a":"Socks","b":"1F9E6","d":true,"e":true,"f":true,"h":true,"j":["socks","stockings","clothes"],"k":[53,22],"o":5},"dress":{"subcategory":"clothing","a":"Dress","b":"1F457","d":true,"e":true,"f":true,"h":true,"j":["dress","clothes","fashion","shopping"],"k":[13,20],"o":0},"kimono":{"subcategory":"clothing","a":"Kimono","b":"1F458","d":true,"e":true,"f":true,"h":true,"j":["kimono","dress","fashion","women","female","japanese"],"k":[13,21],"o":0},"sari":{"subcategory":"clothing","a":"Sari","b":"1F97B","d":true,"e":true,"f":true,"h":true,"j":["sari","dress"],"k":[44,15],"o":12},"one-piece_swimsuit":{"subcategory":"clothing","a":"One-Piece Swimsuit","b":"1FA71","d":true,"e":true,"f":true,"h":true,"j":["one_piece_swimsuit","fashion"],"k":[53,49],"o":12},"briefs":{"subcategory":"clothing","a":"Briefs","b":"1FA72","d":true,"e":true,"f":true,"h":true,"j":["briefs","clothing"],"k":[53,50],"o":12},"shorts":{"subcategory":"clothing","a":"Shorts","b":"1FA73","d":true,"e":true,"f":true,"h":true,"j":["shorts","clothing"],"k":[53,51],"o":12},"bikini":{"subcategory":"clothing","a":"Bikini","b":"1F459","d":true,"e":true,"f":true,"h":true,"j":["bikini","swimming","female","woman","girl","fashion","beach","summer"],"k":[13,22],"o":0},"womans_clothes":{"subcategory":"clothing","a":"Womans Clothes","b":"1F45A","d":true,"e":true,"f":true,"h":true,"j":["woman_s_clothes","fashion","shopping_bags","female"],"k":[13,23],"o":0},"folding_hand_fan":{"subcategory":"clothing","a":"Folding Hand Fan","b":"1FAAD","d":true,"e":true,"f":false,"h":false,"j":["folding hand fan","flamenco","hot"],"k":[54,38],"o":15},"purse":{"subcategory":"clothing","a":"Purse","b":"1F45B","d":true,"e":true,"f":true,"h":true,"j":["purse","fashion","accessories","money","sales","shopping"],"k":[13,24],"o":0},"handbag":{"subcategory":"clothing","a":"Handbag","b":"1F45C","d":true,"e":true,"f":true,"h":true,"j":["handbag","fashion","accessory","accessories","shopping"],"k":[13,25],"o":0},"pouch":{"subcategory":"clothing","a":"Pouch","b":"1F45D","d":true,"e":true,"f":true,"h":true,"j":["clutch_bag","bag","accessories","shopping"],"k":[13,26],"o":0},"shopping_bags":{"subcategory":"clothing","a":"Shopping Bags","b":"1F6CD-FE0F","c":"1F6CD","d":true,"e":true,"f":true,"h":true,"j":["shopping_bags","mall","buy","purchase"],"k":[38,0],"o":0},"school_satchel":{"subcategory":"clothing","a":"School Satchel","b":"1F392","d":true,"e":true,"f":true,"h":true,"j":["backpack","student","education","bag"],"k":[7,26],"o":0},"thong_sandal":{"subcategory":"clothing","a":"Thong Sandal","b":"1FA74","d":true,"e":true,"f":true,"h":true,"j":["thong sandal","footwear","summer"],"k":[53,52],"o":13},"mans_shoe":{"subcategory":"clothing","a":"Mans Shoe","b":"1F45E","d":true,"e":true,"f":true,"h":true,"j":["man_s_shoe","fashion","male"],"k":[13,27],"n":["shoe"],"o":0},"athletic_shoe":{"subcategory":"clothing","a":"Athletic Shoe","b":"1F45F","d":true,"e":true,"f":true,"h":true,"j":["running_shoe","shoes","sports","sneakers"],"k":[13,28],"o":0},"hiking_boot":{"subcategory":"clothing","a":"Hiking Boot","b":"1F97E","d":true,"e":true,"f":true,"h":true,"j":["hiking_boot","backpacking","camping","hiking"],"k":[44,18],"o":11},"womans_flat_shoe":{"subcategory":"clothing","a":"Flat Shoe","b":"1F97F","d":true,"e":true,"f":true,"h":true,"j":["flat_shoe","ballet","slip-on","slipper"],"k":[44,19],"o":11},"high_heel":{"subcategory":"clothing","a":"High-Heeled Shoe","b":"1F460","d":true,"e":true,"f":true,"h":true,"j":["high_heeled_shoe","fashion","shoes","female","pumps","stiletto"],"k":[13,29],"o":0},"sandal":{"subcategory":"clothing","a":"Womans Sandal","b":"1F461","d":true,"e":true,"f":true,"h":true,"j":["woman_s_sandal","shoes","fashion","flip flops"],"k":[13,30],"o":0},"ballet_shoes":{"subcategory":"clothing","a":"Ballet Shoes","b":"1FA70","d":true,"e":true,"f":true,"h":true,"j":["ballet_shoes","dance"],"k":[53,48],"o":12},"boot":{"subcategory":"clothing","a":"Womans Boots","b":"1F462","d":true,"e":true,"f":true,"h":true,"j":["woman_s_boot","shoes","fashion"],"k":[13,31],"o":0},"hair_pick":{"subcategory":"clothing","a":"Hair Pick","b":"1FAAE","d":true,"e":true,"f":false,"h":false,"j":["hair pick","afro","comb"],"k":[54,39],"o":15},"crown":{"subcategory":"clothing","a":"Crown","b":"1F451","d":true,"e":true,"f":true,"h":true,"j":["crown","king","kod","leader","royalty","lord"],"k":[13,14],"o":0},"womans_hat":{"subcategory":"clothing","a":"Womans Hat","b":"1F452","d":true,"e":true,"f":true,"h":true,"j":["woman_s_hat","fashion","accessories","female","lady","spring"],"k":[13,15],"o":0},"tophat":{"subcategory":"clothing","a":"Top Hat","b":"1F3A9","d":true,"e":true,"f":true,"h":true,"j":["top_hat","magic","gentleman","classy","circus"],"k":[7,44],"o":0},"mortar_board":{"subcategory":"clothing","a":"Graduation Cap","b":"1F393","d":true,"e":true,"f":true,"h":true,"j":["graduation_cap","school","college","degree","university","graduation","cap","hat","legal","learn","education"],"k":[7,27],"o":0},"billed_cap":{"subcategory":"clothing","a":"Billed Cap","b":"1F9E2","d":true,"e":true,"f":true,"h":true,"j":["billed_cap","cap","baseball"],"k":[53,18],"o":5},"military_helmet":{"subcategory":"clothing","a":"Military Helmet","b":"1FA96","d":true,"e":true,"f":true,"h":true,"j":["military helmet","army","protection"],"k":[54,15],"o":13},"helmet_with_white_cross":{"subcategory":"clothing","a":"Rescue Worker’s Helmet","b":"26D1-FE0F","c":"26D1","d":true,"e":true,"f":true,"h":true,"j":["rescue_worker_s_helmet","construction","build"],"k":[58,21],"o":0},"prayer_beads":{"subcategory":"clothing","a":"Prayer Beads","b":"1F4FF","d":true,"e":true,"f":true,"h":true,"j":["prayer_beads","dhikr","religious"],"k":[29,25],"o":1},"lipstick":{"subcategory":"clothing","a":"Lipstick","b":"1F484","d":true,"e":true,"f":true,"h":true,"j":["lipstick","female","girl","fashion","woman"],"k":[25,53],"o":0},"ring":{"subcategory":"clothing","a":"Ring","b":"1F48D","d":true,"e":true,"f":true,"h":true,"j":["ring","wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"k":[26,40],"o":0},"gem":{"subcategory":"clothing","a":"Gem Stone","b":"1F48E","d":true,"e":true,"f":true,"h":true,"j":["gem_stone","blue","ruby","diamond","jewelry"],"k":[26,41],"o":0},"mute":{"subcategory":"sound","a":"Speaker with Cancellation Stroke","b":"1F507","d":true,"e":true,"f":true,"h":true,"j":["muted_speaker","sound","volume","silence","quiet"],"k":[29,33],"o":1},"speaker":{"subcategory":"sound","a":"Speaker","b":"1F508","d":true,"e":true,"f":true,"h":true,"j":["speaker_low_volume","sound","volume","silence","broadcast"],"k":[29,34],"o":0},"sound":{"subcategory":"sound","a":"Speaker with One Sound Wave","b":"1F509","d":true,"e":true,"f":true,"h":true,"j":["speaker_medium_volume","volume","speaker","broadcast"],"k":[29,35],"o":1},"loud_sound":{"subcategory":"sound","a":"Speaker with Three Sound Waves","b":"1F50A","d":true,"e":true,"f":true,"h":true,"j":["speaker_high_volume","volume","noise","noisy","speaker","broadcast"],"k":[29,36],"o":0},"loudspeaker":{"subcategory":"sound","a":"Public Address Loudspeaker","b":"1F4E2","d":true,"e":true,"f":true,"h":true,"j":["loudspeaker","volume","sound"],"k":[28,58],"o":0},"mega":{"subcategory":"sound","a":"Cheering Megaphone","b":"1F4E3","d":true,"e":true,"f":true,"h":true,"j":["megaphone","sound","speaker","volume"],"k":[28,59],"o":0},"postal_horn":{"subcategory":"sound","a":"Postal Horn","b":"1F4EF","d":true,"e":true,"f":true,"h":true,"j":["postal_horn","instrument","music"],"k":[29,10],"o":1},"bell":{"subcategory":"sound","a":"Bell","b":"1F514","d":true,"e":true,"f":true,"h":true,"j":["bell","sound","notification","christmas","xmas","chime"],"k":[29,46],"o":0},"no_bell":{"subcategory":"sound","a":"Bell with Cancellation Stroke","b":"1F515","d":true,"e":true,"f":true,"h":true,"j":["bell_with_slash","sound","volume","mute","quiet","silent"],"k":[29,47],"o":1},"musical_score":{"subcategory":"music","a":"Musical Score","b":"1F3BC","d":true,"e":true,"f":true,"h":true,"j":["musical_score","treble","clef","compose"],"k":[8,2],"o":0},"musical_note":{"subcategory":"music","a":"Musical Note","b":"1F3B5","d":true,"e":true,"f":true,"h":true,"j":["musical_note","score","tone","sound"],"k":[7,56],"o":0},"notes":{"subcategory":"music","a":"Multiple Musical Notes","b":"1F3B6","d":true,"e":true,"f":true,"h":true,"j":["musical_notes","music","score"],"k":[7,57],"o":0},"studio_microphone":{"subcategory":"music","a":"Studio Microphone","b":"1F399-FE0F","c":"1F399","d":true,"e":true,"f":true,"h":true,"j":["studio_microphone","sing","recording","artist","talkshow"],"k":[7,30],"o":0},"level_slider":{"subcategory":"music","a":"Level Slider","b":"1F39A-FE0F","c":"1F39A","d":true,"e":true,"f":true,"h":true,"j":["level_slider","scale"],"k":[7,31],"o":0},"control_knobs":{"subcategory":"music","a":"Control Knobs","b":"1F39B-FE0F","c":"1F39B","d":true,"e":true,"f":true,"h":true,"j":["control_knobs","dial"],"k":[7,32],"o":0},"microphone":{"subcategory":"music","a":"Microphone","b":"1F3A4","d":true,"e":true,"f":true,"h":true,"j":["microphone","sound","music","PA","sing","talkshow"],"k":[7,39],"o":0},"headphones":{"subcategory":"music","a":"Headphone","b":"1F3A7","d":true,"e":true,"f":true,"h":true,"j":["headphone","music","score","gadgets"],"k":[7,42],"o":0},"radio":{"subcategory":"music","a":"Radio","b":"1F4FB","d":true,"e":true,"f":true,"h":true,"j":["radio","communication","music","podcast","program"],"k":[29,22],"o":0},"saxophone":{"subcategory":"musical-instrument","a":"Saxophone","b":"1F3B7","d":true,"e":true,"f":true,"h":true,"j":["saxophone","music","instrument","jazz","blues"],"k":[7,58],"o":0},"accordion":{"subcategory":"musical-instrument","a":"Accordion","b":"1FA97","d":true,"e":true,"f":true,"h":true,"j":["accordion","music"],"k":[54,16],"o":13},"guitar":{"subcategory":"musical-instrument","a":"Guitar","b":"1F3B8","d":true,"e":true,"f":true,"h":true,"j":["guitar","music","instrument"],"k":[7,59],"o":0},"musical_keyboard":{"subcategory":"musical-instrument","a":"Musical Keyboard","b":"1F3B9","d":true,"e":true,"f":true,"h":true,"j":["musical_keyboard","piano","instrument","compose"],"k":[7,60],"o":0},"trumpet":{"subcategory":"musical-instrument","a":"Trumpet","b":"1F3BA","d":true,"e":true,"f":true,"h":true,"j":["trumpet","music","brass"],"k":[8,0],"o":0},"violin":{"subcategory":"musical-instrument","a":"Violin","b":"1F3BB","d":true,"e":true,"f":true,"h":true,"j":["violin","music","instrument","orchestra","symphony"],"k":[8,1],"o":0},"banjo":{"subcategory":"musical-instrument","a":"Banjo","b":"1FA95","d":true,"e":true,"f":true,"h":true,"j":["banjo","music","instructment"],"k":[54,14],"o":12},"drum_with_drumsticks":{"subcategory":"musical-instrument","a":"Drum with Drumsticks","b":"1F941","d":true,"e":true,"f":true,"h":true,"j":["drum","music","instrument","drumsticks","snare"],"k":[43,14],"o":3},"long_drum":{"subcategory":"musical-instrument","a":"Long Drum","b":"1FA98","d":true,"e":true,"f":true,"h":true,"j":["long drum","music"],"k":[54,17],"o":13},"maracas":{"subcategory":"musical-instrument","a":"Maracas","b":"1FA87","d":true,"e":true,"f":false,"h":false,"j":["maracas","music","instrument","percussion"],"k":[54,7],"o":15},"flute":{"subcategory":"musical-instrument","a":"Flute","b":"1FA88","d":true,"e":true,"f":false,"h":false,"j":["flute","bamboo","music","instrument","pied piper"],"k":[54,8],"o":15},"iphone":{"subcategory":"phone","a":"Mobile Phone","b":"1F4F1","d":true,"e":true,"f":true,"h":true,"j":["mobile_phone","technology","apple","gadgets","dial"],"k":[29,12],"o":0},"calling":{"subcategory":"phone","a":"Mobile Phone with Rightwards Arrow at Left","b":"1F4F2","d":true,"e":true,"f":true,"h":true,"j":["mobile_phone_with_arrow","iphone","incoming"],"k":[29,13],"o":0},"phone":{"subcategory":"phone","a":"Black Telephone","b":"260E-FE0F","c":"260E","d":true,"e":true,"f":true,"h":true,"j":["telephone","technology","communication","dial"],"k":[57,15],"n":["telephone"],"o":0},"telephone_receiver":{"subcategory":"phone","a":"Telephone Receiver","b":"1F4DE","d":true,"e":true,"f":true,"h":true,"j":["telephone_receiver","technology","communication","dial"],"k":[28,54],"o":0},"pager":{"subcategory":"phone","a":"Pager","b":"1F4DF","d":true,"e":true,"f":true,"h":true,"j":["pager","bbcall","oldschool","90s"],"k":[28,55],"o":0},"fax":{"subcategory":"phone","a":"Fax Machine","b":"1F4E0","d":true,"e":true,"f":true,"h":true,"j":["fax_machine","communication","technology"],"k":[28,56],"o":0},"battery":{"subcategory":"computer","a":"Battery","b":"1F50B","d":true,"e":true,"f":true,"h":true,"j":["battery","power","energy","sustain"],"k":[29,37],"o":0},"low_battery":{"subcategory":"computer","a":"Low Battery","b":"1FAAB","d":true,"e":true,"f":true,"h":true,"j":["low battery","drained","dead"],"k":[54,36],"o":14},"electric_plug":{"subcategory":"computer","a":"Electric Plug","b":"1F50C","d":true,"e":true,"f":true,"h":true,"j":["electric_plug","charger","power"],"k":[29,38],"o":0},"computer":{"subcategory":"computer","a":"Personal Computer","b":"1F4BB","d":true,"e":true,"f":true,"h":true,"j":["laptop","technology","screen","display","monitor"],"k":[28,19],"o":0},"desktop_computer":{"subcategory":"computer","a":"Desktop Computer","b":"1F5A5-FE0F","c":"1F5A5","d":true,"e":true,"f":true,"h":true,"j":["desktop_computer","technology","computing","screen"],"k":[31,57],"o":0},"printer":{"subcategory":"computer","a":"Printer","b":"1F5A8-FE0F","c":"1F5A8","d":true,"e":true,"f":true,"h":true,"j":["printer","paper","ink"],"k":[31,58],"o":0},"keyboard":{"subcategory":"computer","a":"Keyboard","b":"2328-FE0F","c":"2328","d":true,"e":true,"f":true,"h":true,"j":["keyboard","technology","computer","type","input","text"],"k":[56,46],"o":1},"three_button_mouse":{"subcategory":"computer","a":"Computer Mouse","b":"1F5B1-FE0F","c":"1F5B1","d":true,"e":true,"f":true,"h":true,"j":["computer_mouse","click"],"k":[31,59],"o":0},"trackball":{"subcategory":"computer","a":"Trackball","b":"1F5B2-FE0F","c":"1F5B2","d":true,"e":true,"f":true,"h":true,"j":["trackball","technology","trackpad"],"k":[31,60],"o":0},"minidisc":{"subcategory":"computer","a":"Minidisc","b":"1F4BD","d":true,"e":true,"f":true,"h":true,"j":["computer_disk","technology","record","data","disk","90s"],"k":[28,21],"o":0},"floppy_disk":{"subcategory":"computer","a":"Floppy Disk","b":"1F4BE","d":true,"e":true,"f":true,"h":true,"j":["floppy_disk","oldschool","technology","save","90s","80s"],"k":[28,22],"o":0},"cd":{"subcategory":"computer","a":"Optical Disc","b":"1F4BF","d":true,"e":true,"f":true,"h":true,"j":["optical_disk","technology","dvd","disk","disc","90s"],"k":[28,23],"o":0},"dvd":{"subcategory":"computer","a":"Dvd","b":"1F4C0","d":true,"e":true,"f":true,"h":true,"j":["dvd","cd","disk","disc"],"k":[28,24],"o":0},"abacus":{"subcategory":"computer","a":"Abacus","b":"1F9EE","d":true,"e":true,"f":true,"h":true,"j":["abacus","calculation"],"k":[53,30],"o":11},"movie_camera":{"subcategory":"light & video","a":"Movie Camera","b":"1F3A5","d":true,"e":true,"f":true,"h":true,"j":["movie_camera","film","record"],"k":[7,40],"o":0},"film_frames":{"subcategory":"light & video","a":"Film Frames","b":"1F39E-FE0F","c":"1F39E","d":true,"e":true,"f":true,"h":true,"j":["film_frames","movie"],"k":[7,33],"o":0},"film_projector":{"subcategory":"light & video","a":"Film Projector","b":"1F4FD-FE0F","c":"1F4FD","d":true,"e":true,"f":true,"h":true,"j":["film_projector","video","tape","record","movie"],"k":[29,24],"o":0},"clapper":{"subcategory":"light & video","a":"Clapper Board","b":"1F3AC","d":true,"e":true,"f":true,"h":true,"j":["clapper_board","movie","film","record"],"k":[7,47],"o":0},"tv":{"subcategory":"light & video","a":"Television","b":"1F4FA","d":true,"e":true,"f":true,"h":true,"j":["television","technology","program","oldschool","show"],"k":[29,21],"o":0},"camera":{"subcategory":"light & video","a":"Camera","b":"1F4F7","d":true,"e":true,"f":true,"h":true,"j":["camera","gadgets","photography"],"k":[29,18],"o":0},"camera_with_flash":{"subcategory":"light & video","a":"Camera with Flash","b":"1F4F8","d":true,"e":true,"f":true,"h":true,"j":["camera_with_flash","photography","gadgets"],"k":[29,19],"o":1},"video_camera":{"subcategory":"light & video","a":"Video Camera","b":"1F4F9","d":true,"e":true,"f":true,"h":true,"j":["video_camera","film","record"],"k":[29,20],"o":0},"vhs":{"subcategory":"light & video","a":"Videocassette","b":"1F4FC","d":true,"e":true,"f":true,"h":true,"j":["videocassette","record","video","oldschool","90s","80s"],"k":[29,23],"o":0},"mag":{"subcategory":"light & video","a":"Left-Pointing Magnifying Glass","b":"1F50D","d":true,"e":true,"f":true,"h":true,"j":["magnifying_glass_tilted_left","search","zoom","find","detective"],"k":[29,39],"o":0},"mag_right":{"subcategory":"light & video","a":"Right-Pointing Magnifying Glass","b":"1F50E","d":true,"e":true,"f":true,"h":true,"j":["magnifying_glass_tilted_right","search","zoom","find","detective"],"k":[29,40],"o":0},"candle":{"subcategory":"light & video","a":"Candle","b":"1F56F-FE0F","c":"1F56F","d":true,"e":true,"f":true,"h":true,"j":["candle","fire","wax"],"k":[30,57],"o":0},"bulb":{"subcategory":"light & video","a":"Electric Light Bulb","b":"1F4A1","d":true,"e":true,"f":true,"h":true,"j":["light_bulb","light","electricity","idea"],"k":[27,49],"o":0},"flashlight":{"subcategory":"light & video","a":"Electric Torch","b":"1F526","d":true,"e":true,"f":true,"h":true,"j":["flashlight","dark","camping","sight","night"],"k":[30,3],"o":0},"izakaya_lantern":{"subcategory":"light & video","a":"Izakaya Lantern","b":"1F3EE","d":true,"e":true,"f":true,"h":true,"j":["red_paper_lantern","light","paper","halloween","spooky"],"k":[10,25],"n":["lantern"],"o":0},"diya_lamp":{"subcategory":"light & video","a":"Diya Lamp","b":"1FA94","d":true,"e":true,"f":true,"h":true,"j":["diya_lamp","lighting"],"k":[54,13],"o":12},"notebook_with_decorative_cover":{"subcategory":"book-paper","a":"Notebook with Decorative Cover","b":"1F4D4","d":true,"e":true,"f":true,"h":true,"j":["notebook_with_decorative_cover","classroom","notes","record","paper","study"],"k":[28,44],"o":0},"closed_book":{"subcategory":"book-paper","a":"Closed Book","b":"1F4D5","d":true,"e":true,"f":true,"h":true,"j":["closed_book","read","library","knowledge","textbook","learn"],"k":[28,45],"o":0},"book":{"subcategory":"book-paper","a":"Open Book","b":"1F4D6","d":true,"e":true,"f":true,"h":true,"j":["open_book","book","read","library","knowledge","literature","learn","study"],"k":[28,46],"n":["open_book"],"o":0},"green_book":{"subcategory":"book-paper","a":"Green Book","b":"1F4D7","d":true,"e":true,"f":true,"h":true,"j":["green_book","read","library","knowledge","study"],"k":[28,47],"o":0},"blue_book":{"subcategory":"book-paper","a":"Blue Book","b":"1F4D8","d":true,"e":true,"f":true,"h":true,"j":["blue_book","read","library","knowledge","learn","study"],"k":[28,48],"o":0},"orange_book":{"subcategory":"book-paper","a":"Orange Book","b":"1F4D9","d":true,"e":true,"f":true,"h":true,"j":["orange_book","read","library","knowledge","textbook","study"],"k":[28,49],"o":0},"books":{"subcategory":"book-paper","a":"Books","b":"1F4DA","d":true,"e":true,"f":true,"h":true,"j":["books","literature","library","study"],"k":[28,50],"o":0},"notebook":{"subcategory":"book-paper","a":"Notebook","b":"1F4D3","d":true,"e":true,"f":true,"h":true,"j":["notebook","stationery","record","notes","paper","study"],"k":[28,43],"o":0},"ledger":{"subcategory":"book-paper","a":"Ledger","b":"1F4D2","d":true,"e":true,"f":true,"h":true,"j":["ledger","notes","paper"],"k":[28,42],"o":0},"page_with_curl":{"subcategory":"book-paper","a":"Page with Curl","b":"1F4C3","d":true,"e":true,"f":true,"h":true,"j":["page_with_curl","documents","office","paper"],"k":[28,27],"o":0},"scroll":{"subcategory":"book-paper","a":"Scroll","b":"1F4DC","d":true,"e":true,"f":true,"h":true,"j":["scroll","documents","ancient","history","paper"],"k":[28,52],"o":0},"page_facing_up":{"subcategory":"book-paper","a":"Page Facing Up","b":"1F4C4","d":true,"e":true,"f":true,"h":true,"j":["page_facing_up","documents","office","paper","information"],"k":[28,28],"o":0},"newspaper":{"subcategory":"book-paper","a":"Newspaper","b":"1F4F0","d":true,"e":true,"f":true,"h":true,"j":["newspaper","press","headline"],"k":[29,11],"o":0},"rolled_up_newspaper":{"subcategory":"book-paper","a":"Rolled-Up Newspaper","b":"1F5DE-FE0F","c":"1F5DE","d":true,"e":true,"f":true,"h":true,"j":["rolled_up_newspaper","press","headline"],"k":[32,9],"o":0},"bookmark_tabs":{"subcategory":"book-paper","a":"Bookmark Tabs","b":"1F4D1","d":true,"e":true,"f":true,"h":true,"j":["bookmark_tabs","favorite","save","order","tidy"],"k":[28,41],"o":0},"bookmark":{"subcategory":"book-paper","a":"Bookmark","b":"1F516","d":true,"e":true,"f":true,"h":true,"j":["bookmark","favorite","label","save"],"k":[29,48],"o":0},"label":{"subcategory":"book-paper","a":"Label","b":"1F3F7-FE0F","c":"1F3F7","d":true,"e":true,"f":true,"h":true,"j":["label","sale","tag"],"k":[10,37],"o":0},"moneybag":{"subcategory":"money","a":"Money Bag","b":"1F4B0","d":true,"e":true,"f":true,"h":true,"j":["money_bag","dollar","payment","coins","sale"],"k":[28,8],"o":0},"coin":{"subcategory":"money","a":"Coin","b":"1FA99","d":true,"e":true,"f":true,"h":true,"j":["coin","money","currency"],"k":[54,18],"o":13},"yen":{"subcategory":"money","a":"Banknote with Yen Sign","b":"1F4B4","d":true,"e":true,"f":true,"h":true,"j":["yen_banknote","money","sales","japanese","dollar","currency"],"k":[28,12],"o":0},"dollar":{"subcategory":"money","a":"Banknote with Dollar Sign","b":"1F4B5","d":true,"e":true,"f":true,"h":true,"j":["dollar_banknote","money","sales","bill","currency"],"k":[28,13],"o":0},"euro":{"subcategory":"money","a":"Banknote with Euro Sign","b":"1F4B6","d":true,"e":true,"f":true,"h":true,"j":["euro_banknote","money","sales","dollar","currency"],"k":[28,14],"o":1},"pound":{"subcategory":"money","a":"Banknote with Pound Sign","b":"1F4B7","d":true,"e":true,"f":true,"h":true,"j":["pound_banknote","british","sterling","money","sales","bills","uk","england","currency"],"k":[28,15],"o":1},"money_with_wings":{"subcategory":"money","a":"Money with Wings","b":"1F4B8","d":true,"e":true,"f":true,"h":true,"j":["money_with_wings","dollar","bills","payment","sale"],"k":[28,16],"o":0},"credit_card":{"subcategory":"money","a":"Credit Card","b":"1F4B3","d":true,"e":true,"f":true,"h":true,"j":["credit_card","money","sales","dollar","bill","payment","shopping"],"k":[28,11],"o":0},"receipt":{"subcategory":"money","a":"Receipt","b":"1F9FE","d":true,"e":true,"f":true,"h":true,"j":["receipt","accounting","expenses"],"k":[53,46],"o":11},"chart":{"subcategory":"money","a":"Chart with Upwards Trend and Yen Sign","b":"1F4B9","d":true,"e":true,"f":true,"h":true,"j":["chart_increasing_with_yen","green-square","graph","presentation","stats"],"k":[28,17],"o":0},"email":{"subcategory":"mail","a":"Envelope","b":"2709-FE0F","c":"2709","d":true,"e":true,"f":true,"h":true,"j":["envelope","letter","postal","inbox","communication"],"k":[58,57],"n":["envelope"],"o":0},"e-mail":{"subcategory":"mail","a":"E-Mail Symbol","b":"1F4E7","d":true,"e":true,"f":true,"h":true,"j":["e_mail","communication","inbox"],"k":[29,2],"o":0},"incoming_envelope":{"subcategory":"mail","a":"Incoming Envelope","b":"1F4E8","d":true,"e":true,"f":true,"h":true,"j":["incoming_envelope","email","inbox"],"k":[29,3],"o":0},"envelope_with_arrow":{"subcategory":"mail","a":"Envelope with Downwards Arrow Above","b":"1F4E9","d":true,"e":true,"f":true,"h":true,"j":["envelope_with_arrow","email","communication"],"k":[29,4],"o":0},"outbox_tray":{"subcategory":"mail","a":"Outbox Tray","b":"1F4E4","d":true,"e":true,"f":true,"h":true,"j":["outbox_tray","inbox","email"],"k":[28,60],"o":0},"inbox_tray":{"subcategory":"mail","a":"Inbox Tray","b":"1F4E5","d":true,"e":true,"f":true,"h":true,"j":["inbox_tray","email","documents"],"k":[29,0],"o":0},"package":{"subcategory":"mail","a":"Package","b":"1F4E6","d":true,"e":true,"f":true,"h":true,"j":["package","mail","gift","cardboard","box","moving"],"k":[29,1],"o":0},"mailbox":{"subcategory":"mail","a":"Closed Mailbox with Raised Flag","b":"1F4EB","d":true,"e":true,"f":true,"h":true,"j":["closed_mailbox_with_raised_flag","email","inbox","communication"],"k":[29,6],"o":0},"mailbox_closed":{"subcategory":"mail","a":"Closed Mailbox with Lowered Flag","b":"1F4EA","d":true,"e":true,"f":true,"h":true,"j":["closed_mailbox_with_lowered_flag","email","communication","inbox"],"k":[29,5],"o":0},"mailbox_with_mail":{"subcategory":"mail","a":"Open Mailbox with Raised Flag","b":"1F4EC","d":true,"e":true,"f":true,"h":true,"j":["open_mailbox_with_raised_flag","email","inbox","communication"],"k":[29,7],"o":0},"mailbox_with_no_mail":{"subcategory":"mail","a":"Open Mailbox with Lowered Flag","b":"1F4ED","d":true,"e":true,"f":true,"h":true,"j":["open_mailbox_with_lowered_flag","email","inbox"],"k":[29,8],"o":0},"postbox":{"subcategory":"mail","a":"Postbox","b":"1F4EE","d":true,"e":true,"f":true,"h":true,"j":["postbox","email","letter","envelope"],"k":[29,9],"o":0},"ballot_box_with_ballot":{"subcategory":"mail","a":"Ballot Box with Ballot","b":"1F5F3-FE0F","c":"1F5F3","d":true,"e":true,"f":true,"h":true,"j":["ballot_box_with_ballot","election","vote"],"k":[32,14],"o":0},"pencil2":{"subcategory":"writing","a":"Pencil","b":"270F-FE0F","c":"270F","d":true,"e":true,"f":true,"h":true,"j":["pencil","stationery","write","paper","writing","school","study"],"k":[59,21],"o":0},"black_nib":{"subcategory":"writing","a":"Black Nib","b":"2712-FE0F","c":"2712","d":true,"e":true,"f":true,"h":true,"j":["black_nib","pen","stationery","writing","write"],"k":[59,22],"o":0},"lower_left_fountain_pen":{"subcategory":"writing","a":"Fountain Pen","b":"1F58B-FE0F","c":"1F58B","d":true,"e":true,"f":true,"h":true,"j":["fountain_pen","stationery","writing","write"],"k":[31,35],"o":0},"lower_left_ballpoint_pen":{"subcategory":"writing","a":"Pen","b":"1F58A-FE0F","c":"1F58A","d":true,"e":true,"f":true,"h":true,"j":["pen","stationery","writing","write"],"k":[31,34],"o":0},"lower_left_paintbrush":{"subcategory":"writing","a":"Paintbrush","b":"1F58C-FE0F","c":"1F58C","d":true,"e":true,"f":true,"h":true,"j":["paintbrush","drawing","creativity","art"],"k":[31,36],"o":0},"lower_left_crayon":{"subcategory":"writing","a":"Crayon","b":"1F58D-FE0F","c":"1F58D","d":true,"e":true,"f":true,"h":true,"j":["crayon","drawing","creativity"],"k":[31,37],"o":0},"memo":{"subcategory":"writing","a":"Memo","b":"1F4DD","d":true,"e":true,"f":true,"h":true,"j":["memo","write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"k":[28,53],"n":["pencil"],"o":0},"briefcase":{"subcategory":"office","a":"Briefcase","b":"1F4BC","d":true,"e":true,"f":true,"h":true,"j":["briefcase","business","documents","work","law","legal","job","career"],"k":[28,20],"o":0},"file_folder":{"subcategory":"office","a":"File Folder","b":"1F4C1","d":true,"e":true,"f":true,"h":true,"j":["file_folder","documents","business","office"],"k":[28,25],"o":0},"open_file_folder":{"subcategory":"office","a":"Open File Folder","b":"1F4C2","d":true,"e":true,"f":true,"h":true,"j":["open_file_folder","documents","load"],"k":[28,26],"o":0},"card_index_dividers":{"subcategory":"office","a":"Card Index Dividers","b":"1F5C2-FE0F","c":"1F5C2","d":true,"e":true,"f":true,"h":true,"j":["card_index_dividers","organizing","business","stationery"],"k":[32,1],"o":0},"date":{"subcategory":"office","a":"Calendar","b":"1F4C5","d":true,"e":true,"f":true,"h":true,"j":["calendar","schedule"],"k":[28,29],"o":0},"calendar":{"subcategory":"office","a":"Tear-off Calendar","b":"1F4C6","d":true,"e":true,"f":true,"h":true,"j":["tear_off_calendar","schedule","date","planning"],"k":[28,30],"o":0},"spiral_note_pad":{"subcategory":"office","a":"Spiral Notepad","b":"1F5D2-FE0F","c":"1F5D2","d":true,"e":true,"f":true,"h":true,"j":["spiral_notepad","memo","stationery"],"k":[32,5],"o":0},"spiral_calendar_pad":{"subcategory":"office","a":"Spiral Calendar","b":"1F5D3-FE0F","c":"1F5D3","d":true,"e":true,"f":true,"h":true,"j":["spiral_calendar","date","schedule","planning"],"k":[32,6],"o":0},"card_index":{"subcategory":"office","a":"Card Index","b":"1F4C7","d":true,"e":true,"f":true,"h":true,"j":["card_index","business","stationery"],"k":[28,31],"o":0},"chart_with_upwards_trend":{"subcategory":"office","a":"Chart with Upwards Trend","b":"1F4C8","d":true,"e":true,"f":true,"h":true,"j":["chart_increasing","graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"k":[28,32],"o":0},"chart_with_downwards_trend":{"subcategory":"office","a":"Chart with Downwards Trend","b":"1F4C9","d":true,"e":true,"f":true,"h":true,"j":["chart_decreasing","graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"k":[28,33],"o":0},"bar_chart":{"subcategory":"office","a":"Bar Chart","b":"1F4CA","d":true,"e":true,"f":true,"h":true,"j":["bar_chart","graph","presentation","stats"],"k":[28,34],"o":0},"clipboard":{"subcategory":"office","a":"Clipboard","b":"1F4CB","d":true,"e":true,"f":true,"h":true,"j":["clipboard","stationery","documents"],"k":[28,35],"o":0},"pushpin":{"subcategory":"office","a":"Pushpin","b":"1F4CC","d":true,"e":true,"f":true,"h":true,"j":["pushpin","stationery","mark","here"],"k":[28,36],"o":0},"round_pushpin":{"subcategory":"office","a":"Round Pushpin","b":"1F4CD","d":true,"e":true,"f":true,"h":true,"j":["round_pushpin","stationery","location","map","here"],"k":[28,37],"o":0},"paperclip":{"subcategory":"office","a":"Paperclip","b":"1F4CE","d":true,"e":true,"f":true,"h":true,"j":["paperclip","documents","stationery"],"k":[28,38],"o":0},"linked_paperclips":{"subcategory":"office","a":"Linked Paperclips","b":"1F587-FE0F","c":"1F587","d":true,"e":true,"f":true,"h":true,"j":["linked_paperclips","documents","stationery"],"k":[31,33],"o":0},"straight_ruler":{"subcategory":"office","a":"Straight Ruler","b":"1F4CF","d":true,"e":true,"f":true,"h":true,"j":["straight_ruler","stationery","calculate","length","math","school","drawing","architect","sketch"],"k":[28,39],"o":0},"triangular_ruler":{"subcategory":"office","a":"Triangular Ruler","b":"1F4D0","d":true,"e":true,"f":true,"h":true,"j":["triangular_ruler","stationery","math","architect","sketch"],"k":[28,40],"o":0},"scissors":{"subcategory":"office","a":"Black Scissors","b":"2702-FE0F","c":"2702","d":true,"e":true,"f":true,"h":true,"j":["scissors","stationery","cut"],"k":[58,54],"o":0},"card_file_box":{"subcategory":"office","a":"Card File Box","b":"1F5C3-FE0F","c":"1F5C3","d":true,"e":true,"f":true,"h":true,"j":["card_file_box","business","stationery"],"k":[32,2],"o":0},"file_cabinet":{"subcategory":"office","a":"File Cabinet","b":"1F5C4-FE0F","c":"1F5C4","d":true,"e":true,"f":true,"h":true,"j":["file_cabinet","filing","organizing"],"k":[32,3],"o":0},"wastebasket":{"subcategory":"office","a":"Wastebasket","b":"1F5D1-FE0F","c":"1F5D1","d":true,"e":true,"f":true,"h":true,"j":["wastebasket","bin","trash","rubbish","garbage","toss"],"k":[32,4],"o":0},"lock":{"subcategory":"lock","a":"Lock","b":"1F512","d":true,"e":true,"f":true,"h":true,"j":["locked","security","password","padlock"],"k":[29,44],"o":0},"unlock":{"subcategory":"lock","a":"Open Lock","b":"1F513","d":true,"e":true,"f":true,"h":true,"j":["unlocked","privacy","security"],"k":[29,45],"o":0},"lock_with_ink_pen":{"subcategory":"lock","a":"Lock with Ink Pen","b":"1F50F","d":true,"e":true,"f":true,"h":true,"j":["locked_with_pen","security","secret"],"k":[29,41],"o":0},"closed_lock_with_key":{"subcategory":"lock","a":"Closed Lock with Key","b":"1F510","d":true,"e":true,"f":true,"h":true,"j":["locked_with_key","security","privacy"],"k":[29,42],"o":0},"key":{"subcategory":"lock","a":"Key","b":"1F511","d":true,"e":true,"f":true,"h":true,"j":["key","lock","door","password"],"k":[29,43],"o":0},"old_key":{"subcategory":"lock","a":"Old Key","b":"1F5DD-FE0F","c":"1F5DD","d":true,"e":true,"f":true,"h":true,"j":["old_key","lock","door","password"],"k":[32,8],"o":0},"hammer":{"subcategory":"tool","a":"Hammer","b":"1F528","d":true,"e":true,"f":true,"h":true,"j":["hammer","tools","build","create"],"k":[30,5],"o":0},"axe":{"subcategory":"tool","a":"Axe","b":"1FA93","d":true,"e":true,"f":true,"h":true,"j":["axe","tool","chop","cut"],"k":[54,12],"o":12},"pick":{"subcategory":"tool","a":"Pick","b":"26CF-FE0F","c":"26CF","d":true,"e":true,"f":true,"h":true,"j":["pick","tools","dig"],"k":[58,20],"o":0},"hammer_and_pick":{"subcategory":"tool","a":"Hammer and Pick","b":"2692-FE0F","c":"2692","d":true,"e":true,"f":true,"h":true,"j":["hammer_and_pick","tools","build","create"],"k":[57,59],"o":1},"hammer_and_wrench":{"subcategory":"tool","a":"Hammer and Wrench","b":"1F6E0-FE0F","c":"1F6E0","d":true,"e":true,"f":true,"h":true,"j":["hammer_and_wrench","tools","build","create"],"k":[38,13],"o":0},"dagger_knife":{"subcategory":"tool","a":"Dagger","b":"1F5E1-FE0F","c":"1F5E1","d":true,"e":true,"f":true,"h":true,"j":["dagger","weapon"],"k":[32,10],"o":0},"crossed_swords":{"subcategory":"tool","a":"Crossed Swords","b":"2694-FE0F","c":"2694","d":true,"e":true,"f":true,"h":true,"j":["crossed_swords","weapon"],"k":[58,0],"o":1},"bomb":{"subcategory":"tool","a":"Bomb","b":"1F4A3","d":true,"e":true,"f":true,"h":true,"j":["bomb","boom","explode","explosion","terrorism"],"k":[27,51],"o":0},"boomerang":{"subcategory":"tool","a":"Boomerang","b":"1FA83","d":true,"e":true,"f":true,"h":true,"j":["boomerang","weapon"],"k":[54,3],"o":13},"bow_and_arrow":{"subcategory":"tool","a":"Bow and Arrow","b":"1F3F9","d":true,"e":true,"f":true,"h":true,"j":["bow_and_arrow","sports"],"k":[10,39],"o":1},"shield":{"subcategory":"tool","a":"Shield","b":"1F6E1-FE0F","c":"1F6E1","d":true,"e":true,"f":true,"h":true,"j":["shield","protection","security"],"k":[38,14],"o":0},"carpentry_saw":{"subcategory":"tool","a":"Carpentry Saw","b":"1FA9A","d":true,"e":true,"f":true,"h":true,"j":["carpentry saw","cut","chop"],"k":[54,19],"o":13},"wrench":{"subcategory":"tool","a":"Wrench","b":"1F527","d":true,"e":true,"f":true,"h":true,"j":["wrench","tools","diy","ikea","fix","maintainer"],"k":[30,4],"o":0},"screwdriver":{"subcategory":"tool","a":"Screwdriver","b":"1FA9B","d":true,"e":true,"f":true,"h":true,"j":["screwdriver","tools"],"k":[54,20],"o":13},"nut_and_bolt":{"subcategory":"tool","a":"Nut and Bolt","b":"1F529","d":true,"e":true,"f":true,"h":true,"j":["nut_and_bolt","handy","tools","fix"],"k":[30,6],"o":0},"gear":{"subcategory":"tool","a":"Gear","b":"2699-FE0F","c":"2699","d":true,"e":true,"f":true,"h":true,"j":["gear","cog"],"k":[58,4],"o":1},"compression":{"subcategory":"tool","a":"Clamp","b":"1F5DC-FE0F","c":"1F5DC","d":true,"e":true,"f":true,"h":true,"j":["clamp","tool"],"k":[32,7],"o":0},"scales":{"subcategory":"tool","a":"Balance Scale","b":"2696-FE0F","c":"2696","d":true,"e":true,"f":true,"h":true,"j":["balance_scale","law","fairness","weight"],"k":[58,2],"o":1},"probing_cane":{"subcategory":"tool","a":"Probing Cane","b":"1F9AF","d":true,"e":true,"f":true,"h":true,"j":["probing_cane","accessibility"],"k":[45,6],"o":12},"link":{"subcategory":"tool","a":"Link Symbol","b":"1F517","d":true,"e":true,"f":true,"h":true,"j":["link","rings","url"],"k":[29,49],"o":0},"chains":{"subcategory":"tool","a":"Chains","b":"26D3-FE0F","c":"26D3","d":true,"e":true,"f":true,"h":true,"j":["chains","lock","arrest"],"k":[58,22],"o":0},"hook":{"subcategory":"tool","a":"Hook","b":"1FA9D","d":true,"e":true,"f":true,"h":true,"j":["hook","tools"],"k":[54,22],"o":13},"toolbox":{"subcategory":"tool","a":"Toolbox","b":"1F9F0","d":true,"e":true,"f":true,"h":true,"j":["toolbox","tools","diy","fix","maintainer","mechanic"],"k":[53,32],"o":11},"magnet":{"subcategory":"tool","a":"Magnet","b":"1F9F2","d":true,"e":true,"f":true,"h":true,"j":["magnet","attraction","magnetic"],"k":[53,34],"o":11},"ladder":{"subcategory":"tool","a":"Ladder","b":"1FA9C","d":true,"e":true,"f":true,"h":true,"j":["ladder","tools"],"k":[54,21],"o":13},"alembic":{"subcategory":"science","a":"Alembic","b":"2697-FE0F","c":"2697","d":true,"e":true,"f":true,"h":true,"j":["alembic","distilling","science","experiment","chemistry"],"k":[58,3],"o":1},"test_tube":{"subcategory":"science","a":"Test Tube","b":"1F9EA","d":true,"e":true,"f":true,"h":true,"j":["test_tube","chemistry","experiment","lab","science"],"k":[53,26],"o":11},"petri_dish":{"subcategory":"science","a":"Petri Dish","b":"1F9EB","d":true,"e":true,"f":true,"h":true,"j":["petri_dish","bacteria","biology","culture","lab"],"k":[53,27],"o":11},"dna":{"subcategory":"science","a":"Dna Double Helix","b":"1F9EC","d":true,"e":true,"f":true,"h":true,"j":["dna","biologist","genetics","life"],"k":[53,28],"o":11},"microscope":{"subcategory":"science","a":"Microscope","b":"1F52C","d":true,"e":true,"f":true,"h":true,"j":["microscope","laboratory","experiment","zoomin","science","study"],"k":[30,9],"o":1},"telescope":{"subcategory":"science","a":"Telescope","b":"1F52D","d":true,"e":true,"f":true,"h":true,"j":["telescope","stars","space","zoom","science","astronomy"],"k":[30,10],"o":1},"satellite_antenna":{"subcategory":"science","a":"Satellite Antenna","b":"1F4E1","d":true,"e":true,"f":true,"h":true,"j":["satellite_antenna","communication","future","radio","space"],"k":[28,57],"o":0},"syringe":{"subcategory":"medical","a":"Syringe","b":"1F489","d":true,"e":true,"f":true,"h":true,"j":["syringe","health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"k":[26,36],"o":0},"drop_of_blood":{"subcategory":"medical","a":"Drop of Blood","b":"1FA78","d":true,"e":true,"f":true,"h":true,"j":["drop_of_blood","period","hurt","harm","wound"],"k":[53,56],"o":12},"pill":{"subcategory":"medical","a":"Pill","b":"1F48A","d":true,"e":true,"f":true,"h":true,"j":["pill","health","medicine","doctor","pharmacy","drug"],"k":[26,37],"o":0},"adhesive_bandage":{"subcategory":"medical","a":"Adhesive Bandage","b":"1FA79","d":true,"e":true,"f":true,"h":true,"j":["adhesive_bandage","heal"],"k":[53,57],"o":12},"crutch":{"subcategory":"medical","a":"Crutch","b":"1FA7C","d":true,"e":true,"f":true,"h":true,"j":["crutch","accessibility","assist"],"k":[53,60],"o":14},"stethoscope":{"subcategory":"medical","a":"Stethoscope","b":"1FA7A","d":true,"e":true,"f":true,"h":true,"j":["stethoscope","health"],"k":[53,58],"o":12},"x-ray":{"subcategory":"medical","a":"X-Ray","b":"1FA7B","d":true,"e":true,"f":true,"h":true,"j":["x-ray","skeleton","medicine"],"k":[53,59],"o":14},"door":{"subcategory":"household","a":"Door","b":"1F6AA","d":true,"e":true,"f":true,"h":true,"j":["door","house","entry","exit"],"k":[36,31],"o":0},"elevator":{"subcategory":"household","a":"Elevator","b":"1F6D7","d":true,"e":true,"f":true,"h":true,"j":["elevator","lift"],"k":[38,8],"o":13},"mirror":{"subcategory":"household","a":"Mirror","b":"1FA9E","d":true,"e":true,"f":true,"h":true,"j":["mirror","reflection"],"k":[54,23],"o":13},"window":{"subcategory":"household","a":"Window","b":"1FA9F","d":true,"e":true,"f":true,"h":true,"j":["window","scenery"],"k":[54,24],"o":13},"bed":{"subcategory":"household","a":"Bed","b":"1F6CF-FE0F","c":"1F6CF","d":true,"e":true,"f":true,"h":true,"j":["bed","sleep","rest"],"k":[38,2],"o":0},"couch_and_lamp":{"subcategory":"household","a":"Couch and Lamp","b":"1F6CB-FE0F","c":"1F6CB","d":true,"e":true,"f":true,"h":true,"j":["couch_and_lamp","read","chill"],"k":[37,54],"o":0},"chair":{"subcategory":"household","a":"Chair","b":"1FA91","d":true,"e":true,"f":true,"h":true,"j":["chair","sit","furniture"],"k":[54,10],"o":12},"toilet":{"subcategory":"household","a":"Toilet","b":"1F6BD","d":true,"e":true,"f":true,"h":true,"j":["toilet","restroom","wc","washroom","bathroom","potty"],"k":[37,40],"o":0},"plunger":{"subcategory":"household","a":"Plunger","b":"1FAA0","d":true,"e":true,"f":true,"h":true,"j":["plunger","toilet"],"k":[54,25],"o":13},"shower":{"subcategory":"household","a":"Shower","b":"1F6BF","d":true,"e":true,"f":true,"h":true,"j":["shower","clean","water","bathroom"],"k":[37,42],"o":1},"bathtub":{"subcategory":"household","a":"Bathtub","b":"1F6C1","d":true,"e":true,"f":true,"h":true,"j":["bathtub","clean","shower","bathroom"],"k":[37,49],"o":1},"mouse_trap":{"subcategory":"household","a":"Mouse Trap","b":"1FAA4","d":true,"e":true,"f":true,"h":true,"j":["mouse trap","cheese"],"k":[54,29],"o":13},"razor":{"subcategory":"household","a":"Razor","b":"1FA92","d":true,"e":true,"f":true,"h":true,"j":["razor","cut"],"k":[54,11],"o":12},"lotion_bottle":{"subcategory":"household","a":"Lotion Bottle","b":"1F9F4","d":true,"e":true,"f":true,"h":true,"j":["lotion_bottle","moisturizer","sunscreen"],"k":[53,36],"o":11},"safety_pin":{"subcategory":"household","a":"Safety Pin","b":"1F9F7","d":true,"e":true,"f":true,"h":true,"j":["safety_pin","diaper"],"k":[53,39],"o":11},"broom":{"subcategory":"household","a":"Broom","b":"1F9F9","d":true,"e":true,"f":true,"h":true,"j":["broom","cleaning","sweeping","witch"],"k":[53,41],"o":11},"basket":{"subcategory":"household","a":"Basket","b":"1F9FA","d":true,"e":true,"f":true,"h":true,"j":["basket","laundry"],"k":[53,42],"o":11},"roll_of_paper":{"subcategory":"household","a":"Roll of Paper","b":"1F9FB","d":true,"e":true,"f":true,"h":true,"j":["roll_of_paper","roll"],"k":[53,43],"o":11},"bucket":{"subcategory":"household","a":"Bucket","b":"1FAA3","d":true,"e":true,"f":true,"h":true,"j":["bucket","water","container"],"k":[54,28],"o":13},"soap":{"subcategory":"household","a":"Bar of Soap","b":"1F9FC","d":true,"e":true,"f":true,"h":true,"j":["soap","bar","bathing","cleaning","lather"],"k":[53,44],"o":11},"bubbles":{"subcategory":"household","a":"Bubbles","b":"1FAE7","d":true,"e":true,"f":true,"h":true,"j":["bubbles","soap","fun","carbonation","sparkling"],"k":[55,37],"o":14},"toothbrush":{"subcategory":"household","a":"Toothbrush","b":"1FAA5","d":true,"e":true,"f":true,"h":true,"j":["toothbrush","hygiene","dental"],"k":[54,30],"o":13},"sponge":{"subcategory":"household","a":"Sponge","b":"1F9FD","d":true,"e":true,"f":true,"h":true,"j":["sponge","absorbing","cleaning","porous"],"k":[53,45],"o":11},"fire_extinguisher":{"subcategory":"household","a":"Fire Extinguisher","b":"1F9EF","d":true,"e":true,"f":true,"h":true,"j":["fire_extinguisher","quench"],"k":[53,31],"o":11},"shopping_trolley":{"subcategory":"household","a":"Shopping Trolley","b":"1F6D2","d":true,"e":true,"f":true,"h":true,"j":["shopping_cart","trolley"],"k":[38,5],"o":3},"smoking":{"subcategory":"other-object","a":"Smoking Symbol","b":"1F6AC","d":true,"e":true,"f":true,"h":true,"j":["cigarette","kills","tobacco","joint","smoke"],"k":[36,33],"o":0},"coffin":{"subcategory":"other-object","a":"Coffin","b":"26B0-FE0F","c":"26B0","d":true,"e":true,"f":true,"h":true,"j":["coffin","vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"k":[58,12],"o":1},"headstone":{"subcategory":"other-object","a":"Headstone","b":"1FAA6","d":true,"e":true,"f":true,"h":true,"j":["headstone","death","rip","grave"],"k":[54,31],"o":13},"funeral_urn":{"subcategory":"other-object","a":"Funeral Urn","b":"26B1-FE0F","c":"26B1","d":true,"e":true,"f":true,"h":true,"j":["funeral_urn","dead","die","death","rip","ashes"],"k":[58,13],"o":1},"nazar_amulet":{"subcategory":"other-object","a":"Nazar Amulet","b":"1F9FF","d":true,"e":true,"f":true,"h":true,"j":["nazar_amulet","bead","charm"],"k":[53,47],"o":11},"hamsa":{"subcategory":"other-object","a":"Hamsa","b":"1FAAC","d":true,"e":true,"f":true,"h":true,"j":["hamsa","religion","protection"],"k":[54,37],"o":14},"moyai":{"subcategory":"other-object","a":"Moyai","b":"1F5FF","d":true,"e":true,"f":true,"h":true,"j":["moai","rock","easter island"],"k":[32,20],"o":0},"placard":{"subcategory":"other-object","a":"Placard","b":"1FAA7","d":true,"e":true,"f":true,"h":true,"j":["placard","announcement"],"k":[54,32],"o":13},"identification_card":{"subcategory":"other-object","a":"Identification Card","b":"1FAAA","d":true,"e":true,"f":true,"h":true,"j":["identification card","document"],"k":[54,35],"o":14},"atm":{"subcategory":"transport-sign","a":"Automated Teller Machine","b":"1F3E7","d":true,"e":true,"f":true,"h":true,"j":["atm_sign","money","sales","cash","blue-square","payment","bank"],"k":[10,18],"o":0},"put_litter_in_its_place":{"subcategory":"transport-sign","a":"Put Litter in Its Place Symbol","b":"1F6AE","d":true,"e":true,"f":true,"h":true,"j":["litter_in_bin_sign","blue-square","sign","human","info"],"k":[36,35],"o":1},"potable_water":{"subcategory":"transport-sign","a":"Potable Water Symbol","b":"1F6B0","d":true,"e":true,"f":true,"h":true,"j":["potable_water","blue-square","liquid","restroom","cleaning","faucet"],"k":[36,37],"o":1},"wheelchair":{"subcategory":"transport-sign","a":"Wheelchair Symbol","b":"267F","d":true,"e":true,"f":true,"h":true,"j":["wheelchair_symbol","blue-square","disabled","accessibility"],"k":[57,58],"o":0},"mens":{"subcategory":"transport-sign","a":"Mens Symbol","b":"1F6B9","d":true,"e":true,"f":true,"h":true,"j":["men_s_room","toilet","restroom","wc","blue-square","gender","male"],"k":[37,36],"o":0},"womens":{"subcategory":"transport-sign","a":"Womens Symbol","b":"1F6BA","d":true,"e":true,"f":true,"h":true,"j":["women_s_room","purple-square","woman","female","toilet","loo","restroom","gender"],"k":[37,37],"o":0},"restroom":{"subcategory":"transport-sign","a":"Restroom","b":"1F6BB","d":true,"e":true,"f":true,"h":true,"j":["restroom","blue-square","toilet","refresh","wc","gender"],"k":[37,38],"o":0},"baby_symbol":{"subcategory":"transport-sign","a":"Baby Symbol","b":"1F6BC","d":true,"e":true,"f":true,"h":true,"j":["baby_symbol","orange-square","child"],"k":[37,39],"o":0},"wc":{"subcategory":"transport-sign","a":"Water Closet","b":"1F6BE","d":true,"e":true,"f":true,"h":true,"j":["water_closet","toilet","restroom","blue-square"],"k":[37,41],"o":0},"passport_control":{"subcategory":"transport-sign","a":"Passport Control","b":"1F6C2","d":true,"e":true,"f":true,"h":true,"j":["passport_control","custom","blue-square"],"k":[37,50],"o":1},"customs":{"subcategory":"transport-sign","a":"Customs","b":"1F6C3","d":true,"e":true,"f":true,"h":true,"j":["customs","passport","border","blue-square"],"k":[37,51],"o":1},"baggage_claim":{"subcategory":"transport-sign","a":"Baggage Claim","b":"1F6C4","d":true,"e":true,"f":true,"h":true,"j":["baggage_claim","blue-square","airport","transport"],"k":[37,52],"o":1},"left_luggage":{"subcategory":"transport-sign","a":"Left Luggage","b":"1F6C5","d":true,"e":true,"f":true,"h":true,"j":["left_luggage","blue-square","travel"],"k":[37,53],"o":1},"warning":{"subcategory":"warning","a":"Warning Sign","b":"26A0-FE0F","c":"26A0","d":true,"e":true,"f":true,"h":true,"j":["warning","exclamation","wip","alert","error","problem","issue"],"k":[58,7],"o":0},"children_crossing":{"subcategory":"warning","a":"Children Crossing","b":"1F6B8","d":true,"e":true,"f":true,"h":true,"j":["children_crossing","school","warning","danger","sign","driving","yellow-diamond"],"k":[37,35],"o":1},"no_entry":{"subcategory":"warning","a":"No Entry","b":"26D4","d":true,"e":true,"f":true,"h":true,"j":["no_entry","limit","security","privacy","bad","denied","stop","circle"],"k":[58,23],"o":0},"no_entry_sign":{"subcategory":"warning","a":"No Entry Sign","b":"1F6AB","d":true,"e":true,"f":true,"h":true,"j":["prohibited","forbid","stop","limit","denied","disallow","circle"],"k":[36,32],"o":0},"no_bicycles":{"subcategory":"warning","a":"No Bicycles","b":"1F6B3","d":true,"e":true,"f":true,"h":true,"j":["no_bicycles","no_bikes","bicycle","bike","cyclist","prohibited","circle"],"k":[36,40],"o":1},"no_smoking":{"subcategory":"warning","a":"No Smoking Symbol","b":"1F6AD","d":true,"e":true,"f":true,"h":true,"j":["no_smoking","cigarette","blue-square","smell","smoke"],"k":[36,34],"o":0},"do_not_litter":{"subcategory":"warning","a":"Do Not Litter Symbol","b":"1F6AF","d":true,"e":true,"f":true,"h":true,"j":["no_littering","trash","bin","garbage","circle"],"k":[36,36],"o":1},"non-potable_water":{"subcategory":"warning","a":"Non-Potable Water Symbol","b":"1F6B1","d":true,"e":true,"f":true,"h":true,"j":["non_potable_water","drink","faucet","tap","circle"],"k":[36,38],"o":1},"no_pedestrians":{"subcategory":"warning","a":"No Pedestrians","b":"1F6B7","d":true,"e":true,"f":true,"h":true,"j":["no_pedestrians","rules","crossing","walking","circle"],"k":[37,34],"o":1},"no_mobile_phones":{"subcategory":"warning","a":"No Mobile Phones","b":"1F4F5","d":true,"e":true,"f":true,"h":true,"j":["no_mobile_phones","iphone","mute","circle"],"k":[29,16],"o":1},"underage":{"subcategory":"warning","a":"No One Under Eighteen Symbol","b":"1F51E","d":true,"e":true,"f":true,"h":true,"j":["no_one_under_eighteen","18","drink","pub","night","minor","circle"],"k":[29,56],"o":0},"radioactive_sign":{"subcategory":"warning","a":"Radioactive","b":"2622-FE0F","c":"2622","d":true,"e":true,"f":true,"h":true,"j":["radioactive","nuclear","danger"],"k":[57,27],"o":1},"biohazard_sign":{"subcategory":"warning","a":"Biohazard","b":"2623-FE0F","c":"2623","d":true,"e":true,"f":true,"h":true,"j":["biohazard","danger"],"k":[57,28],"o":1},"arrow_up":{"subcategory":"arrow","a":"Upwards Black Arrow","b":"2B06-FE0F","c":"2B06","d":true,"e":true,"f":true,"h":true,"j":["up_arrow","blue-square","continue","top","direction"],"k":[59,51],"o":0},"arrow_upper_right":{"subcategory":"arrow","a":"North East Arrow","b":"2197-FE0F","c":"2197","d":true,"e":true,"f":true,"h":true,"j":["up_right_arrow","blue-square","point","direction","diagonal","northeast"],"k":[56,39],"o":0},"arrow_right":{"subcategory":"arrow","a":"Black Rightwards Arrow","b":"27A1-FE0F","c":"27A1","d":true,"e":true,"f":true,"h":true,"j":["right_arrow","blue-square","next"],"k":[59,45],"o":0},"arrow_lower_right":{"subcategory":"arrow","a":"South East Arrow","b":"2198-FE0F","c":"2198","d":true,"e":true,"f":true,"h":true,"j":["down_right_arrow","blue-square","direction","diagonal","southeast"],"k":[56,40],"o":0},"arrow_down":{"subcategory":"arrow","a":"Downwards Black Arrow","b":"2B07-FE0F","c":"2B07","d":true,"e":true,"f":true,"h":true,"j":["down_arrow","blue-square","direction","bottom"],"k":[59,52],"o":0},"arrow_lower_left":{"subcategory":"arrow","a":"South West Arrow","b":"2199-FE0F","c":"2199","d":true,"e":true,"f":true,"h":true,"j":["down_left_arrow","blue-square","direction","diagonal","southwest"],"k":[56,41],"o":0},"arrow_left":{"subcategory":"arrow","a":"Leftwards Black Arrow","b":"2B05-FE0F","c":"2B05","d":true,"e":true,"f":true,"h":true,"j":["left_arrow","blue-square","previous","back"],"k":[59,50],"o":0},"arrow_upper_left":{"subcategory":"arrow","a":"North West Arrow","b":"2196-FE0F","c":"2196","d":true,"e":true,"f":true,"h":true,"j":["up_left_arrow","blue-square","point","direction","diagonal","northwest"],"k":[56,38],"o":0},"arrow_up_down":{"subcategory":"arrow","a":"Up Down Arrow","b":"2195-FE0F","c":"2195","d":true,"e":true,"f":true,"h":true,"j":["up_down_arrow","blue-square","direction","way","vertical"],"k":[56,37],"o":0},"left_right_arrow":{"subcategory":"arrow","a":"Left Right Arrow","b":"2194-FE0F","c":"2194","d":true,"e":true,"f":true,"h":true,"j":["left_right_arrow","shape","direction","horizontal","sideways"],"k":[56,36],"o":0},"leftwards_arrow_with_hook":{"subcategory":"arrow","a":"Leftwards Arrow with Hook","b":"21A9-FE0F","c":"21A9","d":true,"e":true,"f":true,"h":true,"j":["right_arrow_curving_left","back","return","blue-square","undo","enter"],"k":[56,42],"o":0},"arrow_right_hook":{"subcategory":"arrow","a":"Rightwards Arrow with Hook","b":"21AA-FE0F","c":"21AA","d":true,"e":true,"f":true,"h":true,"j":["left_arrow_curving_right","blue-square","return","rotate","direction"],"k":[56,43],"o":0},"arrow_heading_up":{"subcategory":"arrow","a":"Arrow Pointing Rightwards Then Curving Upwards","b":"2934-FE0F","c":"2934","d":true,"e":true,"f":true,"h":true,"j":["right_arrow_curving_up","blue-square","direction","top"],"k":[59,48],"o":0},"arrow_heading_down":{"subcategory":"arrow","a":"Arrow Pointing Rightwards Then Curving Downwards","b":"2935-FE0F","c":"2935","d":true,"e":true,"f":true,"h":true,"j":["right_arrow_curving_down","blue-square","direction","bottom"],"k":[59,49],"o":0},"arrows_clockwise":{"subcategory":"arrow","a":"Clockwise Downwards and Upwards Open Circle Arrows","b":"1F503","d":true,"e":true,"f":true,"h":true,"j":["clockwise_vertical_arrows","sync","cycle","round","repeat"],"k":[29,29],"o":0},"arrows_counterclockwise":{"subcategory":"arrow","a":"Anticlockwise Downwards and Upwards Open Circle Arrows","b":"1F504","d":true,"e":true,"f":true,"h":true,"j":["counterclockwise_arrows_button","blue-square","sync","cycle"],"k":[29,30],"o":1},"back":{"subcategory":"arrow","a":"Back with Leftwards Arrow Above","b":"1F519","d":true,"e":true,"f":true,"h":true,"j":["back_arrow","arrow","words","return"],"k":[29,51],"o":0},"end":{"subcategory":"arrow","a":"End with Leftwards Arrow Above","b":"1F51A","d":true,"e":true,"f":true,"h":true,"j":["end_arrow","words","arrow"],"k":[29,52],"o":0},"on":{"subcategory":"arrow","a":"On with Exclamation Mark with Left Right Arrow Above","b":"1F51B","d":true,"e":true,"f":true,"h":true,"j":["on_arrow","arrow","words"],"k":[29,53],"o":0},"soon":{"subcategory":"arrow","a":"Soon with Rightwards Arrow Above","b":"1F51C","d":true,"e":true,"f":true,"h":true,"j":["soon_arrow","arrow","words"],"k":[29,54],"o":0},"top":{"subcategory":"arrow","a":"Top with Upwards Arrow Above","b":"1F51D","d":true,"e":true,"f":true,"h":true,"j":["top_arrow","words","blue-square"],"k":[29,55],"o":0},"place_of_worship":{"subcategory":"religion","a":"Place of Worship","b":"1F6D0","d":true,"e":true,"f":true,"h":true,"j":["place_of_worship","religion","church","temple","prayer"],"k":[38,3],"o":1},"atom_symbol":{"subcategory":"religion","a":"Atom Symbol","b":"269B-FE0F","c":"269B","d":true,"e":true,"f":true,"h":true,"j":["atom_symbol","science","physics","chemistry"],"k":[58,5],"o":1},"om_symbol":{"subcategory":"religion","a":"Om","b":"1F549-FE0F","c":"1F549","d":true,"e":true,"f":true,"h":true,"j":["om","hinduism","buddhism","sikhism","jainism"],"k":[30,27],"o":0},"star_of_david":{"subcategory":"religion","a":"Star of David","b":"2721-FE0F","c":"2721","d":true,"e":true,"f":true,"h":true,"j":["star_of_david","judaism"],"k":[59,26],"o":0},"wheel_of_dharma":{"subcategory":"religion","a":"Wheel of Dharma","b":"2638-FE0F","c":"2638","d":true,"e":true,"f":true,"h":true,"j":["wheel_of_dharma","hinduism","buddhism","sikhism","jainism"],"k":[57,33],"o":0},"yin_yang":{"subcategory":"religion","a":"Yin Yang","b":"262F-FE0F","c":"262F","d":true,"e":true,"f":true,"h":true,"j":["yin_yang","balance"],"k":[57,32],"o":0},"latin_cross":{"subcategory":"religion","a":"Latin Cross","b":"271D-FE0F","c":"271D","d":true,"e":true,"f":true,"h":true,"j":["latin_cross","christianity"],"k":[59,25],"o":0},"orthodox_cross":{"subcategory":"religion","a":"Orthodox Cross","b":"2626-FE0F","c":"2626","d":true,"e":true,"f":true,"h":true,"j":["orthodox_cross","suppedaneum","religion"],"k":[57,29],"o":1},"star_and_crescent":{"subcategory":"religion","a":"Star and Crescent","b":"262A-FE0F","c":"262A","d":true,"e":true,"f":true,"h":true,"j":["star_and_crescent","islam"],"k":[57,30],"o":0},"peace_symbol":{"subcategory":"religion","a":"Peace Symbol","b":"262E-FE0F","c":"262E","d":true,"e":true,"f":true,"h":true,"j":["peace_symbol","hippie"],"k":[57,31],"o":1},"menorah_with_nine_branches":{"subcategory":"religion","a":"Menorah with Nine Branches","b":"1F54E","d":true,"e":true,"f":true,"h":true,"j":["menorah","hanukkah","candles","jewish"],"k":[30,32],"o":1},"six_pointed_star":{"subcategory":"religion","a":"Six Pointed Star with Middle Dot","b":"1F52F","d":true,"e":true,"f":true,"h":true,"j":["dotted_six_pointed_star","purple-square","religion","jewish","hexagram"],"k":[30,12],"o":0},"khanda":{"subcategory":"religion","a":"Khanda","b":"1FAAF","d":true,"e":true,"f":false,"h":false,"j":["khanda","Sikhism","religion"],"k":[54,40],"o":15},"aries":{"subcategory":"zodiac","a":"Aries","b":"2648","d":true,"e":true,"f":true,"h":true,"j":["aries","sign","purple-square","zodiac","astrology"],"k":[57,38],"o":0},"taurus":{"subcategory":"zodiac","a":"Taurus","b":"2649","d":true,"e":true,"f":true,"h":true,"j":["taurus","purple-square","sign","zodiac","astrology"],"k":[57,39],"o":0},"gemini":{"subcategory":"zodiac","a":"Gemini","b":"264A","d":true,"e":true,"f":true,"h":true,"j":["gemini","sign","zodiac","purple-square","astrology"],"k":[57,40],"o":0},"cancer":{"subcategory":"zodiac","a":"Cancer","b":"264B","d":true,"e":true,"f":true,"h":true,"j":["cancer","sign","zodiac","purple-square","astrology"],"k":[57,41],"o":0},"leo":{"subcategory":"zodiac","a":"Leo","b":"264C","d":true,"e":true,"f":true,"h":true,"j":["leo","sign","purple-square","zodiac","astrology"],"k":[57,42],"o":0},"virgo":{"subcategory":"zodiac","a":"Virgo","b":"264D","d":true,"e":true,"f":true,"h":true,"j":["virgo","sign","zodiac","purple-square","astrology"],"k":[57,43],"o":0},"libra":{"subcategory":"zodiac","a":"Libra","b":"264E","d":true,"e":true,"f":true,"h":true,"j":["libra","sign","purple-square","zodiac","astrology"],"k":[57,44],"o":0},"scorpius":{"subcategory":"zodiac","a":"Scorpius","b":"264F","d":true,"e":true,"f":true,"h":true,"j":["scorpio","sign","zodiac","purple-square","astrology"],"k":[57,45],"o":0},"sagittarius":{"subcategory":"zodiac","a":"Sagittarius","b":"2650","d":true,"e":true,"f":true,"h":true,"j":["sagittarius","sign","zodiac","purple-square","astrology"],"k":[57,46],"o":0},"capricorn":{"subcategory":"zodiac","a":"Capricorn","b":"2651","d":true,"e":true,"f":true,"h":true,"j":["capricorn","sign","zodiac","purple-square","astrology"],"k":[57,47],"o":0},"aquarius":{"subcategory":"zodiac","a":"Aquarius","b":"2652","d":true,"e":true,"f":true,"h":true,"j":["aquarius","sign","purple-square","zodiac","astrology"],"k":[57,48],"o":0},"pisces":{"subcategory":"zodiac","a":"Pisces","b":"2653","d":true,"e":true,"f":true,"h":true,"j":["pisces","purple-square","sign","zodiac","astrology"],"k":[57,49],"o":0},"ophiuchus":{"subcategory":"zodiac","a":"Ophiuchus","b":"26CE","d":true,"e":true,"f":true,"h":true,"j":["ophiuchus","sign","purple-square","constellation","astrology"],"k":[58,19],"o":0},"twisted_rightwards_arrows":{"subcategory":"av-symbol","a":"Twisted Rightwards Arrows","b":"1F500","d":true,"e":true,"f":true,"h":true,"j":["shuffle_tracks_button","blue-square","shuffle","music","random"],"k":[29,26],"o":1},"repeat":{"subcategory":"av-symbol","a":"Clockwise Rightwards and Leftwards Open Circle Arrows","b":"1F501","d":true,"e":true,"f":true,"h":true,"j":["repeat_button","loop","record"],"k":[29,27],"o":1},"repeat_one":{"subcategory":"av-symbol","a":"Clockwise Rightwards and Leftwards Open Circle Arrows with Circled One Overlay","b":"1F502","d":true,"e":true,"f":true,"h":true,"j":["repeat_single_button","blue-square","loop"],"k":[29,28],"o":1},"arrow_forward":{"subcategory":"av-symbol","a":"Black Right-Pointing Triangle","b":"25B6-FE0F","c":"25B6","d":true,"e":true,"f":true,"h":true,"j":["play_button","blue-square","right","direction","play"],"k":[57,4],"o":0},"fast_forward":{"subcategory":"av-symbol","a":"Black Right-Pointing Double Triangle","b":"23E9","d":true,"e":true,"f":true,"h":true,"j":["fast_forward_button","blue-square","play","speed","continue"],"k":[56,48],"o":0},"black_right_pointing_double_triangle_with_vertical_bar":{"subcategory":"av-symbol","a":"Next Track Button","b":"23ED-FE0F","c":"23ED","d":true,"e":true,"f":true,"h":true,"j":["next_track_button","forward","next","blue-square"],"k":[56,52],"o":0},"black_right_pointing_triangle_with_double_vertical_bar":{"subcategory":"av-symbol","a":"Play or Pause Button","b":"23EF-FE0F","c":"23EF","d":true,"e":true,"f":true,"h":true,"j":["play_or_pause_button","blue-square","play","pause"],"k":[56,54],"o":1},"arrow_backward":{"subcategory":"av-symbol","a":"Black Left-Pointing Triangle","b":"25C0-FE0F","c":"25C0","d":true,"e":true,"f":true,"h":true,"j":["reverse_button","blue-square","left","direction"],"k":[57,5],"o":0},"rewind":{"subcategory":"av-symbol","a":"Black Left-Pointing Double Triangle","b":"23EA","d":true,"e":true,"f":true,"h":true,"j":["fast_reverse_button","play","blue-square"],"k":[56,49],"o":0},"black_left_pointing_double_triangle_with_vertical_bar":{"subcategory":"av-symbol","a":"Last Track Button","b":"23EE-FE0F","c":"23EE","d":true,"e":true,"f":true,"h":true,"j":["last_track_button","backward"],"k":[56,53],"o":0},"arrow_up_small":{"subcategory":"av-symbol","a":"Up-Pointing Small Red Triangle","b":"1F53C","d":true,"e":true,"f":true,"h":true,"j":["upwards_button","blue-square","triangle","direction","point","forward","top"],"k":[30,25],"o":0},"arrow_double_up":{"subcategory":"av-symbol","a":"Black Up-Pointing Double Triangle","b":"23EB","d":true,"e":true,"f":true,"h":true,"j":["fast_up_button","blue-square","direction","top"],"k":[56,50],"o":0},"arrow_down_small":{"subcategory":"av-symbol","a":"Down-Pointing Small Red Triangle","b":"1F53D","d":true,"e":true,"f":true,"h":true,"j":["downwards_button","blue-square","direction","bottom"],"k":[30,26],"o":0},"arrow_double_down":{"subcategory":"av-symbol","a":"Black Down-Pointing Double Triangle","b":"23EC","d":true,"e":true,"f":true,"h":true,"j":["fast_down_button","blue-square","direction","bottom"],"k":[56,51],"o":0},"double_vertical_bar":{"subcategory":"av-symbol","a":"Pause Button","b":"23F8-FE0F","c":"23F8","d":true,"e":true,"f":true,"h":true,"j":["pause_button","pause","blue-square"],"k":[56,59],"o":0},"black_square_for_stop":{"subcategory":"av-symbol","a":"Stop Button","b":"23F9-FE0F","c":"23F9","d":true,"e":true,"f":true,"h":true,"j":["stop_button","blue-square"],"k":[56,60],"o":0},"black_circle_for_record":{"subcategory":"av-symbol","a":"Record Button","b":"23FA-FE0F","c":"23FA","d":true,"e":true,"f":true,"h":true,"j":["record_button","blue-square"],"k":[57,0],"o":0},"eject":{"subcategory":"av-symbol","a":"Eject Button","b":"23CF-FE0F","c":"23CF","d":true,"e":true,"f":true,"h":true,"j":["eject_button","blue-square"],"k":[56,47],"o":1},"cinema":{"subcategory":"av-symbol","a":"Cinema","b":"1F3A6","d":true,"e":true,"f":true,"h":true,"j":["cinema","blue-square","record","film","movie","curtain","stage","theater"],"k":[7,41],"o":0},"low_brightness":{"subcategory":"av-symbol","a":"Low Brightness Symbol","b":"1F505","d":true,"e":true,"f":true,"h":true,"j":["dim_button","sun","afternoon","warm","summer"],"k":[29,31],"o":1},"high_brightness":{"subcategory":"av-symbol","a":"High Brightness Symbol","b":"1F506","d":true,"e":true,"f":true,"h":true,"j":["bright_button","sun","light"],"k":[29,32],"o":1},"signal_strength":{"subcategory":"av-symbol","a":"Antenna with Bars","b":"1F4F6","d":true,"e":true,"f":true,"h":true,"j":["antenna_bars","blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"k":[29,17],"o":0},"wireless":{"subcategory":"av-symbol","a":"Wireless","b":"1F6DC","d":true,"e":true,"f":false,"h":false,"j":["wireless","wifi","internet","contactless","signal"],"k":[38,9],"o":15},"vibration_mode":{"subcategory":"av-symbol","a":"Vibration Mode","b":"1F4F3","d":true,"e":true,"f":true,"h":true,"j":["vibration_mode","orange-square","phone"],"k":[29,14],"o":0},"mobile_phone_off":{"subcategory":"av-symbol","a":"Mobile Phone off","b":"1F4F4","d":true,"e":true,"f":true,"h":true,"j":["mobile_phone_off","mute","orange-square","silence","quiet"],"k":[29,15],"o":0},"female_sign":{"subcategory":"gender","a":"Female Sign","b":"2640-FE0F","c":"2640","d":false,"e":true,"f":true,"h":true,"j":["female_sign","woman","women","lady","girl"],"k":[57,36],"o":4},"male_sign":{"subcategory":"gender","a":"Male Sign","b":"2642-FE0F","c":"2642","d":false,"e":true,"f":true,"h":true,"j":["male_sign","man","boy","men"],"k":[57,37],"o":4},"transgender_symbol":{"subcategory":"gender","a":"Transgender Symbol","b":"26A7-FE0F","c":"26A7","d":true,"e":true,"f":true,"h":true,"j":["transgender symbol","transgender","lgbtq"],"k":[58,9],"o":13},"heavy_multiplication_x":{"subcategory":"math","a":"Heavy Multiplication X","b":"2716-FE0F","c":"2716","d":true,"e":true,"f":true,"h":true,"j":["multiplication_sign","math","calculation"],"k":[59,24],"o":0},"heavy_plus_sign":{"subcategory":"math","a":"Heavy Plus Sign","b":"2795","d":true,"e":true,"f":true,"h":true,"j":["plus_sign","math","calculation","addition","more","increase"],"k":[59,42],"o":0},"heavy_minus_sign":{"subcategory":"math","a":"Heavy Minus Sign","b":"2796","d":true,"e":true,"f":true,"h":true,"j":["minus_sign","math","calculation","subtract","less"],"k":[59,43],"o":0},"heavy_division_sign":{"subcategory":"math","a":"Heavy Division Sign","b":"2797","d":true,"e":true,"f":true,"h":true,"j":["division_sign","divide","math","calculation"],"k":[59,44],"o":0},"heavy_equals_sign":{"subcategory":"math","a":"Heavy Equals Sign","b":"1F7F0","d":true,"e":true,"f":true,"h":true,"j":["heavy equals sign","math"],"k":[38,45],"o":14},"infinity":{"subcategory":"math","a":"Infinity","b":"267E-FE0F","c":"267E","d":true,"e":true,"f":true,"h":true,"j":["infinity","forever"],"k":[57,57],"o":11},"bangbang":{"subcategory":"punctuation","a":"Double Exclamation Mark","b":"203C-FE0F","c":"203C","d":true,"e":true,"f":true,"h":true,"j":["double_exclamation_mark","exclamation","surprise"],"k":[56,32],"o":0},"interrobang":{"subcategory":"punctuation","a":"Exclamation Question Mark","b":"2049-FE0F","c":"2049","d":true,"e":true,"f":true,"h":true,"j":["exclamation_question_mark","wat","punctuation","surprise"],"k":[56,33],"o":0},"question":{"subcategory":"punctuation","a":"Black Question Mark Ornament","b":"2753","d":true,"e":true,"f":true,"h":true,"j":["question_mark","doubt","confused"],"k":[59,34],"o":0},"grey_question":{"subcategory":"punctuation","a":"White Question Mark Ornament","b":"2754","d":true,"e":true,"f":true,"h":true,"j":["white_question_mark","doubts","gray","huh","confused"],"k":[59,35],"o":0},"grey_exclamation":{"subcategory":"punctuation","a":"White Exclamation Mark Ornament","b":"2755","d":true,"e":true,"f":true,"h":true,"j":["white_exclamation_mark","surprise","punctuation","gray","wow","warning"],"k":[59,36],"o":0},"exclamation":{"subcategory":"punctuation","a":"Heavy Exclamation Mark Symbol","b":"2757","d":true,"e":true,"f":true,"h":true,"j":["exclamation_mark","heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"k":[59,37],"n":["heavy_exclamation_mark"],"o":0},"wavy_dash":{"subcategory":"punctuation","a":"Wavy Dash","b":"3030-FE0F","c":"3030","d":true,"e":true,"f":true,"h":true,"j":["wavy_dash","draw","line","moustache","mustache","squiggle","scribble"],"k":[59,57],"o":0},"currency_exchange":{"subcategory":"currency","a":"Currency Exchange","b":"1F4B1","d":true,"e":true,"f":true,"h":true,"j":["currency_exchange","money","sales","dollar","travel"],"k":[28,9],"o":0},"heavy_dollar_sign":{"subcategory":"currency","a":"Heavy Dollar Sign","b":"1F4B2","d":true,"e":true,"f":true,"h":true,"j":["heavy_dollar_sign","money","sales","payment","currency","buck"],"k":[28,10],"o":0},"medical_symbol":{"subcategory":"other-symbol","a":"Medical Symbol","b":"2695-FE0F","c":"2695","d":false,"e":true,"f":true,"h":true,"j":["medical_symbol","health","hospital"],"k":[58,1],"n":["staff_of_aesculapius"],"o":4},"recycle":{"subcategory":"other-symbol","a":"Black Universal Recycling Symbol","b":"267B-FE0F","c":"267B","d":true,"e":true,"f":true,"h":true,"j":["recycling_symbol","arrow","environment","garbage","trash"],"k":[57,56],"o":0},"fleur_de_lis":{"subcategory":"other-symbol","a":"Fleur-De-Lis","b":"269C-FE0F","c":"269C","d":true,"e":true,"f":true,"h":true,"j":["fleur_de_lis","decorative","scout"],"k":[58,6],"o":1},"trident":{"subcategory":"other-symbol","a":"Trident Emblem","b":"1F531","d":true,"e":true,"f":true,"h":true,"j":["trident_emblem","weapon","spear"],"k":[30,14],"o":0},"name_badge":{"subcategory":"other-symbol","a":"Name Badge","b":"1F4DB","d":true,"e":true,"f":true,"h":true,"j":["name_badge","fire","forbid"],"k":[28,51],"o":0},"beginner":{"subcategory":"other-symbol","a":"Japanese Symbol for Beginner","b":"1F530","d":true,"e":true,"f":true,"h":true,"j":["japanese_symbol_for_beginner","badge","shield"],"k":[30,13],"o":0},"o":{"subcategory":"other-symbol","a":"Heavy Large Circle","b":"2B55","d":true,"e":true,"f":true,"h":true,"j":["hollow_red_circle","circle","round"],"k":[59,56],"o":0},"white_check_mark":{"subcategory":"other-symbol","a":"White Heavy Check Mark","b":"2705","d":true,"e":true,"f":true,"h":true,"j":["check_mark_button","green-square","ok","agree","vote","election","answer","tick"],"k":[58,55],"o":0},"ballot_box_with_check":{"subcategory":"other-symbol","a":"Ballot Box with Check","b":"2611-FE0F","c":"2611","d":true,"e":true,"f":true,"h":true,"j":["check_box_with_check","ok","agree","confirm","black-square","vote","election","yes","tick"],"k":[57,16],"o":0},"heavy_check_mark":{"subcategory":"other-symbol","a":"Heavy Check Mark","b":"2714-FE0F","c":"2714","d":true,"e":true,"f":true,"h":true,"j":["check_mark","ok","nike","answer","yes","tick"],"k":[59,23],"o":0},"x":{"subcategory":"other-symbol","a":"Cross Mark","b":"274C","d":true,"e":true,"f":true,"h":true,"j":["cross_mark","no","delete","remove","cancel","red"],"k":[59,32],"o":0},"negative_squared_cross_mark":{"subcategory":"other-symbol","a":"Negative Squared Cross Mark","b":"274E","d":true,"e":true,"f":true,"h":true,"j":["cross_mark_button","x","green-square","no","deny"],"k":[59,33],"o":0},"curly_loop":{"subcategory":"other-symbol","a":"Curly Loop","b":"27B0","d":true,"e":true,"f":true,"h":true,"j":["curly_loop","scribble","draw","shape","squiggle"],"k":[59,46],"o":0},"loop":{"subcategory":"other-symbol","a":"Double Curly Loop","b":"27BF","d":true,"e":true,"f":true,"h":true,"j":["double_curly_loop","tape","cassette"],"k":[59,47],"o":1},"part_alternation_mark":{"subcategory":"other-symbol","a":"Part Alternation Mark","b":"303D-FE0F","c":"303D","d":true,"e":true,"f":true,"h":true,"j":["part_alternation_mark","graph","presentation","stats","business","economics","bad"],"k":[59,58],"o":0},"eight_spoked_asterisk":{"subcategory":"other-symbol","a":"Eight Spoked Asterisk","b":"2733-FE0F","c":"2733","d":true,"e":true,"f":true,"h":true,"j":["eight_spoked_asterisk","star","sparkle","green-square"],"k":[59,28],"o":0},"eight_pointed_black_star":{"subcategory":"other-symbol","a":"Eight Pointed Black Star","b":"2734-FE0F","c":"2734","d":true,"e":true,"f":true,"h":true,"j":["eight_pointed_star","orange-square","shape","polygon"],"k":[59,29],"o":0},"sparkle":{"subcategory":"other-symbol","a":"Sparkle","b":"2747-FE0F","c":"2747","d":true,"e":true,"f":true,"h":true,"j":["sparkle","stars","green-square","awesome","good","fireworks"],"k":[59,31],"o":0},"copyright":{"subcategory":"other-symbol","a":"Copyright Sign","b":"00A9-FE0F","c":"00A9","d":true,"e":true,"f":true,"h":false,"j":["copyright","ip","license","circle","law","legal"],"k":[0,12],"o":0},"registered":{"subcategory":"other-symbol","a":"Registered Sign","b":"00AE-FE0F","c":"00AE","d":true,"e":true,"f":true,"h":false,"j":["registered","alphabet","circle"],"k":[0,13],"o":0},"tm":{"subcategory":"other-symbol","a":"Trade Mark Sign","b":"2122-FE0F","c":"2122","d":true,"e":true,"f":true,"h":true,"j":["trade_mark","trademark","brand","law","legal"],"k":[56,34],"o":0},"hash":{"subcategory":"keycap","a":"Hash Key","b":"0023-FE0F-20E3","c":"0023-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_","symbol","blue-square","twitter"],"k":[0,0],"o":0},"keycap_star":{"subcategory":"keycap","a":"Keycap: *","b":"002A-FE0F-20E3","c":"002A-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_","star","keycap"],"k":[0,1],"o":2},"zero":{"subcategory":"keycap","a":"Keycap 0","b":"0030-FE0F-20E3","c":"0030-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_0","0","numbers","blue-square","null","zero"],"k":[0,2],"o":0},"one":{"subcategory":"keycap","a":"Keycap 1","b":"0031-FE0F-20E3","c":"0031-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_1","blue-square","numbers","1","one"],"k":[0,3],"o":0},"two":{"subcategory":"keycap","a":"Keycap 2","b":"0032-FE0F-20E3","c":"0032-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_2","numbers","2","prime","blue-square","two"],"k":[0,4],"o":0},"three":{"subcategory":"keycap","a":"Keycap 3","b":"0033-FE0F-20E3","c":"0033-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_3","3","numbers","prime","blue-square","three"],"k":[0,5],"o":0},"four":{"subcategory":"keycap","a":"Keycap 4","b":"0034-FE0F-20E3","c":"0034-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_4","4","numbers","blue-square","four"],"k":[0,6],"o":0},"five":{"subcategory":"keycap","a":"Keycap 5","b":"0035-FE0F-20E3","c":"0035-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_5","5","numbers","blue-square","prime","five"],"k":[0,7],"o":0},"six":{"subcategory":"keycap","a":"Keycap 6","b":"0036-FE0F-20E3","c":"0036-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_6","6","numbers","blue-square","six"],"k":[0,8],"o":0},"seven":{"subcategory":"keycap","a":"Keycap 7","b":"0037-FE0F-20E3","c":"0037-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_7","7","numbers","blue-square","prime","seven"],"k":[0,9],"o":0},"eight":{"subcategory":"keycap","a":"Keycap 8","b":"0038-FE0F-20E3","c":"0038-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_8","8","blue-square","numbers","eight"],"k":[0,10],"o":0},"nine":{"subcategory":"keycap","a":"Keycap 9","b":"0039-FE0F-20E3","c":"0039-20E3","d":true,"e":true,"f":true,"h":false,"j":["keycap_9","blue-square","numbers","9","nine"],"k":[0,11],"o":0},"keycap_ten":{"subcategory":"keycap","a":"Keycap Ten","b":"1F51F","d":true,"e":true,"f":true,"h":true,"j":["keycap_10","numbers","10","blue-square","ten"],"k":[29,57],"o":0},"capital_abcd":{"subcategory":"alphanum","a":"Input Symbol for Latin Capital Letters","b":"1F520","d":true,"e":true,"f":true,"h":true,"j":["input_latin_uppercase","alphabet","words","letters","uppercase","blue-square"],"k":[29,58],"o":0},"abcd":{"subcategory":"alphanum","a":"Input Symbol for Latin Small Letters","b":"1F521","d":true,"e":true,"f":true,"h":true,"j":["input_latin_lowercase","blue-square","letters","lowercase","alphabet"],"k":[29,59],"o":0},"symbols":{"subcategory":"alphanum","a":"Input Symbol for Symbols","b":"1F523","d":true,"e":true,"f":true,"h":true,"j":["input_symbols","blue-square","music","note","ampersand","percent","glyphs","characters"],"k":[30,0],"o":0},"abc":{"subcategory":"alphanum","a":"Input Symbol for Latin Letters","b":"1F524","d":true,"e":true,"f":true,"h":true,"j":["input_latin_letters","blue-square","alphabet"],"k":[30,1],"o":0},"a":{"subcategory":"alphanum","a":"Negative Squared Latin Capital Letter a","b":"1F170-FE0F","c":"1F170","d":true,"e":true,"f":true,"h":true,"j":["a_button","red-square","alphabet","letter"],"k":[0,16],"o":0},"ab":{"subcategory":"alphanum","a":"Negative Squared Ab","b":"1F18E","d":true,"e":true,"f":true,"h":true,"j":["ab_button","red-square","alphabet"],"k":[0,20],"o":0},"b":{"subcategory":"alphanum","a":"Negative Squared Latin Capital Letter B","b":"1F171-FE0F","c":"1F171","d":true,"e":true,"f":true,"h":true,"j":["b_button","red-square","alphabet","letter"],"k":[0,17],"o":0},"cl":{"subcategory":"alphanum","a":"Squared Cl","b":"1F191","d":true,"e":true,"f":true,"h":true,"j":["cl_button","alphabet","words","red-square"],"k":[0,21],"o":0},"cool":{"subcategory":"alphanum","a":"Squared Cool","b":"1F192","d":true,"e":true,"f":true,"h":true,"j":["cool_button","words","blue-square"],"k":[0,22],"o":0},"free":{"subcategory":"alphanum","a":"Squared Free","b":"1F193","d":true,"e":true,"f":true,"h":true,"j":["free_button","blue-square","words"],"k":[0,23],"o":0},"information_source":{"subcategory":"alphanum","a":"Information Source","b":"2139-FE0F","c":"2139","d":true,"e":true,"f":true,"h":true,"j":["information","blue-square","alphabet","letter"],"k":[56,35],"o":0},"id":{"subcategory":"alphanum","a":"Squared Id","b":"1F194","d":true,"e":true,"f":true,"h":true,"j":["id_button","purple-square","words"],"k":[0,24],"o":0},"m":{"subcategory":"alphanum","a":"Circled Latin Capital Letter M","b":"24C2-FE0F","c":"24C2","d":true,"e":true,"f":true,"h":true,"j":["circled_m","alphabet","blue-circle","letter"],"k":[57,1],"o":0},"new":{"subcategory":"alphanum","a":"Squared New","b":"1F195","d":true,"e":true,"f":true,"h":true,"j":["new_button","blue-square","words","start"],"k":[0,25],"o":0},"ng":{"subcategory":"alphanum","a":"Squared Ng","b":"1F196","d":true,"e":true,"f":true,"h":true,"j":["ng_button","blue-square","words","shape","icon"],"k":[0,26],"o":0},"o2":{"subcategory":"alphanum","a":"Negative Squared Latin Capital Letter O","b":"1F17E-FE0F","c":"1F17E","d":true,"e":true,"f":true,"h":true,"j":["o_button","alphabet","red-square","letter"],"k":[0,18],"o":0},"ok":{"subcategory":"alphanum","a":"Squared Ok","b":"1F197","d":true,"e":true,"f":true,"h":true,"j":["ok_button","good","agree","yes","blue-square"],"k":[0,27],"o":0},"parking":{"subcategory":"alphanum","a":"Negative Squared Latin Capital Letter P","b":"1F17F-FE0F","c":"1F17F","d":true,"e":true,"f":true,"h":true,"j":["p_button","cars","blue-square","alphabet","letter"],"k":[0,19],"o":0},"sos":{"subcategory":"alphanum","a":"Squared Sos","b":"1F198","d":true,"e":true,"f":true,"h":true,"j":["sos_button","help","red-square","words","emergency","911"],"k":[0,28],"o":0},"up":{"subcategory":"alphanum","a":"Squared Up with Exclamation Mark","b":"1F199","d":true,"e":true,"f":true,"h":true,"j":["up_button","blue-square","above","high"],"k":[0,29],"o":0},"vs":{"subcategory":"alphanum","a":"Squared Vs","b":"1F19A","d":true,"e":true,"f":true,"h":true,"j":["vs_button","words","orange-square"],"k":[0,30],"o":0},"koko":{"subcategory":"alphanum","a":"Squared Katakana Koko","b":"1F201","d":true,"e":true,"f":true,"h":true,"j":["japanese_here_button","blue-square","here","katakana","japanese","destination"],"k":[4,45],"o":0},"sa":{"subcategory":"alphanum","a":"Squared Katakana Sa","b":"1F202-FE0F","c":"1F202","d":true,"e":true,"f":true,"h":true,"j":["japanese_service_charge_button","japanese","blue-square","katakana"],"k":[4,46],"o":0},"u6708":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-6708","b":"1F237-FE0F","c":"1F237","d":true,"e":true,"f":true,"h":true,"j":["japanese_monthly_amount_button","chinese","month","moon","japanese","orange-square","kanji"],"k":[4,54],"o":0},"u6709":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-6709","b":"1F236","d":true,"e":true,"f":true,"h":true,"j":["japanese_not_free_of_charge_button","orange-square","chinese","have","kanji"],"k":[4,53],"o":0},"u6307":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-6307","b":"1F22F","d":true,"e":true,"f":true,"h":true,"j":["japanese_reserved_button","chinese","point","green-square","kanji"],"k":[4,48],"o":0},"ideograph_advantage":{"subcategory":"alphanum","a":"Circled Ideograph Advantage","b":"1F250","d":true,"e":true,"f":true,"h":true,"j":["japanese_bargain_button","chinese","kanji","obtain","get","circle"],"k":[4,58],"o":0},"u5272":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-5272","b":"1F239","d":true,"e":true,"f":true,"h":true,"j":["japanese_discount_button","cut","divide","chinese","kanji","pink-square"],"k":[4,56],"o":0},"u7121":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-7121","b":"1F21A","d":true,"e":true,"f":true,"h":true,"j":["japanese_free_of_charge_button","nothing","chinese","kanji","japanese","orange-square"],"k":[4,47],"o":0},"u7981":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-7981","b":"1F232","d":true,"e":true,"f":true,"h":true,"j":["japanese_prohibited_button","kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"k":[4,49],"o":0},"accept":{"subcategory":"alphanum","a":"Circled Ideograph Accept","b":"1F251","d":true,"e":true,"f":true,"h":true,"j":["japanese_acceptable_button","ok","good","chinese","kanji","agree","yes","orange-circle"],"k":[4,59],"o":0},"u7533":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-7533","b":"1F238","d":true,"e":true,"f":true,"h":true,"j":["japanese_application_button","chinese","japanese","kanji","orange-square"],"k":[4,55],"o":0},"u5408":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-5408","b":"1F234","d":true,"e":true,"f":true,"h":true,"j":["japanese_passing_grade_button","japanese","chinese","join","kanji","red-square"],"k":[4,51],"o":0},"u7a7a":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-7a7a","b":"1F233","d":true,"e":true,"f":true,"h":true,"j":["japanese_vacancy_button","kanji","japanese","chinese","empty","sky","blue-square"],"k":[4,50],"o":0},"congratulations":{"subcategory":"alphanum","a":"Circled Ideograph Congratulation","b":"3297-FE0F","c":"3297","d":true,"e":true,"f":true,"h":true,"j":["japanese_congratulations_button","chinese","kanji","japanese","red-circle"],"k":[59,59],"o":0},"secret":{"subcategory":"alphanum","a":"Circled Ideograph Secret","b":"3299-FE0F","c":"3299","d":true,"e":true,"f":true,"h":true,"j":["japanese_secret_button","privacy","chinese","sshh","kanji","red-circle"],"k":[59,60],"o":0},"u55b6":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-55b6","b":"1F23A","d":true,"e":true,"f":true,"h":true,"j":["japanese_open_for_business_button","japanese","opening hours","orange-square"],"k":[4,57],"o":0},"u6e80":{"subcategory":"alphanum","a":"Squared Cjk Unified Ideograph-6e80","b":"1F235","d":true,"e":true,"f":true,"h":true,"j":["japanese_no_vacancy_button","full","chinese","japanese","red-square","kanji"],"k":[4,52],"o":0},"red_circle":{"subcategory":"geometric","a":"Large Red Circle","b":"1F534","d":true,"e":true,"f":true,"h":true,"j":["red_circle","shape","error","danger"],"k":[30,17],"o":0},"large_orange_circle":{"subcategory":"geometric","a":"Large Orange Circle","b":"1F7E0","d":true,"e":true,"f":true,"h":true,"j":["orange_circle","round"],"k":[38,33],"o":12},"large_yellow_circle":{"subcategory":"geometric","a":"Large Yellow Circle","b":"1F7E1","d":true,"e":true,"f":true,"h":true,"j":["yellow_circle","round"],"k":[38,34],"o":12},"large_green_circle":{"subcategory":"geometric","a":"Large Green Circle","b":"1F7E2","d":true,"e":true,"f":true,"h":true,"j":["green_circle","round"],"k":[38,35],"o":12},"large_blue_circle":{"subcategory":"geometric","a":"Large Blue Circle","b":"1F535","d":true,"e":true,"f":true,"h":true,"j":["blue_circle","shape","icon","button"],"k":[30,18],"o":0},"large_purple_circle":{"subcategory":"geometric","a":"Large Purple Circle","b":"1F7E3","d":true,"e":true,"f":true,"h":true,"j":["purple_circle","round"],"k":[38,36],"o":12},"large_brown_circle":{"subcategory":"geometric","a":"Large Brown Circle","b":"1F7E4","d":true,"e":true,"f":true,"h":true,"j":["brown_circle","round"],"k":[38,37],"o":12},"black_circle":{"subcategory":"geometric","a":"Medium Black Circle","b":"26AB","d":true,"e":true,"f":true,"h":true,"j":["black_circle","shape","button","round"],"k":[58,11],"o":0},"white_circle":{"subcategory":"geometric","a":"Medium White Circle","b":"26AA","d":true,"e":true,"f":true,"h":true,"j":["white_circle","shape","round"],"k":[58,10],"o":0},"large_red_square":{"subcategory":"geometric","a":"Large Red Square","b":"1F7E5","d":true,"e":true,"f":true,"h":true,"j":["red_square"],"k":[38,38],"o":12},"large_orange_square":{"subcategory":"geometric","a":"Large Orange Square","b":"1F7E7","d":true,"e":true,"f":true,"h":true,"j":["orange_square"],"k":[38,40],"o":12},"large_yellow_square":{"subcategory":"geometric","a":"Large Yellow Square","b":"1F7E8","d":true,"e":true,"f":true,"h":true,"j":["yellow_square"],"k":[38,41],"o":12},"large_green_square":{"subcategory":"geometric","a":"Large Green Square","b":"1F7E9","d":true,"e":true,"f":true,"h":true,"j":["green_square"],"k":[38,42],"o":12},"large_blue_square":{"subcategory":"geometric","a":"Large Blue Square","b":"1F7E6","d":true,"e":true,"f":true,"h":true,"j":["blue_square"],"k":[38,39],"o":12},"large_purple_square":{"subcategory":"geometric","a":"Large Purple Square","b":"1F7EA","d":true,"e":true,"f":true,"h":true,"j":["purple_square"],"k":[38,43],"o":12},"large_brown_square":{"subcategory":"geometric","a":"Large Brown Square","b":"1F7EB","d":true,"e":true,"f":true,"h":true,"j":["brown_square"],"k":[38,44],"o":12},"black_large_square":{"subcategory":"geometric","a":"Black Large Square","b":"2B1B","d":true,"e":true,"f":true,"h":true,"j":["black_large_square","shape","icon","button"],"k":[59,53],"o":0},"white_large_square":{"subcategory":"geometric","a":"White Large Square","b":"2B1C","d":true,"e":true,"f":true,"h":true,"j":["white_large_square","shape","icon","stone","button"],"k":[59,54],"o":0},"black_medium_square":{"subcategory":"geometric","a":"Black Medium Square","b":"25FC-FE0F","c":"25FC","d":true,"e":true,"f":true,"h":true,"j":["black_medium_square","shape","button","icon"],"k":[57,7],"o":0},"white_medium_square":{"subcategory":"geometric","a":"White Medium Square","b":"25FB-FE0F","c":"25FB","d":true,"e":true,"f":true,"h":true,"j":["white_medium_square","shape","stone","icon"],"k":[57,6],"o":0},"black_medium_small_square":{"subcategory":"geometric","a":"Black Medium Small Square","b":"25FE","d":true,"e":true,"f":true,"h":true,"j":["black_medium_small_square","icon","shape","button"],"k":[57,9],"o":0},"white_medium_small_square":{"subcategory":"geometric","a":"White Medium Small Square","b":"25FD","d":true,"e":true,"f":true,"h":true,"j":["white_medium_small_square","shape","stone","icon","button"],"k":[57,8],"o":0},"black_small_square":{"subcategory":"geometric","a":"Black Small Square","b":"25AA-FE0F","c":"25AA","d":true,"e":true,"f":true,"h":true,"j":["black_small_square","shape","icon"],"k":[57,2],"o":0},"white_small_square":{"subcategory":"geometric","a":"White Small Square","b":"25AB-FE0F","c":"25AB","d":true,"e":true,"f":true,"h":true,"j":["white_small_square","shape","icon"],"k":[57,3],"o":0},"large_orange_diamond":{"subcategory":"geometric","a":"Large Orange Diamond","b":"1F536","d":true,"e":true,"f":true,"h":true,"j":["large_orange_diamond","shape","jewel","gem"],"k":[30,19],"o":0},"large_blue_diamond":{"subcategory":"geometric","a":"Large Blue Diamond","b":"1F537","d":true,"e":true,"f":true,"h":true,"j":["large_blue_diamond","shape","jewel","gem"],"k":[30,20],"o":0},"small_orange_diamond":{"subcategory":"geometric","a":"Small Orange Diamond","b":"1F538","d":true,"e":true,"f":true,"h":true,"j":["small_orange_diamond","shape","jewel","gem"],"k":[30,21],"o":0},"small_blue_diamond":{"subcategory":"geometric","a":"Small Blue Diamond","b":"1F539","d":true,"e":true,"f":true,"h":true,"j":["small_blue_diamond","shape","jewel","gem"],"k":[30,22],"o":0},"small_red_triangle":{"subcategory":"geometric","a":"Up-Pointing Red Triangle","b":"1F53A","d":true,"e":true,"f":true,"h":true,"j":["red_triangle_pointed_up","shape","direction","up","top"],"k":[30,23],"o":0},"small_red_triangle_down":{"subcategory":"geometric","a":"Down-Pointing Red Triangle","b":"1F53B","d":true,"e":true,"f":true,"h":true,"j":["red_triangle_pointed_down","shape","direction","bottom"],"k":[30,24],"o":0},"diamond_shape_with_a_dot_inside":{"subcategory":"geometric","a":"Diamond Shape with a Dot Inside","b":"1F4A0","d":true,"e":true,"f":true,"h":true,"j":["diamond_with_a_dot","jewel","blue","gem","crystal","fancy"],"k":[27,48],"o":0},"radio_button":{"subcategory":"geometric","a":"Radio Button","b":"1F518","d":true,"e":true,"f":true,"h":true,"j":["radio_button","input","old","music","circle"],"k":[29,50],"o":0},"white_square_button":{"subcategory":"geometric","a":"White Square Button","b":"1F533","d":true,"e":true,"f":true,"h":true,"j":["white_square_button","shape","input"],"k":[30,16],"o":0},"black_square_button":{"subcategory":"geometric","a":"Black Square Button","b":"1F532","d":true,"e":true,"f":true,"h":true,"j":["black_square_button","shape","input","frame"],"k":[30,15],"o":0},"checkered_flag":{"subcategory":"flag","a":"Chequered Flag","b":"1F3C1","d":true,"e":true,"f":true,"h":true,"j":["chequered_flag","contest","finishline","race","gokart"],"k":[8,7],"o":0},"triangular_flag_on_post":{"subcategory":"flag","a":"Triangular Flag on Post","b":"1F6A9","d":true,"e":true,"f":true,"h":true,"j":["triangular_flag","mark","milestone","place"],"k":[36,30],"o":0},"crossed_flags":{"subcategory":"flag","a":"Crossed Flags","b":"1F38C","d":true,"e":true,"f":true,"h":true,"j":["crossed_flags","japanese","nation","country","border"],"k":[7,20],"o":0},"waving_black_flag":{"subcategory":"flag","a":"Waving Black Flag","b":"1F3F4","d":true,"e":true,"f":true,"h":true,"j":["black_flag","pirate"],"k":[10,35],"o":1},"waving_white_flag":{"subcategory":"flag","a":"White Flag","b":"1F3F3-FE0F","c":"1F3F3","d":true,"e":true,"f":true,"h":true,"j":["white_flag","losing","loser","lost","surrender","give up","fail"],"k":[10,30],"o":0},"rainbow-flag":{"subcategory":"flag","a":"Rainbow Flag","b":"1F3F3-FE0F-200D-1F308","c":"1F3F3-200D-1F308","d":true,"e":true,"f":true,"h":true,"j":["rainbow_flag","flag","rainbow","pride","gay","lgbt","queer","homosexual","lesbian","bisexual"],"k":[10,28],"o":4},"transgender_flag":{"subcategory":"flag","a":"Transgender Flag","b":"1F3F3-FE0F-200D-26A7-FE0F","d":true,"e":true,"f":true,"h":false,"j":["transgender flag","transgender","flag","pride","lgbtq"],"k":[10,29],"o":13},"pirate_flag":{"subcategory":"flag","a":"Pirate Flag","b":"1F3F4-200D-2620-FE0F","c":"1F3F4-200D-2620","d":true,"e":true,"f":true,"h":true,"j":["pirate_flag","skull","crossbones","flag","banner"],"k":[10,31],"o":11},"flag-ac":{"subcategory":"country-flag","a":"Ascension Island Flag","b":"1F1E6-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_ascension_island"],"k":[0,31],"o":2},"flag-ad":{"subcategory":"country-flag","a":"Andorra Flag","b":"1F1E6-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_andorra","ad","flag","nation","country","banner","andorra"],"k":[0,32],"o":2},"flag-ae":{"subcategory":"country-flag","a":"United Arab Emirates Flag","b":"1F1E6-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_united_arab_emirates","united","arab","emirates","flag","nation","country","banner","united_arab_emirates"],"k":[0,33],"o":2},"flag-af":{"subcategory":"country-flag","a":"Afghanistan Flag","b":"1F1E6-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_afghanistan","af","flag","nation","country","banner","afghanistan"],"k":[0,34],"o":2},"flag-ag":{"subcategory":"country-flag","a":"Antigua & Barbuda Flag","b":"1F1E6-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_antigua_barbuda","antigua","barbuda","flag","nation","country","banner","antigua_barbuda"],"k":[0,35],"o":2},"flag-ai":{"subcategory":"country-flag","a":"Anguilla Flag","b":"1F1E6-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_anguilla","ai","flag","nation","country","banner","anguilla"],"k":[0,36],"o":2},"flag-al":{"subcategory":"country-flag","a":"Albania Flag","b":"1F1E6-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_albania","al","flag","nation","country","banner","albania"],"k":[0,37],"o":2},"flag-am":{"subcategory":"country-flag","a":"Armenia Flag","b":"1F1E6-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_armenia","am","flag","nation","country","banner","armenia"],"k":[0,38],"o":2},"flag-ao":{"subcategory":"country-flag","a":"Angola Flag","b":"1F1E6-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_angola","ao","flag","nation","country","banner","angola"],"k":[0,39],"o":2},"flag-aq":{"subcategory":"country-flag","a":"Antarctica Flag","b":"1F1E6-1F1F6","d":true,"e":true,"f":true,"h":true,"j":["flag_antarctica","aq","flag","nation","country","banner","antarctica"],"k":[0,40],"o":2},"flag-ar":{"subcategory":"country-flag","a":"Argentina Flag","b":"1F1E6-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_argentina","ar","flag","nation","country","banner","argentina"],"k":[0,41],"o":2},"flag-as":{"subcategory":"country-flag","a":"American Samoa Flag","b":"1F1E6-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_american_samoa","american","ws","flag","nation","country","banner","american_samoa"],"k":[0,42],"o":2},"flag-at":{"subcategory":"country-flag","a":"Austria Flag","b":"1F1E6-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_austria","at","flag","nation","country","banner","austria"],"k":[0,43],"o":2},"flag-au":{"subcategory":"country-flag","a":"Australia Flag","b":"1F1E6-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_australia","au","flag","nation","country","banner","australia"],"k":[0,44],"o":2},"flag-aw":{"subcategory":"country-flag","a":"Aruba Flag","b":"1F1E6-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_aruba","aw","flag","nation","country","banner","aruba"],"k":[0,45],"o":2},"flag-ax":{"subcategory":"country-flag","a":"Åland Islands Flag","b":"1F1E6-1F1FD","d":true,"e":true,"f":true,"h":true,"j":["flag_aland_islands","Åland","islands","flag","nation","country","banner","aland_islands"],"k":[0,46],"o":2},"flag-az":{"subcategory":"country-flag","a":"Azerbaijan Flag","b":"1F1E6-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_azerbaijan","az","flag","nation","country","banner","azerbaijan"],"k":[0,47],"o":2},"flag-ba":{"subcategory":"country-flag","a":"Bosnia & Herzegovina Flag","b":"1F1E7-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_bosnia_herzegovina","bosnia","herzegovina","flag","nation","country","banner","bosnia_herzegovina"],"k":[0,48],"o":2},"flag-bb":{"subcategory":"country-flag","a":"Barbados Flag","b":"1F1E7-1F1E7","d":true,"e":true,"f":true,"h":true,"j":["flag_barbados","bb","flag","nation","country","banner","barbados"],"k":[0,49],"o":2},"flag-bd":{"subcategory":"country-flag","a":"Bangladesh Flag","b":"1F1E7-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_bangladesh","bd","flag","nation","country","banner","bangladesh"],"k":[0,50],"o":2},"flag-be":{"subcategory":"country-flag","a":"Belgium Flag","b":"1F1E7-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_belgium","be","flag","nation","country","banner","belgium"],"k":[0,51],"o":2},"flag-bf":{"subcategory":"country-flag","a":"Burkina Faso Flag","b":"1F1E7-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_burkina_faso","burkina","faso","flag","nation","country","banner","burkina_faso"],"k":[0,52],"o":2},"flag-bg":{"subcategory":"country-flag","a":"Bulgaria Flag","b":"1F1E7-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_bulgaria","bg","flag","nation","country","banner","bulgaria"],"k":[0,53],"o":2},"flag-bh":{"subcategory":"country-flag","a":"Bahrain Flag","b":"1F1E7-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_bahrain","bh","flag","nation","country","banner","bahrain"],"k":[0,54],"o":2},"flag-bi":{"subcategory":"country-flag","a":"Burundi Flag","b":"1F1E7-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_burundi","bi","flag","nation","country","banner","burundi"],"k":[0,55],"o":2},"flag-bj":{"subcategory":"country-flag","a":"Benin Flag","b":"1F1E7-1F1EF","d":true,"e":true,"f":true,"h":true,"j":["flag_benin","bj","flag","nation","country","banner","benin"],"k":[0,56],"o":2},"flag-bl":{"subcategory":"country-flag","a":"St. Barthélemy Flag","b":"1F1E7-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_st_barthelemy","saint","barthélemy","flag","nation","country","banner","st_barthelemy"],"k":[0,57],"o":2},"flag-bm":{"subcategory":"country-flag","a":"Bermuda Flag","b":"1F1E7-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_bermuda","bm","flag","nation","country","banner","bermuda"],"k":[0,58],"o":2},"flag-bn":{"subcategory":"country-flag","a":"Brunei Flag","b":"1F1E7-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_brunei","bn","darussalam","flag","nation","country","banner","brunei"],"k":[0,59],"o":2},"flag-bo":{"subcategory":"country-flag","a":"Bolivia Flag","b":"1F1E7-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_bolivia","bo","flag","nation","country","banner","bolivia"],"k":[0,60],"o":2},"flag-bq":{"subcategory":"country-flag","a":"Caribbean Netherlands Flag","b":"1F1E7-1F1F6","d":true,"e":true,"f":true,"h":true,"j":["flag_caribbean_netherlands","bonaire","flag","nation","country","banner","caribbean_netherlands"],"k":[1,0],"o":2},"flag-br":{"subcategory":"country-flag","a":"Brazil Flag","b":"1F1E7-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_brazil","br","flag","nation","country","banner","brazil"],"k":[1,1],"o":2},"flag-bs":{"subcategory":"country-flag","a":"Bahamas Flag","b":"1F1E7-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_bahamas","bs","flag","nation","country","banner","bahamas"],"k":[1,2],"o":2},"flag-bt":{"subcategory":"country-flag","a":"Bhutan Flag","b":"1F1E7-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_bhutan","bt","flag","nation","country","banner","bhutan"],"k":[1,3],"o":2},"flag-bv":{"subcategory":"country-flag","a":"Bouvet Island Flag","b":"1F1E7-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_bouvet_island","norway"],"k":[1,4],"o":2},"flag-bw":{"subcategory":"country-flag","a":"Botswana Flag","b":"1F1E7-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_botswana","bw","flag","nation","country","banner","botswana"],"k":[1,5],"o":2},"flag-by":{"subcategory":"country-flag","a":"Belarus Flag","b":"1F1E7-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_belarus","by","flag","nation","country","banner","belarus"],"k":[1,6],"o":2},"flag-bz":{"subcategory":"country-flag","a":"Belize Flag","b":"1F1E7-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_belize","bz","flag","nation","country","banner","belize"],"k":[1,7],"o":2},"flag-ca":{"subcategory":"country-flag","a":"Canada Flag","b":"1F1E8-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_canada","ca","flag","nation","country","banner","canada"],"k":[1,8],"o":2},"flag-cc":{"subcategory":"country-flag","a":"Cocos (keeling) Islands Flag","b":"1F1E8-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_cocos_islands","cocos","keeling","islands","flag","nation","country","banner","cocos_islands"],"k":[1,9],"o":2},"flag-cd":{"subcategory":"country-flag","a":"Congo - Kinshasa Flag","b":"1F1E8-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_congo_kinshasa","congo","democratic","republic","flag","nation","country","banner","congo_kinshasa"],"k":[1,10],"o":2},"flag-cf":{"subcategory":"country-flag","a":"Central African Republic Flag","b":"1F1E8-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_central_african_republic","central","african","republic","flag","nation","country","banner","central_african_republic"],"k":[1,11],"o":2},"flag-cg":{"subcategory":"country-flag","a":"Congo - Brazzaville Flag","b":"1F1E8-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_congo_brazzaville","congo","flag","nation","country","banner","congo_brazzaville"],"k":[1,12],"o":2},"flag-ch":{"subcategory":"country-flag","a":"Switzerland Flag","b":"1F1E8-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_switzerland","ch","flag","nation","country","banner","switzerland"],"k":[1,13],"o":2},"flag-ci":{"subcategory":"country-flag","a":"Côte D’ivoire Flag","b":"1F1E8-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_cote_d_ivoire","ivory","coast","flag","nation","country","banner","cote_d_ivoire"],"k":[1,14],"o":2},"flag-ck":{"subcategory":"country-flag","a":"Cook Islands Flag","b":"1F1E8-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_cook_islands","cook","islands","flag","nation","country","banner","cook_islands"],"k":[1,15],"o":2},"flag-cl":{"subcategory":"country-flag","a":"Chile Flag","b":"1F1E8-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_chile","flag","nation","country","banner","chile"],"k":[1,16],"o":2},"flag-cm":{"subcategory":"country-flag","a":"Cameroon Flag","b":"1F1E8-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_cameroon","cm","flag","nation","country","banner","cameroon"],"k":[1,17],"o":2},"cn":{"subcategory":"country-flag","a":"China Flag","b":"1F1E8-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_china","china","chinese","prc","flag","country","nation","banner"],"k":[1,18],"n":["flag-cn"],"o":0},"flag-co":{"subcategory":"country-flag","a":"Colombia Flag","b":"1F1E8-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_colombia","co","flag","nation","country","banner","colombia"],"k":[1,19],"o":2},"flag-cp":{"subcategory":"country-flag","a":"Clipperton Island Flag","b":"1F1E8-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_clipperton_island"],"k":[1,20],"o":2},"flag-cr":{"subcategory":"country-flag","a":"Costa Rica Flag","b":"1F1E8-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_costa_rica","costa","rica","flag","nation","country","banner","costa_rica"],"k":[1,21],"o":2},"flag-cu":{"subcategory":"country-flag","a":"Cuba Flag","b":"1F1E8-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_cuba","cu","flag","nation","country","banner","cuba"],"k":[1,22],"o":2},"flag-cv":{"subcategory":"country-flag","a":"Cape Verde Flag","b":"1F1E8-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_cape_verde","cabo","verde","flag","nation","country","banner","cape_verde"],"k":[1,23],"o":2},"flag-cw":{"subcategory":"country-flag","a":"Curaçao Flag","b":"1F1E8-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_curacao","curaçao","flag","nation","country","banner","curacao"],"k":[1,24],"o":2},"flag-cx":{"subcategory":"country-flag","a":"Christmas Island Flag","b":"1F1E8-1F1FD","d":true,"e":true,"f":true,"h":true,"j":["flag_christmas_island","christmas","island","flag","nation","country","banner","christmas_island"],"k":[1,25],"o":2},"flag-cy":{"subcategory":"country-flag","a":"Cyprus Flag","b":"1F1E8-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_cyprus","cy","flag","nation","country","banner","cyprus"],"k":[1,26],"o":2},"flag-cz":{"subcategory":"country-flag","a":"Czechia Flag","b":"1F1E8-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_czechia","cz","flag","nation","country","banner","czechia"],"k":[1,27],"o":2},"de":{"subcategory":"country-flag","a":"Germany Flag","b":"1F1E9-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_germany","german","nation","flag","country","banner","germany"],"k":[1,28],"n":["flag-de"],"o":0},"flag-dg":{"subcategory":"country-flag","a":"Diego Garcia Flag","b":"1F1E9-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_diego_garcia"],"k":[1,29],"o":2},"flag-dj":{"subcategory":"country-flag","a":"Djibouti Flag","b":"1F1E9-1F1EF","d":true,"e":true,"f":true,"h":true,"j":["flag_djibouti","dj","flag","nation","country","banner","djibouti"],"k":[1,30],"o":2},"flag-dk":{"subcategory":"country-flag","a":"Denmark Flag","b":"1F1E9-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_denmark","dk","flag","nation","country","banner","denmark"],"k":[1,31],"o":2},"flag-dm":{"subcategory":"country-flag","a":"Dominica Flag","b":"1F1E9-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_dominica","dm","flag","nation","country","banner","dominica"],"k":[1,32],"o":2},"flag-do":{"subcategory":"country-flag","a":"Dominican Republic Flag","b":"1F1E9-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_dominican_republic","dominican","republic","flag","nation","country","banner","dominican_republic"],"k":[1,33],"o":2},"flag-dz":{"subcategory":"country-flag","a":"Algeria Flag","b":"1F1E9-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_algeria","dz","flag","nation","country","banner","algeria"],"k":[1,34],"o":2},"flag-ea":{"subcategory":"country-flag","a":"Ceuta & Melilla Flag","b":"1F1EA-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_ceuta_melilla"],"k":[1,35],"o":2},"flag-ec":{"subcategory":"country-flag","a":"Ecuador Flag","b":"1F1EA-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_ecuador","ec","flag","nation","country","banner","ecuador"],"k":[1,36],"o":2},"flag-ee":{"subcategory":"country-flag","a":"Estonia Flag","b":"1F1EA-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_estonia","ee","flag","nation","country","banner","estonia"],"k":[1,37],"o":2},"flag-eg":{"subcategory":"country-flag","a":"Egypt Flag","b":"1F1EA-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_egypt","eg","flag","nation","country","banner","egypt"],"k":[1,38],"o":2},"flag-eh":{"subcategory":"country-flag","a":"Western Sahara Flag","b":"1F1EA-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_western_sahara","western","sahara","flag","nation","country","banner","western_sahara"],"k":[1,39],"o":2},"flag-er":{"subcategory":"country-flag","a":"Eritrea Flag","b":"1F1EA-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_eritrea","er","flag","nation","country","banner","eritrea"],"k":[1,40],"o":2},"es":{"subcategory":"country-flag","a":"Spain Flag","b":"1F1EA-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_spain","spain","flag","nation","country","banner"],"k":[1,41],"n":["flag-es"],"o":0},"flag-et":{"subcategory":"country-flag","a":"Ethiopia Flag","b":"1F1EA-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_ethiopia","et","flag","nation","country","banner","ethiopia"],"k":[1,42],"o":2},"flag-eu":{"subcategory":"country-flag","a":"European Union Flag","b":"1F1EA-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_european_union","european","union","flag","banner"],"k":[1,43],"o":2},"flag-fi":{"subcategory":"country-flag","a":"Finland Flag","b":"1F1EB-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_finland","fi","flag","nation","country","banner","finland"],"k":[1,44],"o":2},"flag-fj":{"subcategory":"country-flag","a":"Fiji Flag","b":"1F1EB-1F1EF","d":true,"e":true,"f":true,"h":true,"j":["flag_fiji","fj","flag","nation","country","banner","fiji"],"k":[1,45],"o":2},"flag-fk":{"subcategory":"country-flag","a":"Falkland Islands Flag","b":"1F1EB-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_falkland_islands","falkland","islands","malvinas","flag","nation","country","banner","falkland_islands"],"k":[1,46],"o":2},"flag-fm":{"subcategory":"country-flag","a":"Micronesia Flag","b":"1F1EB-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_micronesia","micronesia","federated","states","flag","nation","country","banner"],"k":[1,47],"o":2},"flag-fo":{"subcategory":"country-flag","a":"Faroe Islands Flag","b":"1F1EB-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_faroe_islands","faroe","islands","flag","nation","country","banner","faroe_islands"],"k":[1,48],"o":2},"fr":{"subcategory":"country-flag","a":"France Flag","b":"1F1EB-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_france","banner","flag","nation","france","french","country"],"k":[1,49],"n":["flag-fr"],"o":0},"flag-ga":{"subcategory":"country-flag","a":"Gabon Flag","b":"1F1EC-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_gabon","ga","flag","nation","country","banner","gabon"],"k":[1,50],"o":2},"gb":{"subcategory":"country-flag","a":"United Kingdom Flag","b":"1F1EC-1F1E7","d":true,"e":true,"f":true,"h":true,"j":["flag_united_kingdom","united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack","united_kingdom"],"k":[1,51],"n":["uk","flag-gb"],"o":0},"flag-gd":{"subcategory":"country-flag","a":"Grenada Flag","b":"1F1EC-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_grenada","gd","flag","nation","country","banner","grenada"],"k":[1,52],"o":2},"flag-ge":{"subcategory":"country-flag","a":"Georgia Flag","b":"1F1EC-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_georgia","ge","flag","nation","country","banner","georgia"],"k":[1,53],"o":2},"flag-gf":{"subcategory":"country-flag","a":"French Guiana Flag","b":"1F1EC-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_french_guiana","french","guiana","flag","nation","country","banner","french_guiana"],"k":[1,54],"o":2},"flag-gg":{"subcategory":"country-flag","a":"Guernsey Flag","b":"1F1EC-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_guernsey","gg","flag","nation","country","banner","guernsey"],"k":[1,55],"o":2},"flag-gh":{"subcategory":"country-flag","a":"Ghana Flag","b":"1F1EC-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_ghana","gh","flag","nation","country","banner","ghana"],"k":[1,56],"o":2},"flag-gi":{"subcategory":"country-flag","a":"Gibraltar Flag","b":"1F1EC-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_gibraltar","gi","flag","nation","country","banner","gibraltar"],"k":[1,57],"o":2},"flag-gl":{"subcategory":"country-flag","a":"Greenland Flag","b":"1F1EC-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_greenland","gl","flag","nation","country","banner","greenland"],"k":[1,58],"o":2},"flag-gm":{"subcategory":"country-flag","a":"Gambia Flag","b":"1F1EC-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_gambia","gm","flag","nation","country","banner","gambia"],"k":[1,59],"o":2},"flag-gn":{"subcategory":"country-flag","a":"Guinea Flag","b":"1F1EC-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_guinea","gn","flag","nation","country","banner","guinea"],"k":[1,60],"o":2},"flag-gp":{"subcategory":"country-flag","a":"Guadeloupe Flag","b":"1F1EC-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_guadeloupe","gp","flag","nation","country","banner","guadeloupe"],"k":[2,0],"o":2},"flag-gq":{"subcategory":"country-flag","a":"Equatorial Guinea Flag","b":"1F1EC-1F1F6","d":true,"e":true,"f":true,"h":true,"j":["flag_equatorial_guinea","equatorial","gn","flag","nation","country","banner","equatorial_guinea"],"k":[2,1],"o":2},"flag-gr":{"subcategory":"country-flag","a":"Greece Flag","b":"1F1EC-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_greece","gr","flag","nation","country","banner","greece"],"k":[2,2],"o":2},"flag-gs":{"subcategory":"country-flag","a":"South Georgia & South Sandwich Islands Flag","b":"1F1EC-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_south_georgia_south_sandwich_islands","south","georgia","sandwich","islands","flag","nation","country","banner","south_georgia_south_sandwich_islands"],"k":[2,3],"o":2},"flag-gt":{"subcategory":"country-flag","a":"Guatemala Flag","b":"1F1EC-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_guatemala","gt","flag","nation","country","banner","guatemala"],"k":[2,4],"o":2},"flag-gu":{"subcategory":"country-flag","a":"Guam Flag","b":"1F1EC-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_guam","gu","flag","nation","country","banner","guam"],"k":[2,5],"o":2},"flag-gw":{"subcategory":"country-flag","a":"Guinea-Bissau Flag","b":"1F1EC-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_guinea_bissau","gw","bissau","flag","nation","country","banner","guinea_bissau"],"k":[2,6],"o":2},"flag-gy":{"subcategory":"country-flag","a":"Guyana Flag","b":"1F1EC-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_guyana","gy","flag","nation","country","banner","guyana"],"k":[2,7],"o":2},"flag-hk":{"subcategory":"country-flag","a":"Hong Kong Sar China Flag","b":"1F1ED-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_hong_kong_sar_china","hong","kong","flag","nation","country","banner","hong_kong_sar_china"],"k":[2,8],"o":2},"flag-hm":{"subcategory":"country-flag","a":"Heard & Mcdonald Islands Flag","b":"1F1ED-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_heard_mcdonald_islands"],"k":[2,9],"o":2},"flag-hn":{"subcategory":"country-flag","a":"Honduras Flag","b":"1F1ED-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_honduras","hn","flag","nation","country","banner","honduras"],"k":[2,10],"o":2},"flag-hr":{"subcategory":"country-flag","a":"Croatia Flag","b":"1F1ED-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_croatia","hr","flag","nation","country","banner","croatia"],"k":[2,11],"o":2},"flag-ht":{"subcategory":"country-flag","a":"Haiti Flag","b":"1F1ED-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_haiti","ht","flag","nation","country","banner","haiti"],"k":[2,12],"o":2},"flag-hu":{"subcategory":"country-flag","a":"Hungary Flag","b":"1F1ED-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_hungary","hu","flag","nation","country","banner","hungary"],"k":[2,13],"o":2},"flag-ic":{"subcategory":"country-flag","a":"Canary Islands Flag","b":"1F1EE-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_canary_islands","canary","islands","flag","nation","country","banner","canary_islands"],"k":[2,14],"o":2},"flag-id":{"subcategory":"country-flag","a":"Indonesia Flag","b":"1F1EE-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_indonesia","flag","nation","country","banner","indonesia"],"k":[2,15],"o":2},"flag-ie":{"subcategory":"country-flag","a":"Ireland Flag","b":"1F1EE-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_ireland","ie","flag","nation","country","banner","ireland"],"k":[2,16],"o":2},"flag-il":{"subcategory":"country-flag","a":"Israel Flag","b":"1F1EE-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_israel","il","flag","nation","country","banner","israel"],"k":[2,17],"o":2},"flag-im":{"subcategory":"country-flag","a":"Isle of Man Flag","b":"1F1EE-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_isle_of_man","isle","man","flag","nation","country","banner","isle_of_man"],"k":[2,18],"o":2},"flag-in":{"subcategory":"country-flag","a":"India Flag","b":"1F1EE-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_india","in","flag","nation","country","banner","india"],"k":[2,19],"o":2},"flag-io":{"subcategory":"country-flag","a":"British Indian Ocean Territory Flag","b":"1F1EE-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_british_indian_ocean_territory","british","indian","ocean","territory","flag","nation","country","banner","british_indian_ocean_territory"],"k":[2,20],"o":2},"flag-iq":{"subcategory":"country-flag","a":"Iraq Flag","b":"1F1EE-1F1F6","d":true,"e":true,"f":true,"h":true,"j":["flag_iraq","iq","flag","nation","country","banner","iraq"],"k":[2,21],"o":2},"flag-ir":{"subcategory":"country-flag","a":"Iran Flag","b":"1F1EE-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_iran","iran","islamic","republic","flag","nation","country","banner"],"k":[2,22],"o":2},"flag-is":{"subcategory":"country-flag","a":"Iceland Flag","b":"1F1EE-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_iceland","is","flag","nation","country","banner","iceland"],"k":[2,23],"o":2},"it":{"subcategory":"country-flag","a":"Italy Flag","b":"1F1EE-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_italy","italy","flag","nation","country","banner"],"k":[2,24],"n":["flag-it"],"o":0},"flag-je":{"subcategory":"country-flag","a":"Jersey Flag","b":"1F1EF-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_jersey","je","flag","nation","country","banner","jersey"],"k":[2,25],"o":2},"flag-jm":{"subcategory":"country-flag","a":"Jamaica Flag","b":"1F1EF-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_jamaica","jm","flag","nation","country","banner","jamaica"],"k":[2,26],"o":2},"flag-jo":{"subcategory":"country-flag","a":"Jordan Flag","b":"1F1EF-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_jordan","jo","flag","nation","country","banner","jordan"],"k":[2,27],"o":2},"jp":{"subcategory":"country-flag","a":"Japan Flag","b":"1F1EF-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_japan","japanese","nation","flag","country","banner","japan","jp","ja"],"k":[2,28],"n":["flag-jp"],"o":0},"flag-ke":{"subcategory":"country-flag","a":"Kenya Flag","b":"1F1F0-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_kenya","ke","flag","nation","country","banner","kenya"],"k":[2,29],"o":2},"flag-kg":{"subcategory":"country-flag","a":"Kyrgyzstan Flag","b":"1F1F0-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_kyrgyzstan","kg","flag","nation","country","banner","kyrgyzstan"],"k":[2,30],"o":2},"flag-kh":{"subcategory":"country-flag","a":"Cambodia Flag","b":"1F1F0-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_cambodia","kh","flag","nation","country","banner","cambodia"],"k":[2,31],"o":2},"flag-ki":{"subcategory":"country-flag","a":"Kiribati Flag","b":"1F1F0-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_kiribati","ki","flag","nation","country","banner","kiribati"],"k":[2,32],"o":2},"flag-km":{"subcategory":"country-flag","a":"Comoros Flag","b":"1F1F0-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_comoros","km","flag","nation","country","banner","comoros"],"k":[2,33],"o":2},"flag-kn":{"subcategory":"country-flag","a":"St. Kitts & Nevis Flag","b":"1F1F0-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_st_kitts_nevis","saint","kitts","nevis","flag","nation","country","banner","st_kitts_nevis"],"k":[2,34],"o":2},"flag-kp":{"subcategory":"country-flag","a":"North Korea Flag","b":"1F1F0-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_north_korea","north","korea","nation","flag","country","banner","north_korea"],"k":[2,35],"o":2},"kr":{"subcategory":"country-flag","a":"South Korea Flag","b":"1F1F0-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_south_korea","south","korea","nation","flag","country","banner","south_korea"],"k":[2,36],"n":["flag-kr"],"o":0},"flag-kw":{"subcategory":"country-flag","a":"Kuwait Flag","b":"1F1F0-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_kuwait","kw","flag","nation","country","banner","kuwait"],"k":[2,37],"o":2},"flag-ky":{"subcategory":"country-flag","a":"Cayman Islands Flag","b":"1F1F0-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_cayman_islands","cayman","islands","flag","nation","country","banner","cayman_islands"],"k":[2,38],"o":2},"flag-kz":{"subcategory":"country-flag","a":"Kazakhstan Flag","b":"1F1F0-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_kazakhstan","kz","flag","nation","country","banner","kazakhstan"],"k":[2,39],"o":2},"flag-la":{"subcategory":"country-flag","a":"Laos Flag","b":"1F1F1-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_laos","lao","democratic","republic","flag","nation","country","banner","laos"],"k":[2,40],"o":2},"flag-lb":{"subcategory":"country-flag","a":"Lebanon Flag","b":"1F1F1-1F1E7","d":true,"e":true,"f":true,"h":true,"j":["flag_lebanon","lb","flag","nation","country","banner","lebanon"],"k":[2,41],"o":2},"flag-lc":{"subcategory":"country-flag","a":"St. Lucia Flag","b":"1F1F1-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_st_lucia","saint","lucia","flag","nation","country","banner","st_lucia"],"k":[2,42],"o":2},"flag-li":{"subcategory":"country-flag","a":"Liechtenstein Flag","b":"1F1F1-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_liechtenstein","li","flag","nation","country","banner","liechtenstein"],"k":[2,43],"o":2},"flag-lk":{"subcategory":"country-flag","a":"Sri Lanka Flag","b":"1F1F1-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_sri_lanka","sri","lanka","flag","nation","country","banner","sri_lanka"],"k":[2,44],"o":2},"flag-lr":{"subcategory":"country-flag","a":"Liberia Flag","b":"1F1F1-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_liberia","lr","flag","nation","country","banner","liberia"],"k":[2,45],"o":2},"flag-ls":{"subcategory":"country-flag","a":"Lesotho Flag","b":"1F1F1-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_lesotho","ls","flag","nation","country","banner","lesotho"],"k":[2,46],"o":2},"flag-lt":{"subcategory":"country-flag","a":"Lithuania Flag","b":"1F1F1-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_lithuania","lt","flag","nation","country","banner","lithuania"],"k":[2,47],"o":2},"flag-lu":{"subcategory":"country-flag","a":"Luxembourg Flag","b":"1F1F1-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_luxembourg","lu","flag","nation","country","banner","luxembourg"],"k":[2,48],"o":2},"flag-lv":{"subcategory":"country-flag","a":"Latvia Flag","b":"1F1F1-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_latvia","lv","flag","nation","country","banner","latvia"],"k":[2,49],"o":2},"flag-ly":{"subcategory":"country-flag","a":"Libya Flag","b":"1F1F1-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_libya","ly","flag","nation","country","banner","libya"],"k":[2,50],"o":2},"flag-ma":{"subcategory":"country-flag","a":"Morocco Flag","b":"1F1F2-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_morocco","ma","flag","nation","country","banner","morocco"],"k":[2,51],"o":2},"flag-mc":{"subcategory":"country-flag","a":"Monaco Flag","b":"1F1F2-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_monaco","mc","flag","nation","country","banner","monaco"],"k":[2,52],"o":2},"flag-md":{"subcategory":"country-flag","a":"Moldova Flag","b":"1F1F2-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_moldova","moldova","republic","flag","nation","country","banner"],"k":[2,53],"o":2},"flag-me":{"subcategory":"country-flag","a":"Montenegro Flag","b":"1F1F2-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_montenegro","me","flag","nation","country","banner","montenegro"],"k":[2,54],"o":2},"flag-mf":{"subcategory":"country-flag","a":"St. Martin Flag","b":"1F1F2-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_st_martin"],"k":[2,55],"o":2},"flag-mg":{"subcategory":"country-flag","a":"Madagascar Flag","b":"1F1F2-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_madagascar","mg","flag","nation","country","banner","madagascar"],"k":[2,56],"o":2},"flag-mh":{"subcategory":"country-flag","a":"Marshall Islands Flag","b":"1F1F2-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_marshall_islands","marshall","islands","flag","nation","country","banner","marshall_islands"],"k":[2,57],"o":2},"flag-mk":{"subcategory":"country-flag","a":"North Macedonia Flag","b":"1F1F2-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_north_macedonia","macedonia","flag","nation","country","banner","north_macedonia"],"k":[2,58],"o":2},"flag-ml":{"subcategory":"country-flag","a":"Mali Flag","b":"1F1F2-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_mali","ml","flag","nation","country","banner","mali"],"k":[2,59],"o":2},"flag-mm":{"subcategory":"country-flag","a":"Myanmar (burma) Flag","b":"1F1F2-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_myanmar","mm","flag","nation","country","banner","myanmar"],"k":[2,60],"o":2},"flag-mn":{"subcategory":"country-flag","a":"Mongolia Flag","b":"1F1F2-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_mongolia","mn","flag","nation","country","banner","mongolia"],"k":[3,0],"o":2},"flag-mo":{"subcategory":"country-flag","a":"Macao Sar China Flag","b":"1F1F2-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_macao_sar_china","macao","flag","nation","country","banner","macao_sar_china"],"k":[3,1],"o":2},"flag-mp":{"subcategory":"country-flag","a":"Northern Mariana Islands Flag","b":"1F1F2-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_northern_mariana_islands","northern","mariana","islands","flag","nation","country","banner","northern_mariana_islands"],"k":[3,2],"o":2},"flag-mq":{"subcategory":"country-flag","a":"Martinique Flag","b":"1F1F2-1F1F6","d":true,"e":true,"f":true,"h":true,"j":["flag_martinique","mq","flag","nation","country","banner","martinique"],"k":[3,3],"o":2},"flag-mr":{"subcategory":"country-flag","a":"Mauritania Flag","b":"1F1F2-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_mauritania","mr","flag","nation","country","banner","mauritania"],"k":[3,4],"o":2},"flag-ms":{"subcategory":"country-flag","a":"Montserrat Flag","b":"1F1F2-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_montserrat","ms","flag","nation","country","banner","montserrat"],"k":[3,5],"o":2},"flag-mt":{"subcategory":"country-flag","a":"Malta Flag","b":"1F1F2-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_malta","mt","flag","nation","country","banner","malta"],"k":[3,6],"o":2},"flag-mu":{"subcategory":"country-flag","a":"Mauritius Flag","b":"1F1F2-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_mauritius","mu","flag","nation","country","banner","mauritius"],"k":[3,7],"o":2},"flag-mv":{"subcategory":"country-flag","a":"Maldives Flag","b":"1F1F2-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_maldives","mv","flag","nation","country","banner","maldives"],"k":[3,8],"o":2},"flag-mw":{"subcategory":"country-flag","a":"Malawi Flag","b":"1F1F2-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_malawi","mw","flag","nation","country","banner","malawi"],"k":[3,9],"o":2},"flag-mx":{"subcategory":"country-flag","a":"Mexico Flag","b":"1F1F2-1F1FD","d":true,"e":true,"f":true,"h":true,"j":["flag_mexico","mx","flag","nation","country","banner","mexico"],"k":[3,10],"o":2},"flag-my":{"subcategory":"country-flag","a":"Malaysia Flag","b":"1F1F2-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_malaysia","my","flag","nation","country","banner","malaysia"],"k":[3,11],"o":2},"flag-mz":{"subcategory":"country-flag","a":"Mozambique Flag","b":"1F1F2-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_mozambique","mz","flag","nation","country","banner","mozambique"],"k":[3,12],"o":2},"flag-na":{"subcategory":"country-flag","a":"Namibia Flag","b":"1F1F3-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_namibia","na","flag","nation","country","banner","namibia"],"k":[3,13],"o":2},"flag-nc":{"subcategory":"country-flag","a":"New Caledonia Flag","b":"1F1F3-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_new_caledonia","new","caledonia","flag","nation","country","banner","new_caledonia"],"k":[3,14],"o":2},"flag-ne":{"subcategory":"country-flag","a":"Niger Flag","b":"1F1F3-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_niger","ne","flag","nation","country","banner","niger"],"k":[3,15],"o":2},"flag-nf":{"subcategory":"country-flag","a":"Norfolk Island Flag","b":"1F1F3-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_norfolk_island","norfolk","island","flag","nation","country","banner","norfolk_island"],"k":[3,16],"o":2},"flag-ng":{"subcategory":"country-flag","a":"Nigeria Flag","b":"1F1F3-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_nigeria","flag","nation","country","banner","nigeria"],"k":[3,17],"o":2},"flag-ni":{"subcategory":"country-flag","a":"Nicaragua Flag","b":"1F1F3-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_nicaragua","ni","flag","nation","country","banner","nicaragua"],"k":[3,18],"o":2},"flag-nl":{"subcategory":"country-flag","a":"Netherlands Flag","b":"1F1F3-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_netherlands","nl","flag","nation","country","banner","netherlands"],"k":[3,19],"o":2},"flag-no":{"subcategory":"country-flag","a":"Norway Flag","b":"1F1F3-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_norway","no","flag","nation","country","banner","norway"],"k":[3,20],"o":2},"flag-np":{"subcategory":"country-flag","a":"Nepal Flag","b":"1F1F3-1F1F5","d":true,"e":true,"f":true,"h":true,"j":["flag_nepal","np","flag","nation","country","banner","nepal"],"k":[3,21],"o":2},"flag-nr":{"subcategory":"country-flag","a":"Nauru Flag","b":"1F1F3-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_nauru","nr","flag","nation","country","banner","nauru"],"k":[3,22],"o":2},"flag-nu":{"subcategory":"country-flag","a":"Niue Flag","b":"1F1F3-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_niue","nu","flag","nation","country","banner","niue"],"k":[3,23],"o":2},"flag-nz":{"subcategory":"country-flag","a":"New Zealand Flag","b":"1F1F3-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_new_zealand","new","zealand","flag","nation","country","banner","new_zealand"],"k":[3,24],"o":2},"flag-om":{"subcategory":"country-flag","a":"Oman Flag","b":"1F1F4-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_oman","om_symbol","flag","nation","country","banner","oman"],"k":[3,25],"o":2},"flag-pa":{"subcategory":"country-flag","a":"Panama Flag","b":"1F1F5-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_panama","pa","flag","nation","country","banner","panama"],"k":[3,26],"o":2},"flag-pe":{"subcategory":"country-flag","a":"Peru Flag","b":"1F1F5-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_peru","pe","flag","nation","country","banner","peru"],"k":[3,27],"o":2},"flag-pf":{"subcategory":"country-flag","a":"French Polynesia Flag","b":"1F1F5-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_french_polynesia","french","polynesia","flag","nation","country","banner","french_polynesia"],"k":[3,28],"o":2},"flag-pg":{"subcategory":"country-flag","a":"Papua New Guinea Flag","b":"1F1F5-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_papua_new_guinea","papua","new","guinea","flag","nation","country","banner","papua_new_guinea"],"k":[3,29],"o":2},"flag-ph":{"subcategory":"country-flag","a":"Philippines Flag","b":"1F1F5-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_philippines","ph","flag","nation","country","banner","philippines"],"k":[3,30],"o":2},"flag-pk":{"subcategory":"country-flag","a":"Pakistan Flag","b":"1F1F5-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_pakistan","pk","flag","nation","country","banner","pakistan"],"k":[3,31],"o":2},"flag-pl":{"subcategory":"country-flag","a":"Poland Flag","b":"1F1F5-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_poland","pl","flag","nation","country","banner","poland"],"k":[3,32],"o":2},"flag-pm":{"subcategory":"country-flag","a":"St. Pierre & Miquelon Flag","b":"1F1F5-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_st_pierre_miquelon","saint","pierre","miquelon","flag","nation","country","banner","st_pierre_miquelon"],"k":[3,33],"o":2},"flag-pn":{"subcategory":"country-flag","a":"Pitcairn Islands Flag","b":"1F1F5-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_pitcairn_islands","pitcairn","flag","nation","country","banner","pitcairn_islands"],"k":[3,34],"o":2},"flag-pr":{"subcategory":"country-flag","a":"Puerto Rico Flag","b":"1F1F5-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_puerto_rico","puerto","rico","flag","nation","country","banner","puerto_rico"],"k":[3,35],"o":2},"flag-ps":{"subcategory":"country-flag","a":"Palestinian Territories Flag","b":"1F1F5-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_palestinian_territories","palestine","palestinian","territories","flag","nation","country","banner","palestinian_territories"],"k":[3,36],"o":2},"flag-pt":{"subcategory":"country-flag","a":"Portugal Flag","b":"1F1F5-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_portugal","pt","flag","nation","country","banner","portugal"],"k":[3,37],"o":2},"flag-pw":{"subcategory":"country-flag","a":"Palau Flag","b":"1F1F5-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_palau","pw","flag","nation","country","banner","palau"],"k":[3,38],"o":2},"flag-py":{"subcategory":"country-flag","a":"Paraguay Flag","b":"1F1F5-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_paraguay","py","flag","nation","country","banner","paraguay"],"k":[3,39],"o":2},"flag-qa":{"subcategory":"country-flag","a":"Qatar Flag","b":"1F1F6-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_qatar","qa","flag","nation","country","banner","qatar"],"k":[3,40],"o":2},"flag-re":{"subcategory":"country-flag","a":"Réunion Flag","b":"1F1F7-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_reunion","réunion","flag","nation","country","banner","reunion"],"k":[3,41],"o":2},"flag-ro":{"subcategory":"country-flag","a":"Romania Flag","b":"1F1F7-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_romania","ro","flag","nation","country","banner","romania"],"k":[3,42],"o":2},"flag-rs":{"subcategory":"country-flag","a":"Serbia Flag","b":"1F1F7-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_serbia","rs","flag","nation","country","banner","serbia"],"k":[3,43],"o":2},"ru":{"subcategory":"country-flag","a":"Russia Flag","b":"1F1F7-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_russia","russian","federation","flag","nation","country","banner","russia"],"k":[3,44],"n":["flag-ru"],"o":0},"flag-rw":{"subcategory":"country-flag","a":"Rwanda Flag","b":"1F1F7-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_rwanda","rw","flag","nation","country","banner","rwanda"],"k":[3,45],"o":2},"flag-sa":{"subcategory":"country-flag","a":"Saudi Arabia Flag","b":"1F1F8-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_saudi_arabia","flag","nation","country","banner","saudi_arabia"],"k":[3,46],"o":2},"flag-sb":{"subcategory":"country-flag","a":"Solomon Islands Flag","b":"1F1F8-1F1E7","d":true,"e":true,"f":true,"h":true,"j":["flag_solomon_islands","solomon","islands","flag","nation","country","banner","solomon_islands"],"k":[3,47],"o":2},"flag-sc":{"subcategory":"country-flag","a":"Seychelles Flag","b":"1F1F8-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_seychelles","sc","flag","nation","country","banner","seychelles"],"k":[3,48],"o":2},"flag-sd":{"subcategory":"country-flag","a":"Sudan Flag","b":"1F1F8-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_sudan","sd","flag","nation","country","banner","sudan"],"k":[3,49],"o":2},"flag-se":{"subcategory":"country-flag","a":"Sweden Flag","b":"1F1F8-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_sweden","se","flag","nation","country","banner","sweden"],"k":[3,50],"o":2},"flag-sg":{"subcategory":"country-flag","a":"Singapore Flag","b":"1F1F8-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_singapore","sg","flag","nation","country","banner","singapore"],"k":[3,51],"o":2},"flag-sh":{"subcategory":"country-flag","a":"St. Helena Flag","b":"1F1F8-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_st_helena","saint","helena","ascension","tristan","cunha","flag","nation","country","banner","st_helena"],"k":[3,52],"o":2},"flag-si":{"subcategory":"country-flag","a":"Slovenia Flag","b":"1F1F8-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_slovenia","si","flag","nation","country","banner","slovenia"],"k":[3,53],"o":2},"flag-sj":{"subcategory":"country-flag","a":"Svalbard & Jan Mayen Flag","b":"1F1F8-1F1EF","d":true,"e":true,"f":true,"h":true,"j":["flag_svalbard_jan_mayen"],"k":[3,54],"o":2},"flag-sk":{"subcategory":"country-flag","a":"Slovakia Flag","b":"1F1F8-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_slovakia","sk","flag","nation","country","banner","slovakia"],"k":[3,55],"o":2},"flag-sl":{"subcategory":"country-flag","a":"Sierra Leone Flag","b":"1F1F8-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_sierra_leone","sierra","leone","flag","nation","country","banner","sierra_leone"],"k":[3,56],"o":2},"flag-sm":{"subcategory":"country-flag","a":"San Marino Flag","b":"1F1F8-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_san_marino","san","marino","flag","nation","country","banner","san_marino"],"k":[3,57],"o":2},"flag-sn":{"subcategory":"country-flag","a":"Senegal Flag","b":"1F1F8-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_senegal","sn","flag","nation","country","banner","senegal"],"k":[3,58],"o":2},"flag-so":{"subcategory":"country-flag","a":"Somalia Flag","b":"1F1F8-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_somalia","so","flag","nation","country","banner","somalia"],"k":[3,59],"o":2},"flag-sr":{"subcategory":"country-flag","a":"Suriname Flag","b":"1F1F8-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_suriname","sr","flag","nation","country","banner","suriname"],"k":[3,60],"o":2},"flag-ss":{"subcategory":"country-flag","a":"South Sudan Flag","b":"1F1F8-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_south_sudan","south","sd","flag","nation","country","banner","south_sudan"],"k":[4,0],"o":2},"flag-st":{"subcategory":"country-flag","a":"São Tomé & Príncipe Flag","b":"1F1F8-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_sao_tome_principe","sao","tome","principe","flag","nation","country","banner","sao_tome_principe"],"k":[4,1],"o":2},"flag-sv":{"subcategory":"country-flag","a":"El Salvador Flag","b":"1F1F8-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_el_salvador","el","salvador","flag","nation","country","banner","el_salvador"],"k":[4,2],"o":2},"flag-sx":{"subcategory":"country-flag","a":"Sint Maarten Flag","b":"1F1F8-1F1FD","d":true,"e":true,"f":true,"h":true,"j":["flag_sint_maarten","sint","maarten","dutch","flag","nation","country","banner","sint_maarten"],"k":[4,3],"o":2},"flag-sy":{"subcategory":"country-flag","a":"Syria Flag","b":"1F1F8-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_syria","syrian","arab","republic","flag","nation","country","banner","syria"],"k":[4,4],"o":2},"flag-sz":{"subcategory":"country-flag","a":"Eswatini Flag","b":"1F1F8-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_eswatini","sz","flag","nation","country","banner","eswatini"],"k":[4,5],"o":2},"flag-ta":{"subcategory":"country-flag","a":"Tristan Da Cunha Flag","b":"1F1F9-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_tristan_da_cunha"],"k":[4,6],"o":2},"flag-tc":{"subcategory":"country-flag","a":"Turks & Caicos Islands Flag","b":"1F1F9-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_turks_caicos_islands","turks","caicos","islands","flag","nation","country","banner","turks_caicos_islands"],"k":[4,7],"o":2},"flag-td":{"subcategory":"country-flag","a":"Chad Flag","b":"1F1F9-1F1E9","d":true,"e":true,"f":true,"h":true,"j":["flag_chad","td","flag","nation","country","banner","chad"],"k":[4,8],"o":2},"flag-tf":{"subcategory":"country-flag","a":"French Southern Territories Flag","b":"1F1F9-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_french_southern_territories","french","southern","territories","flag","nation","country","banner","french_southern_territories"],"k":[4,9],"o":2},"flag-tg":{"subcategory":"country-flag","a":"Togo Flag","b":"1F1F9-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_togo","tg","flag","nation","country","banner","togo"],"k":[4,10],"o":2},"flag-th":{"subcategory":"country-flag","a":"Thailand Flag","b":"1F1F9-1F1ED","d":true,"e":true,"f":true,"h":true,"j":["flag_thailand","th","flag","nation","country","banner","thailand"],"k":[4,11],"o":2},"flag-tj":{"subcategory":"country-flag","a":"Tajikistan Flag","b":"1F1F9-1F1EF","d":true,"e":true,"f":true,"h":true,"j":["flag_tajikistan","tj","flag","nation","country","banner","tajikistan"],"k":[4,12],"o":2},"flag-tk":{"subcategory":"country-flag","a":"Tokelau Flag","b":"1F1F9-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_tokelau","tk","flag","nation","country","banner","tokelau"],"k":[4,13],"o":2},"flag-tl":{"subcategory":"country-flag","a":"Timor-Leste Flag","b":"1F1F9-1F1F1","d":true,"e":true,"f":true,"h":true,"j":["flag_timor_leste","timor","leste","flag","nation","country","banner","timor_leste"],"k":[4,14],"o":2},"flag-tm":{"subcategory":"country-flag","a":"Turkmenistan Flag","b":"1F1F9-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_turkmenistan","flag","nation","country","banner","turkmenistan"],"k":[4,15],"o":2},"flag-tn":{"subcategory":"country-flag","a":"Tunisia Flag","b":"1F1F9-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_tunisia","tn","flag","nation","country","banner","tunisia"],"k":[4,16],"o":2},"flag-to":{"subcategory":"country-flag","a":"Tonga Flag","b":"1F1F9-1F1F4","d":true,"e":true,"f":true,"h":true,"j":["flag_tonga","to","flag","nation","country","banner","tonga"],"k":[4,17],"o":2},"flag-tr":{"subcategory":"country-flag","a":"Turkey Flag","b":"1F1F9-1F1F7","d":true,"e":true,"f":true,"h":true,"j":["flag_turkey","turkey","flag","nation","country","banner"],"k":[4,18],"o":2},"flag-tt":{"subcategory":"country-flag","a":"Trinidad & Tobago Flag","b":"1F1F9-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_trinidad_tobago","trinidad","tobago","flag","nation","country","banner","trinidad_tobago"],"k":[4,19],"o":2},"flag-tv":{"subcategory":"country-flag","a":"Tuvalu Flag","b":"1F1F9-1F1FB","d":true,"e":true,"f":true,"h":true,"j":["flag_tuvalu","flag","nation","country","banner","tuvalu"],"k":[4,20],"o":2},"flag-tw":{"subcategory":"country-flag","a":"Taiwan Flag","b":"1F1F9-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_taiwan","tw","flag","nation","country","banner","taiwan"],"k":[4,21],"o":2},"flag-tz":{"subcategory":"country-flag","a":"Tanzania Flag","b":"1F1F9-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_tanzania","tanzania","united","republic","flag","nation","country","banner"],"k":[4,22],"o":2},"flag-ua":{"subcategory":"country-flag","a":"Ukraine Flag","b":"1F1FA-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_ukraine","ua","flag","nation","country","banner","ukraine"],"k":[4,23],"o":2},"flag-ug":{"subcategory":"country-flag","a":"Uganda Flag","b":"1F1FA-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_uganda","ug","flag","nation","country","banner","uganda"],"k":[4,24],"o":2},"flag-um":{"subcategory":"country-flag","a":"U.s. Outlying Islands Flag","b":"1F1FA-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_u_s_outlying_islands"],"k":[4,25],"o":2},"flag-un":{"subcategory":"country-flag","a":"United Nations Flag","b":"1F1FA-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_united_nations","un","flag","banner"],"k":[4,26],"o":4},"us":{"subcategory":"country-flag","a":"United States Flag","b":"1F1FA-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_united_states","united","states","america","flag","nation","country","banner","united_states"],"k":[4,27],"n":["flag-us"],"o":0},"flag-uy":{"subcategory":"country-flag","a":"Uruguay Flag","b":"1F1FA-1F1FE","d":true,"e":true,"f":true,"h":true,"j":["flag_uruguay","uy","flag","nation","country","banner","uruguay"],"k":[4,28],"o":2},"flag-uz":{"subcategory":"country-flag","a":"Uzbekistan Flag","b":"1F1FA-1F1FF","d":true,"e":true,"f":true,"h":true,"j":["flag_uzbekistan","uz","flag","nation","country","banner","uzbekistan"],"k":[4,29],"o":2},"flag-va":{"subcategory":"country-flag","a":"Vatican City Flag","b":"1F1FB-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_vatican_city","vatican","city","flag","nation","country","banner","vatican_city"],"k":[4,30],"o":2},"flag-vc":{"subcategory":"country-flag","a":"St. Vincent & Grenadines Flag","b":"1F1FB-1F1E8","d":true,"e":true,"f":true,"h":true,"j":["flag_st_vincent_grenadines","saint","vincent","grenadines","flag","nation","country","banner","st_vincent_grenadines"],"k":[4,31],"o":2},"flag-ve":{"subcategory":"country-flag","a":"Venezuela Flag","b":"1F1FB-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_venezuela","ve","bolivarian","republic","flag","nation","country","banner","venezuela"],"k":[4,32],"o":2},"flag-vg":{"subcategory":"country-flag","a":"British Virgin Islands Flag","b":"1F1FB-1F1EC","d":true,"e":true,"f":true,"h":true,"j":["flag_british_virgin_islands","british","virgin","islands","bvi","flag","nation","country","banner","british_virgin_islands"],"k":[4,33],"o":2},"flag-vi":{"subcategory":"country-flag","a":"U.s. Virgin Islands Flag","b":"1F1FB-1F1EE","d":true,"e":true,"f":true,"h":true,"j":["flag_u_s_virgin_islands","virgin","islands","us","flag","nation","country","banner","u_s_virgin_islands"],"k":[4,34],"o":2},"flag-vn":{"subcategory":"country-flag","a":"Vietnam Flag","b":"1F1FB-1F1F3","d":true,"e":true,"f":true,"h":true,"j":["flag_vietnam","viet","nam","flag","nation","country","banner","vietnam"],"k":[4,35],"o":2},"flag-vu":{"subcategory":"country-flag","a":"Vanuatu Flag","b":"1F1FB-1F1FA","d":true,"e":true,"f":true,"h":true,"j":["flag_vanuatu","vu","flag","nation","country","banner","vanuatu"],"k":[4,36],"o":2},"flag-wf":{"subcategory":"country-flag","a":"Wallis & Futuna Flag","b":"1F1FC-1F1EB","d":true,"e":true,"f":true,"h":true,"j":["flag_wallis_futuna","wallis","futuna","flag","nation","country","banner","wallis_futuna"],"k":[4,37],"o":2},"flag-ws":{"subcategory":"country-flag","a":"Samoa Flag","b":"1F1FC-1F1F8","d":true,"e":true,"f":true,"h":true,"j":["flag_samoa","ws","flag","nation","country","banner","samoa"],"k":[4,38],"o":2},"flag-xk":{"subcategory":"country-flag","a":"Kosovo Flag","b":"1F1FD-1F1F0","d":true,"e":true,"f":true,"h":true,"j":["flag_kosovo","xk","flag","nation","country","banner","kosovo"],"k":[4,39],"o":2},"flag-ye":{"subcategory":"country-flag","a":"Yemen Flag","b":"1F1FE-1F1EA","d":true,"e":true,"f":true,"h":true,"j":["flag_yemen","ye","flag","nation","country","banner","yemen"],"k":[4,40],"o":2},"flag-yt":{"subcategory":"country-flag","a":"Mayotte Flag","b":"1F1FE-1F1F9","d":true,"e":true,"f":true,"h":true,"j":["flag_mayotte","yt","flag","nation","country","banner","mayotte"],"k":[4,41],"o":2},"flag-za":{"subcategory":"country-flag","a":"South Africa Flag","b":"1F1FF-1F1E6","d":true,"e":true,"f":true,"h":true,"j":["flag_south_africa","south","africa","flag","nation","country","banner","south_africa"],"k":[4,42],"o":2},"flag-zm":{"subcategory":"country-flag","a":"Zambia Flag","b":"1F1FF-1F1F2","d":true,"e":true,"f":true,"h":true,"j":["flag_zambia","zm","flag","nation","country","banner","zambia"],"k":[4,43],"o":2},"flag-zw":{"subcategory":"country-flag","a":"Zimbabwe Flag","b":"1F1FF-1F1FC","d":true,"e":true,"f":true,"h":true,"j":["flag_zimbabwe","zw","flag","nation","country","banner","zimbabwe"],"k":[4,44],"o":2},"flag-england":{"subcategory":"subdivision-flag","a":"England Flag","b":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","d":true,"e":true,"f":true,"h":true,"j":["flag_england","flag","english"],"k":[10,32],"o":5},"flag-scotland":{"subcategory":"subdivision-flag","a":"Scotland Flag","b":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","d":true,"e":true,"f":true,"h":true,"j":["flag_scotland","flag","scottish"],"k":[10,33],"o":5},"flag-wales":{"subcategory":"subdivision-flag","a":"Wales Flag","b":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","d":true,"e":true,"f":true,"h":true,"j":["flag_wales","flag","welsh"],"k":[10,34],"o":5}}`),xl={satisfied:"laughing",grinning_face_with_star_eyes:"star-struck",grinning_face_with_one_large_and_one_small_eye:"zany_face",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"face_with_hand_over_mouth",face_with_finger_covering_closed_lips:"shushing_face",face_with_one_eyebrow_raised:"face_with_raised_eyebrow",face_with_open_mouth_vomiting:"face_vomiting",shocked_face_with_exploding_head:"exploding_head",serious_face_with_symbols_covering_mouth:"face_with_symbols_on_mouth",poop:"hankey",shit:"hankey",collision:"boom",raised_hand:"hand",hand_with_index_and_middle_fingers_crossed:"crossed_fingers",sign_of_the_horns:"the_horns",reversed_hand_with_middle_finger_extended:"middle_finger",thumbsup:"+1",thumbsdown:"-1",punch:"facepunch",mother_christmas:"mrs_claus",running:"runner","man-with-bunny-ears-partying":"men-with-bunny-ears-partying","woman-with-bunny-ears-partying":"women-with-bunny-ears-partying",women_holding_hands:"two_women_holding_hands",woman_and_man_holding_hands:"man_and_woman_holding_hands",couple:"man_and_woman_holding_hands",men_holding_hands:"two_men_holding_hands",paw_prints:"feet",flipper:"dolphin",honeybee:"bee",lady_beetle:"ladybug",cooking:"fried_egg",knife:"hocho",red_car:"car",sailboat:"boat",waxing_gibbous_moon:"moon",sun_small_cloud:"mostly_sunny",sun_behind_cloud:"barely_sunny",sun_behind_rain_cloud:"partly_sunny_rain",lightning_cloud:"lightning",tornado_cloud:"tornado",tshirt:"shirt",shoe:"mans_shoe",telephone:"phone",lantern:"izakaya_lantern",open_book:"book",envelope:"email",pencil:"memo",heavy_exclamation_mark:"exclamation",staff_of_aesculapius:"medical_symbol","flag-cn":"cn","flag-de":"de","flag-es":"es","flag-fr":"fr",uk:"gb","flag-gb":"gb","flag-it":"it","flag-jp":"jp","flag-kr":"kr","flag-ru":"ru","flag-us":"us"},No={compressed:wl,categories:Dl,emojis:vl,aliases:xl},$o=lu("nextcloud-vue").persist(!0).build();let Li;function Cl(a,e=10){Li||(Li=new Sn.EmojiIndex(No));const t=Uo();let i;return i=Sn.frequently.get(e).map(r=>Li.emoji(r))||[],i.map(r=>r.getSkin(t))}function Uo(){const a=Number.parseInt($o.getItem("NcEmojiPicker::currentSkinTone")??"1");return Math.min(Math.max(a,1),6)}function El(a){a=Math.min(Math.max(a,1),6),$o.setItem("NcEmojiPicker::currentSkinTone",a.toString())}var vr="emoji-mart";const jl=JSON;var Yo=typeof window<"u"&&"localStorage"in window;let _r,lr;function Bl(a){a||(a={}),_r=a.getter,lr=a.setter}function ql(a){vr=a}function Sl(a){for(let e in a){let t=a[e];Xo(e,t)}}function Xo(a,e){if(lr)lr(a,e);else{if(!Yo)return;try{window.localStorage[`${vr}.${a}`]=jl.stringify(e)}catch{}}}function Al(a){if(_r)return _r(a);if(Yo){try{var e=window.localStorage[`${vr}.${a}`]}catch{return}if(e)return JSON.parse(e)}}const Zt={update:Sl,set:Xo,get:Al,setNamespace:ql,setHandlers:Bl},Ti={name:"a",unified:"b",non_qualified:"c",has_img_apple:"d",has_img_google:"e",has_img_twitter:"f",has_img_facebook:"h",keywords:"j",sheet:"k",emoticons:"l",text:"m",short_names:"n",added_in:"o"},Ko=a=>{const e=[];var t=(i,r)=>{i&&(Array.isArray(i)?i:[i]).forEach(n=>{(r?n.split(/[-|_|\s]+/):[n]).forEach(o=>{o=o.toLowerCase(),e.indexOf(o)==-1&&e.push(o)})})};return t(a.short_names,!0),t(a.name,!0),t(a.keywords,!1),t(a.emoticons,!1),e.join(",")};function Zo(a){var e=Object.getOwnPropertyNames(a);for(let t of e){let i=a[t];a[t]=i&&typeof i=="object"?Zo(i):i}return Object.freeze(a)}const Ml=a=>{if(!a.compressed)return a;a.compressed=!1;for(let e in a.emojis){let t=a.emojis[e];for(let i in Ti)t[i]=t[Ti[i]],delete t[Ti[i]];t.short_names||(t.short_names=[]),t.short_names.unshift(e),t.sheet_x=t.sheet[0],t.sheet_y=t.sheet[1],delete t.sheet,t.text||(t.text=""),t.added_in||(t.added_in=6),t.added_in=t.added_in.toFixed(1),t.search=Ko(t)}return a=Zo(a),a},zi=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart","hankey"];let Xe,xr,gr={};function Qo(){xr=!0,Xe=Zt.get("frequently")}function Pl(a){xr||Qo();var{id:e}=a;Xe||(Xe=gr),Xe[e]||(Xe[e]=0),Xe[e]+=1,Zt.set("last",e),Zt.set("frequently",Xe)}function Ll(a){if(xr||Qo(),!Xe){gr={};const n=[];let o=Math.min(a,zi.length);for(let s=0;sXe[n]-Xe[o]).reverse().slice(0,e),r=Zt.get("last");return r&&i.indexOf(r)==-1&&(i.pop(),i.push(r)),i}const hr={add:Pl,get:Ll},Tl={activity:'',custom:'',flags:'',foods:'',nature:'',objects:'',smileys:'',people:'',places:'',recent:'',symbols:''},zl={props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default(){return{}}}},emits:["click"],created(){this.svgs=Tl}},Hl={role:"tablist",class:"emoji-mart-anchors"},Rl=["aria-label","aria-selected","data-title","onClick"],Il=["innerHTML"];function Ol(a,e,t,i,r,n){return p(),k("div",Hl,[(p(!0),k(qe,null,Re(t.categories,o=>(p(),k("button",{role:"tab",type:"button","aria-label":o.name,"aria-selected":o.id==t.activeCategory.id,key:o.id,class:He({"emoji-mart-anchor":!0,"emoji-mart-anchor-selected":o.id==t.activeCategory.id}),style:Se({color:o.id==t.activeCategory.id?t.color:""}),"data-title":t.i18n.categories[o.id],onClick:s=>a.$emit("click",o)},[S("div",{"aria-hidden":"true",innerHTML:a.svgs[o.id]},null,8,Il),S("span",{"aria-hidden":"true",class:"emoji-mart-anchor-bar",style:Se({backgroundColor:t.color})},null,4)],14,Rl))),128))])}const Gl=Rt(zl,[["render",Ol]]),Wl=String,Vl=Wl.fromCodePoint||function(){var a=16384,e=[],t,i,r=-1,n=arguments.length;if(!n)return"";for(var o="";++r1114111||Math.floor(s)!=s)throw RangeError("Invalid code point: "+s);s<=65535?e.push(s):(s-=65536,t=(s>>10)+55296,i=s%1024+56320,e.push(t,i)),(r+1===n||e.length>a)&&(o+=String.fromCharCode.apply(null,e),e.length=0)}return o};function Nl(a){var e=a.split("-"),t=e.map(i=>`0x${i}`);return Vl.apply(null,t)}function An(a){return a.reduce((e,t)=>(e.indexOf(t)===-1&&e.push(t),e),[])}function $l(a,e){const t=An(a),i=An(e);return t.filter(r=>i.indexOf(r)>=0)}function Jo(a,e){var t={};for(let i in a){let r=a[i],n=r;Object.prototype.hasOwnProperty.call(e,i)&&(n=e[i]),typeof n=="object"&&(n=Jo(r,n)),t[i]=n}return t}function Ul(){if(typeof document>"u")return 0;const a=document.createElement("div");a.style.width="100px",a.style.height="100px",a.style.overflow="scroll",a.style.position="absolute",a.style.top="-9999px",document.body.appendChild(a);const e=a.offsetWidth-a.clientWidth;return document.body.removeChild(a),e}const Yl=61,Xl=/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/,Mn=["1F3FA","1F3FB","1F3FC","1F3FD","1F3FE","1F3FF"];class Kl{constructor(e,{emojisToShowFilter:t,include:i,exclude:r,custom:n,recent:o,recentLength:s=20}={}){this._data=Ml(e),this._emojisFilter=t||null,this._include=i||null,this._exclude=r||null,this._custom=n||[],this._recent=o||hr.get(s),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:"recent",name:"Recent",emojis:[]},this._customCategory={id:"custom",name:"Custom",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}buildIndex(){let e=this._data.categories;if(this._include&&(e=e.filter(t=>this._include.includes(t.id)),e=e.sort((t,i)=>{const r=this._include.indexOf(t.id),n=this._include.indexOf(i.id);return rn?1:0})),e.forEach(t=>{if(!this.isCategoryNeeded(t.id))return;let i={id:t.id,name:t.name,emojis:[]};t.emojis.forEach(r=>{let n=this.addEmoji(r);n&&i.emojis.push(n)}),i.emojis.length&&this._categories.push(i)}),this.isCategoryNeeded("custom")){if(this._custom.length>0)for(let t of this._custom)this.addCustomEmoji(t);this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded("recent")&&(this._recent.length&&this._recent.map(t=>{for(let i of this._customCategory.emojis)if(i.id===t){this._recentCategory.emojis.push(i);return}this.hasEmoji(t)&&this._recentCategory.emojis.push(this.emoji(t))}),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}findEmoji(e,t){let i=e.match(Xl);if(i&&(e=i[1],i[2]&&(t=parseInt(i[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){let r=this._emojis[e];return t?r.getSkin(t):r}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}categories(){return this._categories}emoji(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);let t=this._emojis[e];if(!t)throw new Error("Can not find emoji by id: "+e);return t}firstEmoji(){let e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error("Can not get first emoji");return e}hasEmoji(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}nativeEmoji(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}search(e,t){if(t||(t=75),!e.length)return null;if(e=="-"||e=="-1")return[this.emoji("-1")];let i=e.toLowerCase().split(/[\s|,|\-|_]+/),r=[];i.length>2&&(i=[i[0],i[1]]),r=i.map(o=>{let s=this._emojis,u=this._searchIndex,_=0;for(let l=0;l{var w=d[F.id],m=d[f.id];return w-m})}s=u.emojis}return u.results}).filter(o=>o);var n=null;return r.length>1?n=$l.apply(null,r):r.length?n=r[0]:n=[],n&&n.length>t&&(n=n.slice(0,t)),n}addCustomEmoji(e){let t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=Ko(t));let i=new _i(t);return this._emojis[i.id]=i,this._customCategory.emojis.push(i),i}addEmoji(e){let t=this._data.emojis[e];if(!this.isEmojiNeeded(t))return!1;let i=new _i(t);if(this._emojis[e]=i,i.native&&(this._nativeEmojis[i.native]=i),i._skins)for(let r in i._skins){let n=i._skins[r];n.native&&(this._nativeEmojis[n.native]=n)}return i.emoticons&&i.emoticons.forEach(r=>{this._emoticons[r]||(this._emoticons[r]=e)}),i}isCategoryNeeded(e){let t=this._include&&this._include.length?this._include.indexOf(e)>-1:!0,i=this._exclude&&this._exclude.length?this._exclude.indexOf(e)>-1:!1;return!(!t||i)}isEmojiNeeded(e){return this._emojisFilter?this._emojisFilter(e):!0}}class _i{constructor(e){if(this._data=Object.assign({},e),this._skins=null,this._data.skin_variations){this._skins=[];for(var t in Mn){let i=Mn[t],r=this._data.skin_variations[i],n=Object.assign({},e);for(let o in r)n[o]=r[o];delete n.skin_variations,n.skin_tone=parseInt(t)+1,this._skins.push(new _i(n))}}this._sanitized=Zl(this._data);for(let i in this._sanitized)this[i]=this._sanitized[i];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}getSkin(e){return e&&e!="native"&&this._skins?this._skins[e-1]:this}getPosition(){let e=Yl-1,t=+(100/e*this._data.sheet_x).toFixed(2),i=+(100/e*this._data.sheet_y).toFixed(2);return`${t}% ${i}%`}ariaLabel(){return[this.native].concat(this.short_names).filter(Boolean).join(", ")}}class es{constructor(e,t,i,r,n,o,s){this._emoji=e,this._native=r,this._skin=t,this._set=i,this._fallback=n,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(s),this.content=this._content(),this.title=o===!0?e.short_name:null,this.ariaLabel=e.ariaLabel(),Object.freeze(this)}getEmoji(){return this._emoji.getSkin(this._skin)}_canRender(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}_cssClass(){return["emoji-set-"+this._set,"emoji-type-"+this._emojiType()]}_cssStyle(e){let t={};return this._isCustom()?t={backgroundImage:"url("+this.getEmoji()._data.imageUrl+")",backgroundSize:"100%",width:e+"px",height:e+"px"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(this._isNative()?t=Object.assign(t,{fontSize:Math.round(e*.95*10)/10+"px"}):t=Object.assign(t,{width:e+"px",height:e+"px"})),t}_content(){return this._isCustom()?"":this._isNative()?this.getEmoji().native:this._hasEmoji()?"":this._fallback?this._fallback(this.getEmoji()):null}_isNative(){return this._native}_isCustom(){return this.getEmoji().custom}_hasEmoji(){if(!this.getEmoji()._data)return!1;const e=this.getEmoji()._data["has_img_"+this._set];return e===void 0?!0:e}_emojiType(){return this._isCustom()?"custom":this._isNative()?"native":this._hasEmoji()?"image":"fallback"}}function Zl(a){var{name:e,short_names:t,skin_tone:i,skin_variations:r,emoticons:n,unified:o,custom:s,imageUrl:u}=a,_=a.id||t[0],l=`:${_}:`;return s?{id:_,name:e,colons:l,emoticons:n,custom:s,imageUrl:u}:(i&&(l+=`:skin-tone-${i}:`),{id:_,name:e,colons:l,emoticons:n,unified:o.toLowerCase(),skin:i||(r?1:null),native:Nl(o)})}const Ql={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:"apple"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:"span"}},Jl={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:"Emoji Mart™"},emoji:{type:String,default:"department_store"},color:{type:String,default:"#ae65c5"},set:{type:String,default:"apple"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default(){return{}}}},eg={props:{...Ql,data:{type:Object,required:!0}},emits:["click","mouseenter","mouseleave"],computed:{view(){return new es(this.emojiObject,this.skin,this.set,this.native,this.fallback,this.tooltip,this.size)},sanitizedData(){return this.emojiObject._sanitized},title(){return this.tooltip?this.emojiObject.short_name:null},emojiObject(){return typeof this.emoji=="string"?this.data.findEmoji(this.emoji):this.emoji}},created(){},methods:{onClick(){this.$emit("click",this.emojiObject)},onMouseEnter(){this.$emit("mouseenter",this.emojiObject)},onMouseLeave(){this.$emit("mouseleave",this.emojiObject)}}};function tg(a,e,t,i,r,n){return n.view.canRender?(p(),ae(wt(a.tag),{key:0,title:n.view.title,"aria-label":n.view.ariaLabel,"data-title":n.title,class:"emoji-mart-emoji",onMouseenter:n.onMouseEnter,onMouseleave:n.onMouseLeave,onClick:n.onClick},{default:Y(()=>[S("span",{class:He(n.view.cssClass),style:Se(n.view.cssStyle)},G(n.view.content),7)]),_:1},40,["title","aria-label","data-title","onMouseenter","onMouseleave","onClick"])):T("",!0)}const Cr=Rt(eg,[["render",tg]]),ag={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},emojis:{type:Array},emojiProps:{type:Object,required:!0}},methods:{activeClass:function(a){return!this.emojiProps.selectedEmoji||!this.emojiProps.selectedEmojiCategory?"":this.emojiProps.selectedEmoji.id==a.id&&this.emojiProps.selectedEmojiCategory.id==this.id?"emoji-mart-emoji-selected":""}},computed:{isVisible(){return!!this.emojis},isSearch(){return this.name=="Search"},hasResults(){return this.emojis.length>0},emojiObjects(){return this.emojis.map(a=>{let e=a,t=new es(a,this.emojiProps.skin,this.emojiProps.set,this.emojiProps.native,this.emojiProps.fallback,this.emojiProps.emojiTooltip,this.emojiProps.emojiSize);return{emojiObject:e,emojiView:t}})}},components:{Emoji:Cr}},ig=["aria-label"],rg={class:"emoji-mart-category-label"},ng={class:"emoji-mart-category-label"},og=["aria-label","data-title","title","onMouseenter","onMouseleave","onClick"],sg={key:0},ug={class:"emoji-mart-no-results-label"};function _g(a,e,t,i,r,n){const o=Pe("emoji");return n.isVisible&&(n.isSearch||n.hasResults)?(p(),k("section",{key:0,class:He({"emoji-mart-category":!0,"emoji-mart-no-results":!n.hasResults}),"aria-label":t.i18n.categories[t.id]},[S("div",rg,[S("h3",ng,G(t.i18n.categories[t.id]),1)]),(p(!0),k(qe,null,Re(n.emojiObjects,({emojiObject:s,emojiView:u})=>(p(),k(qe,null,[u.canRender?(p(),k("button",{"aria-label":u.ariaLabel,role:"option","aria-selected":"false","aria-posinset":"1","aria-setsize":"1812",type:"button","data-title":s.short_name,key:s.id,title:u.title,class:He(["emoji-mart-emoji",n.activeClass(s)]),onMouseenter:_=>t.emojiProps.onEnter(u.getEmoji()),onMouseleave:_=>t.emojiProps.onLeave(u.getEmoji()),onClick:_=>t.emojiProps.onClick(u.getEmoji())},[S("span",{class:He(u.cssClass),style:Se(u.cssStyle)},G(u.content),7)],42,og)):T("",!0)],64))),256)),n.hasResults?T("",!0):(p(),k("div",sg,[I(o,{data:t.data,emoji:"sleuth_or_spy",native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","native","skin","set"]),S("div",ug,G(t.i18n.notfound),1)]))],10,ig)):T("",!0)}const lg=Rt(ag,[["render",_g]]),gg={props:{skin:{type:Number,required:!0}},emits:["change"],data(){return{opened:!1}},methods:{onClick(a){this.opened&&a!=this.skin&&this.$emit("change",a),this.opened=!this.opened}}},hg=["onClick"];function dg(a,e,t,i,r,n){return p(),k("div",{class:He({"emoji-mart-skin-swatches":!0,"emoji-mart-skin-swatches-opened":r.opened})},[(p(),k(qe,null,Re(6,o=>S("span",{key:o,class:He({"emoji-mart-skin-swatch":!0,"emoji-mart-skin-swatch-selected":t.skin==o})},[S("span",{class:He("emoji-mart-skin emoji-mart-skin-tone-"+o),onClick:s=>n.onClick(o)},null,10,hg)],2)),64))],2)}const fg=Rt(gg,[["render",dg]]),Fg={props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData(){return this.emoji?this.emoji:{}},emojiShortNames(){return this.emojiData.short_names},emojiEmoticons(){return this.emojiData.emoticons}},components:{Emoji:Cr,Skins:fg}},cg={class:"emoji-mart-preview"},mg={class:"emoji-mart-preview-emoji"},pg={class:"emoji-mart-preview-data"},bg={class:"emoji-mart-preview-name"},yg={class:"emoji-mart-preview-shortnames"},kg={class:"emoji-mart-preview-emoticons"},wg={class:"emoji-mart-preview-emoji"},Dg={class:"emoji-mart-preview-data"},vg={class:"emoji-mart-title-label"},xg={key:0,class:"emoji-mart-preview-skins"};function Cg(a,e,t,i,r,n){const o=Pe("emoji"),s=Pe("skins");return p(),k("div",cg,[t.emoji?(p(),k(qe,{key:0},[S("div",mg,[I(o,{data:t.data,emoji:t.emoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),S("div",pg,[S("div",bg,G(t.emoji.name),1),S("div",yg,[(p(!0),k(qe,null,Re(n.emojiShortNames,u=>(p(),k("span",{key:u,class:"emoji-mart-preview-shortname"},":"+G(u)+":",1))),128))]),S("div",kg,[(p(!0),k(qe,null,Re(n.emojiEmoticons,u=>(p(),k("span",{key:u,class:"emoji-mart-preview-emoticon"},G(u),1))),128))])])],64)):(p(),k(qe,{key:1},[S("div",wg,[I(o,{data:t.data,emoji:t.idleEmoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),S("div",Dg,[S("span",vg,G(t.title),1)]),t.showSkinTones?(p(),k("div",xg,[I(s,{skin:t.skinProps.skin,onChange:e[0]||(e[0]=u=>t.onSkinChange(u))},null,8,["skin"])])):T("",!0)],64))])}const Eg=Rt(Fg,[["render",Cg]]),jg={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:["search","enter","arrowUp","arrowDown","arrowRight","arrowLeft"],data(){return{value:""}},computed:{emojiIndex(){return this.data}},watch:{value(){this.$emit("search",this.value)}},methods:{clear(){this.value=""}},mounted(){let a=this.$el.querySelector("input");this.autoFocus&&a.focus()}},Bg={class:"emoji-mart-search"},qg=["placeholder"];function Sg(a,e,t,i,r,n){return p(),k("div",Bg,[yt(S("input",{type:"text",placeholder:t.i18n.search,role:"textbox","aria-autocomplete":"list","aria-owns":"emoji-mart-list","aria-label":"Search for an emoji","aria-describedby":"emoji-mart-search-description",onKeydown:[e[0]||(e[0]=$e(o=>a.$emit("arrowLeft",o),["left"])),e[1]||(e[1]=$e(()=>a.$emit("arrowRight"),["right"])),e[2]||(e[2]=$e(()=>a.$emit("arrowDown"),["down"])),e[3]||(e[3]=$e(o=>a.$emit("arrowUp",o),["up"])),e[4]||(e[4]=$e(()=>a.$emit("enter"),["enter"]))],"onUpdate:modelValue":e[5]||(e[5]=o=>r.value=o)},null,40,qg),[[pr,r.value]]),e[6]||(e[6]=S("span",{class:"hidden",id:"emoji-picker-search-description"},"Use the left, right, up and down arrow keys to navigate the emoji search results.",-1))])}const Ag=Rt(jg,[["render",Sg]]);var Mg=typeof window<"u";Mg&&(function(){for(var a=0,e=["ms","moz","webkit","o"],t=0;tt.emojis.length>0),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}onScroll(){const e=this._vm.$refs.scroll;if(!e)return;const t=e.scrollTop;let i=this.filteredCategories[0];for(let r=0,n=this.filteredCategories.length;rt)break;i=o}this.activeCategory=i}get allCategories(){return this._categories}get filteredCategories(){return this.searchEmojis?[{id:"search",name:"Search",emojis:this.searchEmojis}]:this._categories.filter(e=>e.emojis.length>0)}get previewEmojiCategory(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}onAnchorClick(e){if(this.searchEmojis)return;let t=this.filteredCategories.indexOf(e),i=this._vm.getCategoryComponent(t),r=()=>{if(i){let n=i.$el.offsetTop;e.first&&(n=0),this._vm.$refs.scroll.scrollTop=n}};this._vm.infiniteScroll?r():this.activeCategory=this.filteredCategories[t]}onSearch(e){let t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}onEmojiEnter(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}onEmojiLeave(e){this.previewEmoji=null}onArrowLeft(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}onArrowRight(){this.previewEmojiIdx=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}onArrowDown(){if(this.previewEmojiIdx==-1)return this.onArrowRight();const e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length;let t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(let i=0;i0?e=this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:e=0);for(let t=0;t{const e=this._vm.$refs.scroll,t=e.querySelector(".emoji-mart-emoji-selected"),i=e.offsetTop-e.offsetHeight;t&&t.offsetTop+t.offsetHeight>i+e.scrollTop&&(e.scrollTop+=t.offsetHeight),t&&t.offsetTop[a.showSearch?(p(),ae(s,{key:0,ref:"search",data:t.data,i18n:n.mergedI18n,"auto-focus":a.autoFocus,"on-search":n.onSearch,onSearch:n.onSearch,onArrowLeft:n.onArrowLeft,onArrowRight:n.onArrowRight,onArrowDown:n.onArrowDown,onArrowUp:n.onArrowUp,onEnter:n.onEnter,onSelect:n.onTextSelect},null,8,["data","i18n","auto-focus","on-search","onSearch","onArrowLeft","onArrowRight","onArrowDown","onArrowUp","onEnter","onSelect"])):T("",!0)]),S("div",{role:"tabpanel",class:"emoji-mart-scroll",ref:"scroll",onScroll:e[0]||(e[0]=(...l)=>n.onScroll&&n.onScroll(...l))},[S("div",Hg,[rt(a.$slots,"customCategory"),(p(!0),k(qe,null,Re(r.view.filteredCategories,(l,g)=>yt((p(),ae(u,{ref_for:!0,ref:"categories_"+g,key:l.id,data:t.data,i18n:n.mergedI18n,id:l.id,name:l.name,emojis:l.emojis,"emoji-props":n.emojiProps},null,8,["data","i18n","id","name","emojis","emoji-props"])),[[da,a.infiniteScroll||l==r.view.activeCategory||n.isSearching]])),128))],512)],544),rt(a.$slots,"previewTemplate",{data:t.data,title:a.title,emoji:r.view.previewEmoji,idleEmoji:n.idleEmoji,showSkinTones:a.showSkinTones,emojiProps:n.emojiProps,skinProps:n.skinProps,onSkinChange:n.onSkinChange},()=>[a.showPreview?(p(),k("div",Rg,[I(_,{data:t.data,title:a.title,emoji:r.view.previewEmoji,"idle-emoji":n.idleEmoji,"show-skin-tones":a.showSkinTones,"emoji-props":n.emojiProps,"skin-props":n.skinProps,"on-skin-change":n.onSkinChange},null,8,["data","title","emoji","idle-emoji","show-skin-tones","emoji-props","skin-props","on-skin-change"])])):T("",!0)])],4)}const Og=Rt(Tg,[["render",Ig]]),Gg="";function Qt(a,e){e===void 0&&(e={});var t=e.insertAt;if(!(!a||typeof document>"u")){var i=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&i.firstChild?i.insertBefore(r,i.firstChild):i.appendChild(r),r.styleSheet?r.styleSheet.cssText=a:r.appendChild(document.createTextNode(a))}}const Jt=function(a,e){const{componentPrefix:t=Gg}=e||{};a.component(`${t}${this.name}`,this)},Hi={};var Ca={name:"Checkboard",props:{size:{type:[Number,String],default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},computed:{bgStyle(){return{"background-image":`url(${Vg(this.white,this.grey,this.size)})`}}}};function Wg(a,e,t){if(typeof document>"u")return null;const i=document.createElement("canvas");i.width=i.height=t*2;const r=i.getContext("2d");return r?(r.fillStyle=a,r.fillRect(0,0,i.width,i.height),r.fillStyle=e,r.fillRect(0,0,t,t),r.translate(t,t),r.fillRect(0,0,t,t),i.toDataURL()):null}function Vg(a,e,t){const i=`${a},${e},${t}`;if(Hi[i])return Hi[i];const r=Wg(a,e,t);return Hi[i]=r,r}function Ng(a,e,t,i,r,n){return p(),k("div",{class:"vc-checkerboard",style:Se(n.bgStyle)},null,4)}var $g=".vc-checkerboard{background-size:contain;bottom:0;left:0;position:absolute;right:0;top:0}";Qt($g),Ca.render=Ng,Ca.__file="src/components/checkboard/checkboard.vue",Ca.install=Jt;var ai={name:"Alpha",components:{Checkboard:Ca},props:{value:Object,onChange:Function},computed:{colors(){return this.value},gradientColor(){const{rgba:a}=this.colors,e=[a.r,a.g,a.b].join(",");return`linear-gradient(to right, rgba(${e}, 0) 0%, rgba(${e}, 1) 100%)`}},methods:{handleChange(a,e){!e&&a.preventDefault();const{container:t}=this.$refs;if(!t)return;const i=t.clientWidth,r=t.getBoundingClientRect().left+window.pageXOffset,n=(a.pageX||(a.touches?a.touches[0].pageX:0))-r;let o;n<0?o=0:n>i?o=1:o=Math.round(n*100/i)/100,this.colors.a!==o&&this.$emit("change",{h:this.colors.hsl.h,s:this.colors.hsl.s,l:this.colors.hsl.l,a:o,source:"rgba"})},handleMouseDown(a){this.handleChange(a,!0),window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}};const Ug={class:"vc-alpha"},Yg={class:"vc-alpha-checkboard-wrap"},Xg=S("div",{class:"vc-alpha-picker"},null,-1),Kg=[Xg];function Zg(a,e,t,i,r,n){const o=Pe("Checkboard");return p(),k("div",Ug,[S("div",Yg,[I(o)]),S("div",{class:"vc-alpha-gradient",style:Se({background:n.gradientColor})},null,4),S("div",{ref:"container",class:"vc-alpha-container",onMousedown:e[0]||(e[0]=(...s)=>n.handleMouseDown&&n.handleMouseDown(...s)),onTouchmove:e[1]||(e[1]=(...s)=>n.handleChange&&n.handleChange(...s)),onTouchstart:e[2]||(e[2]=(...s)=>n.handleChange&&n.handleChange(...s))},[S("div",{class:"vc-alpha-pointer",style:Se({left:`${n.colors.a*100}%`})},Kg,4)],544)])}var Qg=".vc-alpha,.vc-alpha-checkboard-wrap{bottom:0;left:0;position:absolute;right:0;top:0}.vc-alpha-checkboard-wrap{overflow:hidden}.vc-alpha-gradient{bottom:0;left:0;position:absolute;right:0;top:0}.vc-alpha-container{cursor:pointer;height:100%;margin:0 3px;position:relative;z-index:2}.vc-alpha-pointer{position:absolute;z-index:2}.vc-alpha-picker{background:#fff;border-radius:1px;box-shadow:0 0 2px rgba(0,0,0,.6);cursor:pointer;height:8px;margin-top:1px;transform:translateX(-2px);width:4px}";Qt(Qg),ai.render=Zg,ai.__file="src/components/alpha/alpha.vue",ai.install=Jt;function Ge(a,e){Jg(a)&&(a="100%");var t=eh(a);return a=e===360?a:Math.min(e,Math.max(0,parseFloat(a))),t&&(a=parseInt(String(a*e),10)/100),Math.abs(a-e)<1e-6?1:(e===360?a=(a<0?a%e+e:a%e)/parseFloat(String(e)):a=a%e/parseFloat(String(e)),a)}function Xa(a){return Math.min(1,Math.max(0,a))}function Jg(a){return typeof a=="string"&&a.indexOf(".")!==-1&&parseFloat(a)===1}function eh(a){return typeof a=="string"&&a.indexOf("%")!==-1}function ts(a){return a=parseFloat(a),(isNaN(a)||a<0||a>1)&&(a=1),a}function Ka(a){return a<=1?"".concat(Number(a)*100,"%"):a}function Ht(a){return a.length===1?"0"+a:String(a)}function th(a,e,t){return{r:Ge(a,255)*255,g:Ge(e,255)*255,b:Ge(t,255)*255}}function Pn(a,e,t){a=Ge(a,255),e=Ge(e,255),t=Ge(t,255);var i=Math.max(a,e,t),r=Math.min(a,e,t),n=0,o=0,s=(i+r)/2;if(i===r)o=0,n=0;else{var u=i-r;switch(o=s>.5?u/(2-i-r):u/(i+r),i){case a:n=(e-t)/u+(e1&&(t-=1),t<1/6?a+(e-a)*(6*t):t<1/2?e:t<2/3?a+(e-a)*(2/3-t)*6:a}function ah(a,e,t){var i,r,n;if(a=Ge(a,360),e=Ge(e,100),t=Ge(t,100),e===0)r=t,n=t,i=t;else{var o=t<.5?t*(1+e):t+e-t*e,s=2*t-o;i=Ri(s,o,a+1/3),r=Ri(s,o,a),n=Ri(s,o,a-1/3)}return{r:i*255,g:r*255,b:n*255}}function Ln(a,e,t){a=Ge(a,255),e=Ge(e,255),t=Ge(t,255);var i=Math.max(a,e,t),r=Math.min(a,e,t),n=0,o=i,s=i-r,u=i===0?0:s/i;if(i===r)n=0;else{switch(i){case a:n=(e-t)/s+(e>16,g:(a&65280)>>8,b:a&255}}var dr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function sh(a){var e={r:0,g:0,b:0},t=1,i=null,r=null,n=null,o=!1,s=!1;return typeof a=="string"&&(a=lh(a)),typeof a=="object"&&(ot(a.r)&&ot(a.g)&&ot(a.b)?(e=th(a.r,a.g,a.b),o=!0,s=String(a.r).substr(-1)==="%"?"prgb":"rgb"):ot(a.h)&&ot(a.s)&&ot(a.v)?(i=Ka(a.s),r=Ka(a.v),e=ih(a.h,i,r),o=!0,s="hsv"):ot(a.h)&&ot(a.s)&&ot(a.l)&&(i=Ka(a.s),n=Ka(a.l),e=ah(a.h,i,n),o=!0,s="hsl"),Object.prototype.hasOwnProperty.call(a,"a")&&(t=a.a)),t=ts(t),{ok:o,format:a.format||s,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}var uh="[-\\+]?\\d+%?",_h="[-\\+]?\\d*\\.\\d+%?",kt="(?:".concat(_h,")|(?:").concat(uh,")"),Ii="[\\s|\\(]+(".concat(kt,")[,|\\s]+(").concat(kt,")[,|\\s]+(").concat(kt,")\\s*\\)?"),Oi="[\\s|\\(]+(".concat(kt,")[,|\\s]+(").concat(kt,")[,|\\s]+(").concat(kt,")[,|\\s]+(").concat(kt,")\\s*\\)?"),et={CSS_UNIT:new RegExp(kt),rgb:new RegExp("rgb"+Ii),rgba:new RegExp("rgba"+Oi),hsl:new RegExp("hsl"+Ii),hsla:new RegExp("hsla"+Oi),hsv:new RegExp("hsv"+Ii),hsva:new RegExp("hsva"+Oi),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function lh(a){if(a=a.trim().toLowerCase(),a.length===0)return!1;var e=!1;if(dr[a])a=dr[a],e=!0;else if(a==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t=et.rgb.exec(a);return t?{r:t[1],g:t[2],b:t[3]}:(t=et.rgba.exec(a),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=et.hsl.exec(a),t?{h:t[1],s:t[2],l:t[3]}:(t=et.hsla.exec(a),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=et.hsv.exec(a),t?{h:t[1],s:t[2],v:t[3]}:(t=et.hsva.exec(a),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=et.hex8.exec(a),t?{r:Ne(t[1]),g:Ne(t[2]),b:Ne(t[3]),a:zn(t[4]),format:e?"name":"hex8"}:(t=et.hex6.exec(a),t?{r:Ne(t[1]),g:Ne(t[2]),b:Ne(t[3]),format:e?"name":"hex"}:(t=et.hex4.exec(a),t?{r:Ne(t[1]+t[1]),g:Ne(t[2]+t[2]),b:Ne(t[3]+t[3]),a:zn(t[4]+t[4]),format:e?"name":"hex8"}:(t=et.hex3.exec(a),t?{r:Ne(t[1]+t[1]),g:Ne(t[2]+t[2]),b:Ne(t[3]+t[3]),format:e?"name":"hex"}:!1)))))))))}function ot(a){return!!et.CSS_UNIT.exec(String(a))}var gh=(function(){function a(e,t){e===void 0&&(e=""),t===void 0&&(t={});var i;if(e instanceof a)return e;typeof e=="number"&&(e=oh(e)),this.originalInput=e;var r=sh(e);this.originalInput=e,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=(i=t.format)!==null&&i!==void 0?i:r.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return a.prototype.isDark=function(){return this.getBrightness()<128},a.prototype.isLight=function(){return!this.isDark()},a.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},a.prototype.getLuminance=function(){var e=this.toRgb(),t,i,r,n=e.r/255,o=e.g/255,s=e.b/255;return n<=.03928?t=n/12.92:t=Math.pow((n+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),s<=.03928?r=s/12.92:r=Math.pow((s+.055)/1.055,2.4),.2126*t+.7152*i+.0722*r},a.prototype.getAlpha=function(){return this.a},a.prototype.setAlpha=function(e){return this.a=ts(e),this.roundA=Math.round(100*this.a)/100,this},a.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},a.prototype.toHsv=function(){var e=Ln(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},a.prototype.toHsvString=function(){var e=Ln(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),r=Math.round(e.v*100);return this.a===1?"hsv(".concat(t,", ").concat(i,"%, ").concat(r,"%)"):"hsva(".concat(t,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},a.prototype.toHsl=function(){var e=Pn(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},a.prototype.toHslString=function(){var e=Pn(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),r=Math.round(e.l*100);return this.a===1?"hsl(".concat(t,", ").concat(i,"%, ").concat(r,"%)"):"hsla(".concat(t,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},a.prototype.toHex=function(e){return e===void 0&&(e=!1),Tn(this.r,this.g,this.b,e)},a.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},a.prototype.toHex8=function(e){return e===void 0&&(e=!1),rh(this.r,this.g,this.b,this.a,e)},a.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},a.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},a.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},a.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),i=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(t,", ").concat(i,")"):"rgba(".concat(e,", ").concat(t,", ").concat(i,", ").concat(this.roundA,")")},a.prototype.toPercentageRgb=function(){var e=function(t){return"".concat(Math.round(Ge(t,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},a.prototype.toPercentageRgbString=function(){var e=function(t){return Math.round(Ge(t,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},a.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+Tn(this.r,this.g,this.b,!1),t=0,i=Object.entries(dr);t=0,n=!t&&r&&(e.startsWith("hex")||e==="name");return n?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},a.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},a.prototype.clone=function(){return new a(this.toString())},a.prototype.lighten=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l+=e/100,t.l=Xa(t.l),new a(t)},a.prototype.brighten=function(e){e===void 0&&(e=10);var t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new a(t)},a.prototype.darken=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l-=e/100,t.l=Xa(t.l),new a(t)},a.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},a.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},a.prototype.desaturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s-=e/100,t.s=Xa(t.s),new a(t)},a.prototype.saturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s+=e/100,t.s=Xa(t.s),new a(t)},a.prototype.greyscale=function(){return this.desaturate(100)},a.prototype.spin=function(e){var t=this.toHsl(),i=(t.h+e)%360;return t.h=i<0?360+i:i,new a(t)},a.prototype.mix=function(e,t){t===void 0&&(t=50);var i=this.toRgb(),r=new a(e).toRgb(),n=t/100,o={r:(r.r-i.r)*n+i.r,g:(r.g-i.g)*n+i.g,b:(r.b-i.b)*n+i.b,a:(r.a-i.a)*n+i.a};return new a(o)},a.prototype.analogous=function(e,t){e===void 0&&(e=6),t===void 0&&(t=30);var i=this.toHsl(),r=360/t,n=[this];for(i.h=(i.h-(r*e>>1)+720)%360;--e;)i.h=(i.h+r)%360,n.push(new a(i));return n},a.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new a(e)},a.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var t=this.toHsv(),i=t.h,r=t.s,n=t.v,o=[],s=1/e;e--;)o.push(new a({h:i,s:r,v:n})),n=(n+s)%1;return o},a.prototype.splitcomplement=function(){var e=this.toHsl(),t=e.h;return[this,new a({h:(t+72)%360,s:e.s,l:e.l}),new a({h:(t+216)%360,s:e.s,l:e.l})]},a.prototype.onBackground=function(e){var t=this.toRgb(),i=new a(e).toRgb(),r=t.a+i.a*(1-t.a);return new a({r:(t.r*t.a+i.r*i.a*(1-t.a))/r,g:(t.g*t.a+i.g*i.a*(1-t.a))/r,b:(t.b*t.a+i.b*i.a*(1-t.a))/r,a:r})},a.prototype.triad=function(){return this.polyad(3)},a.prototype.tetrad=function(){return this.polyad(4)},a.prototype.polyad=function(e){for(var t=this.toHsl(),i=t.h,r=[this],n=360/e,o=1;o0?i=pt(a.hex):a&&a.hsv?i=pt(a.hsv):a&&a.rgba?i=pt(a.rgba):a&&a.rgb?i=pt(a.rgb):i=pt(a),i&&(i._a===void 0||i._a===null)&&i.setAlpha(t||i.getAlpha());const r=i.toHsl(),n=i.toHsv();return r.s===0&&(n.h=r.h=a.h||a.hsl&&a.hsl.h||e||0),n.v<.0164&&(n.h=a.h||a.hsv&&a.hsv.h||0,n.s=a.s||a.hsv&&a.hsv.s||0),r.l<.01&&(r.h=a.h||a.hsl&&a.hsl.h||0,r.s=a.s||a.hsl&&a.hsl.s||0),{hsl:r,hex:i.toHexString().toUpperCase(),hex8:i.toHex8String().toUpperCase(),rgba:i.toRgb(),hsv:n,oldHue:a.h||e||r.h,source:a.source,a:i.getAlpha()}}var hh={model:{prop:"modelValue",event:"update:modelValue"},props:["modelValue"],data(){return{val:Gi(this.modelValue)}},computed:{colors:{get(){return this.val},set(a){this.val=a,this.$emit("update:modelValue",a)}}},watch:{modelValue(a){this.val=Gi(a)}},methods:{colorChange(a,e){this.oldHue=this.colors.hsl.h,this.colors=Gi(a,e||this.oldHue)},isValidHex(a){return pt(a).isValid},simpleCheckForValidColor(a){const e=["r","g","b","a","h","s","l","v"];let t=0,i=0;for(let r=0;re.toUpperCase())},isTransparent(a){return pt(a).getAlpha()===0}}},ii={name:"EditableInput",props:{label:String,labelText:String,desc:String,value:[String,Number],max:Number,min:Number,arrowOffset:{type:Number,default:1}},computed:{val:{get(){return this.value},set(a){if(this.max!==void 0&&+a>this.max)this.$refs.input.value=this.max;else return a}},labelId(){return`input__label__${this.label}__${Math.random().toString().slice(2,5)}`},labelSpanText(){return this.labelText||this.label}},methods:{update(a){this.handleChange(a.target.value)},handleChange(a){const e={};e[this.label]=a,e.hex===void 0&&e["#"]===void 0?this.$emit("change",e):a.length>5&&this.$emit("change",e)},handleKeyDown(a){let{val:e}=this;const t=Number(e);if(t){const i=this.arrowOffset||1;a.keyCode===38&&(e=t+i,this.handleChange(e),a.preventDefault()),a.keyCode===40&&(e=t-i,this.handleChange(e),a.preventDefault())}}}};const dh={class:"vc-editable-input"},fh=["aria-labelledby"],Fh=["id","for"],ch={class:"vc-input__desc"};function mh(a,e,t,i,r,n){return p(),k("div",dh,[yt(S("input",{ref:"input","onUpdate:modelValue":e[0]||(e[0]=o=>n.val=o),"aria-labelledby":n.labelId,class:"vc-input__input",onKeydown:e[1]||(e[1]=(...o)=>n.handleKeyDown&&n.handleKeyDown(...o)),onInput:e[2]||(e[2]=(...o)=>n.update&&n.update(...o))},null,40,fh),[[pr,n.val]]),S("span",{id:n.labelId,for:t.label,class:"vc-input__label"},G(n.labelSpanText),9,Fh),S("span",ch,G(t.desc),1)])}var ph=".vc-editable-input{position:relative}.vc-input__input{border:0;outline:none;padding:0}.vc-input__label{text-transform:capitalize}";Qt(ph),ii.render=mh,ii.__file="src/components/editable-input/editable-input.vue",ii.install=Jt;function Wi(a,e,t){return et?t:a:ae?e:a}var ri={name:"Saturation",props:{value:Object},computed:{colors(){return this.value},bgColor(){return`hsl(${this.colors.hsv.h}, 100%, 50%)`},pointerTop(){return`${-(this.colors.hsv.v*100)+1+100}%`},pointerLeft(){return`${this.colors.hsv.s*100}%`}},methods:{handleChange(a,e){!e&&a.preventDefault();const{container:t}=this.$refs;if(!t)return;const i=t.clientWidth,r=t.clientHeight,n=t.getBoundingClientRect().left+window.pageXOffset,o=t.getBoundingClientRect().top+window.pageYOffset,s=a.pageX||(a.touches?a.touches[0].pageX:0),u=a.pageY||(a.touches?a.touches[0].pageY:0),_=Wi(s-n,0,i),l=Wi(u-o,0,r),g=_/i,d=Wi(-(l/r)+1,0,1);this.onChange({h:this.colors.hsv.h,s:g,v:d,a:this.colors.hsv.a,source:"hsva"})},onChange(a){this.$emit("change",a)},handleMouseDown(a){window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(a){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}};const bh=S("div",{class:"vc-saturation--white"},null,-1),yh=S("div",{class:"vc-saturation--black"},null,-1),kh=S("div",{class:"vc-saturation-circle"},null,-1),wh=[kh];function Dh(a,e,t,i,r,n){return p(),k("div",{ref:"container",class:"vc-saturation",style:Se({background:n.bgColor}),onMousedown:e[0]||(e[0]=(...o)=>n.handleMouseDown&&n.handleMouseDown(...o)),onTouchmove:e[1]||(e[1]=(...o)=>n.handleChange&&n.handleChange(...o)),onTouchstart:e[2]||(e[2]=(...o)=>n.handleChange&&n.handleChange(...o))},[bh,yh,S("div",{class:"vc-saturation-pointer",style:Se({top:n.pointerTop,left:n.pointerLeft})},wh,4)],36)}var vh=".vc-saturation,.vc-saturation--black,.vc-saturation--white{bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0}.vc-saturation--white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.vc-saturation--black{background:linear-gradient(0deg,#000,transparent)}.vc-saturation-pointer{cursor:pointer;position:absolute}.vc-saturation-circle{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}";Qt(vh),ri.render=Dh,ri.__file="src/components/saturation/saturation.vue",ri.install=Jt;var ni={name:"Hue",props:{value:Object,direction:{type:String,default:"horizontal"}},data(){return{oldHue:0,pullDirection:""}},computed:{colors(){return this.value},directionClass(){return{"vc-hue--horizontal":this.direction==="horizontal","vc-hue--vertical":this.direction==="vertical"}},pointerTop(){return this.direction==="vertical"?this.colors.hsl.h===0&&this.pullDirection==="right"?0:`${-(this.colors.hsl.h*100/360)+100}%`:0},pointerLeft(){return this.direction==="vertical"?0:this.colors.hsl.h===0&&this.pullDirection==="right"?"100%":`${this.colors.hsl.h*100/360}%`}},watch:{value:{handler(a,e){const{h:t}=a.hsl;t!==0&&t-this.oldHue>0&&(this.pullDirection="right"),t!==0&&t-this.oldHue<0&&(this.pullDirection="left"),this.oldHue=t},deep:!0,immediate:!0}},methods:{handleChange(a,e){!e&&a.preventDefault();const{container:t}=this.$refs;if(!t)return;const i=t.clientWidth,r=t.clientHeight,n=t.getBoundingClientRect().left+window.pageXOffset,o=t.getBoundingClientRect().top+window.pageYOffset,s=a.pageX||(a.touches?a.touches[0].pageX:0),u=a.pageY||(a.touches?a.touches[0].pageY:0),_=s-n,l=u-o;let g,d;this.direction==="vertical"?(l<0?g=360:l>r?g=0:(d=-(l*100/r)+100,g=360*d/100),this.colors.hsl.h!==g&&this.$emit("change",{h:g,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:"hsl"})):(_<0?g=0:_>i?g=360:(d=_*100/i,g=360*d/100),this.colors.hsl.h!==g&&this.$emit("change",{h:g,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:"hsl"}))},handleMouseDown(a){this.handleChange(a,!0),window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(a){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}};const xh=["aria-valuenow"],Ch=S("div",{class:"vc-hue-picker"},null,-1),Eh=[Ch];function jh(a,e,t,i,r,n){return p(),k("div",{class:He(["vc-hue",[n.directionClass]])},[S("div",{ref:"container",class:"vc-hue-container",role:"slider","aria-valuenow":n.colors.hsl.h,"aria-valuemin":"0","aria-valuemax":"360",onMousedown:e[0]||(e[0]=(...o)=>n.handleMouseDown&&n.handleMouseDown(...o)),onTouchmove:e[1]||(e[1]=(...o)=>n.handleChange&&n.handleChange(...o)),onTouchstart:e[2]||(e[2]=(...o)=>n.handleChange&&n.handleChange(...o))},[S("div",{class:"vc-hue-pointer",style:Se({top:n.pointerTop,left:n.pointerLeft}),role:"presentation"},Eh,4)],40,xh)],2)}var Bh=".vc-hue{border-radius:2px;bottom:0;left:0;position:absolute;right:0;top:0}.vc-hue--horizontal{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.vc-hue--vertical{background:linear-gradient(0deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.vc-hue-container{cursor:pointer;height:100%;margin:0 2px;position:relative}.vc-hue-pointer{position:absolute;z-index:2}.vc-hue-picker{background:#fff;border-radius:1px;box-shadow:0 0 2px rgba(0,0,0,.6);cursor:pointer;height:8px;margin-top:1px;transform:translateX(-2px);width:4px}";Qt(Bh),ni.render=jh,ni.__file="src/components/hue/hue.vue",ni.install=Jt;var oi={name:"Chrome",components:{Saturation:ri,Hue:ni,Alpha:ai,EdIn:ii,Checkboard:Ca},mixins:[hh],props:{disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1},format:{type:String,default:"hex"}},data(){return{fieldsIndex:"hex",highlight:!1}},computed:{hsl(){const{h:a,s:e,l:t}=this.colors.hsl;return{h:a.toFixed(),s:`${(e*100).toFixed()}%`,l:`${(t*100).toFixed()}%`}},activeColor(){const{rgba:a}=this.colors;return`rgba(${[a.r,a.g,a.b,a.a].join(",")})`},hasAlpha(){return this.colors.a<1}},watch:{format:{handler(a){this.fieldsIndex=a},immediate:!0}},methods:{childChange(a){this.colorChange(a)},inputChange(a){if(a){if(a.hex)this.isValidHex(a.hex)&&this.colorChange({hex:a.hex,source:"hex"});else if(a.r||a.g||a.b||a.a)this.colorChange({r:a.r||this.colors.rgba.r,g:a.g||this.colors.rgba.g,b:a.b||this.colors.rgba.b,a:a.a||this.colors.rgba.a,source:"rgba"});else if(a.h||a.s||a.l){const e=a.s?a.s.replace("%","")/100:this.colors.hsl.s,t=a.l?a.l.replace("%","")/100:this.colors.hsl.l;this.colorChange({h:a.h||this.colors.hsl.h,s:e,l:t,source:"hsl"})}}},toggleViews(){switch(this.fieldsIndex){case"hex":this.fieldsIndex=`rgb${this.disableAlpha?"":"a"}`;break;case"rgb":case"rgba":this.fieldsIndex=`hsl${this.disableAlpha?"":"a"}`;break;default:this.fieldsIndex="hex";break}this.$emit("update:format",this.fieldsIndex)},showHighlight(){this.highlight=!0},hideHighlight(){this.highlight=!1}}};const qh={class:"vc-chrome-saturation-wrap"},Sh={class:"vc-chrome-body"},Ah={class:"vc-chrome-controls"},Mh={class:"vc-chrome-color-wrap"},Ph=["aria-label"],Lh={class:"vc-chrome-sliders"},Th={class:"vc-chrome-hue-wrap"},zh={key:0,class:"vc-chrome-alpha-wrap"},Hh={key:0,class:"vc-chrome-fields-wrap"},Rh={class:"vc-chrome-fields"},Ih={class:"vc-chrome-field"},Oh={class:"vc-chrome-fields"},Gh={class:"vc-chrome-field"},Wh={class:"vc-chrome-field"},Vh={class:"vc-chrome-field"},Nh={key:0,class:"vc-chrome-field"},$h={class:"vc-chrome-fields"},Uh={class:"vc-chrome-field"},Yh={class:"vc-chrome-field"},Xh={class:"vc-chrome-field"},Kh={key:0,class:"vc-chrome-field"},Zh={class:"vc-chrome-toggle-icon"},Qh=S("path",{fill:"#333",d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"},null,-1),Jh=[Qh],ed={class:"vc-chrome-toggle-icon-highlight"};function td(a,e,t,i,r,n){const o=Pe("Saturation"),s=Pe("Checkboard"),u=Pe("Hue"),_=Pe("Alpha"),l=Pe("EdIn");return p(),k("div",{role:"application","aria-label":"Chrome color picker",class:He(["vc-chrome",[t.disableAlpha?"vc-chrome__disable-alpha":""]])},[S("div",qh,[I(o,{value:a.colors,onChange:n.childChange},null,8,["value","onChange"])]),S("div",Sh,[S("div",Ah,[S("div",Mh,[S("div",{"aria-label":`current color is ${a.colors.hex}`,class:"vc-chrome-active-color",style:Se({background:n.activeColor})},null,12,Ph),t.disableAlpha?T("v-if",!0):(p(),ae(s,{key:0}))]),S("div",Lh,[S("div",Th,[I(u,{value:a.colors,onChange:n.childChange},null,8,["value","onChange"])]),t.disableAlpha?T("v-if",!0):(p(),k("div",zh,[I(_,{value:a.colors,onChange:n.childChange},null,8,["value","onChange"])]))])]),t.disableFields?T("v-if",!0):(p(),k("div",Hh,[yt(S("div",Rh,[T(" hex "),S("div",Ih,[n.hasAlpha?T("v-if",!0):(p(),ae(l,{key:0,label:"hex",value:a.colors.hex,onChange:n.inputChange},null,8,["value","onChange"])),n.hasAlpha?(p(),ae(l,{key:1,label:"hex",value:a.colors.hex8,onChange:n.inputChange},null,8,["value","onChange"])):T("v-if",!0)])],512),[[da,r.fieldsIndex==="hex"]]),yt(S("div",Oh,[T(" rgba "),S("div",Gh,[I(l,{label:"r",value:a.colors.rgba.r,onChange:n.inputChange},null,8,["value","onChange"])]),S("div",Wh,[I(l,{label:"g",value:a.colors.rgba.g,onChange:n.inputChange},null,8,["value","onChange"])]),S("div",Vh,[I(l,{label:"b",value:a.colors.rgba.b,onChange:n.inputChange},null,8,["value","onChange"])]),t.disableAlpha?T("v-if",!0):(p(),k("div",Nh,[I(l,{label:"a",value:a.colors.a,"arrow-offset":.01,max:1,onChange:n.inputChange},null,8,["value","arrow-offset","onChange"])]))],512),[[da,["rgb","rgba"].includes(r.fieldsIndex)]]),yt(S("div",$h,[T(" hsla "),S("div",Uh,[I(l,{label:"h",value:n.hsl.h,onChange:n.inputChange},null,8,["value","onChange"])]),S("div",Yh,[I(l,{label:"s",value:n.hsl.s,onChange:n.inputChange},null,8,["value","onChange"])]),S("div",Xh,[I(l,{label:"l",value:n.hsl.l,onChange:n.inputChange},null,8,["value","onChange"])]),t.disableAlpha?T("v-if",!0):(p(),k("div",Kh,[I(l,{label:"a",value:a.colors.a,"arrow-offset":.01,max:1,onChange:n.inputChange},null,8,["value","arrow-offset","onChange"])]))],512),[[da,["hsl","hsla"].includes(r.fieldsIndex)]]),T(" btn "),S("div",{class:"vc-chrome-toggle-btn",role:"button","aria-label":"Change another color definition",onClick:e[3]||(e[3]=(...g)=>n.toggleViews&&n.toggleViews(...g))},[S("div",Zh,[(p(),k("svg",{style:{width:"24px",height:"24px"},viewBox:"0 0 24 24",onMouseover:e[0]||(e[0]=(...g)=>n.showHighlight&&n.showHighlight(...g)),onMouseenter:e[1]||(e[1]=(...g)=>n.showHighlight&&n.showHighlight(...g)),onMouseout:e[2]||(e[2]=(...g)=>n.hideHighlight&&n.hideHighlight(...g))},Jh,32))]),yt(S("div",ed,null,512),[[da,r.highlight]])]),T(" btn ")]))])],2)}var ad=".vc-chrome{background:#fff;background-color:#fff;border-radius:2px;box-shadow:0 0 2px rgba(0,0,0,.3),0 4px 8px rgba(0,0,0,.3);box-sizing:initial;font-family:Menlo;width:225px}.vc-chrome-controls{display:flex}.vc-chrome-color-wrap{position:relative;width:36px}.vc-chrome-active-color{border-radius:15px;height:30px;overflow:hidden;position:relative;width:30px;z-index:1}.vc-chrome-color-wrap .vc-checkerboard{background-size:auto;border-radius:15px;height:30px;width:30px}.vc-chrome-sliders{flex:1}.vc-chrome-fields-wrap{display:flex;padding-top:16px}.vc-chrome-fields{display:flex;flex:1;margin-left:-6px}.vc-chrome-field{padding-left:6px;width:100%}.vc-chrome-toggle-btn{position:relative;text-align:right;width:32px}.vc-chrome-toggle-icon{cursor:pointer;margin-right:-4px;margin-top:12px;position:relative;z-index:2}.vc-chrome-toggle-icon-highlight{background:#eee;border-radius:4px;height:28px;left:12px;position:absolute;top:10px;width:24px}.vc-chrome-hue-wrap{margin-bottom:8px}.vc-chrome-alpha-wrap,.vc-chrome-hue-wrap{height:10px;position:relative}.vc-chrome-alpha-wrap .vc-alpha-gradient,.vc-chrome-hue-wrap .vc-hue{border-radius:2px}.vc-chrome-alpha-wrap .vc-alpha-picker,.vc-chrome-hue-wrap .vc-hue-picker{background-color:#f8f8f8;border-radius:6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.37);height:12px;transform:translate(-6px,-2px);width:12px}.vc-chrome-body{background-color:#fff;padding:16px 16px 12px}.vc-chrome-saturation-wrap{border-radius:2px 2px 0 0;overflow:hidden;padding-bottom:55%;position:relative;width:100%}.vc-chrome-saturation-wrap .vc-saturation-circle{height:12px;width:12px}.vc-chrome-fields .vc-input__input{border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #dadada;color:#333;font-size:11px;height:21px;text-align:center;width:100%}.vc-chrome-fields .vc-input__label{color:#969696;display:block;font-size:11px;line-height:11px;margin-top:12px;text-align:center;text-transform:uppercase}.vc-chrome__disable-alpha .vc-chrome-active-color{height:18px;width:18px}.vc-chrome__disable-alpha .vc-chrome-color-wrap{width:30px}.vc-chrome__disable-alpha .vc-chrome-hue-wrap{margin-bottom:4px;margin-top:4px}";Qt(ad),oi.render=td,oi.__file="src/components/chrome/chrome.vue",oi.install=Jt,ao(gu);const id=["aria-label"],rd={key:0,class:"color-picker__simple"},nd=["aria-label","name","checked","onClick"],od=["title"],sd=["aria-label","name","checked"],ud={key:0,class:"color-picker__navigation"},_d=Ae({__name:"NcColorPicker",props:Rr({advancedFields:{type:Boolean},clearable:{type:Boolean},container:{default:"body"},palette:{default:()=>[]},paletteOnly:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{},open:{type:Boolean},openModifiers:{}}),emits:Rr(["submit","closed"],["update:modelValue","update:open"]),setup(a,{emit:e}){const t=Hr(a,"modelValue"),i=Hr(a,"open"),r=a,n=e,o=/^#([a-f0-9]{3}|[a-f0-9]{6})$/i,s=hu(),u=ht(!1),_=Fe(()=>{let m=r.palette;for(const c of m)if(typeof c=="string"&&!c.match(o)||typeof c=="object"&&!c.color?.match(o)){Au.error("[NcColorPicker] Invalid palette passed",{color:c}),m=[];break}return m.length===0&&(m=r.clearable?[...Or,Gr,Wr]:[...Or]),m.map(c=>({color:typeof c=="object"?c.color:c,name:typeof c=="object"&&c.name?c.name:ce("A color with a HEX value {hex}",{hex:typeof c=="string"?c:c.color})}))});function l(m){n("submit",t.value),m(),u.value=!1}function g(m){m=typeof m=="string"?m:m.color,r.clearable&&t.value===m?t.value=void 0:t.value=m}function d(m){t.value=m.hex}function F(m){return f(m)>.5?Gr.color:Wr.color}function f(m){const[c,C,B]=w(m);return(.2126*c+.7152*C+.0722*B)/255}function w(m){const c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(m);return c?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:[0,0,0]}return(m,c)=>(p(),ae(j(_o),{shown:i.value,"onUpdate:shown":c[3]||(c[3]=C=>i.value=C),container:a.container,popupRole:"dialog",onApplyHide:c[4]||(c[4]=C=>n("closed"))},{trigger:Y(C=>[rt(m.$slots,"default",io(ro(C)),void 0,!0)]),default:Y(C=>[S("div",{role:"dialog",class:He(["color-picker",{"color-picker--advanced-fields":u.value&&a.advancedFields,"color-picker--clearable":a.clearable}]),"aria-modal":"true","aria-label":j(ce)("Color picker")},[I(du,{name:"slide",mode:"out-in"},{default:Y(()=>[u.value?(p(),ae(j(oi),{key:1,class:"color-picker__advanced",disableAlpha:"",disableFields:!a.advancedFields,modelValue:t.value??"#000000","onUpdate:modelValue":d},null,8,["disableFields","modelValue"])):(p(),k("div",rd,[(p(!0),k(qe,null,Re(_.value,({color:B,name:v},M)=>(p(),k("label",{key:M,class:He(["color-picker__simple-color-circle",{"color-picker__simple-color-circle--active":B===t.value}]),style:Se({backgroundColor:B,color:F(B)})},[B===t.value?(p(),ae(j(ha),{key:0,path:j(ju)},null,8,["path"])):T("",!0),S("input",{type:"radio",class:"hidden-visually","aria-label":v,name:`color-picker-${j(s)}`,checked:B===t.value,onClick:P=>g(B)},null,8,nd)],6))),128)),a.clearable?(p(),k("label",{key:0,class:"color-picker__clear",title:j(ce)("No color")},[I(j(ha),{size:t.value?28:34,path:j(Bu)},null,8,["size","path"]),S("input",{type:"radio",class:"hidden-visually","aria-label":j(ce)("No color"),name:`color-picker-${j(s)}`,checked:!t.value,onClick:c[0]||(c[0]=B=>t.value=void 0)},null,8,sd)],8,od)):T("",!0)]))]),_:1}),a.paletteOnly?T("",!0):(p(),k("div",ud,[u.value?(p(),ae(j(je),{key:0,"aria-label":j(ce)("Back"),title:j(ce)("Back"),variant:"tertiary",onClick:c[1]||(c[1]=B=>u.value=!1)},{icon:Y(()=>[I(j(ha),{directional:"",path:j(qu)},null,8,["path"])]),_:1},8,["aria-label","title"])):(p(),ae(j(je),{key:1,"aria-label":j(ce)("More options"),title:j(ce)("More options"),variant:"tertiary",onClick:c[2]||(c[2]=B=>u.value=!0)},{icon:Y(()=>[I(j(ha),{path:j(Su)},null,8,["path"])]),_:1},8,["aria-label","title"])),I(j(je),{variant:"primary",onClick:B=>l(C.hide)},{default:Y(()=>[Oe(G(j(ce)("Choose")),1)]),_:1},8,["onClick"])]))],10,id)]),_:3},8,["shown","container"]))}}),ld=qa(_d,[["__scopeId","data-v-fab7cffe"]]),gd={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},hd=["aria-hidden","aria-label"],dd=["fill","width","height"],fd={key:0};function Fd(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon circle-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[t.title?(p(),k("title",fd,G(t.title),1)):T("",!0),e[1]||(e[1]=S("path",{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},null,-1))],8,dd))],16,hd)}const cd=qa(gd,[["render",Fd]]);ao(mu,cu,Fu,fu);let Vi;const md={search:ce("Search emoji"),notfound:ce("No emoji found"),categories:{search:ce("Search results"),recent:ce("Frequently used"),smileys:ce("Smileys & Emotion"),people:ce("People & Body"),nature:ce("Animals & Nature"),foods:ce("Food & Drink"),activity:ce("Activities"),places:ce("Travel & Places"),objects:ce("Objects"),symbols:ce("Symbols"),flags:ce("Flags"),custom:ce("Custom")}},Hn=[new Vt(255,222,52,ce("Neutral skin color")),new Vt(228,205,166,ce("Light skin tone")),new Vt(250,221,192,ce("Medium light skin tone")),new Vt(174,129,87,ce("Medium skin tone")),new Vt(158,113,88,ce("Medium dark skin tone")),new Vt(96,79,69,ce("Dark skin tone"))],pd={name:"NcEmojiPicker",components:{IconCircle:cd,NcButton:je,NcColorPicker:ld,NcPopover:_o,NcTextField:Lu,Emoji:Cr,Picker:Og},props:{activeSet:{type:String,default:"native"},showPreview:{type:Boolean,default:!1},allowUnselect:{type:Boolean,default:!1},selectedEmoji:{type:String,default:""},previewFallbackEmoji:{type:String,default:"grinning"},previewFallbackName:{type:String,default:ce("Pick an emoji")},closeOnSelect:{type:Boolean,default:!0},container:{type:[Boolean,String,Object,Element],default:"body"}},emits:["select","selectData","unselect"],setup(){return Vi||(Vi=new Kl(No)),{emojiIndex:Vi,skinTonePalette:Hn,i18n:md}},data(){const a=Uo();return{currentColor:Hn[a-1],currentSkinTone:a,search:"",open:!1}},computed:{native(){return this.activeSet==="native"}},created(){Pu(()=>this.open)},methods:{t:ce,clearSearch(){this.search="",this.$refs.search.focus()},onChangeSkinTone(a){const e=this.skinTonePalette.findIndex(t=>t.color.toLowerCase()===a.toLowerCase());e>-1&&(this.currentSkinTone=e+1,this.currentColor=this.skinTonePalette[e],El(this.currentSkinTone))},select(a){this.$emit("select",a.native),this.$emit("selectData",a),this.closeOnSelect&&(this.open=!1)},unselect(){this.$emit("unselect")},afterShow(){this.$refs.search.focus()},afterHide(){(!document.activeElement||this.$refs.picker.$el.contains(document.activeElement)||!Mu(document.activeElement))&&this.$refs.popover.$el.querySelector('button, [role="button"]')?.focus()},handleTabNavigationSkippingEmojis(a){const e=a.target,t=Array.from(this.$refs.picker.$el.querySelectorAll("button:not(.emoji-mart-emoji), input"));a.shiftKey?(t.findLast(i=>e.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING)||t.at(-1)).focus():(t.find(i=>e.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_FOLLOWING)||t[0]).focus()},async callPickerArrowHandlerWithScrollFix(a,e){this.$refs.picker[a](e),await this.$nextTick(),this.$refs.picker.$el.querySelector(".emoji-mart-emoji-selected")?.scrollIntoView({block:"center",inline:"center"})}}},bd={class:"nc-emoji-picker-container"},yd={class:"search__wrapper"},kd={class:"emoji-mart-category-label"},wd={class:"emoji-mart-category-label"};function Dd(a,e,t,i,r,n){const o=Pe("NcTextField"),s=Pe("IconCircle"),u=Pe("NcButton"),_=Pe("NcColorPicker"),l=Pe("Emoji"),g=Pe("Picker"),d=Pe("NcPopover");return p(),ae(d,{ref:"popover",shown:r.open,"onUpdate:shown":e[6]||(e[6]=F=>r.open=F),container:t.container,popupRole:"dialog",noFocusTrap:!0,onAfterShow:n.afterShow,onAfterHide:n.afterHide},{trigger:Y(F=>[rt(a.$slots,"default",io(ro(F)),void 0,!0)]),default:Y(()=>[S("div",bd,[I(g,ie({ref:"picker",color:"var(--color-primary-element)",data:i.emojiIndex,emoji:t.previewFallbackEmoji,i18n:i.i18n,native:n.native,emojiSize:20,perLine:8,pickerStyles:{width:"320px"},showPreview:t.showPreview,skin:r.currentSkinTone,showSkinTones:!1,title:t.previewFallbackName,role:"dialog","aria-modal":"true","aria-label":n.t("Emoji picker")},a.$attrs,{onKeydown:$e(br(n.handleTabNavigationSkippingEmojis,["prevent"]),["tab"]),onSelect:n.select}),no({searchTemplate:Y(({onSearch:F})=>[S("div",yd,[I(o,{ref:"search",modelValue:r.search,"onUpdate:modelValue":[e[0]||(e[0]=f=>r.search=f),f=>F(r.search)],class:"search",label:n.t("Search"),labelVisible:!0,placeholder:i.i18n.search,trailingButtonIcon:"close",trailingButtonLabel:n.t("Clear search"),showTrailingButton:r.search!=="",onKeydown:[e[1]||(e[1]=$e(f=>n.callPickerArrowHandlerWithScrollFix("onArrowLeft",f),["left"])),e[2]||(e[2]=$e(f=>n.callPickerArrowHandlerWithScrollFix("onArrowRight",f),["right"])),e[3]||(e[3]=$e(f=>n.callPickerArrowHandlerWithScrollFix("onArrowDown",f),["down"])),e[4]||(e[4]=$e(f=>n.callPickerArrowHandlerWithScrollFix("onArrowUp",f),["up"])),e[5]||(e[5]=$e(f=>a.$refs.picker.onEnter(f),["enter"]))],onTrailingButtonClick:f=>{n.clearSearch(),F("")}},null,8,["modelValue","label","placeholder","trailingButtonLabel","showTrailingButton","onTrailingButtonClick","onUpdate:modelValue"]),I(_,{paletteOnly:"",container:t.container,palette:i.skinTonePalette,modelValue:r.currentColor.color,"onUpdate:modelValue":n.onChangeSkinTone},{default:Y(()=>[I(u,{"aria-label":n.t("Skin tone"),variant:"tertiary-no-background"},{icon:Y(()=>[I(s,{style:Se({color:r.currentColor.color}),title:r.currentColor.name,size:20},null,8,["style","title"])]),_:1},8,["aria-label"])]),_:1},8,["container","palette","modelValue","onUpdate:modelValue"])])]),_:2},[t.allowUnselect&&t.selectedEmoji?{name:"customCategory",fn:Y(()=>[S("div",kd,[S("h3",wd,G(n.t("Selected")),1)]),I(l,{class:"emoji-selected",data:i.emojiIndex,emoji:t.selectedEmoji,native:"",size:32,onClick:n.unselect},null,8,["data","emoji","onClick"]),I(l,{class:"emoji-delete",data:i.emojiIndex,emoji:":x:",native:"",size:10,onClick:n.unselect},null,8,["data","onClick"])]),key:"0"}:void 0]),1040,["data","emoji","i18n","native","showPreview","skin","title","aria-label","onKeydown","onSelect"])])]),_:3},8,["shown","container","onAfterShow","onAfterHide"])}const vd=qa(pd,[["render",Dd],["__scopeId","data-v-11acdb77"]]),xd={name:"NcActionSeparator"},Cd={class:"action action-separator action--disabled",role:"separator"};function Ed(a,e,t,i,r,n){return p(),k("li",Cd)}const jd=qa(xd,[["render",Ed],["__scopeId","data-v-3e2324b7"]]);function Bd(a=100){if(!Number.isInteger(a)||a<1)throw new RangeError("History capacity must be a positive integer");const e=he([]),t=he(-1),i=Fe(()=>t.value>0),r=Fe(()=>t.valuee.value[t.value]?.snapshot);function o(g,d){const F=[...e.value.slice(0,t.value+1),{snapshot:g,label:d}];e.value=F.slice(Math.max(0,F.length-a)),t.value=e.value.length-1}function s(g){if(!(g===t.value||g<0||g>=e.value.length))return t.value=g,n.value}function u(){return i.value?s(t.value-1):void 0}function _(){return r.value?s(t.value+1):void 0}function l(){e.value=[],t.value=-1}return{canUndo:i,canRedo:r,current:n,entries:Fe(()=>e.value),index:Fe(()=>t.value),push:o,undo:u,redo:_,jumpTo:s,clear:l}}function Lt(){return typeof crypto.randomUUID=="function"?crypto.randomUUID():[...crypto.getRandomValues(new Uint8Array(16))].map(a=>a.toString(16).padStart(2,"0")).join("")}function li(){return{rotation:0,fineRotation:0,zoom:1,flipX:!1,flipY:!1,crop:null,adjustments:{exposure:0,brightness:0,contrast:0,saturation:0,temperature:0,tint:0,sharpen:0,highlights:0,shadows:0,vignette:0},preset:"none",annotations:[]}}function qd(a){const e=li().adjustments,t=Object.entries(e).filter(([i])=>!Number.isFinite(a.adjustments[i]));return t.length===0?a:{...a,adjustments:{...a.adjustments,...Object.fromEntries(t)}}}function as(a){return a.rotation===0&&a.fineRotation===0&&a.zoom===1&&!a.flipX&&!a.flipY&&a.crop===null&&Object.values(a.adjustments).every(e=>e===0)&&a.preset==="none"&&a.annotations.length===0}function is(a,e){return e%180===0?{width:a.width,height:a.height}:{width:a.height,height:a.width}}function fr(a,e){const t=Math.min(Math.max(a.x,0),e.width-1),i=Math.min(Math.max(a.y,0),e.height-1);return{x:t,y:i,width:Math.max(1,Math.min(a.width,e.width-t)),height:Math.max(1,Math.min(a.height,e.height-i))}}function Rn(a,e){return a===null||e===null?a===e:a.x===e.x&&a.y===e.y&&a.width===e.width&&a.height===e.height}function In(a,e){const t=[];for(let i=0;iSd(t,e.height))}}function Ad(a,e){switch(a.type){case"draw":case"arrow":case"line":{const t=a.points.map((i,r)=>r%2===0?e-i:i);return{...a,points:t}}case"rectangle":case"ellipse":{const t=a.rotation*Math.PI/180;return{...a,rect:{...a.rect,x:e-a.rect.x-a.rect.width*Math.cos(t),y:a.rect.y+a.rect.width*Math.sin(t)},rotation:(360-a.rotation)%360}}case"redact":return{...a,rect:{...a.rect,x:e-a.rect.x-a.rect.width}};case"text":case"sticker":return{...a,x:e-a.x,rotation:(360-a.rotation)%360}}}function Md(a,e){const t=a.rotation%180!==0;return{...a,flipX:t?a.flipX:!a.flipX,flipY:t?!a.flipY:a.flipY,fineRotation:-a.fineRotation,crop:a.crop&&{...a.crop,x:e.width-a.crop.x-a.crop.width},annotations:a.annotations.map(i=>Ad(i,e.width))}}function Pd(a,e){switch(a.type){case"draw":case"arrow":case"line":{const t=a.points.map((i,r)=>r%2===1?e-i:i);return{...a,points:t}}case"rectangle":case"ellipse":{const t=a.rotation*Math.PI/180;return{...a,rect:{...a.rect,x:a.rect.x-a.rect.height*Math.sin(t),y:e-a.rect.y-a.rect.height*Math.cos(t)},rotation:(360-a.rotation)%360}}case"redact":return{...a,rect:{...a.rect,y:e-a.rect.y-a.rect.height}};case"text":case"sticker":return{...a,y:e-a.y,rotation:(360-a.rotation)%360}}}function Ld(a,e){const t=a.rotation%180!==0;return{...a,flipX:t?!a.flipX:a.flipX,flipY:t?a.flipY:!a.flipY,fineRotation:-a.fineRotation,crop:a.crop&&{...a.crop,y:e.height-a.crop.y-a.crop.height},annotations:a.annotations.map(i=>Pd(i,e.height))}}function ns(a,e,t){switch(a.type){case"draw":case"arrow":case"line":{const i=a.points.map((r,n)=>r+(n%2===0?e:t));return{...a,points:i}}case"rectangle":case"ellipse":case"redact":return{...a,rect:{...a.rect,x:a.rect.x+e,y:a.rect.y+t}};case"text":case"sticker":return{...a,x:a.x+e,y:a.y+t}}}function Td(a,e=16){return{...ns(a,e,e),id:Lt()}}const zd=Ae({__name:"GlassSurface",props:{variant:{},opaque:{type:Boolean}},setup(a){return(e,t)=>(p(),k("div",{class:He(["glass-surface",[`glass-surface--${a.variant??"card"}`,{"glass-surface--opaque":a.opaque}]])},[rt(e.$slots,"default",{},void 0,!0)],2))}}),X=(a,e)=>{const t=a.__vccOpts||a;for(const[i,r]of e)t[i]=r;return t},bi=X(zd,[["__scopeId","data-v-ffbdec7e"]]),Hd={name:"BoxShadowIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Rd=["aria-hidden","aria-label"],Id=["fill","width","height"],Od={d:"M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z"},Gd={key:0};function Wd(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon box-shadow-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Od,[t.title?(p(),k("title",Gd,G(t.title),1)):T("",!0)])],8,Id))],16,Rd)}const os=X(Hd,[["render",Wd]]),Vd={name:"CameraIrisIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Nd=["aria-hidden","aria-label"],$d=["fill","width","height"],Ud={d:"M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z"},Yd={key:0};function Xd(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon camera-iris-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Ud,[t.title?(p(),k("title",Yd,G(t.title),1)):T("",!0)])],8,$d))],16,Nd)}const ss=X(Vd,[["render",Xd]]),Kd={name:"CircleOpacityIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Zd=["aria-hidden","aria-label"],Qd=["fill","width","height"],Jd={d:"M18 10V8H20V10H18M18 12V10H16V12H18M18 8V6H16V8H18M16 2.84V4H18C17.37 3.54 16.71 3.15 16 2.84M18 4V6H20C19.42 5.25 18.75 4.58 18 4M20 6V8H21.16C20.85 7.29 20.46 6.63 20 6M22 12C22 11.32 21.93 10.65 21.8 10H20V12H22M16 6V4H14V6H16M16 16H18V14H16V16M18 18H20L20 18V16H18V18M16 20H18L18 20V18H16V20M14 21.8C14.7 21.66 15.36 21.44 16 21.16V20H14V21.8M18 14H20V12H18V14M16 8H14V10H16V8M20 16H21.16C21.44 15.36 21.66 14.7 21.8 14H20V16M16 12H14V14H16V12M12 18V16H14V14H12V12H14V10H12V8H14V6H12V4H14V2.2C13.35 2.07 12.69 2 12 2C6.5 2 2 6.5 2 12S6.5 22 12 22V20H14V18H12M14 18H16V16H14V18Z"},ef={key:0};function tf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon circle-opacity-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Jd,[t.title?(p(),k("title",ef,G(t.title),1)):T("",!0)])],8,Qd))],16,Zd)}const us=X(Kd,[["render",tf]]),af={name:"ContrastCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},rf=["aria-hidden","aria-label"],nf=["fill","width","height"],of={d:"M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z"},sf={key:0};function uf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon contrast-circle-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",of,[t.title?(p(),k("title",sf,G(t.title),1)):T("",!0)])],8,nf))],16,rf)}const _s=X(af,[["render",uf]]),_f={name:"ImageFilterCenterFocusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},lf=["aria-hidden","aria-label"],gf=["fill","width","height"],hf={d:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"},df={key:0};function ff(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon image-filter-center-focus-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",hf,[t.title?(p(),k("title",df,G(t.title),1)):T("",!0)])],8,gf))],16,lf)}const ls=X(_f,[["render",ff]]),Ff={name:"InvertColorsIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},cf=["aria-hidden","aria-label"],mf=["fill","width","height"],pf={d:"M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z"},bf={key:0};function yf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon invert-colors-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",pf,[t.title?(p(),k("title",bf,G(t.title),1)):T("",!0)])],8,mf))],16,cf)}const gs=X(Ff,[["render",yf]]),kf={name:"SpotlightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},wf=["aria-hidden","aria-label"],Df=["fill","width","height"],vf={d:"M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"},xf={key:0};function Cf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon spotlight-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",vf,[t.title?(p(),k("title",xf,G(t.title),1)):T("",!0)])],8,Df))],16,wf)}const hs=X(kf,[["render",Cf]]),Ef={name:"ThermometerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},jf=["aria-hidden","aria-label"],Bf=["fill","width","height"],qf={d:"M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z"},Sf={key:0};function Af(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon thermometer-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",qf,[t.title?(p(),k("title",Sf,G(t.title),1)):T("",!0)])],8,Bf))],16,jf)}const ds=X(Ef,[["render",Af]]),Mf={name:"WhiteBalanceIridescentIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Pf=["aria-hidden","aria-label"],Lf=["fill","width","height"],Tf={d:"M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z"},zf={key:0};function Hf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon white-balance-iridescent-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Tf,[t.title?(p(),k("title",zf,G(t.title),1)):T("",!0)])],8,Lf))],16,Pf)}const fs=X(Mf,[["render",Hf]]),Rf={name:"WhiteBalanceSunnyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},If=["aria-hidden","aria-label"],Of=["fill","width","height"],Gf={d:"M3.55 19.09L4.96 20.5L6.76 18.71L5.34 17.29M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12C18 8.68 15.31 6 12 6M20 13H23V11H20M17.24 18.71L19.04 20.5L20.45 19.09L18.66 17.29M20.45 5L19.04 3.6L17.24 5.39L18.66 6.81M13 1H11V4H13M6.76 5.39L4.96 3.6L3.55 5L5.34 6.81L6.76 5.39M1 13H4V11H1M13 20H11V23H13"},Wf={key:0};function Vf(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon white-balance-sunny-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Gf,[t.title?(p(),k("title",Wf,G(t.title),1)):T("",!0)])],8,Of))],16,If)}const Fs=X(Rf,[["render",Vf]]),Nf=.02;function $f(a,e){return a<0&&e>0?0:null}function Uf(a,e,t){return(a-e)/(t-e)}function Yf(a,e,t,i){return e===null?a:Math.abs(a-e)<=(i-t)*Nf?e:a}const Xf={class:"editor-slider"},Kf={class:"editor-slider__track"},Zf=["value","data-test","disabled","aria-label","min","max","step"],Qf=Ae({__name:"EditorSlider",props:{value:{},min:{},max:{},step:{},label:{},display:{},dataTest:{},disabled:{type:Boolean},origin:{}},emits:["input","commit"],setup(a,{emit:e}){const t=a,i=e,r=Fe(()=>t.origin??$f(t.min,t.max)),n=Fe(()=>r.value===null?null:`calc(var(--slider-thumb-size) / 2 + (100% - var(--slider-thumb-size)) * ${Uf(r.value,t.min,t.max)})`);function o(s){const u=s.target,_=Yf(Number(u.value),r.value,t.min,t.max);u.value=String(_),i("input",_)}return(s,u)=>(p(),k("div",Xf,[S("div",Kf,[n.value!==null?(p(),k("span",{key:0,class:"editor-slider__origin","aria-hidden":"true",style:Se({insetInlineStart:n.value})},null,4)):T("",!0),S("input",{value:t.value,"data-test":a.dataTest,disabled:a.disabled,"aria-label":a.label,type:"range",min:a.min,max:a.max,step:a.step,onInput:o,onChange:u[0]||(u[0]=_=>i("commit"))},null,40,Zf)]),S("output",null,[rt(s.$slots,"preview",{},()=>[Oe(G(a.display??t.value),1)],!0)])]))}}),ja=X(Qf,[["__scopeId","data-v-b180b2e1"]]),Jf=["disabled","data-test","aria-pressed","aria-label","title"],e0={key:0},t0=Ae({__name:"IconTab",props:{label:{},active:{type:Boolean},disabled:{type:Boolean},iconOnly:{type:Boolean},dataTest:{}},emits:["click"],setup(a,{emit:e}){const t=e;return(i,r)=>(p(),k("button",{type:"button",class:He(["icon-tab",{"icon-tab--active":a.active,"icon-tab--icon-only":a.iconOnly}]),disabled:a.disabled,"data-test":a.dataTest,"aria-pressed":a.active,"aria-label":a.iconOnly?a.label:void 0,title:a.iconOnly?a.label:void 0,onClick:r[0]||(r[0]=n=>t("click",n))},[rt(i.$slots,"default",{},void 0,!0),a.iconOnly?T("",!0):(p(),k("span",e0,G(a.label),1))],10,Jf))}}),Ve=X(t0,[["__scopeId","data-v-92c91076"]]),cs=pu().detectLocale();[].map(a=>cs.addTranslation(a.locale,a.json));const gi=cs.build();gi.ngettext.bind(gi);const x=gi.gettext.bind(gi),Gn={sans:"Helvetica, Arial, sans-serif",serif:'Georgia, "Times New Roman", serif',mono:'Menlo, Consolas, "Courier New", monospace'},Fr="sans";function ms(a){return Gn[a??Fr]??Gn[Fr]}const a0=["rectangle","ellipse"],ps="rectangle";function bs(a){return a0.includes(a)?a:ps}const ys=["left","center","right"],ks="left";function Er(a){return ys.includes(a)?a:ks}const hi=16,Wn=1/3,gt=1,ws=.5,Ds=4,Vn=1.05,i0=.01,r0=16,Nn=300,n0=.0015;function vs(a,e,t){return{x:Math.max(Math.abs(a.width*e-t.width)/2,t.width*Wn)+hi,y:Math.max(Math.abs(a.height*e-t.height)/2,t.height*Wn)+hi}}function cr(a,e){return{x:Math.min(e.x,Math.max(-e.x,a.x)),y:Math.min(e.y,Math.max(-e.y,a.y))}}function o0(a,e=gt){const t=Math.min(Ds,Math.max(ws,a)),i=(e-gt)*(t-gt)<0,r=t>gt/Vn&&t{const g=n.value;return g===null?{x:0,y:0}:vs(g.visible,g.scale*l,g.container)},s=he("crop"),u=he(Ni.crop);a.push(e.value,x("Original"));const _={state:e,activeMode:s,activeTool:u,setMode(l){s.value=l,u.value=Ni[l],_.selectedId.value=null},drawColor:he("#ff0000"),strokeWidth:he(6),fontSize:he(24),textOutline:he(!1),textBackground:he(!1),textFont:he(Fr),textAlign:he(ks),textBold:he(!1),textItalic:he(!1),textUnderline:he(!1),textStrikethrough:he(!1),sticker:he("😀"),redactStyle:he("pixelate"),redactShape:he(ps),cropAspect:he(null),viewZoom:t,viewPan:r,viewFit:n,cropChanged:i,panning:he(!1),setViewZoom(l,g){const d=t.value,F=o0(l,d);t.value=F;const f=g===void 0?r.value:s0(r.value,g,F/d);r.value=cr(f,o(F))},setViewPan(l){r.value=cr(l,o(t.value))},interacting:he(!1),selectedId:he(null),canUndo:a.canUndo,canRedo:a.canRedo,historyEntries:a.entries,historyIndex:a.index,commit(l,g){_.interacting.value=!1,e.value=l,a.push(l,g)},preview(l){_.interacting.value=!0,e.value=l},undo(){const l=a.undo();l!==void 0&&(e.value=l)},redo(){const l=a.redo();l!==void 0&&(e.value=l)},jumpTo(l){const g=a.jumpTo(l);g!==void 0&&(e.value=g)},reset(l){a.clear(),e.value=l===void 0?li():qd(l),s.value="crop",u.value=Ni.crop,_.selectedId.value=null,t.value=gt,r.value={x:0,y:0},_.panning.value=!1,a.push(e.value,x(l===void 0?"Original":"Restored"))}};return We(u,l=>{l!=="select"&&(_.selectedId.value=null)}),so(xs,_),_}function Qe(){const a=uo(xs,null);if(a===null)throw new Error("useEditorContext() called outside of an ImageEditor tree");return a}const l0={class:"adjust-panel"},g0={class:"adjust-panel__tabs"},h0=Ae({__name:"AdjustPanel",props:{loaded:{type:Boolean}},setup(a){const e=Qe(),t=[{id:"exposure",label:x("Exposure"),icon:ss},{id:"brightness",label:x("Brightness"),icon:Fs},{id:"contrast",label:x("Contrast"),icon:_s},{id:"saturation",label:x("Saturation"),icon:gs},{id:"temperature",label:x("Temperature"),icon:ds},{id:"tint",label:x("Tint"),icon:fs},{id:"sharpen",label:x("Sharpen"),icon:ls},{id:"highlights",label:x("Highlights"),icon:hs},{id:"shadows",label:x("Shadows"),icon:os},{id:"vignette",label:x("Vignette"),icon:us}],i=he("exposure"),r=Fe(()=>{const u=e.state.value.adjustments[i.value];return u>0?`+${u}`:`${u}`});function n(u,_){i.value=u,_.currentTarget?.scrollIntoView({block:"nearest",inline:"nearest"})}function o(u){const _=e.state.value;e.preview({..._,adjustments:{..._.adjustments,[i.value]:u}})}function s(){e.commit(e.state.value,t.find(u=>u.id===i.value).label)}return(u,_)=>(p(),k("div",l0,[S("div",g0,[(p(),k(qe,null,Re(t,l=>I(Ve,{key:l.id,label:l.label,active:i.value===l.id,disabled:!a.loaded,"data-test":`tab-${l.id}`,onClick:g=>n(l.id,g)},{default:Y(()=>[(p(),ae(wt(l.icon),{size:20}))]),_:2},1032,["label","active","disabled","data-test","onClick"])),64))]),I(ja,{value:j(e).state.value.adjustments[i.value],min:-100,max:100,step:1,label:t.find(l=>l.id===i.value).label,display:r.value,"data-test":`adjust-${i.value}`,disabled:!a.loaded,onInput:o,onCommit:s},null,8,["value","label","display","data-test","disabled"])]))}}),d0=X(h0,[["__scopeId","data-v-1450b457"]]),f0={name:"ArrowTopRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},F0=["aria-hidden","aria-label"],c0=["fill","width","height"],m0={d:"M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z"},p0={key:0};function b0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon arrow-top-right-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",m0,[t.title?(p(),k("title",p0,G(t.title),1)):T("",!0)])],8,c0))],16,F0)}const Cs=X(f0,[["render",b0]]),y0={name:"EllipseOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},k0=["aria-hidden","aria-label"],w0=["fill","width","height"],D0={d:"M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z"},v0={key:0};function x0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon ellipse-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",D0,[t.title?(p(),k("title",v0,G(t.title),1)):T("",!0)])],8,w0))],16,k0)}const jr=X(y0,[["render",x0]]),C0={name:"FormatTextIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},E0=["aria-hidden","aria-label"],j0=["fill","width","height"],B0={d:"M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z"},q0={key:0};function S0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-text-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",B0,[t.title?(p(),k("title",q0,G(t.title),1)):T("",!0)])],8,j0))],16,E0)}const Es=X(C0,[["render",S0]]),A0={name:"PencilIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},M0=["aria-hidden","aria-label"],P0=["fill","width","height"],L0={d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"},T0={key:0};function z0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon pencil-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",L0,[t.title?(p(),k("title",T0,G(t.title),1)):T("",!0)])],8,P0))],16,M0)}const Br=X(A0,[["render",z0]]),H0={name:"RectangleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},R0=["aria-hidden","aria-label"],I0=["fill","width","height"],O0={d:"M4,6V19H20V6H4M18,17H6V8H18V17Z"},G0={key:0};function W0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon rectangle-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",O0,[t.title?(p(),k("title",G0,G(t.title),1)):T("",!0)])],8,I0))],16,R0)}const qr=X(H0,[["render",W0]]),V0={name:"VectorLineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},N0=["aria-hidden","aria-label"],$0=["fill","width","height"],U0={d:"M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5"},Y0={key:0};function X0(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon vector-line-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",U0,[t.title?(p(),k("title",Y0,G(t.title),1)):T("",!0)])],8,$0))],16,N0)}const js=X(V0,[["render",X0]]);function Bs(a){function e(){const i=a.state.value.annotations.find(r=>r.id===a.selectedId.value);return i!==void 0&&"color"in i&&i.type!=="sticker"?i:void 0}function t(i){const r=e();if(r===void 0||r.color===i)return;const n=a.state.value;a.preview({...n,annotations:n.annotations.map(o=>o.id===r.id?{...o,color:i}:o)})}return{preview(i){a.drawColor.value=i,t(i)},commit(i){a.drawColor.value=i,t(i),e()!==void 0&&a.commit(a.state.value,x("Color"))}}}const K0={class:"annotate-panel"},Z0={class:"annotate-panel__row"},Q0={class:"annotate-panel__option"},J0=["value"],eF="A",$n=44,tF=Ae({__name:"AnnotatePanel",props:{loaded:{type:Boolean}},setup(a){const e=Qe(),t=Bs(e),i={color:x("Color"),strokeWidth:x("Stroke width"),fontSize:x("Font size")},r=[{id:"draw",label:x("Draw"),icon:Br},{id:"rectangle",label:x("Rectangle"),icon:qr},{id:"ellipse",label:x("Ellipse"),icon:jr},{id:"arrow",label:x("Arrow"),icon:Cs},{id:"line",label:x("Line"),icon:js},{id:"text",label:x("Text"),icon:Es}],n=Fe(()=>["draw","rectangle","ellipse","arrow","line"].includes(e.activeTool.value)),o=Fe(()=>(e.viewFit.value?.scale??1)*e.viewZoom.value),s=Fe(()=>Math.min($n,Math.max(2,e.strokeWidth.value*o.value))),u=Fe(()=>Math.min($n,Math.max(8,e.fontSize.value*o.value)));return(_,l)=>(p(),k("div",K0,[S("div",Z0,[(p(),k(qe,null,Re(r,g=>I(Ve,{key:g.id,label:g.label,active:j(e).activeTool.value===g.id,disabled:!a.loaded,iconOnly:"",onClick:d=>j(e).activeTool.value=g.id},{default:Y(()=>[(p(),ae(wt(g.icon),{size:20}))]),_:2},1032,["label","active","disabled","onClick"])),64)),l[4]||(l[4]=S("span",{class:"annotate-panel__divider"},null,-1)),S("label",Q0,[Oe(G(i.color)+" ",1),S("input",{value:j(e).drawColor.value,type:"color","data-test":"color",onInput:l[0]||(l[0]=g=>j(t).preview(g.target.value)),onChange:l[1]||(l[1]=g=>j(t).commit(g.target.value))},null,40,J0)])]),n.value?(p(),ae(ja,{key:0,value:j(e).strokeWidth.value,min:1,max:32,step:1,label:i.strokeWidth,onInput:l[2]||(l[2]=g=>j(e).strokeWidth.value=g),onCommit:()=>{}},{preview:Y(()=>[S("span",{class:"annotate-panel__dot","data-test":"stroke-preview",style:Se({inlineSize:`${s.value}px`,blockSize:`${s.value}px`,backgroundColor:j(e).drawColor.value})},null,4)]),_:1},8,["value","label"])):j(e).activeTool.value==="text"?(p(),ae(ja,{key:1,value:j(e).fontSize.value,min:8,max:128,step:1,label:i.fontSize,onInput:l[3]||(l[3]=g=>j(e).fontSize.value=g),onCommit:()=>{}},{preview:Y(()=>[S("span",{class:"annotate-panel__glyph","data-test":"font-preview",style:Se({fontSize:`${u.value}px`,color:j(e).drawColor.value})},G(eF),4)]),_:1},8,["value","label"])):T("",!0)]))}}),aF=X(tF,[["__scopeId","data-v-f1bf58b5"]]),iF={name:"FlipHorizontalIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},rF=["aria-hidden","aria-label"],nF=["fill","width","height"],oF={d:"M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z"},sF={key:0};function uF(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon flip-horizontal-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",oF,[t.title?(p(),k("title",sF,G(t.title),1)):T("",!0)])],8,nF))],16,rF)}const qs=X(iF,[["render",uF]]),_F={name:"FlipVerticalIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},lF=["aria-hidden","aria-label"],gF=["fill","width","height"],hF={d:"M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z"},dF={key:0};function fF(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon flip-vertical-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",hF,[t.title?(p(),k("title",dF,G(t.title),1)):T("",!0)])],8,gF))],16,lF)}const Ss=X(_F,[["render",fF]]),FF={name:"RotateLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},cF=["aria-hidden","aria-label"],mF=["fill","width","height"],pF={d:"M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z"},bF={key:0};function yF(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon rotate-left-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",pF,[t.title?(p(),k("title",bF,G(t.title),1)):T("",!0)])],8,mF))],16,cF)}const As=X(FF,[["render",yF]]),kF={name:"RotateRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},wF=["aria-hidden","aria-label"],DF=["fill","width","height"],vF={d:"M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z"},xF={key:0};function CF(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon rotate-right-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",vF,[t.title?(p(),k("title",xF,G(t.title),1)):T("",!0)])],8,DF))],16,wF)}const mr=X(kF,[["render",CF]]),Ms=Symbol("nextcloud:image-editor:commands");function EF(a){return so(Ms,a),a}function Ps(){const a=uo(Ms,null);if(a===null)throw new Error("useEditorCommands() called outside of an ImageEditor tree");return a}const jF={class:"crop-panel"},BF={class:"crop-panel__row"},qF={class:"crop-panel__row"},SF={key:0,class:"crop-panel__divider","data-test":"crop-divider"},AF=Ae({__name:"CropPanel",props:{loaded:{type:Boolean}},setup(a){const e=a,t=Qe(),i=Ps(),r={rotateLeft:x("Rotate left"),rotateRight:x("Rotate right"),flipHorizontal:x("Flip horizontal"),flipVertical:x("Flip vertical"),applyCrop:x("Apply crop"),resetCrop:x("Reset crop"),rotation:x("Rotation"),scale:x("Scale")},n=[{id:null,label:x("Free")},{id:"original",label:x("Original")},{id:1,label:"1:1"},{id:4/3,label:"4:3"},{id:16/9,label:"16:9"}],o=[{id:"rotation",label:r.rotation},{id:"scale",label:r.scale}],s=he("rotation"),u=Fe(()=>s.value==="rotation"?`${t.state.value.fineRotation}°`:`×${t.state.value.zoom.toFixed(2)}`),_=Fe(()=>e.loaded&&(t.state.value.crop!==null||t.cropChanged.value));function l(d){t.preview(s.value==="rotation"?{...t.state.value,fineRotation:d}:{...t.state.value,zoom:d})}function g(){t.commit(t.state.value,s.value==="rotation"?r.rotation:r.scale)}return(d,F)=>(p(),k("div",jF,[S("div",BF,[(p(),k(qe,null,Re(n,f=>I(Ve,{key:String(f.id),"data-test":`aspect-${f.id===null?"free":f.id==="original"?"original":f.label}`,label:f.label,active:j(t).cropAspect.value===f.id,disabled:!a.loaded,onClick:w=>j(t).cropAspect.value=f.id},null,8,["data-test","label","active","disabled","onClick"])),64))]),S("div",qF,[I(j(je),{"aria-label":r.rotateLeft,title:r.rotateLeft,disabled:!a.loaded,variant:"tertiary",onClick:F[0]||(F[0]=f=>j(i).rotateCCW())},{icon:Y(()=>[I(As,{size:20})]),_:1},8,["aria-label","title","disabled"]),I(j(je),{"aria-label":r.rotateRight,title:r.rotateRight,disabled:!a.loaded,variant:"tertiary",onClick:F[1]||(F[1]=f=>j(i).rotateCW())},{icon:Y(()=>[I(mr,{size:20})]),_:1},8,["aria-label","title","disabled"]),I(j(je),{"aria-label":r.flipHorizontal,title:r.flipHorizontal,disabled:!a.loaded,variant:"tertiary",onClick:F[2]||(F[2]=f=>j(i).flipHorizontal())},{icon:Y(()=>[I(qs,{size:20})]),_:1},8,["aria-label","title","disabled"]),I(j(je),{"aria-label":r.flipVertical,title:r.flipVertical,disabled:!a.loaded,variant:"tertiary",onClick:F[3]||(F[3]=f=>j(i).flipVertical())},{icon:Y(()=>[I(Ss,{size:20})]),_:1},8,["aria-label","title","disabled"]),F[6]||(F[6]=S("span",{class:"crop-panel__divider","data-test":"crop-divider"},null,-1)),(p(),k(qe,null,Re(o,f=>I(Ve,{key:f.id,"data-test":`tab-${f.id}`,label:f.label,active:s.value===f.id,disabled:!a.loaded,onClick:w=>s.value=f.id},null,8,["data-test","label","active","disabled","onClick"])),64)),_.value?(p(),k("span",SF)):T("",!0),a.loaded&&j(t).state.value.crop!==null?(p(),ae(j(je),{key:1,"data-test":"reset-crop",variant:"tertiary",onClick:F[4]||(F[4]=f=>j(i).resetCrop())},{default:Y(()=>[Oe(G(r.resetCrop),1)]),_:1})):T("",!0),a.loaded&&j(t).cropChanged.value?(p(),ae(j(je),{key:2,"data-test":"apply-crop",variant:"tertiary",onClick:F[5]||(F[5]=f=>j(i).applyCrop())},{default:Y(()=>[Oe(G(r.applyCrop),1)]),_:1})):T("",!0)]),s.value==="rotation"?(p(),ae(ja,{key:0,value:j(t).state.value.fineRotation,min:-45,max:45,step:1,label:r.rotation,display:u.value,"data-test":"fine-rotation",disabled:!a.loaded,onInput:l,onCommit:g},null,8,["value","label","display","disabled"])):(p(),ae(ja,{key:1,value:j(t).state.value.zoom,min:1,max:3,step:.05,label:r.scale,display:u.value,"data-test":"zoom",disabled:!a.loaded,onInput:l,onCommit:g},null,8,["value","label","display","disabled"]))]))}}),MF=X(AF,[["__scopeId","data-v-091ea9a4"]]),Un=512*512,PF=4;let Yn=0,Xn=Number.POSITIVE_INFINITY;function LF(a){const e=Math.floor(Math.sqrt(a)),t=document.createElement("canvas");t.width=e,t.height=e;const i=t.getContext("2d");if(i===null)return!1;try{return i.fillStyle="#ffffff",i.fillRect(e-1,e-1,1,1),i.getImageData(e-1,e-1,1,1).data[3]===255}catch{return!1}finally{t.width=0,t.height=0}}function $i(a){return a<=Yn?!0:a>=Xn?!1:LF(a)?(Yn=a,!0):(Xn=a,!1)}function yi(a){const e=a.width*a.height;if(e<=0||$i(e))return 1;let t=e,i=0;for(let r=e/2;r>=Un;r/=2){if($i(r)){i=r;break}t=r}if(i===0)return Math.min(1,Math.sqrt(Un/e));for(let r=0;r {
+ const request = event.data;
+ try {
+ if (request.kind === "decode") {
+ const bitmap = await createImageBitmap(request.blob);
+ const response2 = { id: request.id, kind: "decode", bitmap };
+ self.postMessage(response2, { transfer: [bitmap] });
+ return;
+ }
+ let level = request.bitmap;
+ const levels = [];
+ for (let step = 0; step < request.steps && (level.width > 1 || level.height > 1); step++) {
+ level = halve(level);
+ levels.push(level);
+ }
+ request.bitmap.close();
+ const response = { id: request.id, kind: "levels", levels };
+ self.postMessage(response, { transfer: levels });
+ } catch (error) {
+ const response = {
+ id: request.id,
+ kind: "error",
+ message: error instanceof Error ? error.message : String(error)
+ };
+ self.postMessage(response);
+ }
+ });
+})();
+//# sourceMappingURL=image.worker-CCbQx30t.js.map
+`,Zn=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Ts],{type:"text/javascript;charset=utf-8"});function rc(a){let e;try{if(e=Zn&&(self.URL||self.webkitURL).createObjectURL(Zn),!e)throw"";const t=new Worker(e,{name:a?.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),t}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Ts),{name:a?.name})}}function nc(a){const e=new Map;let t=0,i=!1;function r(){i=!0;const o=[...e.values()];e.clear(),o.forEach(s=>s.reject(new Error("The image worker stopped")))}a.addEventListener("error",r),a.addEventListener("messageerror",r),a.addEventListener("message",o=>{const s=o.data,u=e.get(s.id);if(u!==void 0){if(e.delete(s.id),s.kind==="error"){u.reject(new Error(s.message));return}u.resolve(s.kind==="decode"?s.bitmap:s.levels)}});function n(o,s){if(i)return Promise.reject(new Error("The image worker stopped"));const u=t++;return new Promise((_,l)=>{e.set(u,{resolve:_,reject:l}),a.postMessage({...o,id:u},s)})}return{decode:o=>n({kind:"decode",blob:o},[]),levels:(o,s)=>n({kind:"levels",bitmap:o,steps:s},[o])}}let Ut;function zs(){if(Ut!==void 0||(Ut=null,typeof Worker>"u"||typeof OffscreenCanvas>"u"||typeof createImageBitmap>"u"))return Ut;try{Ut=nc(new rc)}catch{Ut=null}return Ut}const di=new WeakMap,oc=4;function sc(a){const e=document.createElement("canvas");e.width=Math.max(1,Math.ceil(a.width/2)),e.height=Math.max(1,Math.ceil(a.height/2));const t=e.getContext("2d");if(t===null)throw new Error("Canvas 2D context unavailable");return t.imageSmoothingQuality="high",t.drawImage(a,0,0,e.width,e.height),e}async function uc(a){const e=zs();if(!(e===null||di.has(a)))try{const t=await createImageBitmap(a),i=await e.levels(t,oc);di.set(a,i)}catch{}}function _c(a,e){let t=a,i=e,r=0;for(;i<=.5&&(t.width>1||t.height>1);){const n=di.get(a)??[];t=n[r]??sc(t),n[r]=t,di.set(a,n),i*=2,r+=1}return t}const lc=["bold","italic","underline","strikethrough"];function gc(a){return a.italic===!0?a.bold===!0?"italic bold":"italic":a.bold===!0?"bold":"normal"}function Hs(a){return a.underline===!0?a.strikethrough===!0?"underline line-through":"underline":a.strikethrough===!0?"line-through":""}const hc=8;function fi(a){const e=/^#?([0-9a-f]{6})$/i.exec(a)?.[1];if(e===void 0)return"#000000";const t=Number.parseInt(e.slice(0,2),16),i=Number.parseInt(e.slice(2,4),16),r=Number.parseInt(e.slice(4,6),16);return .299*t+.587*i+.114*r>140?"#000000":"#ffffff"}function Rs(a){return Math.max(1,Math.round(a/hc))}function Ze(a,e){return a.crop??{x:0,y:0,...e}}function Ba(a){const e=a.getContext("2d");if(e===null)throw new Error("Canvas 2D context unavailable");return e}function dc(a){return a===null?!1:(a.filter="blur(1px)",a.filter!=="none")}let Qn=null;function fc(){return Qn??=dc(document.createElement("canvas").getContext("2d")),Qn}function Fc(a,e,t){const i=document.createElement("canvas");i.width=a.width,i.height=a.height;const r=Ba(i);if(e==="blur"&&fc())return r.filter=`blur(${t}px)`,r.drawImage(a,0,0),i;const n=document.createElement("canvas");return n.width=Math.max(1,Math.ceil(a.width/t)),n.height=Math.max(1,Math.ceil(a.height/t)),Ba(n).drawImage(a,0,0,n.width,n.height),r.imageSmoothingEnabled=!1,r.drawImage(n,0,0,i.width,i.height),i}function cc(a,e,t,i,r){const n=document.createElement("canvas");n.width=i,n.height=r;const o=Ba(n);return o.drawImage(a,e,t,i,r,0,0,i,r),o.globalCompositeOperation="destination-in",o.beginPath(),o.ellipse(i/2,r/2,i/2,r/2,0,0,Math.PI*2),o.fill(),n}function mc(a){return Math.max(4,Math.round(Math.min(a.width,a.height)/40))}function pc(a,e){return(t,i)=>{const r=t.canvas;if(r.hitCanvas===!0)return;const n=i.width(),o=i.height(),s=i.getAbsoluteTransform(),u=s.point({x:0,y:0}),_=s.point({x:n,y:o}),l=r.pixelRatio||1,g=Math.round(u.x*l),d=Math.round(u.y*l),F=Math.round(_.x*l)-g,f=Math.round(_.y*l)-d;if(F<1||f<1||n<=0||o<=0)return;const w=Math.max(2,Math.round(e*(F/n))),m=a.style==="blur"?w*2:0,c=Math.max(0,g-m),C=Math.max(0,d-m),B=Math.min(r.width,g+F+m)-c,v=Math.min(r.height,d+f+m)-C;if(B<1||v<1)return;const M=document.createElement("canvas");M.width=B,M.height=v,Ba(M).putImageData(t.getImageData(c,C,B,v),0,0);const P=Fc(M,a.style,w);if(bs(a.shape)==="ellipse"){const q=cc(P,g-c,d-C,F,f);t.drawImage(q,0,0,n,o);return}t.drawImage(P,g-c,d-C,F,f,0,0,n,o)}}function bc(a){return Math.max(2,Math.round(a/6))}const yc=24;function kc(a,e){return Math.max(a,yc/Math.max(e,Number.EPSILON))}function Is(a,e){const t={id:a.id,name:"annotation"};switch(a.type){case"draw":return new fe.Line({...t,points:a.points,stroke:a.color,strokeWidth:a.strokeWidth,lineCap:"round",lineJoin:"round"});case"line":return new fe.Line({...t,points:[...a.points],stroke:a.color,strokeWidth:a.strokeWidth,lineCap:"round"});case"arrow":return new fe.Arrow({...t,points:[...a.points],stroke:a.color,fill:a.color,strokeWidth:a.strokeWidth,pointerLength:a.strokeWidth*4,pointerWidth:a.strokeWidth*4});case"rectangle":return new fe.Rect({...t,...a.rect,rotation:a.rotation,stroke:a.color,strokeWidth:a.strokeWidth});case"ellipse":return new fe.Ellipse({...t,x:a.rect.x,y:a.rect.y,offsetX:-a.rect.width/2,offsetY:-a.rect.height/2,radiusX:a.rect.width/2,radiusY:a.rect.height/2,rotation:a.rotation,stroke:a.color,strokeWidth:a.strokeWidth});case"text":case"sticker":{const i=new fe.Text({...t,x:a.x,y:a.y,text:a.text,fill:a.color,fontSize:a.fontSize,rotation:a.rotation,fontFamily:ms(a.font),fontStyle:gc(a),textDecoration:Hs(a),align:Er(a.align),...a.outline===!0?{stroke:fi(a.color),strokeWidth:Rs(a.fontSize),fillAfterStrokeEnabled:!0}:{},...a.background===!0?{padding:bc(a.fontSize)}:{}});if(a.background!==!0)return i;const r=new fe.Label({...t,x:a.x,y:a.y,rotation:a.rotation});return i.position({x:0,y:0}),i.rotation(0),r.add(new fe.Tag({fill:fi(a.color),cornerRadius:2})),r.add(i),r}case"redact":{if(e===void 0)throw new Error("Redaction requires the source image size");const{rect:i}=a;return new fe.Shape({...t,x:i.x,y:i.y,width:i.width,height:i.height,fill:"black",sceneFunc:pc(a,mc(e)),hitFunc:(r,n)=>{const o=n.width(),s=n.height();r.beginPath(),bs(a.shape)==="ellipse"?r.ellipse(o/2,s/2,o/2,s/2,0,0,Math.PI*2):r.rect(0,0,o,s),r.closePath(),r.fillStrokeShape(n)}})}}}function Os(a,e,t=1){const{exposure:i,brightness:r,contrast:n,saturation:o,temperature:s,tint:u}=e.adjustments,{highlights:_,shadows:l}=e.adjustments,g=[];(i!==0||s!==0||u!==0)&&g.push(RF),r!==0&&g.push(fe.Filters.Brighten),n!==0&&g.push(fe.Filters.Contrast),o!==0&&g.push(UF),(_!==0||l!==0)&&g.push(GF);const d={none:null,grayscale:fe.Filters.Grayscale,noir:ZF,luna:ic,sepia:fe.Filters.Sepia,fade:KF,warm:YF,cool:XF,golden:QF,coast:JF,mist:ec,berry:tc,cinema:ac,invert:fe.Filters.Invert,solarize:fe.Filters.Solarize,posterize:fe.Filters.Posterize,pop:fe.Filters.Enhance}[e.preset];if(d!==null&&g.push(d),e.adjustments.sharpen!==0&&g.push($F),e.adjustments.vignette!==0&&g.push(VF),g.length===0){a.filters([]),a.clearCache();return}a.filters(g),a.brightness(r/100),a.contrast(n),a.saturation(o/100),a.setAttr("exposure",i/100),a.setAttr("temperature",s/100),a.setAttr("tint",u/100),a.setAttr("sharpen",e.adjustments.sharpen/100),a.setAttr("highlights",_/100),a.setAttr("shadows",l/100),a.setAttr("vignette",e.adjustments.vignette/100),e.preset==="posterize"&&a.levels(.02),e.preset==="pop"&&a.enhance(.25);const F=yi({width:a.width()*t,height:a.height()*t});a.cache({pixelRatio:t*F})}function wc(a){const{crop:e,adjustments:t}=a;return[e?.x,e?.y,e?.width,e?.height,...Object.values(t)].join("|")}function Dc(a,e,t,i=96){const r=Ze(e,{width:a.width,height:a.height}),n=Math.min(i/r.width,i/r.height),o=document.createElement("canvas");o.width=Math.max(1,Math.round(r.width*n)),o.height=Math.max(1,Math.round(r.height*n)),Ba(o).drawImage(a,r.x,r.y,r.width,r.height,0,0,o.width,o.height);const s=new fe.Stage({container:document.createElement("div"),width:o.width,height:o.height});try{const u=new fe.Image({image:o,listening:!1});Os(u,{...e,preset:t});const _=new fe.Layer;return _.add(u),s.add(_),s.toDataURL()}finally{s.destroy()}}function Gs(a){const e=new fe.Layer,t=new fe.Group({name:"view"}),i=new fe.Group({name:"content"}),r=new fe.Image({image:void 0,listening:!1});i.add(r),t.add(i),e.add(t),a.add(e);const n=new Map;let o="";return{viewGroup:t,contentGroup:i,imageNode:r,update:(s,u,_)=>{const l=_c(s,_.scale*e.getCanvas().getPixelRatio()),g=r.image()!==l;g&&(r.image(l),r.scale({x:s.width/l.width,y:s.height/l.height}));const d=_.showCropped?Ze(u,{width:s.width,height:s.height}):{x:0,y:0};t.position({x:_.offset.x-d.x*_.scale,y:_.offset.y-d.y*_.scale}),t.scale({x:_.scale,y:_.scale}),_.showCropped&&u.crop!==null?t.clip(u.crop):(t.clipWidth(void 0),t.clipHeight(void 0));const F=_.fastFilters?Math.min(1,_.scale*r.scaleX()*(globalThis.devicePixelRatio||1)):1,f=`${Object.values(u.adjustments).join("|")}|${u.preset}|${F}`;(g||f!==o)&&(Os(r,u,F),o=f);const w=new Set,m={width:s.width,height:s.height};for(const c of u.annotations){w.add(c.id);const C=n.get(c.id);if(C!==void 0&&C.annotation===c)continue;C?.node.destroy();const B=Is(c,m);i.add(B),n.set(c.id,{annotation:c,node:B})}for(const[c,C]of n)w.has(c)||(C.node.destroy(),n.delete(c));for(const{node:c}of n.values())c instanceof fe.Shape&&c.strokeWidth()>0&&c.hitStrokeWidth(kc(c.strokeWidth(),_.scale));r.zIndex(0),u.annotations.forEach((c,C)=>n.get(c.id).node.zIndex(C+1)),e.batchDraw()},destroy:()=>{n.clear(),e.destroy()}}}function vc(a,e,t,i){const r=Gs(a);return r.update(e,t,i),r}function xc(a,e,t){const i=Ze(e,{width:a.width,height:a.height}),r=t===void 0?1:Math.min(1,t/Math.max(i.width,i.height)),n=r*yi({width:i.width*r,height:i.height*r}),o=new fe.Stage({container:document.createElement("div"),width:i.width,height:i.height});try{return vc(o,a,e,{scale:1,offset:{x:0,y:0},showCropped:!0}),o.toCanvas({pixelRatio:n})}finally{o.destroy()}}function Cc(a,e,t,i){const r=Ze(e,t);return{x:(a.x-i.offset.x)/i.scale+(i.showCropped?r.x:0),y:(a.y-i.offset.y)/i.scale+(i.showCropped?r.y:0)}}const Ec=["src","alt"],jc=Ae({__name:"FilterStrip",props:{loaded:{type:Boolean},oriented:{}},setup(a){const e=a,t=Qe(),i=[{id:"none",label:x("No filter")},{id:"pop",label:x("Pop")},{id:"golden",label:x("Golden")},{id:"coast",label:x("Coast")},{id:"cinema",label:x("Cinema")},{id:"berry",label:x("Berry")},{id:"mist",label:x("Mist")},{id:"warm",label:x("Warm")},{id:"cool",label:x("Cool")},{id:"fade",label:x("Fade")},{id:"grayscale",label:x("Grayscale")},{id:"noir",label:x("Noir")},{id:"luna",label:x("Luna")},{id:"sepia",label:x("Sepia")},{id:"invert",label:x("Invert")},{id:"solarize",label:x("Solarize")},{id:"posterize",label:x("Posterize")}],r=he([]);We([()=>e.oriented,()=>wc(t.state.value)],([o])=>{r.value=o?i.map(s=>({...s,url:Dc(o,t.state.value,s.id)})):[]},{immediate:!0});function n(o,s){t.commit({...t.state.value,preset:o},s)}return(o,s)=>(p(),ae(bi,{variant:"strip",class:"filter-strip"},{default:Y(()=>[(p(!0),k(qe,null,Re(r.value,u=>(p(),ae(Ve,{key:u.id,label:u.label,active:j(t).state.value.preset===u.id,disabled:!a.loaded,"data-test":`preset-${u.id}`,onClick:_=>n(u.id,u.label)},{default:Y(()=>[S("img",{src:u.url,alt:u.label},null,8,Ec)]),_:2},1032,["label","active","disabled","data-test","onClick"]))),128))]),_:1}))}}),Bc=X(jc,[["__scopeId","data-v-ceab69b4"]]),qc={class:"redact-panel"},Sc=Ae({__name:"RedactPanel",props:{loaded:{type:Boolean}},setup(a){const e=Qe(),t={pixelate:x("Pixelate"),blur:x("Smooth"),rectangle:x("Rectangular area"),ellipse:x("Oval area")};return(i,r)=>(p(),k("div",qc,[I(Ve,{"data-test":"redact-pixelate",label:t.pixelate,active:j(e).redactStyle.value==="pixelate",disabled:!a.loaded,onClick:r[0]||(r[0]=n=>j(e).redactStyle.value="pixelate")},null,8,["label","active","disabled"]),I(Ve,{"data-test":"redact-blur",label:t.blur,active:j(e).redactStyle.value==="blur",disabled:!a.loaded,onClick:r[1]||(r[1]=n=>j(e).redactStyle.value="blur")},null,8,["label","active","disabled"]),r[4]||(r[4]=S("span",{class:"redact-panel__divider"},null,-1)),I(Ve,{"data-test":"redact-rectangle",label:t.rectangle,active:j(e).redactShape.value==="rectangle",disabled:!a.loaded,iconOnly:"",onClick:r[2]||(r[2]=n=>j(e).redactShape.value="rectangle")},{default:Y(()=>[I(qr,{size:20})]),_:1},8,["label","active","disabled"]),I(Ve,{"data-test":"redact-ellipse",label:t.ellipse,active:j(e).redactShape.value==="ellipse",disabled:!a.loaded,iconOnly:"",onClick:r[3]||(r[3]=n=>j(e).redactShape.value="ellipse")},{default:Y(()=>[I(jr,{size:20})]),_:1},8,["label","active","disabled"])]))}}),Ac=X(Sc,[["__scopeId","data-v-ca1eeeeb"]]),Mc={class:"select-panel"},Pc={class:"select-panel__hint"},Lc=Ae({__name:"SelectPanel",setup(a){const e=Qe(),t=x("Click an annotation to move, resize or recolor it"),i=x("Drag to move, use the handles to resize"),r=Fe(()=>e.selectedId.value!==null);return(n,o)=>(p(),k("div",Mc,[S("span",Pc,G(r.value?j(i):j(t)),1)]))}}),Tc=X(Lc,[["__scopeId","data-v-6c179f9e"]]),zc={class:"sticker-panel"},Hc=Ae({__name:"StickerPanel",props:{loaded:{type:Boolean}},setup(a){const e=Qe(),t=x("More emojis"),i=["😀","😍","🎉","👍","❤️","⭐","🔥","💡","✅","❌","❓","⚠️"];function r(){try{const s=Cl("",12).map(u=>u.native).filter(u=>typeof u=="string"&&u!=="");return s.length>=6?s:i}catch{return i}}const n=r(),o=Fe(()=>n.includes(e.sticker.value)?n:[e.sticker.value,...n.slice(0,11)]);return(s,u)=>(p(),k("div",zc,[(p(!0),k(qe,null,Re(o.value,_=>(p(),ae(Ve,{key:_,label:_,active:j(e).sticker.value===_,disabled:!a.loaded,class:"sticker-panel__emoji",iconOnly:"",onClick:l=>j(e).sticker.value=_},{default:Y(()=>[Oe(G(_),1)]),_:2},1032,["label","active","disabled","onClick"]))),128)),I(j(vd),{onSelect:u[0]||(u[0]=_=>j(e).sticker.value=_)},{default:Y(()=>[I(j(je),{"data-test":"emoji-picker",variant:"tertiary"},{default:Y(()=>[Oe(G(j(t)),1)]),_:1})]),_:1})]))}}),Rc=X(Hc,[["__scopeId","data-v-02765a0d"]]),Ic=Ae({__name:"EditorPanel",props:{loaded:{type:Boolean},oriented:{}},setup(a){const e=Qe();return(t,i)=>j(e).activeMode.value==="filter"?(p(),ae(Bc,{key:0,loaded:a.loaded,oriented:a.oriented},null,8,["loaded","oriented"])):(p(),ae(bi,{key:1,variant:"card",class:"editor-card"},{default:Y(()=>[j(e).activeMode.value==="crop"?(p(),ae(MF,{key:0,loaded:a.loaded},null,8,["loaded"])):j(e).activeMode.value==="finetune"?(p(),ae(d0,{key:1,loaded:a.loaded},null,8,["loaded"])):j(e).activeMode.value==="annotate"?(p(),ae(aF,{key:2,loaded:a.loaded},null,8,["loaded"])):j(e).activeMode.value==="select"?(p(),ae(Tc,{key:3})):j(e).activeMode.value==="sticker"?(p(),ae(Rc,{key:4,loaded:a.loaded},null,8,["loaded"])):j(e).activeMode.value==="redact"?(p(),ae(Ac,{key:5,loaded:a.loaded},null,8,["loaded"])):T("",!0)]),_:1}))}}),Oc=X(Ic,[["__scopeId","data-v-25ead0dc"]]),Gc={name:"BlurIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Wc=["aria-hidden","aria-label"],Vc=["fill","width","height"],Nc={d:"M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z"},$c={key:0};function Uc(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon blur-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Nc,[t.title?(p(),k("title",$c,G(t.title),1)):T("",!0)])],8,Vc))],16,Wc)}const Ws=X(Gc,[["render",Uc]]),Yc={name:"CropIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Xc=["aria-hidden","aria-label"],Kc=["fill","width","height"],Zc={d:"M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z"},Qc={key:0};function Jc(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon crop-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Zc,[t.title?(p(),k("title",Qc,G(t.title),1)):T("",!0)])],8,Kc))],16,Xc)}const Vs=X(Yc,[["render",Jc]]),em={name:"CursorDefaultOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},tm=["aria-hidden","aria-label"],am=["fill","width","height"],im={d:"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"},rm={key:0};function nm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon cursor-default-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",im,[t.title?(p(),k("title",rm,G(t.title),1)):T("",!0)])],8,am))],16,tm)}const om=X(em,[["render",nm]]),sm={name:"PaletteOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},um=["aria-hidden","aria-label"],_m=["fill","width","height"],lm={d:"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"},gm={key:0};function hm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon palette-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",lm,[t.title?(p(),k("title",gm,G(t.title),1)):T("",!0)])],8,_m))],16,um)}const ze=X(sm,[["render",hm]]),dm={name:"StickerEmojiIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},fm=["aria-hidden","aria-label"],Fm=["fill","width","height"],cm={d:"M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z"},mm={key:0};function pm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon sticker-emoji-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",cm,[t.title?(p(),k("title",mm,G(t.title),1)):T("",!0)])],8,Fm))],16,fm)}const Ns=X(dm,[["render",pm]]),bm={name:"TuneIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ym=["aria-hidden","aria-label"],km=["fill","width","height"],wm={d:"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"},Dm={key:0};function vm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon tune-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",wm,[t.title?(p(),k("title",Dm,G(t.title),1)):T("",!0)])],8,km))],16,ym)}const Sr=X(bm,[["render",vm]]),xm={class:"editor-sidebar__nav"},Cm=Ae({__name:"EditorSidebar",props:{loaded:{type:Boolean}},setup(a){const e=Qe(),t=[{id:"select",label:x("Select"),icon:om},{id:"crop",label:x("Crop"),icon:Vs},{id:"finetune",label:x("Adjust"),icon:Sr},{id:"filter",label:x("Filter"),icon:ze},{id:"annotate",label:x("Annotate"),icon:Br},{id:"sticker",label:x("Sticker"),icon:Ns},{id:"redact",label:x("Blur"),icon:Ws}];return(i,r)=>(p(),ae(bi,{variant:"card",opaque:"",class:"editor-sidebar"},{default:Y(()=>[S("nav",xm,[(p(),k(qe,null,Re(t,n=>I(Ve,{key:n.id,label:n.label,active:j(e).activeMode.value===n.id,disabled:!a.loaded,onClick:o=>j(e).setMode(n.id)},{default:Y(()=>[(p(),ae(wt(n.icon),{size:20}))]),_:2},1032,["label","active","disabled","onClick"])),64))])]),_:1}))}}),Em=X(Cm,[["__scopeId","data-v-54ce7748"]]),jm={name:"ChevronDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bm=["aria-hidden","aria-label"],qm=["fill","width","height"],Sm={d:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"},Am={key:0};function Mm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon chevron-down-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Sm,[t.title?(p(),k("title",Am,G(t.title),1)):T("",!0)])],8,qm))],16,Bm)}const Pm=X(jm,[["render",Mm]]),Lm={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Tm=["aria-hidden","aria-label"],zm=["fill","width","height"],Hm={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Rm={key:0};function Im(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon close-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Hm,[t.title?(p(),k("title",Rm,G(t.title),1)):T("",!0)])],8,zm))],16,Tm)}const Om=X(Lm,[["render",Im]]),Gm={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Wm=["aria-hidden","aria-label"],Vm=["fill","width","height"],Nm={d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"},$m={key:0};function Um(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon content-copy-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Nm,[t.title?(p(),k("title",$m,G(t.title),1)):T("",!0)])],8,Vm))],16,Wm)}const Ar=X(Gm,[["render",Um]]),Ym={name:"HistoryIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Xm=["aria-hidden","aria-label"],Km=["fill","width","height"],Zm={d:"M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3"},Qm={key:0};function Jm(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon history-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Zm,[t.title?(p(),k("title",Qm,G(t.title),1)):T("",!0)])],8,Km))],16,Xm)}const e2=X(Ym,[["render",Jm]]),t2={name:"MagnifyMinusOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},a2=["aria-hidden","aria-label"],i2=["fill","width","height"],r2={d:"M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"},n2={key:0};function o2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon magnify-minus-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",r2,[t.title?(p(),k("title",n2,G(t.title),1)):T("",!0)])],8,i2))],16,a2)}const s2=X(t2,[["render",o2]]),u2={name:"MagnifyPlusOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_2=["aria-hidden","aria-label"],l2=["fill","width","height"],g2={d:"M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"},h2={key:0};function d2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon magnify-plus-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",g2,[t.title?(p(),k("title",h2,G(t.title),1)):T("",!0)])],8,l2))],16,_2)}const f2=X(u2,[["render",d2]]),F2={name:"RedoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},c2=["aria-hidden","aria-label"],m2=["fill","width","height"],p2={d:"M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z"},b2={key:0};function y2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon redo-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",p2,[t.title?(p(),k("title",b2,G(t.title),1)):T("",!0)])],8,m2))],16,c2)}const k2=X(F2,[["render",y2]]),w2={name:"RestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},D2=["aria-hidden","aria-label"],v2=["fill","width","height"],x2={d:"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"},C2={key:0};function E2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon restore-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",x2,[t.title?(p(),k("title",C2,G(t.title),1)):T("",!0)])],8,v2))],16,D2)}const $s=X(w2,[["render",E2]]),j2={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},B2=["aria-hidden","aria-label"],q2=["fill","width","height"],S2={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},A2={key:0};function M2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon undo-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",S2,[t.title?(p(),k("title",A2,G(t.title),1)):T("",!0)])],8,q2))],16,B2)}const P2=X(j2,[["render",M2]]),L2={name:"ArrowExpandIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},T2=["aria-hidden","aria-label"],z2=["fill","width","height"],H2={d:"M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z"},R2={key:0};function I2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon arrow-expand-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",H2,[t.title?(p(),k("title",R2,G(t.title),1)):T("",!0)])],8,z2))],16,T2)}const O2=X(L2,[["render",I2]]),G2={name:"BorderOutsideIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},W2=["aria-hidden","aria-label"],V2=["fill","width","height"],N2={d:"M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z"},$2={key:0};function U2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon border-outside-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",N2,[t.title?(p(),k("title",$2,G(t.title),1)):T("",!0)])],8,V2))],16,W2)}const Us=X(G2,[["render",U2]]),Y2={name:"CropFreeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},X2=["aria-hidden","aria-label"],K2=["fill","width","height"],Z2={d:"M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z"},Q2={key:0};function J2(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon crop-free-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Z2,[t.title?(p(),k("title",Q2,G(t.title),1)):T("",!0)])],8,K2))],16,X2)}const e3=X(Y2,[["render",J2]]),t3={name:"CursorMoveIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},a3=["aria-hidden","aria-label"],i3=["fill","width","height"],r3={d:"M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z"},n3={key:0};function o3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon cursor-move-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",r3,[t.title?(p(),k("title",n3,G(t.title),1)):T("",!0)])],8,i3))],16,a3)}const s3=X(t3,[["render",o3]]),u3={name:"DeleteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_3=["aria-hidden","aria-label"],l3=["fill","width","height"],g3={d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"},h3={key:0};function d3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon delete-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",g3,[t.title?(p(),k("title",h3,G(t.title),1)):T("",!0)])],8,l3))],16,_3)}const Ys=X(u3,[["render",d3]]),f3={name:"FormatAlignLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},F3=["aria-hidden","aria-label"],c3=["fill","width","height"],m3={d:"M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z"},p3={key:0};function b3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-align-left-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",m3,[t.title?(p(),k("title",p3,G(t.title),1)):T("",!0)])],8,c3))],16,F3)}const Xs=X(f3,[["render",b3]]),y3={name:"FormatBoldIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},k3=["aria-hidden","aria-label"],w3=["fill","width","height"],D3={d:"M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z"},v3={key:0};function x3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-bold-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",D3,[t.title?(p(),k("title",v3,G(t.title),1)):T("",!0)])],8,w3))],16,k3)}const Ks=X(y3,[["render",x3]]),C3={name:"FormatColorHighlightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},E3=["aria-hidden","aria-label"],j3=["fill","width","height"],B3={d:"M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z"},q3={key:0};function S3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-color-highlight-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",B3,[t.title?(p(),k("title",q3,G(t.title),1)):T("",!0)])],8,j3))],16,E3)}const Zs=X(C3,[["render",S3]]),A3={name:"FormatFontIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},M3=["aria-hidden","aria-label"],P3=["fill","width","height"],L3={d:"M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z"},T3={key:0};function z3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-font-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",L3,[t.title?(p(),k("title",T3,G(t.title),1)):T("",!0)])],8,P3))],16,M3)}const Qs=X(A3,[["render",z3]]),H3={name:"FormatItalicIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},R3=["aria-hidden","aria-label"],I3=["fill","width","height"],O3={d:"M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z"},G3={key:0};function W3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-italic-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",O3,[t.title?(p(),k("title",G3,G(t.title),1)):T("",!0)])],8,I3))],16,R3)}const Js=X(H3,[["render",W3]]),V3={name:"FormatStrikethroughIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},N3=["aria-hidden","aria-label"],$3=["fill","width","height"],U3={d:"M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z"},Y3={key:0};function X3(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-strikethrough-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",U3,[t.title?(p(),k("title",Y3,G(t.title),1)):T("",!0)])],8,$3))],16,N3)}const eu=X(V3,[["render",X3]]),K3={name:"FormatUnderlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z3=["aria-hidden","aria-label"],Q3=["fill","width","height"],J3={d:"M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z"},ep={key:0};function tp(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-underline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",J3,[t.title?(p(),k("title",ep,G(t.title),1)):T("",!0)])],8,Q3))],16,Z3)}const tu=X(K3,[["render",tp]]),ap={name:"ImageOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ip=["aria-hidden","aria-label"],rp=["fill","width","height"],np={d:"M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z"},op={key:0};function sp(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon image-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",np,[t.title?(p(),k("title",op,G(t.title),1)):T("",!0)])],8,rp))],16,ip)}const Jn=X(ap,[["render",sp]]),up={name:"PaletteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_p=["aria-hidden","aria-label"],lp=["fill","width","height"],gp={d:"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z"},hp={key:0};function dp(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon palette-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",gp,[t.title?(p(),k("title",hp,G(t.title),1)):T("",!0)])],8,lp))],16,_p)}const fp=X(up,[["render",dp]]),au=new Map([[x("Original"),Jn],[x("Restored"),Jn],[x("Revert all changes"),$s],[x("Crop"),Vs],[x("Reset crop"),e3],[x("Rotate left"),As],[x("Rotate right"),mr],[x("Flip horizontal"),qs],[x("Flip vertical"),Ss],[x("Rotation"),mr],[x("Scale"),O2],[x("Exposure"),ss],[x("Brightness"),Fs],[x("Contrast"),_s],[x("Saturation"),gs],[x("Temperature"),ds],[x("Tint"),fs],[x("Sharpen"),ls],[x("Highlights"),hs],[x("Shadows"),os],[x("Vignette"),us],[x("Draw"),Br],[x("Rectangle"),qr],[x("Ellipse"),jr],[x("Arrow"),Cs],[x("Line"),js],[x("Text"),Es],[x("Sticker"),Ns],[x("Blur"),Ws],[x("Color"),fp],[x("Duplicate"),Ar],[x("Delete"),Ys],[x("Move or resize"),s3],[x("Bold"),Ks],[x("Italic"),Js],[x("Underline"),tu],[x("Strikethrough"),eu],[x("Outline"),Us],[x("Background"),Zs],[x("Font"),Qs],[x("Alignment"),Xs],[x("No filter"),ze],[x("Pop"),ze],[x("Golden"),ze],[x("Coast"),ze],[x("Cinema"),ze],[x("Berry"),ze],[x("Mist"),ze],[x("Warm"),ze],[x("Cool"),ze],[x("Fade"),ze],[x("Grayscale"),ze],[x("Noir"),ze],[x("Luna"),ze],[x("Sepia"),ze],[x("Invert"),ze],[x("Solarize"),ze],[x("Posterize"),ze],[x("Edit"),Sr]]);function Fp(a){return au.get(a)??Sr}[...au.keys()];const cp={class:"editor-topbar"},mp={class:"editor-topbar__history"},pp=["aria-label","title","disabled"],bp={class:"editor-topbar__actions"},yp=Ae({__name:"EditorTopBar",props:{loaded:{type:Boolean},saving:{type:Boolean},popoverContainer:{},canSaveAs:{type:Boolean}},emits:["save","saveAs","cancel"],setup(a,{emit:e}){const t=e,i=Qe(),r=Ps(),n={undo:x("Undo"),redo:x("Redo"),revert:x("Revert all changes"),revertText:x("All edits will be discarded. This action cannot be undone."),zoomIn:x("Zoom in"),zoomOut:x("Zoom out"),resetZoom:x("Reset zoom"),save:x("Save"),saveOptions:x("More ways to save"),saveAs:x("Save as copy"),cancel:x("Cancel"),close:x("Close the editor"),unsaved:x("Save your edits before closing?"),unsavedText:x("The image has edits that were never saved."),discard:x("Discard changes"),history:x("Edit history"),step:x("Edit")},o=Fe(()=>i.historyEntries.value.map((F,f)=>({index:f,label:F.label??n.step,icon:Fp(F.label??n.step)})).reverse());function s(F){const f=F===1?1.5:.6666666666666666;i.setViewZoom(i.viewZoom.value*f)}function u(){i.setViewZoom(gt),i.setViewPan({x:0,y:0})}const _=he(!1);function l(){if(as(i.state.value)){t("cancel");return}_.value=!0}function g(F){_.value=!1,F==="save"?t("save"):F==="discard"&&t("cancel")}async function d(){await ho({name:n.revert,text:n.revertText,labelConfirm:n.revert,labelReject:n.cancel,severity:"warning"})&&r.revert()}return(F,f)=>(p(),k("div",cp,[f[11]||(f[11]=S("span",{class:"editor-topbar__spacer"},null,-1)),S("div",mp,[I(j(si),{forceMenu:"",container:a.popoverContainer??"body","aria-label":n.history,title:n.history,disabled:!a.loaded||!j(i).canUndo.value,variant:"tertiary","data-test":"history"},{icon:Y(()=>[I(e2,{size:20})]),default:Y(()=>[I(j(ya),{"data-test":"revert",onClick:d},{icon:Y(()=>[I($s,{size:20})]),default:Y(()=>[Oe(" "+G(n.revert),1)]),_:1}),I(j(jd)),(p(!0),k(qe,null,Re(o.value,w=>(p(),ae(j(ya),{key:w.index,type:"radio",modelValue:String(j(i).historyIndex.value),value:String(w.index),"data-test":`history-step-${w.index}`,onClick:m=>j(i).jumpTo(w.index)},{icon:Y(()=>[(p(),ae(wt(w.icon),{size:20}))]),default:Y(()=>[Oe(" "+G(w.label),1)]),_:2},1032,["modelValue","value","data-test","onClick"]))),128))]),_:1},8,["container","aria-label","title","disabled"]),I(j(je),{"data-test":"undo","aria-label":n.undo,title:n.undo,disabled:!a.loaded||!j(i).canUndo.value,variant:"tertiary",onClick:f[0]||(f[0]=w=>j(i).undo())},{icon:Y(()=>[I(P2,{size:20})]),_:1},8,["aria-label","title","disabled"]),I(j(je),{"aria-label":n.redo,title:n.redo,disabled:!a.loaded||!j(i).canRedo.value,variant:"tertiary",onClick:f[1]||(f[1]=w=>j(i).redo())},{icon:Y(()=>[I(k2,{size:20})]),_:1},8,["aria-label","title","disabled"]),f[10]||(f[10]=S("span",{class:"editor-topbar__separator"},null,-1)),I(j(je),{"data-test":"zoom-out","aria-label":n.zoomOut,title:n.zoomOut,disabled:!a.loaded||j(i).viewZoom.value<=j(ws),variant:"tertiary",onClick:f[2]||(f[2]=w=>s(-1))},{icon:Y(()=>[I(s2,{size:20})]),_:1},8,["aria-label","title","disabled"]),S("button",{type:"button",class:"editor-topbar__zoom","data-test":"zoom-reset","aria-label":n.resetZoom,title:n.resetZoom,disabled:!a.loaded,onClick:u},G(Math.round(j(i).viewZoom.value*100))+"% ",9,pp),I(j(je),{"data-test":"zoom-in","aria-label":n.zoomIn,title:n.zoomIn,disabled:!a.loaded||j(i).viewZoom.value>=j(Ds),variant:"tertiary",onClick:f[3]||(f[3]=w=>s(1))},{icon:Y(()=>[I(f2,{size:20})]),_:1},8,["aria-label","title","disabled"])]),S("div",bp,[S("div",{class:He(["editor-topbar__save",{"editor-topbar__save--split":a.canSaveAs}])},[I(j(je),{"data-test":"save",variant:"primary",disabled:!a.loaded||a.saving,onClick:f[4]||(f[4]=w=>t("save"))},no({default:Y(()=>[Oe(" "+G(n.save),1)]),_:2},[a.saving?{name:"icon",fn:Y(()=>[I(j(oo),{size:20,"data-test":"saving"})]),key:"0"}:void 0]),1032,["disabled"]),a.canSaveAs?(p(),ae(j(si),{key:0,"data-test":"save-menu",forceMenu:"",variant:"primary","aria-label":n.saveOptions,container:a.popoverContainer??"body",disabled:!a.loaded||a.saving},{icon:Y(()=>[I(Pm,{size:20})]),default:Y(()=>[I(j(ya),{"data-test":"save-as",closeAfterClick:"",onClick:f[5]||(f[5]=w=>t("saveAs"))},{icon:Y(()=>[I(Ar,{size:20})]),default:Y(()=>[Oe(" "+G(n.saveAs),1)]),_:1})]),_:1},8,["aria-label","container","disabled"])):T("",!0)],2),I(j(je),{"data-test":"cancel","aria-label":n.close,title:n.close,variant:"tertiary",onClick:l},{icon:Y(()=>[I(Om,{size:20})]),_:1},8,["aria-label","title"])]),_.value?(p(),ae(j(lo),{key:0,name:n.unsaved,noClose:"","data-test":"closing-dialog","onUpdate:open":f[9]||(f[9]=w=>g("stay"))},{actions:Y(()=>[I(j(je),{class:"editor-topbar__stay","data-test":"closing-cancel",variant:"tertiary",onClick:f[6]||(f[6]=w=>g("stay"))},{default:Y(()=>[Oe(G(n.cancel),1)]),_:1}),I(j(je),{"data-test":"closing-discard",variant:"error",onClick:f[7]||(f[7]=w=>g("discard"))},{default:Y(()=>[Oe(G(n.discard),1)]),_:1}),I(j(je),{"data-test":"closing-save",variant:"primary",onClick:f[8]||(f[8]=w=>g("save"))},{default:Y(()=>[Oe(G(n.save),1)]),_:1})]),default:Y(()=>[I(j(go),{type:"warning",text:n.unsavedText},null,8,["text"])]),_:1},8,["name"])):T("",!0)]))}}),kp=X(yp,[["__scopeId","data-v-da1c3a53"]]),wp={name:"FormatAlignCenterIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Dp=["aria-hidden","aria-label"],vp=["fill","width","height"],xp={d:"M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z"},Cp={key:0};function Ep(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-align-center-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",xp,[t.title?(p(),k("title",Cp,G(t.title),1)):T("",!0)])],8,vp))],16,Dp)}const jp=X(wp,[["render",Ep]]),Bp={name:"FormatAlignRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qp=["aria-hidden","aria-label"],Sp=["fill","width","height"],Ap={d:"M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z"},Mp={key:0};function Pp(a,e,t,i,r,n){return p(),k("span",ie(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon format-align-right-icon",role:"img",onClick:e[0]||(e[0]=o=>a.$emit("click",o))}),[(p(),k("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[S("path",Ap,[t.title?(p(),k("title",Mp,G(t.title),1)):T("",!0)])],8,Sp))],16,qp)}const Lp=X(Bp,[["render",Pp]]),Tp={outline:"textOutline",background:"textBackground",bold:"textBold",italic:"textItalic",underline:"textUnderline",strikethrough:"textStrikethrough"};function Mr(a){function e(){const r=a.state.value.annotations.find(n=>n.id===a.selectedId.value);return r?.type==="text"?r:void 0}function t(r,n){const o=Tp[r];return Fe({get(){return e()?.[r]??a[o].value},set(s){a[o].value=s;const u=e();if(u===void 0)return;const _=a.state.value;a.commit({..._,annotations:_.annotations.map(l=>l.id===u.id?{...l,[r]:s}:l)},n)}})}function i(r,n,o){return Fe({get(){return e()?.[r]??a[n].value},set(s){a[n].value=s;const u=e();if(u===void 0||u[r]===s)return;const _=a.state.value;a.commit({..._,annotations:_.annotations.map(l=>l.id===u.id?{...l,[r]:s}:l)},o)}})}return{outline:t("outline",x("Outline")),background:t("background",x("Background")),font:i("font","textFont",x("Font")),align:i("align","textAlign",x("Alignment")),bold:t("bold",x("Bold")),italic:t("italic",x("Italic")),underline:t("underline",x("Underline")),strikethrough:t("strikethrough",x("Strikethrough"))}}const zp=Ae({__name:"TextEmphasisButtons",props:{testPrefix:{},size:{}},setup(a){const e=Mr(Qe()),t={bold:{label:x("Bold"),icon:Ks},italic:{label:x("Italic"),icon:Js},underline:{label:x("Underline"),icon:tu},strikethrough:{label:x("Strikethrough"),icon:eu}},i=lc.map(r=>({id:r,...t[r]}));return(r,n)=>(p(!0),k(qe,null,Re(j(i),o=>(p(),ae(Ve,{key:o.id,label:o.label,active:j(e)[o.id].value,"data-test":`${a.testPrefix}-${o.id}`,iconOnly:"",onClick:s=>j(e)[o.id].value=!j(e)[o.id].value},{default:Y(()=>[(p(),ae(wt(o.icon),{size:a.size},null,8,["size"]))]),_:2},1032,["label","active","data-test","onClick"]))),128))}}),Hp={key:0,class:"floating-toolbar__color"},Rp=["value","aria-label","title"],Ip=Ae({__name:"FloatingToolbar",props:{box:{},typing:{type:Boolean}},emits:["duplicate","delete","refocus"],setup(a,{emit:e}){const t=a,i=e,r=Qe(),n=Bs(r),o=Mr(r),s=Fe(()=>r.state.value.annotations.find(m=>m.id===r.selectedId.value)),u=Fe(()=>t.typing===!0||s.value?.type==="text"),_=Fe(()=>t.typing===!0||s.value!==void 0&&s.value.type!=="sticker"&&s.value.type!=="redact"),l=Fe(()=>t.typing===!0?52:76),g={color:x("Color"),duplicate:x("Duplicate"),delete:x("Delete"),outline:x("Outline"),background:x("Background"),font:x("Font"),align:x("Alignment")},d=[{id:"sans",label:x("Sans serif")},{id:"serif",label:x("Serif")},{id:"mono",label:x("Monospace")}],F={left:{label:x("Align left"),icon:Xs},center:{label:x("Align centre"),icon:jp},right:{label:x("Align right"),icon:Lp}},f=ys.map(m=>({id:m,...F[m]})),w=Fe(()=>F[Er(o.align.value)]);return(m,c)=>(p(),ae(bi,{variant:"pill",class:"floating-toolbar","data-test":"floating-toolbar",style:Se({insetInlineStart:`${a.box.x+a.box.width/2}px`,insetBlockStart:a.box.y-l.value>=4?`${a.box.y-l.value}px`:`${a.box.y+a.box.height+12}px`}),onMousedown:c[8]||(c[8]=br(()=>{},["prevent"]))},{default:Y(()=>[_.value?(p(),k("span",Hp,[S("input",{value:j(r).drawColor.value,type:"color","aria-label":g.color,title:g.color,"data-test":"toolbar-color",onInput:c[0]||(c[0]=C=>j(n).preview(C.target.value)),onChange:c[1]||(c[1]=C=>j(n).commit(C.target.value))},null,40,Rp)])):T("",!0),u.value?(p(),ae(j(si),{key:1,forceMenu:"","aria-label":g.font,title:g.font,variant:"tertiary","data-test":"toolbar-font",onClose:c[2]||(c[2]=C=>i("refocus"))},{icon:Y(()=>[I(Qs,{size:18})]),default:Y(()=>[(p(),k(qe,null,Re(d,C=>I(j(ya),{key:C.id,type:"radio",closeAfterClick:"",modelValue:j(o).font.value,value:C.id,"data-test":`toolbar-font-${C.id}`,onClick:B=>j(o).font.value=C.id},{default:Y(()=>[Oe(G(C.label),1)]),_:2},1032,["modelValue","value","data-test","onClick"])),64))]),_:1},8,["aria-label","title"])):T("",!0),u.value?(p(),ae(j(si),{key:2,forceMenu:"","aria-label":g.align,title:g.align,variant:"tertiary","data-test":"toolbar-align",onClose:c[3]||(c[3]=C=>i("refocus"))},{icon:Y(()=>[(p(),ae(wt(w.value.icon),{size:18}))]),default:Y(()=>[(p(!0),k(qe,null,Re(j(f),C=>(p(),ae(j(ya),{key:C.id,type:"radio",closeAfterClick:"",modelValue:j(o).align.value,value:C.id,"data-test":`toolbar-align-${C.id}`,onClick:B=>j(o).align.value=C.id},{icon:Y(()=>[(p(),ae(wt(C.icon),{size:20}))]),default:Y(()=>[Oe(" "+G(C.label),1)]),_:2},1032,["modelValue","value","data-test","onClick"]))),128))]),_:1},8,["aria-label","title"])):T("",!0),u.value?(p(),ae(zp,{key:3,testPrefix:"toolbar",size:18})):T("",!0),u.value?(p(),ae(Ve,{key:4,"data-test":"toolbar-outline",label:g.outline,active:j(o).outline.value,iconOnly:"",onClick:c[4]||(c[4]=C=>j(o).outline.value=!j(o).outline.value)},{default:Y(()=>[I(Us,{size:18})]),_:1},8,["label","active"])):T("",!0),u.value?(p(),ae(Ve,{key:5,"data-test":"toolbar-background",label:g.background,active:j(o).background.value,iconOnly:"",onClick:c[5]||(c[5]=C=>j(o).background.value=!j(o).background.value)},{default:Y(()=>[I(Zs,{size:18})]),_:1},8,["label","active"])):T("",!0),a.typing?T("",!0):(p(),k(qe,{key:6},[I(j(je),{"data-test":"duplicate","aria-label":g.duplicate,title:g.duplicate,variant:"tertiary",onClick:c[6]||(c[6]=C=>i("duplicate"))},{icon:Y(()=>[I(Ar,{size:18})]),_:1},8,["aria-label","title"]),I(j(je),{"data-test":"delete","aria-label":g.delete,title:g.delete,variant:"tertiary",onClick:c[7]||(c[7]=C=>i("delete"))},{icon:Y(()=>[I(Ys,{size:18})]),_:1},8,["aria-label","title"])],64))]),_:1},8,["style"]))}}),Op=X(Ip,[["__scopeId","data-v-b2b848a3"]]),Gp=["aria-label"],Wp=Ae({__name:"TextOverlay",props:{x:{},y:{},fontSize:{},color:{},initial:{},outline:{type:Boolean},background:{type:Boolean},font:{},align:{},bold:{type:Boolean},italic:{type:Boolean},underline:{type:Boolean},strikethrough:{type:Boolean}},emits:["confirm","cancel","resize"],setup(a,{expose:e,emit:t}){const i=a,r=t,n=x("Annotation text"),o=ht(i.initial),s=Qa("input");function u(){const d=s.value;d!==null&&(d.style.width="0",d.style.height="0",d.style.width=`${Math.max(d.scrollWidth+4,i.fontSize*2)}px`,d.style.height=`${Math.max(d.scrollHeight,i.fontSize*1.2)}px`,r("resize",{width:d.offsetWidth,height:d.offsetHeight}))}function _(d){const F=d.target;!(F instanceof Element)||F===s.value||F.closest(".floating-toolbar, .v-popper__popper")!==null||r("confirm",o.value)}function l(){s.value?.focus()}e({focus:l}),Sa(()=>{u(),s.value.focus(),s.value.select(),document.addEventListener("pointerdown",_,{capture:!0})}),ci(()=>{document.removeEventListener("pointerdown",_,{capture:!0})});function g(d){d.shiftKey||(d.preventDefault(),r("confirm",o.value))}return(d,F)=>yt((p(),k("textarea",{ref_key:"input",ref:s,"onUpdate:modelValue":F[0]||(F[0]=f=>o.value=f),class:"text-overlay","aria-label":j(n),"data-test":"text-overlay",style:Se({insetInlineStart:`${a.x}px`,insetBlockStart:`${a.y}px`,fontSize:`${a.fontSize}px`,color:a.color,fontFamily:j(ms)(a.font),fontWeight:a.bold===!0?"bold":"normal",fontStyle:a.italic===!0?"italic":"normal",textDecorationLine:j(Hs)({underline:a.underline,strikethrough:a.strikethrough})||"none",textAlign:j(Er)(a.align),...a.background===!0?{backgroundColor:j(fi)(a.color),padding:`${Math.max(2,Math.round(a.fontSize/6))}px`}:{},...a.outline===!0?{webkitTextStrokeWidth:`${j(Rs)(a.fontSize)}px`,webkitTextStrokeColor:j(fi)(a.color),paintOrder:"stroke fill"}:{}}),rows:"1",onInput:u,onKeydown:[$e(g,["enter"]),F[1]||(F[1]=$e(br(f=>r("cancel"),["stop"]),["esc"]))]},null,44,Gp)),[[pr,o.value]])}}),Vp=X(Wp,[["__scopeId","data-v-9a528a49"]]);function Fi(a){return"naturalWidth"in a?{width:a.naturalWidth,height:a.naturalHeight}:{width:a.width,height:a.height}}function iu(a){let e;try{e=new URL(a,window.location.href)}catch{return!1}return(e.protocol==="http:"||e.protocol==="https:")&&e.origin!==window.location.origin}async function Np(a){const e=typeof a=="string"?a:URL.createObjectURL(a);try{return await new Promise((t,i)=>{const r=new Image;iu(e)&&(r.crossOrigin="anonymous"),r.onload=()=>t(r),r.onerror=()=>i(new Error(x("Image could not be decoded"))),r.src=e})}finally{typeof a!="string"&&URL.revokeObjectURL(e)}}async function $p(a){if(typeof a!="string")return a;try{const e=await fetch(a,iu(a)?{mode:"cors",credentials:"omit"}:{credentials:"same-origin"});return e.ok?await e.blob():null}catch{return null}}async function Up(a){const e=zs();if(e!==null){const t=await $p(a);if(t!==null)try{return await e.decode(t)}catch{}}return await Np(a)}async function Yp(a,e="image/png",t){return new Promise((i,r)=>{a.toBlob(n=>{if(n===null){r(new Error(x("Canvas could not be encoded")));return}i(n)},e,t)})}function Xp(){const a=getComputedStyle(document.body).getPropertyValue("--color-primary-element").trim();return a!==""?a:"#0082c9"}function Kp(a){const e=document.createElement("canvas"),{width:t,height:i}=Fi(a);if(t===0||i===0)return"";e.width=24,e.height=Math.max(1,Math.round(24*i/t));const r=e.getContext("2d");if(r===null)return"";r.drawImage(a,0,0,e.width,e.height);try{return e.toDataURL()}catch{return""}}function Zp(a){const e=ht("");return We(a,t=>{t!==null&&(e.value=Kp(t))}),{backdrop:e}}function Qp(a){const e=ht(""),t={select:x("Select"),crop:x("Crop"),finetune:x("Adjust"),filter:x("Filter"),annotate:x("Annotate"),sticker:x("Sticker"),redact:x("Blur")};We(a.activeMode,n=>{e.value=x("{mode} mode",{mode:t[n]??n})});let i=0;We(a.state,n=>{n.annotations.length>i?e.value=x("Annotation added"):n.annotations.length{const o=a.historyEntries.value,s=o.length===r;r=o.length;const u=o[n];s&&u!==void 0&&(e.value=x("Jumped to {step}",{step:u.label??x("Edit")}))}),We(()=>a.state.value.preset,n=>{e.value=x(n==="none"?"Filter removed":"Filter applied")}),e}const ru="input, textarea, select, [contenteditable]",Jp='button, [role="button"], a[href], summary';function eo(a){return a instanceof HTMLElement&&a.closest(ru)!==null}function e4(a){return a instanceof HTMLElement&&a.closest(`${ru}, ${Jp}`)!==null}const Ui={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]};function t4(a){const{context:e}=a;let t=!1;function i(o){const s=e.selectedId.value,u=Ui[o.key];if(s===null||u===void 0)return;o.preventDefault();const _=o.shiftKey?10:1,l=e.state.value;t=!0,e.preview({...l,annotations:l.annotations.map(g=>g.id===s?ns(g,u[0]*_,u[1]*_):g)})}function r(o){if(a.isTextEditing()||eo(o.target))return;const s=o.ctrlKey||o.metaKey;if(s&&!o.shiftKey&&o.key.toLowerCase()==="z"){o.preventDefault(),e.undo();return}if(s&&o.shiftKey&&o.key.toLowerCase()==="z"||s&&o.key.toLowerCase()==="y"){o.preventDefault(),e.redo();return}if(o.key==="+"||o.key==="="){e.setViewZoom(e.viewZoom.value*1.25);return}if(o.key==="-"){e.setViewZoom(e.viewZoom.value/1.25);return}if(o.key in Ui&&e.selectedId.value!==null){i(o);return}(o.key==="Delete"||o.key==="Backspace")&&e.selectedId.value!==null?(o.preventDefault(),a.onDelete()):o.key==="Escape"&&a.onEscape()}function n(o){eo(o.target)||t&&o.key in Ui&&(t=!1,e.commit(e.state.value,x("Move or resize")))}Sa(()=>{window.addEventListener("keydown",r),window.addEventListener("keyup",n)}),ci(()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",n)})}let la;function a4(){if(la!==void 0)return la;la=!1;try{const a=document.createElement("canvas");a.width=1,a.height=1,la=a.getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes().colorSpace==="display-p3"}catch{}return la}const i4=.92,r4=.75,n4=.97;async function o4(){await new Promise(a=>{requestAnimationFrame(()=>requestAnimationFrame(()=>a(null)))})}function s4(a){const e=ht(!1),t=["image/jpeg","image/png","image/webp"];function i(){const l=a.source()?.type;return l!==void 0&&t.includes(l)?l:void 0}async function r(l){const g=a.source();return g===null||l!=="image/jpeg"||g.type!=="image/jpeg"?null:new Uint8Array(await g.arrayBuffer())}function n(l){const g=l===null?void 0:Tu(l);return g===void 0?i4:Math.min(n4,Math.max(r4,g/100))}async function o(l,g,d){if(d===null||l.type!=="image/jpeg")return l;const F=zu(d,{icc:!a4()});if(F.length===0)return l;const f=Hu(new Uint8Array(await l.arrayBuffer()),F,{width:g.width,height:g.height});return new Blob([f],{type:l.type})}async function s(l={}){const g=a.oriented();if(g===null)throw new Error("No image loaded");const d=a.source();if(d!==null&&d.type!==""&&as(a.getState())&&l.maxSize===void 0&&(l.format===void 0||l.format===d.type))return{blob:d,width:g.width,height:g.height,mimeType:d.type,downscaled:!1};e.value=!0,await o4();try{return await u(g,l)}finally{e.value=!1}}async function u(l,g){const d=xc(l,a.getState(),g.maxSize),F=g.format??i()??"image/png";try{const f=await r(F),w=g.quality??(F==="image/jpeg"?n(f):void 0);let m=await Yp(d,F,w);m=await o(m,d,f);const c=Ze(a.getState(),{width:l.width,height:l.height}),C=g.maxSize===void 0?Math.max(c.width,c.height):Math.min(g.maxSize,Math.max(c.width,c.height));return{blob:m,width:d.width,height:d.height,mimeType:F,downscaled:Math.max(d.width,d.height)_.id!==o.id):s.annotations.map(_=>_.id===o.id?{..._,text:u}:_)},x(u===""?"Delete":"Text")):u!==""&&e.commit({...s,annotations:[...s.annotations,{id:Lt(),type:"text",x:o.sceneX,y:o.sceneY,text:u,color:e.drawColor.value,fontSize:e.fontSize.value,rotation:0,outline:e.textOutline.value,background:e.textBackground.value,font:e.textFont.value,align:e.textAlign.value,bold:e.textBold.value,italic:e.textItalic.value,underline:e.textUnderline.value,strikethrough:e.textStrikethrough.value}]},x("Text"))}return{textEdit:t,startTextEdit:i,confirmTextEdit:r}}function _4(a,e){let t=null,i=null;const r=new Map,n=he(!1),o=()=>e.activeTool.value==="adjust",s=Fe(()=>n.value||e.activeTool.value==="adjust");function u(m){const c=a.value?.getBoundingClientRect();if(c!==void 0)return{x:m.x-c.x-c.width/2,y:m.y-c.y-c.height/2}}function _(){if(r.size!==2)return null;const[m,c]=[...r.values()];return{distance:Math.hypot(m.x-c.x,m.y-c.y),centroid:{x:(m.x+c.x)/2,y:(m.y+c.y)/2}}}function l(m){if(m.preventDefault(),m.deltaY===0)return;const c=a.value?.clientHeight??window.innerHeight,C=u0(m.deltaY,m.deltaMode,c);e.setViewZoom(e.viewZoom.value*C,u({x:m.clientX,y:m.clientY}))}function g(m){if(m.pointerType==="touch"){r.set(m.pointerId,{x:m.clientX,y:m.clientY}),r.size===2&&(i=_(),e.panning.value=!0,m.stopPropagation());return}(m.button===1||m.button===0&&(n.value||o()))&&(m.preventDefault(),m.stopPropagation(),t={pointer:{x:m.clientX,y:m.clientY},pan:e.viewPan.value},e.panning.value=!0,a.value?.setPointerCapture(m.pointerId))}function d(m){if(m.pointerType==="touch"&&r.has(m.pointerId)){r.set(m.pointerId,{x:m.clientX,y:m.clientY});const c=_();if(c===null||i===null)return;m.stopPropagation();const C=c.distance/i.distance;Math.abs(C-1)>i0?e.setViewZoom(e.viewZoom.value*C,u(c.centroid)):e.setViewPan({x:e.viewPan.value.x+c.centroid.x-i.centroid.x,y:e.viewPan.value.y+c.centroid.y-i.centroid.y}),i=c;return}t!==null&&(m.stopPropagation(),e.setViewPan({x:t.pan.x+(m.clientX-t.pointer.x),y:t.pan.y+(m.clientY-t.pointer.y)}))}function F(m){m!==void 0&&r.delete(m.pointerId),i=_(),t=null,r.size<2&&(e.panning.value=!1)}function f(m){m.code!=="Space"||e4(m.target)||(m.preventDefault(),n.value=!0)}function w(m){m.code==="Space"&&(n.value=!1)}return Sa(()=>{const m=a.value;m?.addEventListener("wheel",l,{passive:!1}),m?.addEventListener("pointerdown",g,{capture:!0}),m?.addEventListener("pointermove",d,{capture:!0}),m?.addEventListener("pointerup",F),m?.addEventListener("pointercancel",F),window.addEventListener("keydown",f),window.addEventListener("keyup",w)}),ci(()=>{const m=a.value;m?.removeEventListener("wheel",l),m?.removeEventListener("pointerdown",g,{capture:!0}),m?.removeEventListener("pointermove",d,{capture:!0}),m?.removeEventListener("pointerup",F),m?.removeEventListener("pointercancel",F),window.removeEventListener("keydown",f),window.removeEventListener("keyup",w)}),{panArmed:s}}const ga=.3;function l4(){return typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Za(a){a.node.offset(a.pivot),a.node.position(a.pivot)}function g4(a,e,t){if(l4())return;const{scale:i}=e,r=fe.Easings.EaseInOut,n=t.previousScale/i;for(const o of e.targets){const{node:s}=o;switch(s.setAttrs({x:0,y:0,offsetX:0,offsetY:0,rotation:0,scaleX:1,scaleY:1,opacity:1}),a){case"load":Za(o),s.opacity(0),s.scale({x:.96,y:.96}),s.to({opacity:1,scaleX:1,scaleY:1,duration:ga,easing:r});break;case"rotate-cw":case"rotate-ccw":Za(o),s.rotation(a==="rotate-cw"?-90:90),s.scale({x:n,y:n}),s.to({rotation:0,scaleX:1,scaleY:1,duration:ga,easing:r});break;case"flip-h":Za(o),s.scaleX(-1),s.to({scaleX:1,duration:ga,easing:r});break;case"flip-v":Za(o),s.scaleY(-1),s.to({scaleY:1,duration:ga,easing:r});break;case"crop":{const{previousScale:u,previousOffset:_,previousOrigin:l}=t;s.scale({x:n,y:n}),s.position({x:(_.x-l.x*u-(e.offset.x-e.origin.x*i))*o.unit,y:(_.y-l.y*u-(e.offset.y-e.origin.y*i))*o.unit}),s.to({x:0,y:0,scaleX:1,scaleY:1,duration:ga,easing:r});break}}}}function h4(a,e,t,i){const r=a.x+a.width,n=a.y+a.height;let{x:o,y:s,width:u,height:_}=t;if(o0){const l=e.width/e.height;u/_>l?u=_*l:_=u/l,Math.abs(t.x-e.x)>.01&&(o=Math.min(t.x+t.width,r)-u),Math.abs(t.y-e.y)>.01&&(s=Math.min(t.y+t.height,n)-_)}return{...t,x:o,y:s,width:Math.max(8,u),height:Math.max(8,_)}}function d4(a){const e={oriented:a.oriented,scale:a.scale,offset:a.offset},t=v=>({x:e.offset.x+v.x*e.scale,y:e.offset.y+v.y*e.scale,width:v.width*e.scale,height:v.height*e.scale}),i=v=>({x:(v.x-e.offset.x)/e.scale,y:(v.y-e.offset.y)/e.scale,width:v.width/e.scale,height:v.height/e.scale});let r=t({x:0,y:0,...e.oriented});const n=new fe.Layer({name:"crop"}),o=()=>new fe.Rect({fill:"rgba(0, 0, 0, 0.5)",listening:!1}),s=o(),u=o(),_=o(),l=o();for(const v of[s,u,_,l])n.add(v);const g=new fe.Rect({name:"crop-rect",...t(fr(a.initial??{x:0,y:0,...e.oriented},e.oriented)),stroke:"rgba(255, 255, 255, 0.9)",strokeWidth:1,draggable:!0,strokeScaleEnabled:!1});n.add(g);const d=()=>({x:g.x(),y:g.y(),width:g.width()*g.scaleX(),height:g.height()*g.scaleY()}),F=Array.from({length:4},()=>new fe.Line({stroke:"rgba(255, 255, 255, 0.35)",strokeWidth:1,listening:!1}));for(const v of F)n.add(v);const f=v=>{const M=Math.min(Math.max(v.x,r.x),r.x+r.width-v.width),P=Math.min(Math.max(v.y,r.y),r.y+r.height-v.height);return{...v,x:M,y:P}},w=()=>{const v=i(d());return fr({x:Math.round(v.x),y:Math.round(v.y),width:Math.round(v.width),height:Math.round(v.height)},e.oriented)},m=()=>{const v=d(),{x:M,y:P,width:q,height:L}=r;s.setAttrs({x:M,y:P,width:q,height:v.y-P}),u.setAttrs({x:M,y:v.y,width:v.x-M,height:v.height}),_.setAttrs({x:v.x+v.width,y:v.y,width:M+q-v.x-v.width,height:v.height}),l.setAttrs({x:M,y:v.y+v.height,width:q,height:P+L-v.y-v.height}),F[0].points([v.x+v.width/3,v.y,v.x+v.width/3,v.y+v.height]),F[1].points([v.x+v.width*2/3,v.y,v.x+v.width*2/3,v.y+v.height]),F[2].points([v.x,v.y+v.height/3,v.x+v.width,v.y+v.height/3]),F[3].points([v.x,v.y+v.height*2/3,v.x+v.width,v.y+v.height*2/3]),a.onChange?.(w())};let c=!1;const C=new fe.Transformer({nodes:[g],rotateEnabled:!1,flipEnabled:!1,keepRatio:!1,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],anchorSize:14,anchorCornerRadius:7,anchorFill:"#fff",anchorStroke:"rgba(0, 0, 0, 0.5)",anchorStrokeWidth:1,borderStroke:"rgba(255, 255, 255, 0.7)",boundBoxFunc:(v,M)=>({...M,...h4(r,v,M,c)})});n.add(C),g.dragBoundFunc(v=>f({...v,width:g.width()*g.scaleX(),height:g.height()*g.scaleY()})),g.on("dragmove transform",m);const B=v=>{if(c=v!==null,C.keepRatio(c),v===null)return;const M=d(),P=Math.min(Math.max(M.width,M.height*v),r.width,r.height*v),q=P/v,L={x:M.x+M.width/2,y:M.y+M.height/2},K=f({x:L.x-P/2,y:L.y-q/2,width:P,height:q});g.setAttrs({...K,width:P,height:q,scaleX:1,scaleY:1}),C.forceUpdate(),m()};return m(),a.stage.add(n),{layer:n,setAspect:B,update(v){const M=i(d());e.oriented=v.oriented,e.scale=v.scale,e.offset=v.offset,r=t({x:0,y:0,...e.oriented}),g.setAttrs({...t(M),scaleX:1,scaleY:1}),C.forceUpdate(),m()},getRect:w,destroy(){C.destroy(),n.destroy()}}}function f4(a,e){if(a.width<=0||a.height<=0)throw new RangeError("Dimensions must be positive");const t=e*Math.PI/180,i=Math.abs(Math.cos(t)),r=Math.abs(Math.sin(t));return Math.max((a.width*i+a.height*r)/a.width,(a.width*r+a.height*i)/a.height)}function F4(a,e){if(a.width<=0||a.height<=0||e.width<=0||e.height<=0)throw new RangeError("Dimensions must be positive");const t=Math.min(e.width/a.width,e.height/a.height,1),i=a.width*t,r=a.height*t;return{scale:t,width:i,height:r,x:(e.width-i)/2,y:(e.height-r)/2}}function c4(a,e,t=Math.PI/4){const i=e.x-a.x,r=e.y-a.y;if(i===0&&r===0)return e;const n=Math.hypot(i,r),o=Math.round(Math.atan2(r,i)/t)*t,s=u=>Math.abs(u)<1e-9?0:u;return{x:a.x+n*s(Math.cos(o)),y:a.y+n*s(Math.sin(o))}}function m4(a,e){const t=Fi(a),i=is(t,e.rotation),r=yi(i),n={width:Math.max(1,Math.floor(i.width*r)),height:Math.max(1,Math.floor(i.height*r))},o=document.createElement("canvas");o.width=n.width,o.height=n.height;const s=o.getContext("2d");if(s===null)throw new Error("Canvas 2D context unavailable");const u=f4(n,e.fineRotation)*Math.max(1,e.zoom)*r;return s.translate(n.width/2,n.height/2),s.rotate(e.fineRotation*Math.PI/180),s.scale(u,u),s.rotate(e.rotation*Math.PI/180),s.scale(e.flipX?-1:1,e.flipY?-1:1),s.drawImage(a,-t.width/2,-t.height/2),o}function p4(a,e){const t=e.rotation()*Math.PI/180,i=Math.cos(t),r=Math.sin(t),n=[];for(let o=0;oa.getState().annotations.find(F=>F.id===d),n=d=>d===null?null:a.stage.find(".annotation").find(F=>F.id()===d)??null,o=()=>{const d=n(a.getSelectedId());a.onSelectionRect(d?d.getClientRect():null)},s=()=>{const d=a.getSelectedId(),F=n(d);if(F==null){t.nodes([]),a.onSelectionRect(null);return}const f=r(d);t.rotateEnabled(f!==void 0&&f.type!=="redact"),t.nodes([F]),a.onSelectionRect(F.getClientRect())},u=()=>{const d=a.getSelectedId(),F=(a.dragMode??"any")==="any";a.stage.find(".annotation").forEach(f=>f.draggable(F||f.id()===d)),s()};u();const _=d=>{const F=d.target,f=r(F.id());if(f===void 0)return;const w=a.getState();a.commit({...w,annotations:w.annotations.map(m=>m.id===f.id?b4(f,F):m)},x("Move or resize"))},l=d=>{d.target.hasName("annotation")?a.select(d.target.id()):(d.target===a.stage||d.target instanceof fe.Image)&&a.select(null),u()},g=d=>{const F=r(d.target.id());F?.type==="text"&&a.editText(F)};return a.stage.on("click.selection tap.selection",l),a.stage.on("dblclick.selection dbltap.selection",g),a.stage.on("dragend.selection transformend.selection",_),a.stage.on("dragmove.selection transform.selection",o),{sync:u,detach(){a.stage.off(".selection"),a.stage.find(".annotation").forEach(d=>d.draggable(!1)),a.onSelectionRect(null),t.destroy(),i.destroy()}}}const to={draw:x("Draw"),rectangle:x("Rectangle"),ellipse:x("Ellipse"),arrow:x("Arrow"),line:x("Line"),sticker:x("Sticker"),redact:x("Blur")},k4=4;function w4(a,e){return Math.hypot(e.x-a.x,e.y-a.y)>=k4}function D4(a,e){if(!["draw","rectangle","ellipse","arrow","line","text","sticker","redact"].includes(a))return()=>{};let t=null,i=null,r={x:0,y:0},n=null,o=null,s={x:0,y:0},u=!1,_=null;const l=()=>{const q=e.oriented();return q===null?null:Ze(e.getState(),{width:q.width,height:q.height})},g=q=>{const L=l();return L===null?q:{x:Math.min(L.x+L.width,Math.max(L.x,q.x)),y:Math.min(L.y+L.height,Math.max(L.y,q.y))}},d=q=>{const L=l();return L===null||q.x>=L.x&&q.x<=L.x+L.width&&q.y>=L.y&&q.y<=L.y+L.height},F=()=>{const q=l();return q===null||_===null?!0:_.x2>=q.x&&_.x1<=q.x+q.width&&_.y2>=q.y&&_.y1<=q.y+q.height},f=()=>{const q=e.stage.getPointerPosition();return q===null?null:e.toScene(q)},w=()=>{if(t===null){i?.destroy(),i=null;return}if(i!==null&&(t.type==="draw"||t.type==="arrow"||t.type==="line")){i.points(t.points);return}i?.destroy(),i=null;const q=e.oriented(),L=q===null?void 0:{width:q.width,height:q.height};t.type==="redact"&&L===void 0||(i=Is(t,L),e.contentGroup()?.add(i))},m=()=>{t=null,n=null,o=null,i?.destroy(),i=null},c=q=>{const L=e.options();switch(r=q,s=q,a){case"draw":t={id:Lt(),type:"draw",points:[q.x,q.y],color:L.color,strokeWidth:L.strokeWidth};break;case"arrow":case"line":t={id:Lt(),type:a,points:[q.x,q.y,q.x,q.y],color:L.color,strokeWidth:L.strokeWidth};break;case"rectangle":case"ellipse":t={id:Lt(),type:a,rect:{x:q.x,y:q.y,width:1,height:1},rotation:0,color:L.color,strokeWidth:L.strokeWidth};break;case"redact":t={id:Lt(),type:"redact",rect:{x:q.x,y:q.y,width:1,height:1},style:L.redactStyle,shape:L.redactShape};break;case"text":n=q;return;case"sticker":{const K=e.getState(),U={id:Lt(),type:"sticker",x:q.x,y:q.y,text:L.sticker,color:L.color,fontSize:L.fontSize*2,rotation:0};e.commit({...K,annotations:[...K.annotations,U]},to.sticker);return}}w()},C=q=>{const L=f();if(L===null||e.panning()||!d(L)&&(a==="sticker"||a==="text"))return;_={x1:L.x,y1:L.y,x2:L.x,y2:L.y},u=q!==void 0&&(q.evt.shiftKey||q.evt.ctrlKey);const K=q?.target;if(K?.getLayer()?.name()!=="selection"){if(K?.hasName("annotation")){if(K.id()===e.selectedId())return;const U=e.stage.getPointerPosition();if(o=U===null?null:{scene:L,stage:U},o!==null)return}c(g(L))}},B=()=>{if(t===null||t.type!=="arrow"&&t.type!=="line")return;const q=u?c4(r,s):s;t.points=[r.x,r.y,q.x,q.y]},v=q=>{if(o!==null){const U=e.stage.getPointerPosition();if(U===null||e.panning()||!w4(o.stage,U))return;const Z=o.scene;o=null,c(g(Z))}if(t===null)return;if(e.panning()){m();return}const L=f();if(L===null)return;_=_===null?{x1:L.x,y1:L.y,x2:L.x,y2:L.y}:{x1:Math.min(_.x1,L.x),y1:Math.min(_.y1,L.y),x2:Math.max(_.x2,L.x),y2:Math.max(_.y2,L.y)};const K=g(L);switch(s=K,q!==void 0&&(u=q.evt.shiftKey||q.evt.ctrlKey),t.type){case"draw":t.points.push(K.x,K.y);break;case"arrow":case"line":B();break;case"rectangle":case"ellipse":case"redact":t={...t,rect:{x:Math.min(r.x,K.x),y:Math.min(r.y,K.y),width:Math.abs(K.x-r.x)||1,height:Math.abs(K.y-r.y)||1}};break}w()},M=()=>{if(o!==null){o=null;return}if(n!==null){e.startTextEdit(n),n=null;return}if(t===null)return;if(!F()){m();return}const q=e.getState();e.commit({...q,annotations:[...q.annotations,t]},to[a]),m()},P=q=>{q.key!=="Shift"&&q.key!=="Control"||(u=q.type==="keydown",B(),w())};return e.stage.on("pointerdown.tool",C),e.stage.on("pointermove.tool",v),e.stage.on("pointerup.tool",M),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",m),window.addEventListener("keydown",P),window.addEventListener("keyup",P),()=>{e.stage.off(".tool"),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",m),window.removeEventListener("keydown",P),window.removeEventListener("keyup",P),i?.destroy()}}const v4={class:"image-editor__shell"},x4={class:"image-editor__frame"},C4={class:"image-editor__viewport"},E4={class:"image-editor__stage"},j4=["aria-label"],B4={key:1,class:"image-editor__error","data-test":"load-error"},q4={class:"hidden-visually",role:"status","aria-live":"polite"},S4=Ae({__name:"ImageEditor",props:{src:{},label:{},exportOptions:{},initialState:{},saving:{type:Boolean},canSaveAs:{type:Boolean}},emits:["save","saveAs","cancel","error","change"],setup(a,{expose:e,emit:t}){const i=a,r=t,n={canvas:x("Image editor"),failed:x("The image could not be loaded"),retry:x("Try again"),tooLarge:x("This image is larger than this browser can edit"),tooLargeConfirm:x("Continue with a smaller copy"),tooLargeReject:x("Close the editor")};function o(z,V){const te=ve=>Math.round(ve.width*ve.height/1e5)/10;return ho({name:n.tooLarge,text:x("{name} is {source} megapixels and this browser can only edit {limit}. Continuing means the saved image is {width} by {height} pixels instead, and the detail beyond that is lost.",{name:i.label??i.src.toString(),source:String(te(z)),limit:String(te({width:z.width*V,height:z.height*V})),width:String(Math.floor(z.width*V)),height:String(Math.floor(z.height*V))}),labelConfirm:n.tooLargeConfirm,labelReject:n.tooLargeReject,severity:"warning"})}let s=0;const u=_0(),_=Qa("root"),l=Qa("container"),g=ht(!1),d=ht(!1),F=he({width:0,height:0}),f=he(null),w=he(null),{backdrop:m}=Zp(w),{panArmed:c}=_4(l,u),C=Qp(u),B=he(null);let v=null,M=null,P=null,q=null,L=null,K=null,U=null,Z=null,oe=null;const re=Fe(()=>{if(u.panning.value)return"grabbing";if(c.value)return"grab";const z=u.activeTool.value;return["draw","rectangle","ellipse","arrow","line","text","sticker","redact"].includes(z)?"crosshair":"default"}),ee=Fe(()=>{const z=f.value;if(z===null||F.value.width===0||F.value.height===0)return null;const V=u.activeTool.value!=="crop",te=V?Ze(u.state.value,{width:z.width,height:z.height}):{x:0,y:0,width:z.width,height:z.height},ve=F.value;return{scale:F4({width:te.width,height:te.height},{width:Math.max(1,ve.width-hi*2),height:Math.max(1,ve.height-hi*2)}).scale,visible:te,container:ve,showCropped:V}}),J=Fe(()=>{const z=ee.value;if(z===null)return null;const V=z.scale*u.viewZoom.value,te=cr(u.viewPan.value,vs(z.visible,V,z.container));return{scale:V,offset:{x:(z.container.width-z.visible.width*V)/2+te.x,y:(z.container.height-z.visible.height*V)/2+te.y},showCropped:z.showCropped,fastFilters:u.interacting.value}}),{textEdit:ue,startTextEdit:De,confirmTextEdit:se}=u4({context:u,viewOptions:()=>J.value,oriented:()=>f.value}),le=he({width:0,height:0}),_e=Qa("overlay"),be=Fe(()=>{const z=ue.value;return z!==null?{x:z.screenX,y:z.screenY,...le.value}:B.value}),pe=Mr(u),{exporting:Le,exportImage:It,save:vt}=s4({oriented:()=>f.value,getState:()=>u.state.value,source:()=>i.src instanceof Blob?i.src:null,saveOptions:()=>i.exportOptions??{},onSaved:z=>r("save",z),onError:z=>r("error",z)});function xt(){return oe??{previousScale:1,previousOffset:{x:0,y:0},previousOrigin:{x:0,y:0}}}function dt(z,V,te){Z={kind:z,context:xt()},u.commit(V,te)}function Ct(){const z=f.value,V=J.value;if(v===null||z===null||V===null)return;v.size(F.value),M??=Gs(v),M.update(z,u.state.value,V);const te=V.showCropped?Ze(u.state.value,{width:z.width,height:z.height}):{x:0,y:0};if(Aa(z,V),Z!==null){const ve=V.showCropped?Ze(u.state.value,{width:z.width,height:z.height}):{x:0,y:0,width:z.width,height:z.height},Ce={x:ve.x+ve.width/2,y:ve.y+ve.height/2},h=[{node:M.contentGroup,pivot:Ce,unit:1/V.scale}];P!==null&&h.push({node:P.layer,pivot:{x:V.offset.x+(Ce.x-te.x)*V.scale,y:V.offset.y+(Ce.y-te.y)*V.scale},unit:1}),g4(Z.kind,{targets:h,scale:V.scale,offset:V.offset,origin:te},Z.context),Z=null}oe={previousScale:V.scale,previousOffset:V.offset,previousOrigin:{x:te.x,y:te.y}}}function Aa(z,V){if(v===null)return;const te=u.activeTool.value,ve=u.state.value.crop;if(K!==null&&K.tool===te&&K.oriented===z&&K.crop===ve){q?.sync(),P?.update({oriented:{width:z.width,height:z.height},scale:V.scale,offset:V.offset});return}L?.(),L=null,q?.detach(),q=null,P?.destroy(),P=null,K={tool:te,oriented:z,crop:ve},te!=="crop"&&te!=="adjust"&&(q=y4({stage:v,getState:()=>u.state.value,commit:u.commit,select:Ce=>{u.selectedId.value=Ce},getSelectedId:()=>u.selectedId.value,editText:Ce=>De({x:Ce.x,y:Ce.y},Ce),onSelectionRect:Ce=>{B.value=Ce},dragMode:te==="select"?"any":"selected"})),te==="crop"?(P=d4({stage:v,oriented:{width:z.width,height:z.height},scale:V.scale,offset:V.offset,initial:ve,onChange:Ce=>{u.cropChanged.value=!Rn(Ce,Ze(u.state.value,nt()))}}),ea()):te!=="adjust"&&te!=="select"&&(L=D4(te,{stage:v,contentGroup:()=>M?.contentGroup??null,oriented:()=>f.value,getState:()=>u.state.value,commit:u.commit,selectedId:()=>u.selectedId.value,toScene:Ce=>Cc(Ce,u.state.value,{width:z.width,height:z.height},J.value??V),panning:()=>u.panning.value,options:()=>({color:u.drawColor.value,strokeWidth:u.strokeWidth.value,fontSize:u.fontSize.value,sticker:u.sticker.value,redactStyle:u.redactStyle.value,redactShape:u.redactShape.value}),startTextEdit:Ce=>De(Ce)}))}function ea(){if(P===null)return;const z=u.cropAspect.value,V=f.value;z==="original"&&V!==null?P.setAspect(V.width/V.height):P.setAspect(typeof z=="number"?z:null)}function Ma(){if(w.value===null)return;const z=m4(w.value,u.state.value);f.value=z,uc(z)}function ki(z,V){if(z.crop===null)return z;const te=is(Fi(V),z.rotation);return{...z,crop:fr(z.crop,te)}}async function Ot(){const z=++s;g.value=!1,d.value=!1;try{const V=await Up(i.src);if(z!==s)return;const te=Fi(V),ve=yi(te);if(ve<1&&!await o(te,ve)){r("cancel");return}if(z!==s)return;w.value=V,u.reset(i.initialState===void 0?void 0:ki(i.initialState,V));const Ce=Math.min(te.width,te.height);u.fontSize.value=Math.min(128,Math.max(12,Math.round(Ce/15))),Z={kind:"load",context:xt()},Ma(),g.value=!0}catch(V){if(z!==s)return;d.value=!0,r("error",V instanceof Error?V:new Error(String(V)))}}function nt(){const z=f.value;return{width:z.width,height:z.height}}function ta(){dt("rotate-cw",On(u.state.value,nt()),x("Rotate right"))}function Pa(){let z=u.state.value,V=nt();for(let te=0;te<3;te++)z=On(z,V),V={width:V.height,height:V.width};dt("rotate-ccw",z,x("Rotate left"))}function La(){dt("flip-h",Md(u.state.value,nt()),x("Flip horizontal"))}function Ta(){dt("flip-v",Ld(u.state.value,nt()),x("Flip vertical"))}function wi(){if(P===null)return;const z=P.getRect();Rn(z,Ze(u.state.value,nt()))||(Z={kind:"crop",context:xt()},u.commit({...u.state.value,crop:z},x("Crop")))}function za(){const z=u.selectedId.value,V=u.state.value,te=V.annotations.find(Ce=>Ce.id===z);if(te===void 0)return;const ve=Td(te);u.commit({...V,annotations:[...V.annotations,ve]},x("Duplicate")),u.selectedId.value=ve.id,Ct()}function aa(){u.commit(li(),x("Revert all changes"))}function Di(){u.commit({...u.state.value,crop:null},x("Reset crop"))}function ia(){const z=u.selectedId.value;if(z===null)return;const V=u.state.value;u.selectedId.value=null,u.commit({...V,annotations:V.annotations.filter(te=>te.id!==z)},x("Delete"))}return t4({context:u,isTextEditing:()=>ue.value!==null,onDelete:ia,onEscape:()=>{u.selectedId.value!==null?(u.selectedId.value=null,Ct()):u.activeMode.value==="crop"?u.setMode("select"):u.activeMode.value==="annotate"&&u.activeTool.value!=="select"&&(u.activeTool.value="select")}}),We(ee,z=>{u.viewFit.value=z},{immediate:!0}),EF({rotateCW:ta,rotateCCW:Pa,flipHorizontal:La,flipVertical:Ta,applyCrop:wi,resetCrop:Di,revert:aa}),We(()=>i.src,Ot),We([()=>u.state.value.rotation,()=>u.state.value.flipX,()=>u.state.value.flipY,()=>u.state.value.fineRotation,()=>u.state.value.zoom],Ma),We([u.state,u.activeTool,u.activeMode,u.viewZoom,u.viewPan,u.interacting,f,F],Ct),We(u.cropAspect,ea),We(u.selectedId,z=>{const V=u.state.value.annotations.find(te=>te.id===z);V!==void 0&&"color"in V&&V.type!=="sticker"&&(u.drawColor.value=V.color)}),We([u.state,u.interacting],()=>{u.interacting.value||r("change",structuredClone(u.state.value))}),Sa(()=>{v=new fe.Stage({container:l.value,width:1,height:1}),U=new ResizeObserver(()=>{const{clientWidth:z,clientHeight:V}=l.value;F.value={width:z,height:V}}),U.observe(l.value),Ot()}),ci(()=>{U?.disconnect(),L?.(),q?.detach(),P?.destroy(),M?.destroy(),M=null,v?.destroy(),v=null}),e({exportImage:It,reset:z=>u.reset(z)}),(z,V)=>(p(),k("div",{ref_key:"root",ref:_,class:"image-editor",style:Se({"--editor-backdrop":j(m)?`url(${j(m)})`:"none"})},[S("div",v4,[S("div",x4,[S("div",C4,[S("div",E4,[S("div",{ref_key:"container",ref:l,class:"image-editor__canvas",style:Se({cursor:re.value}),role:"img","aria-label":a.label??n.canvas},null,12,j4),j(ue)!==null?(p(),ae(Vp,{key:0,ref_key:"overlay",ref:_e,x:j(ue).screenX,y:j(ue).screenY,"font-size":j(ue).screenFontSize,color:j(u).drawColor.value,initial:j(ue).value,outline:j(pe).outline.value,background:j(pe).background.value,font:j(pe).font.value,align:j(pe).align.value,bold:j(pe).bold.value,italic:j(pe).italic.value,underline:j(pe).underline.value,strikethrough:j(pe).strikethrough.value,onResize:V[0]||(V[0]=te=>le.value=te),onConfirm:j(se),onCancel:V[1]||(V[1]=te=>ue.value=null)},null,8,["x","y","font-size","color","initial","outline","background","font","align","bold","italic","underline","strikethrough","onConfirm"])):T("",!0),be.value!==null?(p(),ae(Op,{key:1,box:be.value,typing:j(ue)!==null,onRefocus:V[2]||(V[2]=te=>_e.value?.focus()),onDuplicate:za,onDelete:ia},null,8,["box","typing"])):T("",!0)]),!g.value&&!d.value?(p(),ae(j(oo),{key:0,class:"image-editor__loading",size:44})):T("",!0),d.value?(p(),k("div",B4,[S("p",null,G(n.failed),1),I(j(je),{variant:"secondary","data-test":"retry",onClick:V[3]||(V[3]=te=>Ot())},{default:Y(()=>[Oe(G(n.retry),1)]),_:1})])):T("",!0)]),I(kp,{class:"image-editor__topbar",loaded:g.value,popoverContainer:_.value,saving:j(Le)||a.saving===!0,canSaveAs:a.canSaveAs===!0,onSave:V[4]||(V[4]=te=>j(vt)()),onSaveAs:V[5]||(V[5]=te=>j(vt)(ve=>r("saveAs",ve))),onCancel:V[6]||(V[6]=te=>r("cancel"))},null,8,["loaded","popoverContainer","saving","canSaveAs"]),I(Oc,{class:He(j(u).activeMode.value==="filter"?"image-editor__strip":"image-editor__controls"),loaded:g.value,oriented:f.value},null,8,["class","loaded","oriented"]),I(Em,{class:"image-editor__rail",loaded:g.value},null,8,["loaded"]),S("span",q4,G(j(C)),1)])])],4))}}),A4=X(S4,[["__scopeId","data-v-c8e207c9"]]),M4=Ae({__name:"ImageEditor",props:{file:{}},emits:["close","saved"],setup(a,{emit:e}){const t=a,i=e,r=ht(!1),n=Fe(()=>t.file.mime==="image/jpeg"||t.file.mime==="image/webp"?{format:t.file.mime,quality:.9}:{format:"image/png"});async function o(_){r.value=!0;try{const l=t.file.attributes.etag,g=await bu.put(t.file.encodedSource,_.blob,{headers:l?{"If-Match":`"${String(l).replace(/"|"/g,"")}"`}:void 0}),d=g.headers?.["oc-etag"]??g.headers?.etag;d&&(t.file.attributes.etag=String(d).replace(/"/g,"")),i("saved",URL.createObjectURL(_.blob)),yu("files:node:updated",t.file),wu(Ha("Image saved")),i("close")}catch(l){if(Ir.error("Failed to save the edited image",{error:l}),l.response?.status===412){vi(Ha("The file was changed elsewhere while you were editing it. Reload the page to edit the new version."));return}vi(Ha("Could not save the image"))}finally{r.value=!1}}function s(){i("close")}function u(_){Ir.error("Image editor error",{error:_}),vi(Ha("The image could not be edited."))}return(_,l)=>(p(),ae(j(A4),{src:a.file.encodedSource,label:a.file.displayname,exportOptions:n.value,saving:r.value,class:"viewer__image-editor",onSave:o,onCancel:s,onError:u},null,8,["src","label","exportOptions","saving"]))}}),$4=Ru(M4,[["__scopeId","data-v-7d237de6"]]);export{$4 as default};
+//# sourceMappingURL=ImageEditor-CC5NAjCj.chunk.mjs.map
diff --git a/js/ImageEditor-CC5NAjCj.chunk.mjs.license b/js/ImageEditor-CC5NAjCj.chunk.mjs.license
new file mode 100644
index 00000000..b608c8aa
--- /dev/null
+++ b/js/ImageEditor-CC5NAjCj.chunk.mjs.license
@@ -0,0 +1,35 @@
+SPDX-License-Identifier: AGPL-3.0-or-later
+SPDX-License-Identifier: BSD-3-Clause
+SPDX-License-Identifier: MIT
+SPDX-FileCopyrightText: @nextcloud/dialogs developers
+SPDX-FileCopyrightText: Anton Lavrenov
+SPDX-FileCopyrightText: Borys Serebrov
+SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
+SPDX-FileCopyrightText: Scott Cooper
+SPDX-FileCopyrightText: chenkai
+
+This file is generated from multiple sources. Included packages:
+- @ckpack/vue-color
+ - version: 1.6.0
+ - license: MIT
+- @ctrl/tinycolor
+ - version: 3.6.1
+ - license: MIT
+- @nextcloud/dialogs
+ - version: 7.6.0
+ - license: AGPL-3.0-or-later
+- @nextcloud/image-editor
+ - version: 1.0.0-beta.7
+ - license: AGPL-3.0-or-later
+- @nextcloud/viewer
+ - version: 2.0.0-beta.19
+ - license: AGPL-3.0-or-later
+- @nextcloud/vue
+ - version: 9.14.0
+ - license: AGPL-3.0-or-later
+- emoji-mart-vue-fast
+ - version: 15.0.5
+ - license: BSD-3-Clause
+- konva
+ - version: 10.3.3
+ - license: MIT
diff --git a/js/ImageEditor-CC5NAjCj.chunk.mjs.map b/js/ImageEditor-CC5NAjCj.chunk.mjs.map
new file mode 100644
index 00000000..3273bd14
--- /dev/null
+++ b/js/ImageEditor-CC5NAjCj.chunk.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"ImageEditor-CC5NAjCj.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/functions/dialog/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcNoteCard.mjs","../node_modules/@nextcloud/dialogs/dist/index.mjs","../node_modules/konva/lib/Global.js","../node_modules/konva/lib/Util.js","../node_modules/konva/lib/Context.js","../node_modules/konva/lib/Canvas.js","../node_modules/konva/lib/DragAndDrop.js","../node_modules/konva/lib/Validators.js","../node_modules/konva/lib/Factory.js","../node_modules/konva/lib/Node.js","../node_modules/konva/lib/Container.js","../node_modules/konva/lib/PointerEvents.js","../node_modules/konva/lib/Stage.js","../node_modules/konva/lib/Shape.js","../node_modules/konva/lib/Layer.js","../node_modules/konva/lib/FastLayer.js","../node_modules/konva/lib/Group.js","../node_modules/konva/lib/Animation.js","../node_modules/konva/lib/Tween.js","../node_modules/konva/lib/_CoreInternals.js","../node_modules/konva/lib/shapes/Arc.js","../node_modules/konva/lib/BezierFunctions.js","../node_modules/konva/lib/shapes/Line.js","../node_modules/konva/lib/shapes/Path.js","../node_modules/konva/lib/shapes/Arrow.js","../node_modules/konva/lib/shapes/Circle.js","../node_modules/konva/lib/shapes/Ellipse.js","../node_modules/konva/lib/shapes/Image.js","../node_modules/konva/lib/shapes/Label.js","../node_modules/konva/lib/shapes/Rect.js","../node_modules/konva/lib/shapes/RegularPolygon.js","../node_modules/konva/lib/shapes/Ring.js","../node_modules/konva/lib/shapes/Sprite.js","../node_modules/konva/lib/shapes/Star.js","../node_modules/konva/lib/shapes/Text.js","../node_modules/konva/lib/shapes/TextPath.js","../node_modules/konva/lib/shapes/Transformer.js","../node_modules/konva/lib/shapes/Wedge.js","../node_modules/konva/lib/filters/Blur.js","../node_modules/konva/lib/filters/Brighten.js","../node_modules/konva/lib/filters/Brightness.js","../node_modules/konva/lib/filters/Contrast.js","../node_modules/konva/lib/filters/Emboss.js","../node_modules/konva/lib/filters/Enhance.js","../node_modules/konva/lib/filters/Grayscale.js","../node_modules/konva/lib/filters/HSL.js","../node_modules/konva/lib/filters/HSV.js","../node_modules/konva/lib/filters/Invert.js","../node_modules/konva/lib/filters/Kaleidoscope.js","../node_modules/konva/lib/filters/Mask.js","../node_modules/konva/lib/filters/Noise.js","../node_modules/konva/lib/filters/Pixelate.js","../node_modules/konva/lib/filters/Posterize.js","../node_modules/konva/lib/filters/RGB.js","../node_modules/konva/lib/filters/RGBA.js","../node_modules/konva/lib/filters/Sepia.js","../node_modules/konva/lib/filters/Solarize.js","../node_modules/konva/lib/filters/Threshold.js","../node_modules/konva/lib/_FullInternals.js","../node_modules/emoji-mart-vue-fast/dist/emoji-mart.js","../node_modules/@nextcloud/vue/dist/chunks/emoji.mjs","../node_modules/emoji-mart-vue-fast/src/utils/store.js","../node_modules/emoji-mart-vue-fast/src/utils/data.js","../node_modules/emoji-mart-vue-fast/src/utils/frequently.js","../node_modules/emoji-mart-vue-fast/src/svgs/index.js","../node_modules/emoji-mart-vue-fast/src/components/anchors.vue","../node_modules/emoji-mart-vue-fast/src/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart-vue-fast/src/utils/index.js","../node_modules/emoji-mart-vue-fast/src/utils/emoji-data.js","../node_modules/emoji-mart-vue-fast/src/utils/shared-props.js","../node_modules/emoji-mart-vue-fast/src/components/Emoji.vue","../node_modules/emoji-mart-vue-fast/src/components/category.vue","../node_modules/emoji-mart-vue-fast/src/components/skins.vue","../node_modules/emoji-mart-vue-fast/src/components/preview.vue","../node_modules/emoji-mart-vue-fast/src/components/search.vue","../node_modules/emoji-mart-vue-fast/src/vendor/raf-polyfill.js","../node_modules/emoji-mart-vue-fast/src/utils/picker.js","../node_modules/emoji-mart-vue-fast/src/components/Picker.vue","../node_modules/@ckpack/vue-color/libs/defaultConfig.js","../node_modules/@ckpack/vue-color/libs/style-inject.es-746bb8ed.js","../node_modules/@ckpack/vue-color/libs/utils/compoent.js","../node_modules/@ckpack/vue-color/libs/components/checkboard/index.js","../node_modules/@ckpack/vue-color/libs/components/alpha/index.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ctrl/tinycolor/dist/module/index.js","../node_modules/@ckpack/vue-color/libs/mixin/color.js","../node_modules/@ckpack/vue-color/libs/components/editable-input/index.js","../node_modules/@ckpack/vue-color/libs/utils/utils.js","../node_modules/@ckpack/vue-color/libs/components/saturation/index.js","../node_modules/@ckpack/vue-color/libs/components/hue/index.js","../node_modules/@ckpack/vue-color/libs/components/chrome/index.js","../node_modules/@nextcloud/vue/dist/chunks/NcColorPicker.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator.mjs","../node_modules/@nextcloud/image-editor/dist/index.mjs","../node_modules/@nextcloud/viewer/dist/chunks/ImageEditor.mjs"],"sourcesContent":["import { createApp } from \"vue\";\nfunction spawnDialog(dialog, props = {}, options = {}) {\n let { container } = options;\n if (\"container\" in props && typeof props.container === \"string\") {\n container ??= props.container;\n }\n const resolvedContainer = typeof container === \"string\" && document.querySelector(container) || document.body;\n const element = resolvedContainer.appendChild(document.createElement(\"div\"));\n return new Promise((resolve, reject) => {\n const app = createApp(dialog, {\n ...props,\n // If dialog has no `container` prop passing a falsy value does nothing\n // Otherwise it is expected that `null` disables teleport and mounts dialog in place like NcDialog/NcModal\n container: null,\n onClose(...rest) {\n const payload = rest.length > 1 ? rest : rest[0];\n app.unmount();\n element.remove();\n resolve(payload);\n },\n \"onVue:unmounted\": () => {\n app.unmount();\n element.remove();\n reject(new Error(\"Dialog was unmounted without close event\"));\n }\n });\n app.mount(element);\n });\n}\nexport {\n spawnDialog\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcNoteCard.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createVNode, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { k as mdiAlert, l as mdiInformation, n as mdiCheckboxMarkedCircle, o as mdiAlertDecagram } from \"./mdi.mjs\";\nimport { a as isLegacy } from \"./legacy.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"notecard__heading\"\n};\nconst _hoisted_3 = { class: \"notecard__text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcNoteCard\",\n props: {\n heading: { default: void 0 },\n showAlert: { type: Boolean },\n text: { default: void 0 },\n type: { default: \"warning\" }\n },\n setup(__props) {\n const props = __props;\n const shouldShowAlert = computed(() => props.showAlert || props.type === \"error\");\n const iconPath = computed(() => {\n switch (props.type) {\n case \"error\":\n return mdiAlertDecagram;\n case \"success\":\n return mdiCheckboxMarkedCircle;\n case \"info\":\n return mdiInformation;\n case \"warning\":\n default:\n return mdiAlert;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"notecard\", {\n [`notecard--${__props.type}`]: __props.type,\n \"notecard--legacy\": unref(isLegacy)\n }]),\n role: shouldShowAlert.value ? \"alert\" : \"note\"\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createVNode(unref(NcIconSvgWrapper), {\n path: iconPath.value,\n class: normalizeClass([\"notecard__icon\", { \"notecard__icon--heading\": __props.heading }]),\n inline: \"\"\n }, null, 8, [\"path\", \"class\"])\n ], true),\n createElementVNode(\"div\", null, [\n __props.heading ? (openBlock(), createElementBlock(\"p\", _hoisted_2, toDisplayString(__props.heading), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createElementVNode(\"p\", _hoisted_3, toDisplayString(__props.text), 1)\n ], true)\n ])\n ], 10, _hoisted_1);\n };\n }\n});\nconst NcNoteCard = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-6be9fa31\"]]);\nexport {\n NcNoteCard as N\n};\n//# sourceMappingURL=NcNoteCard.mjs.map\n","import { _ as t, a as TOAST_PERMANENT_TIMEOUT, c as ToastType, d as showLoading, f as showMessage, g as n, h as showWarning, i as TOAST_DEFAULT_TIMEOUT, l as showError, m as showUndo, n as TOAST_ARIA_LIVE_OFF, o as TOAST_UNDO_TIMEOUT, p as showSuccess, r as TOAST_ARIA_LIVE_POLITE, s as ToastAriaLive, t as TOAST_ARIA_LIVE_ASSERTIVE, u as showInfo } from \"./chunks/toast-YQqYkwLQ.js\";\nimport { t as logger } from \"./chunks/logger-ycMdocT5.js\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineAsyncComponent, defineComponent, onMounted, onUnmounted, openBlock, toDisplayString, unref, withCtx } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n//#region lib/conflict-picker.ts\n/*!\n* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n* SPDX-License-Identifier: AGPL-3.0-or-later\n*/\n/**\n* Open the conflict resolver for uploading nodes.\n* Given the current content of the directory and the conflicting new nodes,\n* this will ask the user for resolving the conflicts and return the conflict resolution.\n*\n* @param dirname - The directory name with conflicts (its name is shown in the description)\n* @param conflicts - The incoming nodes\n* @param content - The current content of the directory (existing nodes)\n* @param options Optional settings for the conflict picker\n*\n* @return The conflict resolution or null if the user aborted.\n*/\nasync function openConflictPicker(dirname, conflicts, content, options) {\n\tconst ConflictPicker = defineAsyncComponent(() => import(\"./chunks/ConflictPicker-BMbIxNIC.js\"));\n\tconst incoming = [];\n\tconst existing = [];\n\tfor (const node of content) if (isConflictingNode(node)) {\n\t\texisting.push(node);\n\t\tincoming.push(conflicts[indexOf(node)]);\n\t}\n\tif (conflicts.length === 0 || content.length === 0) throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n\tif (conflicts.length !== content.length) throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n\treturn await spawnDialog(ConflictPicker, {\n\t\tdirname,\n\t\texisting,\n\t\tincoming,\n\t\tisOverwriting: options?.overwriting === true,\n\t\trecursiveUpload: options?.recursive === true\n\t}, { container: options?.container });\n\t/**\n\t* Check whether a given node from the `content` is part of the `conflicts`.\n\t*\n\t* @param node - The node to check\n\t*/\n\tfunction isConflictingNode(node) {\n\t\treturn conflicts.some((entry) => nodeIsConflict(node, entry));\n\t}\n\t/**\n\t* Get the index of this node in the conflicts\n\t*\n\t* @param node - The node to check\n\t*/\n\tfunction indexOf(node) {\n\t\treturn conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n\t}\n\t/**\n\t* Check if the given node is the reason for the conflict\n\t*\n\t* @param node - The node to check\n\t* @param conflict - The conflict to check\n\t*/\n\tfunction nodeIsConflict(node, conflict) {\n\t\tif (\"basename\" in conflict) return conflict.basename === node.basename;\n\t\treturn conflict.name === node.basename;\n\t}\n}\n//#endregion\n//#region node_modules/@mdi/svg/svg/folder-move.svg?raw\nvar folder_move_default = \"\";\n//#endregion\n//#region node_modules/@mdi/svg/svg/folder-multiple.svg?raw\nvar folder_multiple_default = \"\";\n//#endregion\n//#region lib/filepicker-builder.ts\n/**\n* @deprecated\n*/\nvar FilePickerType = /* @__PURE__ */ function(FilePickerType) {\n\tFilePickerType[FilePickerType[\"Choose\"] = 1] = \"Choose\";\n\tFilePickerType[FilePickerType[\"Move\"] = 2] = \"Move\";\n\tFilePickerType[FilePickerType[\"Copy\"] = 3] = \"Copy\";\n\tFilePickerType[FilePickerType[\"CopyMove\"] = 4] = \"CopyMove\";\n\tFilePickerType[FilePickerType[\"Custom\"] = 5] = \"Custom\";\n\treturn FilePickerType;\n}({});\n/**\n* Error that is thrown in the rejected promise when the FilePicker was closed\n*/\nvar FilePickerClosed = class extends Error {};\nvar FilePicker = class {\n\ttitle;\n\tmultiSelect;\n\tmimeTypeFilter;\n\tdirectoriesAllowed;\n\tnoMenu;\n\tbuttons;\n\tpath;\n\tfilter;\n\tcanPick;\n\tcontainer;\n\tdisabledNavigation;\n\tconstructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n\t\tthis.title = title;\n\t\tthis.multiSelect = multiSelect;\n\t\tthis.mimeTypeFilter = mimeTypeFilter;\n\t\tthis.directoriesAllowed = directoriesAllowed;\n\t\tthis.noMenu = noMenu;\n\t\tthis.path = path;\n\t\tthis.filter = filter;\n\t\tthis.canPick = canPick;\n\t\tthis.buttons = buttons;\n\t\tthis.container = container;\n\t\tthis.disabledNavigation = disabledNavigation;\n\t}\n\t/**\n\t* Pick files using the FilePicker.\n\t*\n\t* @return Promise with array of picked files or rejected promise on close without picking\n\t*/\n\tasync pickNodes() {\n\t\tconst { default: FilePickerVue } = await import(\"./chunks/FilePicker-qWi4RBGN.js\");\n\t\tconst nodes = await spawnDialog(FilePickerVue, {\n\t\t\tallowPickDirectory: this.directoriesAllowed,\n\t\t\tnoMenu: this.noMenu,\n\t\t\tbuttons: this.buttons,\n\t\t\tname: this.title,\n\t\t\tpath: this.path,\n\t\t\tmimetypeFilter: this.mimeTypeFilter,\n\t\t\tmultiselect: this.multiSelect,\n\t\t\tfilterFn: this.filter,\n\t\t\tcanPickFn: this.canPick,\n\t\t\tdisabledNavigation: this.disabledNavigation\n\t\t}, { container: this.container });\n\t\tif (!Array.isArray(nodes) || nodes.length === 0) throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n\t\treturn nodes;\n\t}\n\t/**\n\t* Pick files using the FilePicker\n\t*\n\t* @return Promise with array of paths of picked files or rejected promise on close without picking\n\t*/\n\tasync pick() {\n\t\tconst nodes = await this.pickNodes();\n\t\tif (this.multiSelect) return nodes.map((node) => node.path);\n\t\treturn nodes[0]?.path ?? \"/\";\n\t}\n};\nvar FilePickerBuilder = class {\n\ttitle;\n\tmultiSelect = false;\n\tmimeTypeFilter = [];\n\tdirectoriesAllowed = false;\n\tnoMenu = false;\n\tpath;\n\tfilter;\n\tcanPick;\n\tbuttons = [];\n\tcontainer;\n\tdisabledNavigation = false;\n\t/**\n\t* Construct a new FilePicker\n\t*\n\t* @param title Title of the FilePicker\n\t*/\n\tconstructor(title) {\n\t\tthis.title = title;\n\t}\n\t/**\n\t* Set the container where the FilePicker will be mounted\n\t* By default 'body' is used\n\t*\n\t* @param container The dialog container\n\t*/\n\tsetContainer(container) {\n\t\tthis.container = container;\n\t\treturn this;\n\t}\n\t/**\n\t* Enable or disable picking multiple files\n\t*\n\t* @param ms True to enable picking multiple files, false otherwise\n\t*/\n\tsetMultiSelect(ms) {\n\t\tthis.multiSelect = ms;\n\t\treturn this;\n\t}\n\t/**\n\t* Add allowed MIME type\n\t*\n\t* @param filter MIME type to allow\n\t*/\n\taddMimeTypeFilter(filter) {\n\t\tthis.mimeTypeFilter.push(filter);\n\t\treturn this;\n\t}\n\t/**\n\t* Set allowed MIME types\n\t*\n\t* @param filter Array of allowed MIME types\n\t*/\n\tsetMimeTypeFilter(filter) {\n\t\tthis.mimeTypeFilter = filter;\n\t\treturn this;\n\t}\n\t/**\n\t* Add a button to the FilePicker\n\t* Note: This overrides any previous `setButtonFactory` call\n\t*\n\t* @param button The button\n\t*/\n\taddButton(button) {\n\t\tif (typeof this.buttons === \"function\") {\n\t\t\tlogger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n\t\t\tthis.buttons = [];\n\t\t}\n\t\tthis.buttons.push(button);\n\t\treturn this;\n\t}\n\t/**\n\t* Set the button factory which is used to generate buttons from current view, path and selected nodes\n\t* Note: This overrides any previous `addButton` call\n\t*\n\t* @param factory The button factory\n\t*/\n\tsetButtonFactory(factory) {\n\t\tthis.buttons = factory;\n\t\treturn this;\n\t}\n\t/**\n\t* Set FilePicker type based on legacy file picker types\n\t*\n\t* @param type The legacy filepicker type to emulate\n\t* @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n\t*/\n\tsetType(type) {\n\t\tthis.buttons = (nodes, path) => {\n\t\t\tconst buttons = [];\n\t\t\tconst target = nodes[0]?.displayname || basename(path);\n\t\t\tif (type === 1) {\n\t\t\t\tlet label = t(\"Choose\");\n\t\t\t\tif (nodes.length === 1) label = t(\"Choose {file}\", { file: target });\n\t\t\t\telse if (this.multiSelect) label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n\t\t\t\tbuttons.push({\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t\tlabel,\n\t\t\t\t\tvariant: \"primary\"\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (type === 4 || type === 3) buttons.push({\n\t\t\t\tcallback: () => {},\n\t\t\t\tlabel: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n\t\t\t\ticon: folder_multiple_default,\n\t\t\t\tvariant: type === 3 ? \"primary\" : \"secondary\"\n\t\t\t});\n\t\t\tif (type === 4 || type === 2) buttons.push({\n\t\t\t\tcallback: () => {},\n\t\t\t\tlabel: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n\t\t\t\ticon: folder_move_default,\n\t\t\t\tvariant: \"primary\"\n\t\t\t});\n\t\t\treturn buttons;\n\t\t};\n\t\treturn this;\n\t}\n\t/**\n\t* Allow to pick directories besides files\n\t*\n\t* @param allow True to allow picking directories\n\t*/\n\tallowDirectories(allow = true) {\n\t\tthis.directoriesAllowed = allow;\n\t\treturn this;\n\t}\n\t/**\n\t* Allow to create New folders\n\t*\n\t* @param noMenu True to hide menu\n\t*/\n\tsetNoMenu(noMenu = true) {\n\t\tthis.noMenu = noMenu;\n\t\treturn this;\n\t}\n\t/**\n\t* Set starting path of the FilePicker\n\t*\n\t* @param path Path to start from picking\n\t*/\n\tstartAt(path) {\n\t\tthis.path = path;\n\t\treturn this;\n\t}\n\t/**\n\t* Add filter function to filter file list of FilePicker\n\t*\n\t* @param filter Filter function to apply\n\t*/\n\tsetFilter(filter) {\n\t\tthis.filter = filter;\n\t\treturn this;\n\t}\n\t/**\n\t* Add function to allow or not picking a node\n\t*\n\t* @param canPick Function to decide if a node can be picked\n\t*/\n\tsetCanPick(canPick) {\n\t\tthis.canPick = canPick;\n\t\treturn this;\n\t}\n\t/**\n\t* Disable navigation (view selection)\n\t*/\n\tdisableNavigation() {\n\t\tthis.disabledNavigation = true;\n\t\treturn this;\n\t}\n\t/**\n\t* Construct the configured FilePicker\n\t*/\n\tbuild() {\n\t\treturn new FilePicker(this.title, this.multiSelect, this.mimeTypeFilter, this.directoriesAllowed, this.noMenu, this.buttons, this.path, this.filter, this.canPick, this.container, this.disabledNavigation);\n\t}\n};\n/**\n*\n* @param title Title of the file picker\n*/\nfunction getFilePickerBuilder(title) {\n\treturn new FilePickerBuilder(title);\n}\n//#endregion\n//#region lib/public-auth.ts\n/**\n* Show the public auth prompt dialog\n* This is used to ask the current user their nickname\n* as well as show some additional contextual information\n*\n* @param props - The props to pass to the dialog\n* @return The selected name or undefined if dialog was closed\n*/\nasync function showGuestUserPrompt(props) {\n\treturn await spawnDialog(defineAsyncComponent(() => import(\"./chunks/PublicAuthPrompt-DsVQ7tQu.js\")), props);\n}\n//#endregion\n//#region lib/components/GenericDialog.vue?vue&type=script&setup=true&lang.ts\nvar _hoisted_1 = [\"textContent\"];\nvar _hoisted_2 = [\"innerHTML\"];\n//#endregion\n//#region lib/components/GenericDialog.vue\nvar GenericDialog_default = /* @__PURE__ */ defineComponent({\n\t__name: \"GenericDialog\",\n\tprops: {\n\t\tname: {},\n\t\ttext: {},\n\t\thtml: {},\n\t\tbuttons: {},\n\t\tseverity: {}\n\t},\n\temits: [\"close\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emit = __emit;\n\t\tconst dialogButtons = computed(() => props.buttons?.map((button) => ({\n\t\t\t...button,\n\t\t\tcallback() {\n\t\t\t\tbutton.callback();\n\t\t\t\temit(\"close\", true);\n\t\t\t}\n\t\t})));\n\t\t/**\n\t\t* Handler used to ensure the message is also shown when the page is unloaded\n\t\t* This is for backwards compatibility with OC.dialogs\n\t\t*/\n\t\tconst handleUnload = () => `${props.name}: ${props.text}`;\n\t\tonMounted(() => window.addEventListener(\"unload\", handleUnload));\n\t\tonUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(NcDialog), {\n\t\t\t\tdialogClasses: \"nc-generic-dialog\",\n\t\t\t\tbuttons: dialogButtons.value,\n\t\t\t\tname: __props.name,\n\t\t\t\tmessage: __props.text,\n\t\t\t\t\"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [__props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n\t\t\t\t\tkey: 0,\n\t\t\t\t\ttype: __props.severity\n\t\t\t\t}, {\n\t\t\t\t\tdefault: withCtx(() => [createElementVNode(\"p\", { textContent: toDisplayString(__props.text) }, null, 8, _hoisted_1)]),\n\t\t\t\t\t_: 1\n\t\t\t\t}, 8, [\"type\"])) : createCommentVNode(\"\", true), __props.html ? (openBlock(), createElementBlock(\"div\", {\n\t\t\t\t\tkey: 1,\n\t\t\t\t\tinnerHTML: __props.html\n\t\t\t\t}, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)]),\n\t\t\t\t_: 1\n\t\t\t}, 8, [\n\t\t\t\t\"buttons\",\n\t\t\t\t\"name\",\n\t\t\t\t\"message\"\n\t\t\t]);\n\t\t};\n\t}\n});\n//#endregion\n//#region lib/dialogs.ts\n/**\n* This class provides generic Nextcloud themed dialogs\n*/\nvar Dialog = class {\n\t#name;\n\t#text;\n\t#buttons;\n\t#severity;\n\tconstructor(name, text, buttons = [], severity) {\n\t\tthis.#name = name;\n\t\tthis.#text = text;\n\t\tthis.#buttons = buttons;\n\t\tthis.#severity = severity;\n\t}\n\t/**\n\t* Spawn and show the dialog - if already open the previous instance will be destroyed\n\t*\n\t* @return Promise that resolves when the dialog is answered successfully and rejects on close\n\t*/\n\tasync show() {\n\t\tif (!await spawnDialog(GenericDialog_default, {\n\t\t\tbuttons: this.#buttons,\n\t\t\tname: this.#name,\n\t\t\ttext: this.#text,\n\t\t\tseverity: this.#severity\n\t\t})) throw new Error(\"Dialog closed\");\n\t}\n};\n/**\n* The DialogBuilder provides an easy to use interface for creating simple dialogs in consistent Nextcloud design\n*\n* @example\n* ```ts\n* // It is recommended to use `getDialogBuilder` instead\n* const dialogBuilder = new DialogBuilder('The dialog title')\n* const dialog = dialogBuilder\n* .setText('The dialog message')\n* .setSeverity(DialogSeverity.Warning)\n* .addButton({\n* label: 'Ok',\n* callback: () => console.warn('Warning was dismissed'),\n* })\n* .build()\n* ```\n*/\nvar DialogBuilder = class {\n\t#severity;\n\t#text;\n\t#name;\n\t#buttons;\n\tconstructor(name) {\n\t\tthis.#severity = void 0;\n\t\tthis.#text = \"\";\n\t\tthis.#name = name ?? \"\";\n\t\tthis.#buttons = [];\n\t}\n\t/**\n\t* Set dialog name\n\t*\n\t* @param name The name or headline of the dialog\n\t*/\n\tsetName(name) {\n\t\tthis.#name = name;\n\t\treturn this;\n\t}\n\t/**\n\t* Set the dialog text\n\t*\n\t* @param text Main text of the dialog\n\t*/\n\tsetText(text) {\n\t\tthis.#text = text;\n\t\treturn this;\n\t}\n\t/**\n\t* Set the severity of the dialog\n\t*\n\t* @param severity Severity of the dialog\n\t*/\n\tsetSeverity(severity) {\n\t\tthis.#severity = severity;\n\t\treturn this;\n\t}\n\t/**\n\t* Set buttons from array\n\t*\n\t* @param buttons Either an array of dialog buttons\n\t*/\n\tsetButtons(buttons) {\n\t\tif (this.#buttons.length > 0) logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n\t\tthis.#buttons = buttons;\n\t\treturn this;\n\t}\n\t/**\n\t* Add a single button\n\t*\n\t* @param button Button to add\n\t*/\n\taddButton(button) {\n\t\tthis.#buttons.push(button);\n\t\treturn this;\n\t}\n\tbuild() {\n\t\treturn new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n\t}\n};\n/**\n* Get the dialog builder to create a new dialog\n*\n* @param name The name of the dialog (title)\n* @example\n* ```ts\n* const dialog = getDialogBuilder('Confirm action')\n* .addButton({\n* label: 'Ok',\n* callback: () => console.warn('confirmed'),\n* })\n* .build()\n* ```\n*/\nfunction getDialogBuilder(name) {\n\treturn new DialogBuilder(name);\n}\n/**\n* Open a new confirmation dialog.\n* The dialog either resolves to true when the confirm-button was pressed,\n* or to false if the reject-button was pressed.\n*\n* @param options - Dialog options see `ConfirmationDialogOptions`\n*/\nasync function showConfirmation(options) {\n\toptions = {\n\t\tlabelConfirm: t(\"Confirm\"),\n\t\t...options\n\t};\n\tconst { promise, resolve } = Promise.withResolvers();\n\tconst buttons = [{\n\t\tlabel: options.labelConfirm,\n\t\tvariant: \"primary\",\n\t\tcallback() {\n\t\t\tresolve(true);\n\t\t}\n\t}];\n\tif (options.labelReject) buttons.unshift({\n\t\tlabel: options.labelReject,\n\t\tcallback() {\n\t\t\tresolve(false);\n\t\t}\n\t});\n\tawait new Dialog(options.name, options.text, buttons, options.severity).show();\n\treturn promise;\n}\n//#endregion\nexport { Dialog, DialogBuilder, FilePicker, FilePickerBuilder, FilePickerClosed, FilePickerType, TOAST_ARIA_LIVE_ASSERTIVE, TOAST_ARIA_LIVE_OFF, TOAST_ARIA_LIVE_POLITE, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT, TOAST_UNDO_TIMEOUT, ToastAriaLive, ToastType, getDialogBuilder, getFilePickerBuilder, openConflictPicker, showConfirmation, showError, showGuestUserPrompt, showInfo, showLoading, showMessage, showSuccess, showUndo, showWarning };\n\n//# sourceMappingURL=index.mjs.map","const PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexport const glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexport const Konva = {\n _global: glob,\n version: '10.3.3',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _renderBackend: 'web',\n legacyTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a, _b;\n return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;\n },\n isDragReady() {\n return !!Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: glob.document,\n _injectGlobal(Konva) {\n if (typeof glob.Konva !== 'undefined') {\n console.error('Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');\n }\n glob.Konva = Konva;\n },\n};\nexport const _registerNode = (NodeClass) => {\n Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nKonva._injectGlobal(Konva);\n","import { Konva } from \"./Global.js\";\nconst NODE_ERROR = `Konva.js unsupported environment.\n\nLooks like you are trying to use Konva.js in Node.js environment. because \"document\" object is undefined.\n\nTo use Konva.js in Node.js environment, you need to use the \"canvas-backend\" or \"skia-backend\" module.\n\nbash: npm install canvas\njs: import \"konva/canvas-backend\";\n\nor\n\nbash: npm install skia-canvas\njs: import \"konva/skia-backend\";\n`;\nconst ensureBrowser = () => {\n if (typeof document === 'undefined') {\n throw new Error(NODE_ERROR);\n }\n};\nexport class Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = Util._getRotation(result.rotation);\n return result;\n }\n}\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50],\n};\nlet _isCanvasFarblingActive = null;\nconst defaultWindow = typeof window !== 'undefined' ? window : {};\nconst animQueues = new WeakMap();\nconst requestFrame = (win, f) => {\n if (typeof win.requestAnimationFrame === 'function') {\n win.requestAnimationFrame(f);\n }\n else if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(f);\n }\n else {\n setTimeout(f, 16);\n }\n};\nconst capitalizeCache = new Map();\nconst splitColorComponents = (str) => {\n const components = str.trim();\n return components.indexOf(',') === -1\n ? components.split(/\\s*\\/\\s*|\\s+/)\n : components.split(/\\s*,\\s*/);\n};\nconst NUMBER_SOURCE = '[+-]?(?:\\\\d+\\\\.?\\\\d*|\\\\.\\\\d+)(?:e[+-]?\\\\d+)?';\nconst COLOR_COMPONENT_REGEX = new RegExp(`^(${NUMBER_SOURCE})(%?)$`, 'i');\nconst parseColorComponent = (value, max) => {\n const match = COLOR_COMPONENT_REGEX.exec(value);\n if (!match) {\n return NaN;\n }\n return match[2] ? (Number(match[1]) / 100) * max : Number(match[1]);\n};\nconst HEX_COLOR_REGEX = /^#[0-9a-f]+$/i;\nconst clamp01 = (value) => Math.min(Math.max(value, 0), 1);\nconst HUE_REGEX = new RegExp(`^(${NUMBER_SOURCE})(deg|grad|rad|turn)?$`, 'i');\nconst HUE_UNITS = {\n deg: 1,\n grad: 0.9,\n rad: DEG180_OVER_PI,\n turn: 360,\n};\nexport const Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback, win) {\n const target = (win && !win.closed && win) || defaultWindow;\n let queue = animQueues.get(target);\n if (!queue) {\n queue = [];\n animQueues.set(target, queue);\n requestFrame(target, function () {\n animQueues.delete(target);\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n queue.push(callback);\n },\n createCanvasElement() {\n ensureBrowser();\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n ensureBrowser();\n return document.createElement('img');\n },\n _isInDocument(el) {\n return !!el.isConnected;\n },\n _urlToImage(url, callback) {\n const imageObj = Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n isCanvasFarblingActive() {\n if (_isCanvasFarblingActive !== null) {\n return _isCanvasFarblingActive;\n }\n if (typeof document === 'undefined') {\n _isCanvasFarblingActive = false;\n return false;\n }\n const c = this.createCanvasElement();\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext('2d', {\n willReadFrequently: true,\n });\n ctx.clearRect(0, 0, 10, 10);\n ctx.fillStyle = '#282828';\n ctx.fillRect(0, 0, 10, 10);\n const d = ctx.getImageData(0, 0, 10, 10).data;\n let isFarbling = false;\n for (let i = 0; i < 100; i++) {\n if (d[i * 4] !== 40 ||\n d[i * 4 + 1] !== 40 ||\n d[i * 4 + 2] !== 40 ||\n d[i * 4 + 3] !== 255) {\n isFarbling = true;\n break;\n }\n }\n _isCanvasFarblingActive = isFarbling;\n this.releaseCanvas(c);\n return _isCanvasFarblingActive;\n },\n getHitColor() {\n const color = this.getRandomColor();\n return this.isCanvasFarblingActive()\n ? this.getSnappedHexColor(color)\n : color;\n },\n getHitColorKey(r, g, b) {\n if (this.isCanvasFarblingActive()) {\n r = Math.round(r / 5) * 5;\n g = Math.round(g / 5) * 5;\n b = Math.round(b / 5) * 5;\n }\n return HASH + this._rgbToHex(r, g, b);\n },\n getSnappedHexColor(hex) {\n const rgb = this._hexToRgb(hex);\n return (HASH +\n this._rgbToHex(Math.round(rgb.r / 5) * 5, Math.round(rgb.g / 5) * 5, Math.round(rgb.b / 5) * 5));\n },\n getRGB(color) {\n var _a;\n const { r = 0, g = 0, b = 0 } = (_a = Util.colorToRGBA(color)) !== null && _a !== void 0 ? _a : {};\n return { r, g, b };\n },\n colorToRGBA(str) {\n str = (str || '').trim() || 'black';\n const color = Util._namedColorToRBA(str) ||\n Util._hex3ColorToRGBA(str) ||\n Util._hex4ColorToRGBA(str) ||\n Util._hex6ColorToRGBA(str) ||\n Util._hex8ColorToRGBA(str) ||\n Util._rgbColorToRGBA(str) ||\n Util._hslColorToRGBA(str);\n if (color && [color.r, color.g, color.b, color.a].every(Util._isNumber)) {\n return color;\n }\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: c.length > 3 ? c[3] : 1,\n };\n },\n _rgbColorToRGBA(str) {\n const match = /^rgba?\\(([^)]*)\\)$/i.exec(str);\n if (!match) {\n return;\n }\n const parts = splitColorComponents(match[1]);\n if (parts.length < 3 || parts.length > 4) {\n return;\n }\n return {\n r: parseColorComponent(parts[0], 255),\n g: parseColorComponent(parts[1], 255),\n b: parseColorComponent(parts[2], 255),\n a: parts.length > 3 ? parseColorComponent(parts[3], 1) : 1,\n };\n },\n _hex8ColorToRGBA(str) {\n if (str.length === 9 && HEX_COLOR_REGEX.test(str)) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str.length === 7 && HEX_COLOR_REGEX.test(str)) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str.length === 5 && HEX_COLOR_REGEX.test(str)) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str.length === 4 && HEX_COLOR_REGEX.test(str)) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n const match = /^hsla?\\(([^)]*)\\)$/i.exec(str);\n if (!match) {\n return;\n }\n const parts = splitColorComponents(match[1]);\n if (parts.length < 3 || parts.length > 4) {\n return;\n }\n const hue = HUE_REGEX.exec(parts[0]);\n if (!hue) {\n return;\n }\n const unit = hue[2];\n const degrees = Number(hue[1]) * (unit ? HUE_UNITS[unit.toLowerCase()] : 1);\n if (!isFinite(degrees)) {\n return;\n }\n const h = (((degrees % 360) + 360) % 360) / 360;\n const s = clamp01(parseColorComponent(parts[1], 100) / 100);\n const l = clamp01(parseColorComponent(parts[2], 100) / 100);\n const a = parts.length > 3 ? parseColorComponent(parts[3], 1) : 1;\n const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n let t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n let val;\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a,\n };\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return Util.degToRad(deg);\n },\n _radToDeg(rad) {\n Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Konva.angleDeg ? Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n const cached = capitalizeCache.get(str);\n if (cached !== undefined)\n return cached;\n const out = str.charAt(0).toUpperCase() + str.slice(1);\n capitalizeCache.set(str, out);\n return out;\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let xOrigin = width < 0 ? width : 0;\n let yOrigin = height < 0 ? height : 0;\n width = Math.abs(width);\n height = Math.abs(height);\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(xOrigin + topLeft, yOrigin);\n context.lineTo(xOrigin + width - topRight, yOrigin);\n context.arc(xOrigin + width - topRight, yOrigin + topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(xOrigin + width, yOrigin + height - bottomRight);\n context.arc(xOrigin + width - bottomRight, yOrigin + height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(xOrigin + bottomLeft, yOrigin + height);\n context.arc(xOrigin + bottomLeft, yOrigin + height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(xOrigin, yOrigin + topLeft);\n context.arc(xOrigin + topLeft, yOrigin + topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n drawRoundedPolygonPath(context, points, sides, radius, cornerRadius) {\n radius = Math.abs(radius);\n for (let i = 0; i < sides; i++) {\n const prev = points[(i - 1 + sides) % sides];\n const curr = points[i];\n const next = points[(i + 1) % sides];\n const vec1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n const vec2 = { x: next.x - curr.x, y: next.y - curr.y };\n const len1 = Math.hypot(vec1.x, vec1.y);\n const len2 = Math.hypot(vec2.x, vec2.y);\n let currCornerRadius;\n if (typeof cornerRadius === 'number') {\n currCornerRadius = cornerRadius;\n }\n else {\n currCornerRadius = i < cornerRadius.length ? cornerRadius[i] : 0;\n }\n const maxCornerRadius = radius * Math.cos(Math.PI / sides);\n currCornerRadius =\n maxCornerRadius * Math.min(1, (currCornerRadius / radius) * 2);\n const normalVec1 = { x: vec1.x / len1, y: vec1.y / len1 };\n const normalVec2 = { x: vec2.x / len2, y: vec2.y / len2 };\n const p1 = {\n x: curr.x - normalVec1.x * currCornerRadius,\n y: curr.y - normalVec1.y * currCornerRadius,\n };\n const p2 = {\n x: curr.x + normalVec2.x * currCornerRadius,\n y: curr.y + normalVec2.y * currCornerRadius,\n };\n if (i === 0) {\n context.moveTo(p1.x, p1.y);\n }\n else {\n context.lineTo(p1.x, p1.y);\n }\n context.arcTo(curr.x, curr.y, p2.x, p2.y, currCornerRadius);\n }\n },\n};\n","import { Util } from \"./Util.js\";\nimport { Konva } from \"./Global.js\";\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n 'filter',\n];\nconst traceArrMax = 100;\nlet _cssFiltersSupported = null;\nexport function isCSSFiltersSupported() {\n if (_cssFiltersSupported !== null) {\n return _cssFiltersSupported;\n }\n try {\n const canvas = Util.createCanvasElement();\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n _cssFiltersSupported = false;\n return false;\n }\n return !!ctx && 'filter' in ctx;\n }\n catch (e) {\n _cssFiltersSupported = false;\n return false;\n }\n}\nexport class Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n _applyMiterLimit(shape) {\n const miterLimit = shape.attrs.miterLimit;\n if (miterLimit != null) {\n this.setAttr('miterLimit', miterLimit);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nexport class SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n const context = this._context;\n if ('patternQuality' in context) {\n context.patternQuality = context.imageSmoothingEnabled\n ? 'good'\n : 'nearest';\n }\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexport class HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\n","import { Util } from \"./Util.js\";\nimport { SceneContext, HitContext } from \"./Context.js\";\nimport { Konva } from \"./Global.js\";\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nexport class Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n setSizeIfChanged(width, height) {\n if (this.width !== width * this.pixelRatio ||\n this.height !== height * this.pixelRatio) {\n this.setSize(width, height);\n }\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexport class SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexport class HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nexport const DD = {\n get isDragging() {\n let flag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _listenToWindow(win) {\n const endDragBefore = (evt) => DD._endDragBefore(evt, win);\n const drag = (evt) => DD._drag(evt, win);\n win.addEventListener('mouseup', endDragBefore, true);\n win.addEventListener('touchend', endDragBefore, true);\n win.addEventListener('touchcancel', endDragBefore, true);\n win.addEventListener('mousemove', drag);\n win.addEventListener('touchmove', drag);\n win.addEventListener('mouseup', DD._endDragAfter, false);\n win.addEventListener('touchend', DD._endDragAfter, false);\n win.addEventListener('touchcancel', DD._endDragAfter, false);\n },\n _drag(evt, win) {\n const nodesToFireEvents = [];\n DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n if (win && stage._getOwnerWindow() !== win) {\n return;\n }\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n if (!node.getStage()) {\n return;\n }\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt, win) {\n const drawNodes = [];\n DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt && (!win || stage._getOwnerWindow() === win)) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n DD.justDragged = true;\n Konva._mouseListenClick = false;\n Konva._touchListenClick = false;\n Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n DD._dragElements.delete(key);\n }\n });\n },\n};\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nfunction _formatValue(val) {\n if (Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nexport function RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexport function alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexport function getNumberValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isNumber(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexport function getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util._isNumber(val);\n let isValidArray = Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexport function getNumberOrAutoValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isNumber = Util._isNumber(val);\n const isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexport function getStringValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isString(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexport function getStringOrGradientValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexport function getFunctionValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isFunction(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexport function getNumberArrayValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util._isArray(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util._isNumber(item)) {\n Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexport function getBooleanValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isBool = val === true || val === false;\n if (!isBool) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexport function getComponentValidator(components) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util.isObject(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","import { Util } from \"./Util.js\";\nimport { getComponentValidator } from \"./Validators.js\";\nconst GET = 'get';\nconst SET = 'set';\nexport const Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n Factory.addGetter(constructor, attr, def);\n Factory.addSetter(constructor, attr, validator, after);\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n const method = GET + Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util.error('Adding deprecated ' + attr);\n const method = GET + Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n Factory.addSetter(constructor, attr, validator, function () {\n Util.error(message);\n });\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util._capitalize(oldMethodName);\n const oldSetter = SET + Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","import { HitCanvas, SceneCanvas } from \"./Canvas.js\";\nimport { isCSSFiltersSupported } from \"./Context.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { getBooleanValidator, getNumberValidator, getStringValidator, } from \"./Validators.js\";\nfunction parseCSSFilters(cssFilter) {\n const filterRegex = /(\\w+)\\(([^)]+)\\)/g;\n let match;\n while ((match = filterRegex.exec(cssFilter)) !== null) {\n const [, filterName, filterValue] = match;\n switch (filterName) {\n case 'blur': {\n const blurRadius = parseFloat(filterValue.replace('px', ''));\n return function (imageData) {\n this.blurRadius(blurRadius * 0.5);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Blur) {\n KonvaFilters.Blur.call(this, imageData);\n }\n };\n }\n case 'brightness': {\n const brightness = filterValue.includes('%')\n ? parseFloat(filterValue) / 100\n : parseFloat(filterValue);\n return function (imageData) {\n this.brightness(brightness);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Brightness) {\n KonvaFilters.Brightness.call(this, imageData);\n }\n };\n }\n case 'contrast': {\n const contrast = parseFloat(filterValue);\n return function (imageData) {\n const konvaContrast = 100 * (Math.sqrt(contrast) - 1);\n this.contrast(konvaContrast);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Contrast) {\n KonvaFilters.Contrast.call(this, imageData);\n }\n };\n }\n case 'grayscale': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Grayscale) {\n KonvaFilters.Grayscale.call(this, imageData);\n }\n };\n }\n case 'sepia': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Sepia) {\n KonvaFilters.Sepia.call(this, imageData);\n }\n };\n }\n case 'invert': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Invert) {\n KonvaFilters.Invert.call(this, imageData);\n }\n };\n }\n default:\n Util.warn(`CSS filter \"${filterName}\" is not supported in fallback mode. Consider using function filters for better compatibility.`);\n break;\n }\n }\n return () => { };\n}\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', POINTERENTER = 'pointerenter', POINTERLEAVE = 'pointerleave', TOUCHENTER = 'touchenter', TOUCHLEAVE = 'touchleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nexport class Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n static _runAfterAbsTransformCascade(cb) {\n if (Node._absTransformCascadeDepth > 0) {\n Node._pendingAfterCascade.push(cb);\n }\n else {\n cb();\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene._canvas, filter._canvas, ...(hit ? [hit._canvas] : []));\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), sceneContext = cachedSceneCanvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: cachedSceneCanvas.width / cachedSceneCanvas.pixelRatio + Math.abs(x),\n height: cachedSceneCanvas.height / cachedSceneCanvas.pixelRatio + Math.abs(y),\n pixelRatio: cachedSceneCanvas.pixelRatio,\n }), bufferContext = bufferCanvas.getContext();\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n bufferContext.save();\n sceneContext.translate(-x, -y);\n bufferContext.translate(-x, -y);\n bufferCanvas.x = x;\n bufferCanvas.y = y;\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this, bufferCanvas);\n this._isUnderCache = false;\n sceneContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n Util.releaseCanvas(bufferCanvas._canvas);\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: null,\n hitConfig: {\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n },\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n _getCachedHitCanvas(top) {\n if (top === this) {\n return null;\n }\n const cache = this._getCanvasCache();\n if (!cache) {\n return null;\n }\n if (cache.hit) {\n return cache.hit;\n }\n const hitCanvas = new HitCanvas(cache.hitConfig);\n hitCanvas.isCache = true;\n const hitContext = hitCanvas.getContext();\n hitContext.save();\n hitContext.translate(-cache.x, -cache.y);\n this.drawHit(hitCanvas, this);\n hitContext.restore();\n cache.hit = hitCanvas;\n return hitCanvas;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context, hitCanvas) {\n const canvasCache = this._getCanvasCache();\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (!filters || filters.length === 0) {\n return sceneCanvas;\n }\n if (this._filterUpToDate) {\n return filterCanvas;\n }\n let useNativeOnly = true;\n for (let i = 0; i < filters.length; i++) {\n const fallbackRequired = typeof filters[i] === 'string' && !isCSSFiltersSupported();\n if (fallbackRequired) {\n }\n if (typeof filters[i] !== 'string' || !isCSSFiltersSupported()) {\n useNativeOnly = false;\n break;\n }\n }\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n if (useNativeOnly) {\n const finalFilter = filters.join(' ');\n filterContext.save();\n filterContext.setAttr('filter', finalFilter);\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n filterContext.restore();\n this._filterUpToDate = true;\n return filterCanvas;\n }\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter === 'string') {\n filter = parseCSSFilters(filter);\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n return filterCanvas;\n }\n on(...args) {\n const evtStr = args[0];\n const selectorOrHandler = args[1];\n const handler = args[2];\n if (this._cache) {\n this._cache.delete(ALL_LISTENERS);\n }\n if (args.length === 3) {\n return this._delegate.apply(this, args);\n }\n const events = evtStr.split(SPACE);\n for (let n = 0; n < events.length; n++) {\n const event = events[n];\n const parts = event.split('.');\n const baseEvent = parts[0];\n const name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({ name, handler: selectorOrHandler });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n return this;\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DD._dragElements.delete(this._id);\n DD._dragElements.forEach((elem, key) => {\n if (this.isAncestorOf(elem.node)) {\n DD._dragElements.delete(key);\n }\n });\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util._capitalize(attr);\n if (Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return this.attrs || {};\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util._capitalize(key);\n if (Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Konva.hitOnDragEnabled &&\n (layerUnderDrag || Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util.isValidSelector(sel)) {\n Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util._capitalize(attr)];\n if (Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const nonBubbling = [\n MOUSEENTER,\n MOUSELEAVE,\n POINTERENTER,\n POINTERLEAVE,\n TOUCHENTER,\n TOUCHLEAVE,\n ];\n const shouldStop = nonBubbling.indexOf(eventType) !== -1 &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = nonBubbling.indexOf(eventType) !== -1 &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b;\n const { nodeType } = this;\n const allListeners = Node.protoListenerMap.get(nodeType) || {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n const seen = new Set();\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_b = (_a = obj.eventListeners) === null || _a === void 0 ? void 0 : _a[eventType]) !== null && _b !== void 0 ? _b : [];\n for (let i = 0; i < hierarchyEvents.length; i++) {\n const entry = hierarchyEvents[i];\n if (!seen.has(entry)) {\n seen.add(entry);\n events.push(entry);\n }\n }\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n Node.protoListenerMap.set(nodeType, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (let i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n const list = selfListeners.slice();\n const origLen = list.length;\n for (let i = 0; i < list.length; i++) {\n list[i].handler.call(this, evt);\n }\n const liveListeners = this.eventListeners[eventType];\n if (liveListeners) {\n for (let i = origLen; i < liveListeners.length; i++) {\n liveListeners[i].handler.call(this, evt);\n }\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n startEvent: evt,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: (elem.startEvent && elem.startEvent.evt) || (evt && evt.evt),\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DD._endDragBefore(evt);\n DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Konva[className]) {\n Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nNode._absTransformCascadeDepth = 0;\nNode._pendingAfterCascade = [];\nNode.protoListenerMap = new Map();\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on(TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on('visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on('listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on('opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, getNumberValidator());\naddGetterSetter(Node, 'y', 0, getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\naddGetterSetter(Node, 'opacity', 1, getNumberValidator());\naddGetterSetter(Node, 'name', '', getStringValidator());\naddGetterSetter(Node, 'id', '', getStringValidator());\naddGetterSetter(Node, 'rotation', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, getNumberValidator());\naddGetterSetter(Node, 'dragDistance', undefined, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, getBooleanValidator());\nFactory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","import { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator } from \"./Validators.js\";\nexport class Container extends Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n const children = this.children || [];\n if (filterFunc) {\n return children.filter(filterFunc);\n }\n return children;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n const isAbsTransform = attr === 'absoluteTransform';\n if (isAbsTransform)\n Node._absTransformCascadeDepth++;\n try {\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached())\n return;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n finally {\n if (isAbsTransform && --Node._absTransformCascadeDepth === 0) {\n const callbacks = Node._pendingAfterCascade;\n if (callbacks.length) {\n Node._pendingAfterCascade = [];\n for (let i = 0; i < callbacks.length; i++)\n callbacks[i]();\n }\n }\n }\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedHitCanvas = this._getCachedHitCanvas(top);\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context, cachedHitCanvas);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nFactory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipFunc');\n","import { Konva } from \"./Global.js\";\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\nexport function getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexport function createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexport function hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexport function setPointerCapture(pointerId, shape) {\n var _a;\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n try {\n (_a = stage.content) === null || _a === void 0 ? void 0 : _a.setPointerCapture(pointerId);\n }\n catch (e) {\n }\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexport function releaseCapture(pointerId, target) {\n var _a;\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n try {\n (_a = stage === null || stage === void 0 ? void 0 : stage.content) === null || _a === void 0 ? void 0 : _a.releasePointerCapture(pointerId);\n }\n catch (e) {\n }\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","import { Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Container } from \"./Container.js\";\nimport { Konva } from \"./Global.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [POINTERLEAVE, '_pointerleave'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexport const stages = [];\nconst listeningWindows = new WeakSet();\nconst listenToWindow = (win) => {\n if (!win || listeningWindows.has(win)) {\n return;\n }\n listeningWindows.add(win);\n DD._listenToWindow(win);\n win.document.addEventListener('visibilitychange', () => {\n stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n};\nexport class Stage extends Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n _getOwnerWindow() {\n var _a;\n const element = this.content || this.container();\n return (((_a = element === null || element === void 0 ? void 0 : element.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) || (Konva.isBrowser ? window : null));\n }\n setContainer(container) {\n if (typeof container === STRING) {\n let id;\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n listenToWindow(this._getOwnerWindow());\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = stages.indexOf(this);\n if (index > -1) {\n stages.splice(index, 1);\n }\n Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n _syncBufferSize(canvas) {\n canvas.setSizeIfChanged(this.width(), this.height());\n return canvas;\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DD.justDragged = false;\n Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n const isTouchPointer = evt.type.indexOf('touch') >= 0 ||\n evt.pointerType === 'touch';\n if (Konva.isDragging() &&\n DD.node.preventDefault() &&\n evt.cancelable &&\n isTouchPointer) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const wasDragged = DD.justDragged || (eventType === 'pointer' && Konva.isDragging());\n const listenClick = Konva['_' + eventType + 'ListenClick'] && !wasDragged;\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let skipPointerUpTrigger = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!wasDragged) {\n Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n skipPointerUpTrigger = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (listenClick && clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n skipPointerUpTrigger = true;\n }\n if (listenClick) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new SceneCanvas({\n width: 0,\n height: 0,\n });\n this.bufferHitCanvas = new HitCanvas({\n pixelRatio: 1,\n width: 0,\n height: 0,\n });\n if (!Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = container.ownerDocument.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n listenToWindow(this._getOwnerWindow());\n this._resizeDOM();\n }\n cache() {\n Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nStage.prototype.nodeType = STAGE;\n_registerNode(Stage);\nFactory.addGetterSetter(Stage, 'container');\n","import { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator, getNumberOrAutoValidator, getStringValidator, getBooleanValidator, getStringOrGradientValidator, } from \"./Validators.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexport const shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nexport class Shape extends Node {\n constructor(config) {\n super(config);\n let key;\n let attempts = 0;\n while (true) {\n key = Util.getHitColor();\n if (key && !(key in shapes)) {\n break;\n }\n attempts++;\n if (attempts >= 10000) {\n Util.warn('Failed to find a unique color key for a shape. Konva may work incorrectly. Most likely your browser is using canvas farbling. Consider disabling it.');\n key = Util.getRandomColor();\n break;\n }\n }\n this.colorKey = key;\n shapes[key] = this;\n }\n getContext() {\n Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage._syncBufferSize(stage.bufferHitCanvas);\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node.prototype.destroy.call(this);\n delete shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n const canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow();\n let stage;\n const skipBuffer = false;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage._syncBufferSize(stage.bufferCanvas);\n const bufferContext = bc.getContext();\n if (bufferCanvas) {\n bufferContext.save();\n bufferContext.setTransform(1, 0, 0, 1, 0, 0);\n bufferContext.clearRect(0, 0, bc.width, bc.height);\n bufferContext.restore();\n }\n else {\n bufferContext.clear();\n }\n bufferContext.save();\n bufferContext.imageSmoothingEnabled = context.imageSmoothingEnabled;\n bufferContext._applyLineJoin(this);\n bufferContext._applyMiterLimit(this);\n const o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n if (!cachingSelf) {\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n context.drawImage(bc._canvas, bc.x || 0, bc.y || 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n if (!cachingSelf) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedHitCanvas = this._getCachedHitCanvas(top);\n if (!this.colorKey) {\n Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context, cachedHitCanvas);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = this._getCachedHitCanvas(), hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n_registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on('shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on('fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on('fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on('fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory.addGetterSetter(Shape, 'stroke', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\nFactory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'lineJoin');\nFactory.addGetterSetter(Shape, 'lineCap');\nFactory.addGetterSetter(Shape, 'miterLimit');\nFactory.addGetterSetter(Shape, 'sceneFunc');\nFactory.addGetterSetter(Shape, 'hitFunc');\nFactory.addGetterSetter(Shape, 'dash');\nFactory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\nFactory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternImage');\nFactory.addGetterSetter(Shape, 'fill', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory.addGetterSetter(Shape, 'fillRule', undefined, getStringValidator());\nFactory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { Node } from \"./Node.js\";\nimport { Factory } from \"./Factory.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { getBooleanValidator } from \"./Validators.js\";\nimport { shapes } from \"./Shape.js\";\nimport { _registerNode } from \"./Global.js\";\nconst BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nexport class Layer extends Container {\n constructor(config) {\n super(config);\n this.canvas = new SceneCanvas();\n this.hitCanvas = new HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this._syncHitCanvasSize();\n this._setSmoothEnabled();\n return this;\n }\n _syncHitCanvasSize() {\n const listening = this.isListening();\n this.hitCanvas.setSizeIfChanged((listening ? this.getWidth() : 0) || 0, (listening ? this.getHeight() : 0) || 0);\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n var _a;\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n }, (_a = this.getStage()) === null || _a === void 0 ? void 0 : _a._getOwnerWindow());\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n if (!this.hitCanvas.width || !this.hitCanvas.height) {\n return {};\n }\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util.getHitColorKey(p[0], p[1], p[2]);\n const shape = shapes[colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container.prototype.drawScene.call(this, canvas, top, bufferCanvas);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (!can && layer) {\n layer._syncHitCanvasSize();\n if (layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n }\n Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nLayer.prototype.nodeType = 'Layer';\n_registerNode(Layer);\nFactory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\n","import { Util } from \"./Util.js\";\nimport { Layer } from \"./Layer.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class FastLayer extends Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nFastLayer.prototype.nodeType = 'FastLayer';\n_registerNode(FastLayer);\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class Group extends Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nGroup.prototype.nodeType = 'Group';\n_registerNode(Group);\n","import { glob } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nconst now = (function () {\n if (glob.performance && glob.performance.now) {\n return function () {\n return glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nexport class Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","import { Util } from \"./Util.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Node } from \"./Node.js\";\nimport { Konva } from \"./Global.js\";\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nfunction colorToRGBA(color) {\n return (Util.colorToRGBA(color) ||\n Util.throw('can not tween the color \"' +\n color +\n '\", because it is not a valid color.'));\n}\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nexport class Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = colorToRGBA(start[n]);\n endRGBA = colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = colorToRGBA(start);\n endRGBA = colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n if (this.anim) {\n this.anim.stop();\n }\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n if (Tween.tweens[nodeId]) {\n if (Object.keys(Tween.tweens[nodeId]).length === 0) {\n delete Tween.tweens[nodeId];\n }\n if (Object.keys(Tween.attrs[nodeId]).length === 0) {\n delete Tween.attrs[nodeId];\n }\n }\n }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexport const Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","import { Konva as Global } from \"./Global.js\";\nimport { Util, Transform } from \"./Util.js\";\nimport { Node } from \"./Node.js\";\nimport { Container } from \"./Container.js\";\nimport { Stage, stages } from \"./Stage.js\";\nimport { Layer } from \"./Layer.js\";\nimport { FastLayer } from \"./FastLayer.js\";\nimport { Group } from \"./Group.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Shape, shapes } from \"./Shape.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Tween, Easings } from \"./Tween.js\";\nimport { Context } from \"./Context.js\";\nimport { Canvas } from \"./Canvas.js\";\nexport const Konva = Util._assign(Global, {\n Util,\n Transform,\n Node,\n Container,\n Stage,\n stages,\n Layer,\n FastLayer,\n Group,\n DD,\n Shape,\n shapes,\n Animation,\n Tween,\n Easings,\n Context,\n Canvas,\n});\nexport default Konva;\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getBooleanValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Arc extends Shape {\n _sceneFunc(context) {\n const angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const rawAngle = Konva.getAngle(this.angle());\n if (rawAngle % (Math.PI * 2) === 0) {\n return rawAngle !== 0\n ? {\n x: -outerRadius,\n y: -outerRadius,\n width: outerRadius * 2,\n height: outerRadius * 2,\n }\n : { x: innerRadius, y: 0, width: outerRadius - innerRadius, height: 0 };\n }\n const angle = Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n_registerNode(Arc);\nFactory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\n","export const tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexport const cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexport const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nexport const getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * tValues[n][i] + z;\n sum += cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexport const getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nexport const t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nconst quadraticAt = (p0, p1, p2, t) => {\n const mt = 1 - t;\n return mt * mt * p0 + 2 * mt * t * p1 + t * t * p2;\n};\nexport const getQuadraticExtremaPoints = (x0, y0, x1, y1, x2, y2) => {\n const extrema = [];\n for (const axis of [\n [x0, x1, x2],\n [y0, y1, y2],\n ]) {\n const t = (axis[0] - axis[1]) / (axis[0] - 2 * axis[1] + axis[2]);\n if (t > 0 && t < 1) {\n extrema.push(quadraticAt(x0, x1, x2, t), quadraticAt(y0, y1, y2, t));\n }\n }\n return extrema;\n};\nconst cubicAt = (p0, p1, p2, p3, t) => {\n const mt = 1 - t;\n return (mt * mt * mt * p0 +\n 3 * mt * mt * t * p1 +\n 3 * mt * t * t * p2 +\n t * t * t * p3);\n};\nexport const getCubicExtremaPoints = (x0, y0, x1, y1, x2, y2, x3, y3) => {\n const extrema = [];\n for (const axis of [\n [x0, x1, x2, x3],\n [y0, y1, y2, y3],\n ]) {\n const a = -3 * axis[0] + 9 * axis[1] - 9 * axis[2] + 3 * axis[3];\n const b = 6 * axis[0] - 12 * axis[1] + 6 * axis[2];\n const c = -3 * axis[0] + 3 * axis[1];\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n continue;\n }\n const q = -(b + (b < 0 ? -1 : 1) * Math.sqrt(discriminant)) / 2;\n for (const t of [q / a, c / q]) {\n if (t > 0 && t < 1) {\n extrema.push(cubicAt(x0, x1, x2, x3, t), cubicAt(y0, y1, y2, y3, t));\n }\n }\n }\n return extrema;\n};\n","import { getCubicExtremaPoints, getQuadraticExtremaPoints, } from \"../BezierFunctions.js\";\nimport { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberArrayValidator, getNumberValidator } from \"../Validators.js\";\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), dSum = d01 + d12;\n if (dSum === 0) {\n return [x1, y1, x1, y1];\n }\n const fa = (t * d01) / dSum, fb = (t * d12) / dSum, p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nfunction getBezierExtremaPoints(points) {\n const extrema = [];\n for (let n = 0; n + 7 < points.length; n += 6) {\n extrema.push(points[n + 6], points[n + 7], ...getCubicExtremaPoints(points[n], points[n + 1], points[n + 2], points[n + 3], points[n + 4], points[n + 5], points[n + 6], points[n + 7]));\n }\n return extrema;\n}\nexport class Line extends Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _hasTension() {\n return this.tension() !== 0 && this.points().length > 4;\n }\n _eachTensionSegment(onQuadratic, onCubic) {\n const points = this.points(), length = points.length, closed = this.closed(), tp = this.getTensionPoints(), len = tp.length;\n let x0 = points[0], y0 = points[1], n = closed ? 0 : 4;\n if (!closed) {\n onQuadratic(x0, y0, tp[0], tp[1], tp[2], tp[3]);\n x0 = tp[2];\n y0 = tp[3];\n }\n while (n < len - 2) {\n const cp1x = tp[n++], cp1y = tp[n++], cp2x = tp[n++], cp2y = tp[n++], x = tp[n++], y = tp[n++];\n onCubic(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y);\n x0 = x;\n y0 = y;\n }\n if (!closed) {\n onQuadratic(x0, y0, tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n _sceneFunc(context) {\n const points = this.points(), length = points.length, closed = this.closed(), bezier = this.bezier();\n if (!length) {\n return;\n }\n let n = 0;\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (this._hasTension()) {\n this._eachTensionSegment((_x0, _y0, cpx, cpy, x, y) => context.quadraticCurveTo(cpx, cpy, x, y), (_x0, _y0, cp1x, cp1y, cp2x, cp2y, x, y) => context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y));\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this._hasTension()) {\n const bounds = [points[0], points[1]];\n this._eachTensionSegment((x0, y0, cpx, cpy, x, y) => bounds.push(x, y, ...getQuadraticExtremaPoints(x0, y0, cpx, cpy, x, y)), (x0, y0, cp1x, cp1y, cp2x, cp2y, x, y) => bounds.push(x, y, ...getCubicExtremaPoints(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y)));\n points = bounds;\n }\n else if (this.bezier()) {\n points = [points[0], points[1], ...getBezierExtremaPoints(points)];\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n_registerNode(Line);\nFactory.addGetterSetter(Line, 'closed', false);\nFactory.addGetterSetter(Line, 'bezier', false);\nFactory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\nFactory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getCubicExtremaPoints, getQuadraticArcLength, getQuadraticExtremaPoints, t2length, } from \"../BezierFunctions.js\";\nexport class Path extends Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n points.push(data.start.x, data.start.y, data.points[4], data.points[5], ...getCubicExtremaPoints(data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]));\n }\n else if (data.command === 'Q') {\n points.push(data.start.x, data.start.y, data.points[2], data.points[3], ...getQuadraticExtremaPoints(data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3]));\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n let j = i - 1;\n while (j > 0 && dataArray[j].points.length < 2) {\n j--;\n }\n points = dataArray[j].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n const cmd = dataArray[i].command;\n if (cmd === 'M') {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n else {\n return {\n x: dataArray[i].start.x,\n y: dataArray[i].start.y,\n };\n }\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getCubicArcLength([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getQuadraticArcLength([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], dTheta = p[5], psi = p[6];\n let theta = p[4];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return { x, y };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return { x, y };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (let n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (let n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n let p = [];\n let arcParamIndex = c === 'A' || c === 'a' ? 0 : -1;\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n const token = coords[j];\n if (token === '00') {\n p.push(0, 0);\n if (arcParamIndex >= 0) {\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n continue;\n }\n if (arcParamIndex >= 0) {\n if (arcParamIndex === 3) {\n if (/^[01]{2}\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n p.push(parseFloat(token.slice(2)));\n arcParamIndex += 3;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '11' || token === '10' || token === '01') {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n else if (arcParamIndex === 4) {\n if (/^[01]\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseFloat(token.slice(1)));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n const parsedArc = parseFloat(token);\n if (!isNaN(parsedArc)) {\n p.push(parsedArc);\n }\n else {\n p.push(0);\n }\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n else {\n const parsed = parseFloat(token);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n let prevCmd, ctlPtx, ctlPty;\n let rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n const dx = p.shift();\n const dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return getCubicArcLength([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return getQuadraticArcLength([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n const start = points[4];\n const dTheta = points[5];\n const end = points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n_registerNode(Path);\nFactory.addGetterSetter(Path, 'data');\n","import { Factory } from \"../Factory.js\";\nimport { Line } from \"./Line.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Path } from \"./Path.js\";\nexport class Arrow extends Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nArrow.prototype.className = 'Arrow';\n_registerNode(Arrow);\nFactory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Circle extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Circle);\nFactory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Ellipse extends Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n_registerNode(Ellipse);\nFactory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\nFactory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nexport class Image extends Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b, _c;\n return (_c = (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;\n }\n getHeight() {\n var _a, _b, _c;\n return (_c = (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 0;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nImage.prototype.className = 'Image';\nImage.prototype._attrsAffectingSize = ['image'];\n_registerNode(Image);\nFactory.addGetterSetter(Image, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\nFactory.addGetterSetter(Image, 'image');\nFactory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Group } from \"../Group.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nexport class Label extends Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nLabel.prototype.className = 'Label';\n_registerNode(Label);\nexport class Tag extends Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nTag.prototype.className = 'Tag';\n_registerNode(Tag);\nFactory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberOrArrayOfNumbersValidator } from \"../Validators.js\";\nexport class Rect extends Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nRect.prototype.className = 'Rect';\n_registerNode(Rect);\nFactory.addGetterSetter(Rect, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nexport class RegularPolygon extends Shape {\n _sceneFunc(context) {\n const points = this._getPoints(), radius = this.radius(), sides = this.sides(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n }\n else {\n Util.drawRoundedPolygonPath(context, points, sides, radius, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].x;\n let minY = points[0].y;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n_registerNode(RegularPolygon);\nFactory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst PIx2 = Math.PI * 2;\nexport class Ring extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Ring);\nFactory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Animation } from \"../Animation.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Sprite extends Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nSprite.prototype.className = 'Sprite';\n_registerNode(Sprite);\nFactory.addGetterSetter(Sprite, 'animation');\nFactory.addGetterSetter(Sprite, 'animations');\nFactory.addGetterSetter(Sprite, 'frameOffsets');\nFactory.addGetterSetter(Sprite, 'image');\nFactory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\nFactory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\nFactory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Star extends Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Star);\nFactory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\nFactory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport function stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nlet _shadowOpacityBuggy = null;\nfunction hasShadowOpacityBug() {\n if (_shadowOpacityBuggy !== null) {\n return _shadowOpacityBuggy;\n }\n _shadowOpacityBuggy = false;\n try {\n const c = document.createElement('canvas');\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext(CONTEXT_2D);\n if (ctx) {\n ctx.globalAlpha = 0;\n ctx.shadowColor = 'black';\n ctx.shadowBlur = 5;\n ctx.shadowOffsetX = 5;\n ctx.shadowOffsetY = 5;\n ctx.fillStyle = 'black';\n ctx.font = '10px Arial';\n ctx.fillText('X', 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0) {\n _shadowOpacityBuggy = true;\n break;\n }\n }\n }\n }\n catch (e) {\n }\n return _shadowOpacityBuggy;\n}\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n if (this._partialFillStyle) {\n context.setAttr('fillStyle', this._partialFillStyle);\n }\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n if (this._partialStrokeStyle) {\n context.setAttr('strokeStyle', this._partialStrokeStyle);\n }\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nexport class Text extends Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var _a, _b;\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), charRenderFunc = this.charRenderFunc(), fill = this.fill(), textDecoration = this.textDecoration(), underlineOffset = this.underlineOffset(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (!Konva.legacyTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n const ascent = (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.actualBoundingBoxAscent;\n const descent = (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.actualBoundingBoxDescent;\n translateY = (ascent - descent) / 2 + lineHeightPx / 2;\n }\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n const fillStyleBefore = charRenderFunc ? context.fillStyle : undefined;\n const strokeStyleBefore = charRenderFunc ? context.strokeStyle : undefined;\n for (n = 0; n < textArrLen; n++) {\n let lineTranslateX = 0;\n let lineTranslateY = 0;\n const obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = underlineOffset !== null && underlineOffset !== void 0 ? underlineOffset : (!Konva.legacyTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2));\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n const lineThroughStartX = lineTranslateX;\n if (direction !== RTL &&\n (letterSpacing !== 0 || align === JUSTIFY || charRenderFunc)) {\n const spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n if (charRenderFunc) {\n context.save();\n const previousLines = textArr.slice(0, n);\n const previousGraphemes = previousLines.reduce((acc, line) => acc + stringToArray(line.text).length, 0);\n const charIndex = li + previousGraphemes;\n charRenderFunc({\n char: letter,\n index: charIndex,\n x: lineTranslateX,\n y: translateY + lineTranslateY,\n lineIndex: n,\n column: li,\n isLastInLine: lastLine,\n width: this.measureSize(letter).width,\n context,\n });\n const fillStyleAfter = context.fillStyle;\n if (fillStyleAfter !== fillStyleBefore) {\n this._partialFillStyle = fillStyleAfter;\n }\n const strokeStyleAfter = context.strokeStyle;\n if (strokeStyleAfter !== strokeStyleBefore) {\n this._partialStrokeStyle = strokeStyleAfter;\n }\n }\n context.fillStrokeShape(this);\n if (charRenderFunc) {\n this._partialFillStyle = undefined;\n this._partialStrokeStyle = undefined;\n context.restore();\n }\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? -Math.round(fontSize / 4)\n : 0;\n const x = lineThroughStartX;\n context.moveTo(x, translateY + lineTranslateY + yOffset);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n const lineArray = stringToArray(line);\n let low = 0, high = lineArray.length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n if (hasShadow && this.getAbsoluteOpacity() !== 1 && hasShadowOpacityBug()) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n_registerNode(Text);\nFactory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\nFactory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\nFactory.addGetterSetter(Text, 'direction', INHERIT);\nFactory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'align', LEFT);\nFactory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\nFactory.addGetterSetter(Text, 'wrap', WORD);\nFactory.addGetterSetter(Text, 'ellipsis', false, getBooleanValidator());\nFactory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'text', '', getStringValidator());\nFactory.addGetterSetter(Text, 'textDecoration', '');\nFactory.addGetterSetter(Text, 'underlineOffset', undefined, getNumberValidator());\nFactory.addGetterSetter(Text, 'charRenderFunc', undefined);\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Path } from \"./Path.js\";\nimport { Text, stringToArray } from \"./Text.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nexport class TextPath extends Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva directionChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length > totalLength) {\n return null;\n }\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n const hasUnderline = textDecoration.indexOf('underline') !== -1;\n const hasLineThrough = textDecoration.indexOf('line-through') !== -1;\n if (hasUnderline) {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (hasUnderline) {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(glyphInfo[i].width, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (hasUnderline) {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n if (hasLineThrough) {\n context.beginPath();\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n if (i === 0) {\n context.moveTo(0, 0);\n }\n context.lineTo(glyphInfo[i].width, 0);\n context.restore();\n }\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const charArr = stringToArray(this.text());\n if (this.direction() === 'rtl') {\n charArr.reverse();\n }\n const chars = [];\n let width = 0;\n for (let i = 0; i < charArr.length; i++) {\n chars.push({\n char: charArr[i],\n width: this._getTextSize(charArr[i]).width,\n });\n width += chars[i].width;\n }\n const { width: fullTextWidth, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const kerningAdjustment = Math.max(0, width - fullTextWidth);\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n let offsetToGlyph = offset;\n for (let i = 0; i < chars.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n const char = chars[i].char;\n let glyphWidth = chars[i].width + letterSpacing;\n if (char === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndLength = offsetToGlyph + glyphWidth;\n const charEndPoint = this._getPointAtLength(charEndLength > this.pathLength &&\n charEndLength - this.pathLength <= kerningAdjustment\n ? this.pathLength\n : charEndLength);\n if (!charEndPoint) {\n return;\n }\n const width = Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(chars[i - 1].char, char) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n width: width,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n_registerNode(TextPath);\nFactory.addGetterSetter(TextPath, 'data');\nFactory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory.addGetterSetter(TextPath, 'align', 'left');\nFactory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory.addGetterSetter(TextPath, 'kerningFunc', undefined);\nFactory.addGetterSetter(TextPath, 'direction', 'inherit');\n","import { Util, Transform } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Rect } from \"./Rect.js\";\nimport { Group } from \"../Group.js\";\nimport { Konva } from \"../Global.js\";\nimport { getBooleanValidator, getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateAnchorAngleChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n 'draggableChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nexport class Transformer extends Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._transformWindow = null;\n this._elementsCreated = false;\n this._updateScheduled = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this._transforming)\n return;\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this.isDragging()) {\n this._scheduleUpdate();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Transform();\n tr.rotate(-Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n this._elementsCreated = true;\n }\n _createAnchor(name) {\n const anchor = new Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape({\n name: 'back',\n width: 0,\n height: 0,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n const width = shape.width();\n const height = shape.height();\n ctx.beginPath();\n ctx.rect(-padding, -padding, width + padding * 2, height + padding * 2);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n const rotateAnchorAngle = tr.rotateAnchorAngle();\n const rotateAnchorOffset = tr.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n const endX = edgeX + dirX * rotateAnchorOffset * sign;\n const endY = edgeY + dirY * rotateAnchorOffset * sign;\n ctx.moveTo(edgeX, edgeY);\n ctx.lineTo(endX, endY);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n var _a;\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n const win = (_a = this.getStage()) === null || _a === void 0 ? void 0 : _a._getOwnerWindow();\n this._transformWindow = win || null;\n if (win) {\n win.addEventListener('mousemove', this._handleMouseMove);\n win.addEventListener('touchmove', this._handleMouseMove);\n win.addEventListener('mouseup', this._handleMouseUp, true);\n win.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n const rotateAnchorAngleRad = Konva.getAngle(this.rotateAnchorAngle());\n let delta = Math.atan2(-y, x) + Math.PI / 2 - rotateAnchorAngleRad;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n let centeredScaling = this.centeredScaling() || e.altKey;\n let anchorProjected = false;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n anchorProjected = true;\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n anchorProjected = true;\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n anchorProjected = true;\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n const reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n anchorProjected = true;\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Konva.getAngle(this.rotation()),\n }, e, anchorProjected);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n const win = this._transformWindow;\n this._transformWindow = null;\n if (win) {\n win.removeEventListener('mousemove', this._handleMouseMove);\n win.removeEventListener('touchmove', this._handleMouseMove);\n win.removeEventListener('mouseup', this._handleMouseUp, true);\n win.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt, anchorProjected = false) {\n const prevAutoDraw = Konva.autoDrawEnabled;\n Konva.autoDrawEnabled = false;\n try {\n return this._doFitNodesInto(newAttrs, evt, anchorProjected);\n }\n finally {\n Konva.autoDrawEnabled = prevAutoDraw;\n }\n }\n _doFitNodesInto(newAttrs, evt, anchorProjected = false) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Transform();\n t.rotate(Konva.getAngle(this.rotation()));\n const flipPadding = anchorProjected ? 0 : this.padding() * 2;\n let widthFlip = null;\n let heightFlip = null;\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -flipPadding,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += flipPadding;\n widthFlip = { axis: 'width', from: 'left', to: 'right', offset };\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: flipPadding,\n y: 0,\n });\n newAttrs.width += flipPadding;\n widthFlip = { axis: 'width', from: 'right', to: 'left', offset };\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -flipPadding,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.height += flipPadding;\n heightFlip = { axis: 'height', from: 'top', to: 'bottom', offset };\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: flipPadding,\n });\n newAttrs.height += flipPadding;\n heightFlip = { axis: 'height', from: 'bottom', to: 'top', offset };\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n for (const flip of [widthFlip, heightFlip]) {\n if (flip && newAttrs[flip.axis] < 0 && this._movingAnchorName) {\n this._movingAnchorName = this._movingAnchorName.replace(flip.from, flip.to);\n this._anchorDragOffset.x -= flip.offset.x;\n this._anchorDragOffset.y -= flip.offset.y;\n }\n }\n const baseSize = 10000000;\n const oldTr = new Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n const layersToDraw = new Set();\n this._nodes.forEach((node) => {\n if (!node.getStage()) {\n return;\n }\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n const layer = node.getLayer();\n if (layer) {\n layersToDraw.add(layer);\n }\n });\n this.rotation(Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n layersToDraw.add(this.getLayer());\n layersToDraw.forEach((layer) => layer && layer.batchDraw());\n }\n _scheduleUpdate() {\n if (this._updateScheduled)\n return;\n this._updateScheduled = true;\n Node._runAfterAbsTransformCascade(() => {\n var _a;\n this._updateScheduled = false;\n if (!((_a = this._nodes) === null || _a === void 0 ? void 0 : _a.length) || this._transforming || this.isDragging()) {\n return;\n }\n this.update();\n });\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n const rotateAnchorAngle = this.rotateAnchorAngle();\n const rotateAnchorOffset = this.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n this._batchChangeChild('.rotater', {\n x: edgeX + dirX * rotateAnchorOffset * sign,\n y: edgeY + dirY * rotateAnchorOffset * sign - padding * dirY,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n draggable: this.nodes().some((node) => node.draggable()),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n add(...children) {\n if (this._elementsCreated) {\n Util.error('You cannot add external nodes to the Transformer. Use tr.nodes([node]) instead.');\n return this;\n }\n return super.add(...children);\n }\n toObject() {\n return Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n_registerNode(Transformer);\nFactory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory.addGetterSetter(Transformer, 'flipEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorAngle', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderDash');\nFactory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Wedge extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Wedge);\nFactory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'clockwise', false);\nFactory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let p, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (let i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (let y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (let i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (let x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n let yp = width;\n for (let i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nexport const Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nFactory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nFactory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\n","export const Brightness = function (imageData) {\n const brightness = this.brightness(), data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = Math.min(255, data[i] * brightness);\n data[i + 1] = Math.min(255, data[i + 1] * brightness);\n data[i + 2] = Math.min(255, data[i + 2] * brightness);\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nFactory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Emboss = function (imageData) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const data = imageData.data;\n const w = imageData.width;\n const h = imageData.height;\n const strength01 = Math.min(1, Math.max(0, (_b = (_a = this.embossStrength) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : 0.5));\n const whiteLevel01 = Math.min(1, Math.max(0, (_d = (_c = this.embossWhiteLevel) === null || _c === void 0 ? void 0 : _c.call(this)) !== null && _d !== void 0 ? _d : 0.5));\n const directionMap = {\n 'top-left': 315,\n top: 270,\n 'top-right': 225,\n right: 180,\n 'bottom-right': 135,\n bottom: 90,\n 'bottom-left': 45,\n left: 0,\n };\n const directionDeg = (_g = directionMap[(_f = (_e = this.embossDirection) === null || _e === void 0 ? void 0 : _e.call(this)) !== null && _f !== void 0 ? _f : 'top-left']) !== null && _g !== void 0 ? _g : 315;\n const blend = !!((_j = (_h = this.embossBlend) === null || _h === void 0 ? void 0 : _h.call(this)) !== null && _j !== void 0 ? _j : false);\n const strength = strength01 * 10;\n const bias = whiteLevel01 * 255;\n const dirRad = (directionDeg * Math.PI) / 180;\n const cx = Math.cos(dirRad);\n const cy = Math.sin(dirRad);\n const SCALE = (128 / 1020) * strength;\n const src = new Uint8ClampedArray(data);\n const lum = new Float32Array(w * h);\n for (let p = 0, i = 0; i < data.length; i += 4, p++) {\n lum[p] = 0.2126 * src[i] + 0.7152 * src[i + 1] + 0.0722 * src[i + 2];\n }\n const Gx = [-1, 0, 1, -2, 0, 2, -1, 0, 1];\n const Gy = [-1, -2, -1, 0, 0, 0, 1, 2, 1];\n const OFF = [-w - 1, -w, -w + 1, -1, 0, 1, w - 1, w, w + 1];\n const clamp8 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);\n for (let y = 1; y < h - 1; y++) {\n for (let x = 1; x < w - 1; x++) {\n const p = y * w + x;\n let sx = 0, sy = 0;\n sx += lum[p + OFF[0]] * Gx[0];\n sy += lum[p + OFF[0]] * Gy[0];\n sx += lum[p + OFF[1]] * Gx[1];\n sy += lum[p + OFF[1]] * Gy[1];\n sx += lum[p + OFF[2]] * Gx[2];\n sy += lum[p + OFF[2]] * Gy[2];\n sx += lum[p + OFF[3]] * Gx[3];\n sy += lum[p + OFF[3]] * Gy[3];\n sx += lum[p + OFF[5]] * Gx[5];\n sy += lum[p + OFF[5]] * Gy[5];\n sx += lum[p + OFF[6]] * Gx[6];\n sy += lum[p + OFF[6]] * Gy[6];\n sx += lum[p + OFF[7]] * Gx[7];\n sy += lum[p + OFF[7]] * Gy[7];\n sx += lum[p + OFF[8]] * Gx[8];\n sy += lum[p + OFF[8]] * Gy[8];\n const r = cx * sx + cy * sy;\n const outGray = clamp8(bias + r * SCALE);\n const o = p * 4;\n if (blend) {\n const delta = outGray - bias;\n data[o] = clamp8(src[o] + delta);\n data[o + 1] = clamp8(src[o + 1] + delta);\n data[o + 2] = clamp8(src[o + 2] + delta);\n data[o + 3] = src[o + 3];\n }\n else {\n data[o] = data[o + 1] = data[o + 2] = outGray;\n data[o + 3] = src[o + 3];\n }\n }\n }\n for (let x = 0; x < w; x++) {\n let oTop = x * 4, oBot = ((h - 1) * w + x) * 4;\n data[oTop] = src[oTop];\n data[oTop + 1] = src[oTop + 1];\n data[oTop + 2] = src[oTop + 2];\n data[oTop + 3] = src[oTop + 3];\n data[oBot] = src[oBot];\n data[oBot + 1] = src[oBot + 1];\n data[oBot + 2] = src[oBot + 2];\n data[oBot + 3] = src[oBot + 3];\n }\n for (let y = 1; y < h - 1; y++) {\n let oL = y * w * 4, oR = (y * w + (w - 1)) * 4;\n data[oL] = src[oL];\n data[oL + 1] = src[oL + 1];\n data[oL + 2] = src[oL + 2];\n data[oL + 3] = src[oL + 3];\n data[oR] = src[oR];\n data[oR + 1] = src[oR + 1];\n data[oR + 2] = src[oR + 2];\n data[oR + 3] = src[oR + 3];\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossDirection', 'top-left', undefined, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, undefined, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nexport const Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rGoalMax, rGoalMin, gGoalMax, gGoalMin, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n const rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n const gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n const bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nFactory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n","export const Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\nexport const HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\n","export const Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nexport const Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nFactory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n ];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nexport const Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nFactory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Util } from \"../Util.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), data = imageData.data;\n if (pixelSize <= 0) {\n Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (let xBin = 0; xBin < nBinsX; xBin += 1) {\n for (let yBin = 0; yBin < nBinsY; yBin += 1) {\n let red = 0;\n let green = 0;\n let blue = 0;\n let alpha = 0;\n const xBinStart = xBin * pixelSize;\n const xBinEnd = xBinStart + pixelSize;\n const yBinStart = yBin * pixelSize;\n const yBinEnd = yBinStart + pixelSize;\n let pixelsInBin = 0;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nFactory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nFactory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","export const Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\n","export const Solarize = function (imageData) {\n const threshold = 128;\n const d = imageData.data;\n for (let i = 0; i < d.length; i += 4) {\n const r = d[i], g = d[i + 1], b = d[i + 2];\n const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n if (L >= threshold) {\n d[i] = 255 - r;\n d[i + 1] = 255 - g;\n d[i + 2] = 255 - b;\n }\n }\n return imageData;\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nFactory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Konva as Core } from \"./_CoreInternals.js\";\nimport { Arc } from \"./shapes/Arc.js\";\nimport { Arrow } from \"./shapes/Arrow.js\";\nimport { Circle } from \"./shapes/Circle.js\";\nimport { Ellipse } from \"./shapes/Ellipse.js\";\nimport { Image } from \"./shapes/Image.js\";\nimport { Label, Tag } from \"./shapes/Label.js\";\nimport { Line } from \"./shapes/Line.js\";\nimport { Path } from \"./shapes/Path.js\";\nimport { Rect } from \"./shapes/Rect.js\";\nimport { RegularPolygon } from \"./shapes/RegularPolygon.js\";\nimport { Ring } from \"./shapes/Ring.js\";\nimport { Sprite } from \"./shapes/Sprite.js\";\nimport { Star } from \"./shapes/Star.js\";\nimport { Text } from \"./shapes/Text.js\";\nimport { TextPath } from \"./shapes/TextPath.js\";\nimport { Transformer } from \"./shapes/Transformer.js\";\nimport { Wedge } from \"./shapes/Wedge.js\";\nimport { Blur } from \"./filters/Blur.js\";\nimport { Brighten } from \"./filters/Brighten.js\";\nimport { Brightness } from \"./filters/Brightness.js\";\nimport { Contrast } from \"./filters/Contrast.js\";\nimport { Emboss } from \"./filters/Emboss.js\";\nimport { Enhance } from \"./filters/Enhance.js\";\nimport { Grayscale } from \"./filters/Grayscale.js\";\nimport { HSL } from \"./filters/HSL.js\";\nimport { HSV } from \"./filters/HSV.js\";\nimport { Invert } from \"./filters/Invert.js\";\nimport { Kaleidoscope } from \"./filters/Kaleidoscope.js\";\nimport { Mask } from \"./filters/Mask.js\";\nimport { Noise } from \"./filters/Noise.js\";\nimport { Pixelate } from \"./filters/Pixelate.js\";\nimport { Posterize } from \"./filters/Posterize.js\";\nimport { RGB } from \"./filters/RGB.js\";\nimport { RGBA } from \"./filters/RGBA.js\";\nimport { Sepia } from \"./filters/Sepia.js\";\nimport { Solarize } from \"./filters/Solarize.js\";\nimport { Threshold } from \"./filters/Threshold.js\";\nexport const Konva = Core.Util._assign(Core, {\n Arc,\n Arrow,\n Circle,\n Ellipse,\n Image,\n Label,\n Tag,\n Line,\n Path,\n Rect,\n RegularPolygon,\n Ring,\n Sprite,\n Star,\n Text,\n TextPath,\n Transformer,\n Wedge,\n Filters: {\n Blur,\n Brightness,\n Brighten,\n Contrast,\n Emboss,\n Enhance,\n Grayscale,\n HSL,\n HSV,\n Invert,\n Kaleidoscope,\n Mask,\n Noise,\n Pixelate,\n Posterize,\n RGB,\n RGBA,\n Sepia,\n Solarize,\n Threshold,\n },\n});\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.EmojiMart=t():e.EmojiMart=t()}(\"undefined\"!=typeof self?self:this,(function(){return function(){var e={537:function(){\"undefined\"!=typeof window&&function(){for(var e=0,t=[\"ms\",\"moz\",\"webkit\",\"o\"],i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}(Object.getOwnPropertyNames(e));try{for(i.s();!(t=i.n()).done;){var n=t.value,r=e[n];e[n]=r&&\"object\"===u(r)?d(r):r}}catch(e){i.e(e)}finally{i.f()}return Object.freeze(e)}var f,v,p=function(e){if(!e.compressed)return e;for(var t in e.compressed=!1,e.emojis){var i=e.emojis[t];for(var n in h)i[n]=i[h[n]],delete i[h[n]];i.short_names||(i.short_names=[]),i.short_names.unshift(t),i.sheet_x=i.sheet[0],i.sheet_y=i.sheet[1],delete i.sheet,i.text||(i.text=\"\"),i.added_in||(i.added_in=6),i.added_in=i.added_in.toFixed(1),i.search=m(i)}return d(e)},j=[\"+1\",\"grinning\",\"kissing_heart\",\"heart_eyes\",\"laughing\",\"stuck_out_tongue_winking_eye\",\"sweat_smile\",\"joy\",\"scream\",\"disappointed\",\"unamused\",\"weary\",\"sob\",\"sunglasses\",\"heart\",\"hankey\"],g={};function y(){v=!0,f=c.get(\"frequently\")}var w={add:function(e){v||y();var t=e.id;f||(f=g),f[t]||(f[t]=0),f[t]+=1,c.set(\"last\",t),c.set(\"frequently\",f)},get:function(e){if(v||y(),!f){g={};for(var t=[],i=Math.min(e,j.length),n=0;n',custom:'',flags:'',foods:'',nature:'',objects:'',smileys:'',people:'',places:'',recent:'',symbols:''};function b(e,t,i,n,r,o,s,a){var c,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=c):r&&(c=a?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:u}}var C=b({props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default:function(){return{}}}},emits:[\"click\"],created:function(){this.svgs=_}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-anchors\",attrs:{role:\"tablist\"}},e._l(e.categories,(function(i){return t(\"button\",{key:i.id,class:{\"emoji-mart-anchor\":!0,\"emoji-mart-anchor-selected\":i.id==e.activeCategory.id},style:{color:i.id==e.activeCategory.id?e.color:\"\"},attrs:{role:\"tab\",type:\"button\",\"aria-label\":i.name,\"aria-selected\":i.id==e.activeCategory.id,\"data-title\":e.i18n.categories[i.id]},on:{click:function(t){return e.$emit(\"click\",i)}}},[t(\"div\",{attrs:{\"aria-hidden\":\"true\"},domProps:{innerHTML:e._s(e.svgs[i.id])}}),e._v(\" \"),t(\"span\",{staticClass:\"emoji-mart-anchor-bar\",style:{backgroundColor:e.color},attrs:{\"aria-hidden\":\"true\"}})])})),0)}),[],!1,null,null,null),k=C.exports;function E(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function S(e){var t=function(e,t){if(\"object\"!=u(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,\"string\");if(\"object\"!=u(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"==u(t)?t:t+\"\"}function x(e,t){for(var i=0;i1114111||Math.floor(s)!=s)throw RangeError(\"Invalid code point: \"+s);s<=65535?i.push(s):(e=55296+((s-=65536)>>10),t=s%1024+56320,i.push(e,t)),(n+1===r||i.length>16384)&&(o+=String.fromCharCode.apply(null,i),i.length=0)}return o};function A(e){var t=e.split(\"-\").map((function(e){return\"0x\".concat(e)}));return P.apply(null,t)}function M(e){return e.reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[])}function I(e,t){var i=M(e),n=M(t);return i.filter((function(e){return n.indexOf(e)>=0}))}function F(e,t){var i={};for(var n in e){var r=e[n],o=r;Object.prototype.hasOwnProperty.call(t,n)&&(o=t[n]),\"object\"===u(o)&&(o=F(r,o)),i[n]=o}return i}function z(e,t){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if(\"string\"==typeof e)return L(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?L(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},n=i.emojisToShowFilter,r=i.include,o=i.exclude,s=i.custom,a=i.recent,c=i.recentLength,u=void 0===c?20:c;E(this,e),this._data=p(t),this._emojisFilter=n||null,this._include=r||null,this._exclude=o||null,this._custom=s||[],this._recent=a||w.get(u),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:\"recent\",name:\"Recent\",emojis:[]},this._customCategory={id:\"custom\",name:\"Custom\",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}),[{key:\"buildIndex\",value:function(){var e=this,t=this._data.categories;if(this._include&&(t=(t=t.filter((function(t){return e._include.includes(t.id)}))).sort((function(t,i){var n=e._include.indexOf(t.id),r=e._include.indexOf(i.id);return nr?1:0}))),t.forEach((function(t){if(e.isCategoryNeeded(t.id)){var i={id:t.id,name:t.name,emojis:[]};t.emojis.forEach((function(t){var n=e.addEmoji(t);n&&i.emojis.push(n)})),i.emojis.length&&e._categories.push(i)}})),this.isCategoryNeeded(\"custom\")){if(this._custom.length>0){var i,n=z(this._custom);try{for(n.s();!(i=n.n()).done;){var r=i.value;this.addCustomEmoji(r)}}catch(e){n.e(e)}finally{n.f()}}this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded(\"recent\")&&(this._recent.length&&this._recent.map((function(t){var i,n=z(e._customCategory.emojis);try{for(n.s();!(i=n.n()).done;){var r=i.value;if(r.id===t)return void e._recentCategory.emojis.push(r)}}catch(e){n.e(e)}finally{n.f()}e.hasEmoji(t)&&e._recentCategory.emojis.push(e.emoji(t))})),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}},{key:\"findEmoji\",value:function(e,t){var i=e.match(T);if(i&&(e=i[1],i[2]&&(t=parseInt(i[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){var n=this._emojis[e];return t?n.getSkin(t):n}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"categories\",value:function(){return this._categories}},{key:\"emoji\",value:function(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);var t=this._emojis[e];if(!t)throw new Error(\"Can not find emoji by id: \"+e);return t}},{key:\"firstEmoji\",value:function(){var e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error(\"Can not get first emoji\");return e}},{key:\"hasEmoji\",value:function(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}},{key:\"nativeEmoji\",value:function(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"search\",value:function(e,t){var i=this;if(t||(t=75),!e.length)return null;if(\"-\"==e||\"-1\"==e)return[this.emoji(\"-1\")];var n,r=e.toLowerCase().split(/[\\s|,|\\-|_]+/);r.length>2&&(r=[r[0],r[1]]),n=r.map((function(e){for(var t=i._emojis,n=i._searchIndex,r=0,o=function(){var i=e[s];if(r++,n[i]||(n[i]={}),!(n=n[i]).results){var o={};for(var a in n.results=[],n.emojis={},t){var c=t[a],u=c._data.search,l=e.substr(0,r),h=u.indexOf(l);if(-1!=h){var m=h+1;l==a&&(m=0),n.results.push(c),n.emojis[a]=c,o[a]=m}}n.results.sort((function(e,t){return o[e.id]-o[t.id]}))}t=n.emojis},s=0;s1?I.apply(null,n):n.length?n[0]:[])&&o.length>t&&(o=o.slice(0,t)),o}},{key:\"addCustomEmoji\",value:function(e){var t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=m(t));var i=new N(t);return this._emojis[i.id]=i,this._customCategory.emojis.push(i),i}},{key:\"addEmoji\",value:function(e){var t=this,i=this._data.emojis[e];if(!this.isEmojiNeeded(i))return!1;var n=new N(i);if(this._emojis[e]=n,n.native&&(this._nativeEmojis[n.native]=n),n._skins)for(var r in n._skins){var o=n._skins[r];o.native&&(this._nativeEmojis[o.native]=o)}return n.emoticons&&n.emoticons.forEach((function(i){t._emoticons[i]||(t._emoticons[i]=e)})),n}},{key:\"isCategoryNeeded\",value:function(e){var t=!this._include||!this._include.length||this._include.indexOf(e)>-1,i=!(!this._exclude||!this._exclude.length)&&this._exclude.indexOf(e)>-1;return!(!t||i)}},{key:\"isEmojiNeeded\",value:function(e){return!this._emojisFilter||this._emojisFilter(e)}}])}(),N=function(){return O((function e(t){if(E(this,e),this._data=Object.assign({},t),this._skins=null,this._data.skin_variations)for(var i in this._skins=[],q){var n=q[i],r=this._data.skin_variations[n],o=Object.assign({},t);for(var s in r)o[s]=r[s];delete o.skin_variations,o.skin_tone=parseInt(i)+1,this._skins.push(new e(o))}for(var a in this._sanitized=D(this._data),this._sanitized)this[a]=this._sanitized[a];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}),[{key:\"getSkin\",value:function(e){return e&&\"native\"!=e&&this._skins?this._skins[e-1]:this}},{key:\"getPosition\",value:function(){var e=+(100/60*this._data.sheet_x).toFixed(2),t=+(100/60*this._data.sheet_y).toFixed(2);return\"\".concat(e,\"% \").concat(t,\"%\")}},{key:\"ariaLabel\",value:function(){return[this.native].concat(this.short_names).filter(Boolean).join(\", \")}}])}(),$=function(){return O((function e(t,i,n,r,o,s,a){E(this,e),this._emoji=t,this._native=r,this._skin=i,this._set=n,this._fallback=o,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=!0===s?t.short_name:null,this.ariaLabel=t.ariaLabel(),Object.freeze(this)}),[{key:\"getEmoji\",value:function(){return this._emoji.getSkin(this._skin)}},{key:\"_canRender\",value:function(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}},{key:\"_cssClass\",value:function(){return[\"emoji-set-\"+this._set,\"emoji-type-\"+this._emojiType()]}},{key:\"_cssStyle\",value:function(e){var t={};return this._isCustom()?t={backgroundImage:\"url(\"+this.getEmoji()._data.imageUrl+\")\",backgroundSize:\"100%\",width:e+\"px\",height:e+\"px\"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(t=this._isNative()?Object.assign(t,{fontSize:Math.round(.95*e*10)/10+\"px\"}):Object.assign(t,{width:e+\"px\",height:e+\"px\"})),t}},{key:\"_content\",value:function(){return this._isCustom()?\"\":this._isNative()?this.getEmoji().native:this._hasEmoji()?\"\":this._fallback?this._fallback(this.getEmoji()):null}},{key:\"_isNative\",value:function(){return this._native}},{key:\"_isCustom\",value:function(){return this.getEmoji().custom}},{key:\"_hasEmoji\",value:function(){if(!this.getEmoji()._data)return!1;var e=this.getEmoji()._data[\"has_img_\"+this._set];return void 0===e||e}},{key:\"_emojiType\",value:function(){return this._isCustom()?\"custom\":this._isNative()?\"native\":this._hasEmoji()?\"image\":\"fallback\"}}])}();function D(e){var t=e.name,i=e.short_names,n=e.skin_tone,r=e.skin_variations,o=e.emoticons,s=e.unified,a=e.custom,c=e.imageUrl,u=e.id||i[0],l=\":\".concat(u,\":\");return a?{id:u,name:t,colons:l,emoticons:o,custom:a,imageUrl:c}:(n&&(l+=\":skin-tone-\".concat(n,\":\")),{id:u,name:t,colons:l,emoticons:o,unified:s.toLowerCase(),skin:n||(r?1:null),native:A(s)})}function B(e,t,i){return(t=S(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var H={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:\"apple\"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:\"span\"}},U={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:\"Emoji Mart™\"},emoji:{type:String,default:\"department_store\"},color:{type:String,default:\"#ae65c5\"},set:{type:String,default:\"apple\"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default:function(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default:function(){return{}}}};function V(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function W(e){for(var t=1;t0},emojiObjects:function(){var e=this;return this.emojis.map((function(t){return{emojiObject:t,emojiView:new $(t,e.emojiProps.skin,e.emojiProps.set,e.emojiProps.native,e.emojiProps.fallback,e.emojiProps.emojiTooltip,e.emojiProps.emojiSize)}}))}},components:{Emoji:J}},(function(){var e=this,t=e._self._c;return e.isVisible&&(e.isSearch||e.hasResults)?t(\"section\",{class:{\"emoji-mart-category\":!0,\"emoji-mart-no-results\":!e.hasResults},attrs:{\"aria-label\":e.i18n.categories[e.id]}},[t(\"div\",{staticClass:\"emoji-mart-category-label\"},[t(\"h3\",{staticClass:\"emoji-mart-category-label\"},[e._v(e._s(e.i18n.categories[e.id]))])]),e._v(\" \"),e._l(e.emojiObjects,(function(i){var n=i.emojiObject,r=i.emojiView;return[r.canRender?t(\"button\",{key:n.id,staticClass:\"emoji-mart-emoji\",class:e.activeClass(n),attrs:{\"aria-label\":r.ariaLabel,role:\"option\",\"aria-selected\":\"false\",\"aria-posinset\":\"1\",\"aria-setsize\":\"1812\",type:\"button\",\"data-title\":n.short_name,title:r.title},on:{mouseenter:function(t){e.emojiProps.onEnter(r.getEmoji())},mouseleave:function(t){e.emojiProps.onLeave(r.getEmoji())},click:function(t){e.emojiProps.onClick(r.getEmoji())}}},[t(\"span\",{class:r.cssClass,style:r.cssStyle},[e._v(e._s(r.content))])]):e._e()]})),e._v(\" \"),e.hasResults?e._e():t(\"div\",[t(\"emoji\",{attrs:{data:e.data,emoji:\"sleuth_or_spy\",native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}}),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-no-results-label\"},[e._v(e._s(e.i18n.notfound))])],1)],2):e._e()}),[],!1,null,null,null).exports,Z=b({props:{skin:{type:Number,required:!0}},emits:[\"change\"],data:function(){return{opened:!1}},methods:{onClick:function(e){this.opened&&e!=this.skin&&this.$emit(\"change\",e),this.opened=!this.opened}}},(function(){var e=this,t=e._self._c;return t(\"div\",{class:{\"emoji-mart-skin-swatches\":!0,\"emoji-mart-skin-swatches-opened\":e.opened}},e._l(6,(function(i){return t(\"span\",{key:i,class:{\"emoji-mart-skin-swatch\":!0,\"emoji-mart-skin-swatch-selected\":e.skin==i}},[t(\"span\",{class:\"emoji-mart-skin emoji-mart-skin-tone-\"+i,on:{click:function(t){return e.onClick(i)}}})])})),0)}),[],!1,null,null,null).exports,G=b({props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData:function(){return this.emoji?this.emoji:{}},emojiShortNames:function(){return this.emojiData.short_names},emojiEmoticons:function(){return this.emojiData.emoticons}},components:{Emoji:J,Skins:Z}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-preview\"},[e.emoji?[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.emoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"div\",{staticClass:\"emoji-mart-preview-name\"},[e._v(e._s(e.emoji.name))]),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-shortnames\"},e._l(e.emojiShortNames,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-shortname\"},[e._v(\":\"+e._s(i)+\":\")])})),0),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-emoticons\"},e._l(e.emojiEmoticons,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-emoticon\"},[e._v(e._s(i))])})),0)])]:[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.idleEmoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"span\",{staticClass:\"emoji-mart-title-label\"},[e._v(e._s(e.title))])]),e._v(\" \"),e.showSkinTones?t(\"div\",{staticClass:\"emoji-mart-preview-skins\"},[t(\"skins\",{attrs:{skin:e.skinProps.skin},on:{change:function(t){return e.onSkinChange(t)}}})],1):e._e()]],2)}),[],!1,null,null,null).exports,K=b({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:[\"search\",\"enter\",\"arrowUp\",\"arrowDown\",\"arrowRight\",\"arrowLeft\"],data:function(){return{value:\"\"}},computed:{emojiIndex:function(){return this.data}},watch:{value:function(){this.$emit(\"search\",this.value)}},methods:{clear:function(){this.value=\"\"}},mounted:function(){var e=this.$el.querySelector(\"input\");this.autoFocus&&e.focus()}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-search\"},[t(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.value,expression:\"value\"}],attrs:{type:\"text\",placeholder:e.i18n.search,role:\"textbox\",\"aria-autocomplete\":\"list\",\"aria-owns\":\"emoji-mart-list\",\"aria-label\":\"Search for an emoji\",\"aria-describedby\":\"emoji-mart-search-description\"},domProps:{value:e.value},on:{keydown:[function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"left\",37,t.key,[\"Left\",\"ArrowLeft\"])||\"button\"in t&&0!==t.button?null:function(t){return e.$emit(\"arrowLeft\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"right\",39,t.key,[\"Right\",\"ArrowRight\"])||\"button\"in t&&2!==t.button?null:function(){return e.$emit(\"arrowRight\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?null:function(){return e.$emit(\"arrowDown\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?null:function(t){return e.$emit(\"arrowUp\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?null:function(){return e.$emit(\"enter\")}.apply(null,arguments)}],input:function(t){t.target.composing||(e.value=t.target.value)}}}),e._v(\" \"),t(\"span\",{staticClass:\"hidden\",attrs:{id:\"emoji-picker-search-description\"}},[e._v(\"Use the left, right, up and down arrow keys to navigate the emoji search\\n results.\")])])}),[],!1,null,null,null),Q=K.exports;function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i0})),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}),[{key:\"onScroll\",value:function(){var e=this._vm.$refs.scroll;if(e){for(var t=e.scrollTop,i=this.filteredCategories[0],n=0,r=this.filteredCategories.length;nt)break;i=o}this.activeCategory=i}}},{key:\"allCategories\",get:function(){return this._categories}},{key:\"filteredCategories\",get:function(){return this.searchEmojis?[{id:\"search\",name:\"Search\",emojis:this.searchEmojis}]:this._categories.filter((function(e){return e.emojis.length>0}))}},{key:\"previewEmojiCategory\",get:function(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}},{key:\"onAnchorClick\",value:function(e){var t=this;if(!this.searchEmojis){var i=this.filteredCategories.indexOf(e),n=this._vm.getCategoryComponent(i);this._vm.infiniteScroll?function(){if(n){var i=n.$el.offsetTop;e.first&&(i=0),t._vm.$refs.scroll.scrollTop=i}}():this.activeCategory=this.filteredCategories[i]}}},{key:\"onSearch\",value:function(e){var t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}},{key:\"onEmojiEnter\",value:function(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}},{key:\"onEmojiLeave\",value:function(e){this.previewEmoji=null}},{key:\"onArrowLeft\",value:function(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}},{key:\"onArrowRight\",value:function(){this.previewEmojiIdx=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}},{key:\"onArrowDown\",value:function(){if(-1==this.previewEmojiIdx)return this.onArrowRight();var e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length,t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(var i=0;i0?this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:0);for(var t=0;tn+t.scrollTop&&(t.scrollTop+=i.offsetHeight),i&&i.offsetTop {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiOrEmojiData) {\n let emojiData;\n if (typeof emojiOrEmojiData === \"string\") {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n emojiData = emojiIndex.findEmoji(emojiOrEmojiData);\n } else {\n emojiData = emojiOrEmojiData;\n }\n if (emojiData && \"id\" in emojiData) {\n frequently.add(emojiData);\n }\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiSearch as a,\n emojiAddRecent as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji.mjs.map\n","var NAMESPACE = 'emoji-mart'\n\nconst _JSON = JSON\n\nvar isLocalStorageSupported =\n typeof window !== 'undefined' && 'localStorage' in window\n\nlet getter\nlet setter\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {})\n\n getter = handlers.getter\n setter = handlers.setter\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace\n}\n\nfunction update(state) {\n for (let key in state) {\n let value = state[key]\n set(key, value)\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value)\n } else {\n if (!isLocalStorageSupported) return\n try {\n window.localStorage[`${NAMESPACE}.${key}`] = _JSON.stringify(value)\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key)\n } else {\n if (!isLocalStorageSupported) return\n try {\n var value = window.localStorage[`${NAMESPACE}.${key}`]\n } catch (e) {\n return\n }\n\n if (value) {\n return JSON.parse(value)\n }\n }\n}\n\nexport default { update, set, get, setNamespace, setHandlers }\n","const mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o',\n}\n\nconst buildSearch = (emoji) => {\n const search = []\n\n var addToSearch = (strings, split) => {\n if (!strings) {\n return\n }\n\n ;(Array.isArray(strings) ? strings : [strings]).forEach((string) => {\n ;(split ? string.split(/[-|_|\\s]+/) : [string]).forEach((s) => {\n s = s.toLowerCase()\n\n if (search.indexOf(s) == -1) {\n search.push(s)\n }\n })\n })\n }\n\n addToSearch(emoji.short_names, true)\n addToSearch(emoji.name, true)\n addToSearch(emoji.keywords, false)\n addToSearch(emoji.emoticons, false)\n\n return search.join(',')\n}\n\nfunction deepFreeze(object) {\n // Retrieve the property names defined on object\n var propNames = Object.getOwnPropertyNames(object)\n\n // Freeze properties before freezing self\n for (let name of propNames) {\n let value = object[name]\n object[name] =\n value && typeof value === 'object' ? deepFreeze(value) : value\n }\n return Object.freeze(object)\n}\n\nconst uncompress = (data) => {\n if (!data.compressed) {\n return data\n }\n data.compressed = false\n\n for (let id in data.emojis) {\n let emoji = data.emojis[id]\n\n for (let key in mapping) {\n emoji[key] = emoji[mapping[key]]\n delete emoji[mapping[key]]\n }\n\n if (!emoji.short_names) emoji.short_names = []\n emoji.short_names.unshift(id)\n\n emoji.sheet_x = emoji.sheet[0]\n emoji.sheet_y = emoji.sheet[1]\n delete emoji.sheet\n\n if (!emoji.text) emoji.text = ''\n\n if (!emoji.added_in) emoji.added_in = 6\n emoji.added_in = emoji.added_in.toFixed(1)\n\n emoji.search = buildSearch(emoji)\n }\n data = deepFreeze(data)\n return data\n}\n\nexport { buildSearch, uncompress }\n","import store from './store'\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'scream',\n 'disappointed',\n 'unamused',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'hankey',\n]\n\nlet frequently, initialized\nlet defaults = {}\n\nfunction init() {\n initialized = true\n frequently = store.get('frequently')\n}\n\nfunction add(emoji) {\n if (!initialized) init()\n var { id } = emoji\n\n frequently || (frequently = defaults)\n frequently[id] || (frequently[id] = 0)\n frequently[id] += 1\n\n store.set('last', id)\n store.set('frequently', frequently)\n}\n\nfunction get(maxNumber) {\n if (!initialized) init()\n if (!frequently) {\n defaults = {}\n\n const result = []\n\n let defaultLength = Math.min(maxNumber, DEFAULTS.length)\n for (let i = 0; i < defaultLength; i++) {\n defaults[DEFAULTS[i]] = parseInt((defaultLength - i) / 4, 10) + 1\n result.push(DEFAULTS[i])\n }\n\n return result\n }\n\n const quantity = maxNumber\n const frequentlyKeys = []\n\n for (let key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key)\n }\n }\n\n const sorted = frequentlyKeys\n .sort((a, b) => frequently[a] - frequently[b])\n .reverse()\n const sliced = sorted.slice(0, quantity)\n\n const last = store.get('last')\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop()\n sliced.push(last)\n }\n\n return sliced\n}\n\nexport default { add, get }\n","const SVGs = {\n activity: ``,\n\n custom: ``,\n\n flags: ``,\n\n foods: ``,\n\n nature: ``,\n\n objects: ``,\n\n smileys: ``,\n\n people: ``,\n\n places: ``,\n\n recent: ``,\n\n symbols: ``,\n}\n\nexport default SVGs\n","\n
\n \n
\n\n\n\n","const _String = String\n\nexport default _String.fromCodePoint ||\n function stringFromCodePoint() {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n","import stringFromCodePoint from '../polyfills/stringFromCodePoint'\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map((u) => `0x${u}`)\n\n return stringFromCodePoint.apply(null, codePoints)\n}\n\nfunction uniq(arr) {\n return arr.reduce((acc, item) => {\n if (acc.indexOf(item) === -1) {\n acc.push(item)\n }\n return acc\n }, [])\n}\n\nfunction intersect(a, b) {\n const uniqA = uniq(a)\n const uniqB = uniq(b)\n\n return uniqA.filter((item) => uniqB.indexOf(item) >= 0)\n}\n\nfunction deepMerge(a, b) {\n var o = {}\n\n for (let key in a) {\n let originalValue = a[key],\n value = originalValue\n\n if (Object.prototype.hasOwnProperty.call(b, key)) {\n value = b[key]\n }\n\n if (typeof value === 'object') {\n value = deepMerge(originalValue, value)\n }\n\n o[key] = value\n }\n\n return o\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0\n const div = document.createElement('div')\n\n div.style.width = '100px'\n div.style.height = '100px'\n div.style.overflow = 'scroll'\n div.style.position = 'absolute'\n div.style.top = '-9999px'\n\n document.body.appendChild(div)\n const scrollbarWidth = div.offsetWidth - div.clientWidth\n document.body.removeChild(div)\n\n return scrollbarWidth\n}\n\nexport { uniq, intersect, deepMerge, unifiedToNative, measureScrollbar }\n","import { intersect, unifiedToNative } from './index'\nimport { uncompress, buildSearch } from './data'\nimport frequently from './frequently'\n\nconst SHEET_COLUMNS = 61\nconst COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/\n// Skin tones\nconst SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF']\n\n/**\n * Emoji data structure:\n * {\n * \"compressed\": false,\n * \"aliases\": {\n * collision: \"boom\"\n * cooking: \"fried_egg\"\n * envelope: \"email\"\n * face_with_finger_covering_closed_lips: \"shushing_face\"\n * ...\n * },\n * \"categories\": [ {\n * id: \"people\",\n * name: \"Smileys & Emotion\",\n * emojis: [ \"grinning\", \"grin\", \"joy\", ... ]\n * }, {\n * id: \"nature\",\n * name: \"Animals & Nature\",\n * emojis: [ \"monkey_face\", \"money\", \"gorilla\", ... ]\n * },\n * ...\n * ],\n * \"emojis\": [\n * smiley: {\n * added_in: \"6.0\",\n * emoticons: [\"=)\", \"=-)\"],\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * keywords: [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\n * name: \"Smiling Face with Open Mouth\",\n * non_qualified: undefined,\n * search: \"smiley,smiling,face,with,open,mouth,happy,joy,haha,:d,:),smile,funny,=),=-)\",\n * sheet_x: 30,\n * sheet_y: 27,\n * short_names: [\"smiley\"],\n * text: \":)\",\n * unified: \"1F603\",\n * }, {\n * +1: { // emoji with skin_variations\n * ..., // all the regular fields are present\n * name: \"Thumbs Up Sign\",\n * short_names: (2) [\"+1\", \"thumbsup\"],\n * skin_variations: {\n * 1F3FB: // each variation has additional set of fields:\n * added_in: \"8.0\",\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * image: \"1f44d-1f3fb.png\",\n * non_qualified: null,\n * sheet_x: 14,\n * sheet_y: 50,\n * unified: \"1F44D-1F3FB\",\n * 1F3FB: {…},\n * 1F3FC: {…},\n * 1F3FD: {…},\n * 1F3FE: {…},\n * 1F3FF: {…}\n * },\n * ...\n * },\n * a: { // emoji with non_qualified field set\n * added_in: \"6.0\",\n * emoticons: undefined,\n * has_img_apple: true,\n * ...\n * non_qualified: \"1F170\",\n * unified: \"1F170-FE0F\",\n * },\n * ...\n * ]\n * }\n */\n\n/**\n * Wraps raw jason emoji data, serves as data source for\n * emoji picker components.\n *\n * Usage:\n *\n * import data from '../data/all.json'\n * let index = new EmojiIndex(data)\n *\n */\nexport class EmojiIndex {\n /**\n * Constructor.\n *\n * @param {object} data - Raw json data, see the structure above.\n * @param {object} options - additional options, as an object:\n * @param {Function} emojisToShowFilter - optional, function to filter out\n * some emojis, function(emoji) { return true|false }\n * where `emoji` is an raw emoji object, see data.emojis above.\n * @param {Array} include - optional, a list of category ids to include.\n * @param {Array} exclude - optional, a list of category ids to exclude.\n * @param {Array} custom - optional, a list custom emojis, each emoji is\n * an object, see data.emojis above for examples.\n */\n constructor(\n data,\n {\n emojisToShowFilter,\n include,\n exclude,\n custom,\n recent,\n recentLength = 20,\n } = {},\n ) {\n this._data = uncompress(data)\n // Callback to exclude specific emojis\n this._emojisFilter = emojisToShowFilter || null\n // Categories to include / exclude\n this._include = include || null\n this._exclude = exclude || null\n // Custom emojis\n this._custom = custom || []\n // Recent emojis\n // TODO: make parameter configurable\n this._recent = recent || frequently.get(recentLength)\n\n this._emojis = {}\n this._nativeEmojis = {}\n this._emoticons = {}\n\n this._categories = []\n this._recentCategory = { id: 'recent', name: 'Recent', emojis: [] }\n this._customCategory = { id: 'custom', name: 'Custom', emojis: [] }\n this._searchIndex = {}\n this.buildIndex()\n Object.freeze(this)\n }\n\n buildIndex() {\n let allCategories = this._data.categories\n\n if (this._include) {\n // Remove categories that are not in the include list.\n allCategories = allCategories.filter((item) => {\n return this._include.includes(item.id)\n })\n // Sort categories according to the include list.\n allCategories = allCategories.sort((a, b) => {\n const indexA = this._include.indexOf(a.id)\n const indexB = this._include.indexOf(b.id)\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n return 0\n })\n }\n\n allCategories.forEach((categoryData) => {\n if (!this.isCategoryNeeded(categoryData.id)) {\n return\n }\n let category = {\n id: categoryData.id,\n name: categoryData.name,\n emojis: [],\n }\n categoryData.emojis.forEach((emojiId) => {\n let emoji = this.addEmoji(emojiId)\n if (emoji) {\n category.emojis.push(emoji)\n }\n })\n if (category.emojis.length) {\n this._categories.push(category)\n }\n })\n\n if (this.isCategoryNeeded('custom')) {\n if (this._custom.length > 0) {\n for (let customEmoji of this._custom) {\n this.addCustomEmoji(customEmoji)\n }\n }\n if (this._customCategory.emojis.length) {\n this._categories.push(this._customCategory)\n }\n }\n\n if (this.isCategoryNeeded('recent')) {\n if (this._recent.length) {\n this._recent.map((id) => {\n for (let customEmoji of this._customCategory.emojis) {\n if (customEmoji.id === id) {\n this._recentCategory.emojis.push(customEmoji)\n return\n }\n }\n if (this.hasEmoji(id)) {\n this._recentCategory.emojis.push(this.emoji(id))\n }\n return\n })\n }\n // Add recent category to the top\n if (this._recentCategory.emojis.length) {\n this._categories.unshift(this._recentCategory)\n }\n }\n }\n\n /**\n * Find the emoji from the string\n */\n findEmoji(emoji, skin) {\n // 1. Parse as :emoji_name:skin-tone-xx:\n let matches = emoji.match(COLONS_REGEX)\n\n if (matches) {\n emoji = matches[1]\n if (matches[2]) {\n skin = parseInt(matches[2], 10)\n }\n }\n\n // 2. Check if the specified emoji is an alias\n if (this._data.aliases.hasOwnProperty(emoji)) {\n emoji = this._data.aliases[emoji]\n }\n\n // 3. Check if we have the specified emoji\n if (this._emojis.hasOwnProperty(emoji)) {\n let emojiObject = this._emojis[emoji]\n if (skin) {\n return emojiObject.getSkin(skin)\n }\n return emojiObject\n }\n\n // 4. Check if we have the specified native emoji\n if (this._nativeEmojis.hasOwnProperty(emoji)) {\n return this._nativeEmojis[emoji]\n }\n return null\n }\n\n categories() {\n return this._categories\n }\n\n emoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n let emoji = this._emojis[emojiId]\n if (!emoji) {\n throw new Error('Can not find emoji by id: ' + emojiId)\n }\n return emoji\n }\n\n firstEmoji() {\n let emoji = this._emojis[Object.keys(this._emojis)[0]]\n if (!emoji) {\n throw new Error('Can not get first emoji')\n }\n return emoji\n }\n\n hasEmoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n if (this._emojis[emojiId]) {\n return true\n }\n return false\n }\n\n nativeEmoji(unicodeEmoji) {\n if (this._nativeEmojis.hasOwnProperty(unicodeEmoji)) {\n return this._nativeEmojis[unicodeEmoji]\n }\n return null\n }\n\n search(value, maxResults) {\n maxResults || (maxResults = 75)\n if (!value.length) {\n return null\n }\n if (value == '-' || value == '-1') {\n return [this.emoji('-1')]\n }\n\n let values = value.toLowerCase().split(/[\\s|,|\\-|_]+/)\n let allResults = []\n\n if (values.length > 2) {\n values = [values[0], values[1]]\n }\n\n allResults = values\n .map((value) => {\n // Start searchin in the global list of emojis\n let emojis = this._emojis\n let currentIndex = this._searchIndex\n let length = 0\n\n for (let charIndex = 0; charIndex < value.length; charIndex++) {\n const char = value[charIndex]\n length++\n\n currentIndex[char] || (currentIndex[char] = {})\n currentIndex = currentIndex[char]\n\n if (!currentIndex.results) {\n let scores = {}\n currentIndex.results = []\n currentIndex.emojis = {}\n\n for (let emojiId in emojis) {\n let emoji = emojis[emojiId]\n // search is a comma-separated string with words, related\n // to the emoji, for example:\n // search: \"smiley,smiling,face,joy,haha,:d,:),smile,funny,=),=-)\",\n let search = emoji._data.search\n let sub = value.substr(0, length)\n let subIndex = search.indexOf(sub)\n if (subIndex != -1) {\n let score = subIndex + 1\n if (sub == emojiId) score = 0\n\n currentIndex.results.push(emoji)\n currentIndex.emojis[emojiId] = emoji\n\n scores[emojiId] = score\n }\n }\n currentIndex.results.sort((a, b) => {\n var aScore = scores[a.id],\n bScore = scores[b.id]\n return aScore - bScore\n })\n }\n\n // continue search in the reduced set of emojis\n emojis = currentIndex.emojis\n }\n return currentIndex.results\n // The \"filter\" call removes undefined values from allResults\n // array, for example, if we have \"test \" (with trailing space),\n // we will get \"[Array, undefined]\" for allResults and after\n // the \"filter\" call it will turn into \"[Array]\"\n })\n .filter((a) => a)\n\n var results = null\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults)\n } else if (allResults.length) {\n results = allResults[0]\n } else {\n results = []\n }\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults)\n }\n return results\n }\n\n addCustomEmoji(customEmoji) {\n let emojiData = Object.assign({}, customEmoji, {\n id: customEmoji.short_names[0],\n custom: true,\n })\n if (!emojiData.search) {\n emojiData.search = buildSearch(emojiData)\n }\n let emoji = new EmojiData(emojiData)\n this._emojis[emoji.id] = emoji\n this._customCategory.emojis.push(emoji)\n return emoji\n }\n\n addEmoji(emojiId) {\n // We expect the correct emoji id that is present in the emojis data.\n let data = this._data.emojis[emojiId]\n\n if (!this.isEmojiNeeded(data)) {\n return false\n }\n\n let emoji = new EmojiData(data)\n this._emojis[emojiId] = emoji\n if (emoji.native) {\n this._nativeEmojis[emoji.native] = emoji\n }\n if (emoji._skins) {\n for (let idx in emoji._skins) {\n let skin = emoji._skins[idx]\n if (skin.native) {\n this._nativeEmojis[skin.native] = skin\n }\n }\n }\n\n if (emoji.emoticons) {\n emoji.emoticons.forEach((emoticon) => {\n if (this._emoticons[emoticon]) {\n return\n }\n this._emoticons[emoticon] = emojiId\n })\n }\n return emoji\n }\n\n /**\n * Check if we need to include given category.\n *\n * @param {string} category_id - The category id.\n * @return {boolean} - Whether to include the emoji.\n */\n isCategoryNeeded(category_id) {\n let isIncluded =\n this._include && this._include.length\n ? this._include.indexOf(category_id) > -1\n : true\n let isExcluded =\n this._exclude && this._exclude.length\n ? this._exclude.indexOf(category_id) > -1\n : false\n if (!isIncluded || isExcluded) {\n return false\n }\n return true\n }\n\n /**\n * Check if we need to include given emoji.\n *\n * @param {object} emoji - The raw emoji object.\n * @return {boolean} - Whether to include the emoji.\n */\n isEmojiNeeded(emoji) {\n if (this._emojisFilter) {\n return this._emojisFilter(emoji)\n }\n return true\n }\n}\n\nexport class EmojiData {\n constructor(data) {\n this._data = Object.assign({}, data)\n this._skins = null\n if (this._data.skin_variations) {\n this._skins = []\n for (var skinIdx in SKINS) {\n let skinKey = SKINS[skinIdx]\n let variationData = this._data.skin_variations[skinKey]\n let skinData = Object.assign({}, data)\n for (let k in variationData) {\n skinData[k] = variationData[k]\n }\n delete skinData.skin_variations\n skinData['skin_tone'] = parseInt(skinIdx) + 1\n this._skins.push(new EmojiData(skinData))\n }\n }\n this._sanitized = sanitize(this._data)\n for (let key in this._sanitized) {\n this[key] = this._sanitized[key]\n }\n this.short_names = this._data.short_names\n this.short_name = this._data.short_names[0]\n Object.freeze(this)\n }\n\n getSkin(skinIdx) {\n if (skinIdx && skinIdx != 'native' && this._skins) {\n return this._skins[skinIdx - 1]\n }\n return this\n }\n\n getPosition() {\n let adjustedColumns = SHEET_COLUMNS - 1,\n x = +((100 / adjustedColumns) * this._data.sheet_x).toFixed(2),\n y = +((100 / adjustedColumns) * this._data.sheet_y).toFixed(2)\n return `${x}% ${y}%`\n }\n\n ariaLabel() {\n return [this.native].concat(this.short_names).filter(Boolean).join(', ')\n }\n}\n\nexport class EmojiView {\n /**\n * emoji - Emoji to display\n * set - string, emoji set name\n * native - boolean, whether to render native emoji\n * fallback - fallback function to render missing emoji, optional\n * emojiTooltip - wether we need to show the emoji tooltip, optional\n * emojiSize - emoji size in pixels, optional\n */\n constructor(emoji, skin, set, native, fallback, emojiTooltip, emojiSize) {\n this._emoji = emoji\n this._native = native\n this._skin = skin\n this._set = set\n this._fallback = fallback\n\n this.canRender = this._canRender()\n this.cssClass = this._cssClass()\n this.cssStyle = this._cssStyle(emojiSize)\n this.content = this._content()\n this.title = emojiTooltip === true ? emoji.short_name : null\n this.ariaLabel = emoji.ariaLabel()\n\n Object.freeze(this)\n }\n\n getEmoji() {\n return this._emoji.getSkin(this._skin)\n }\n\n _canRender() {\n return (\n this._isCustom() || this._isNative() || this._hasEmoji() || this._fallback\n )\n }\n\n _cssClass() {\n return ['emoji-set-' + this._set, 'emoji-type-' + this._emojiType()]\n }\n\n _cssStyle(emojiSize) {\n let cssStyle = {}\n if (this._isCustom()) {\n cssStyle = {\n backgroundImage: 'url(' + this.getEmoji()._data.imageUrl + ')',\n backgroundSize: '100%',\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n }\n } else if (this._hasEmoji() && !this._isNative()) {\n cssStyle = {\n backgroundPosition: this.getEmoji().getPosition(),\n }\n }\n if (emojiSize) {\n if (this._isNative()) {\n // Set font-size for native emoji.\n cssStyle = Object.assign(cssStyle, {\n // font-size is used for native emoji which we need\n // to scale with 0.95 factor to have them look approximately\n // the same size as image-based emoji.\n fontSize: Math.round(emojiSize * 0.95 * 10) / 10 + 'px',\n })\n } else {\n // Set width/height for image emoji.\n cssStyle = Object.assign(cssStyle, {\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n })\n }\n }\n return cssStyle\n }\n\n _content() {\n if (this._isCustom()) {\n return ''\n }\n if (this._isNative()) {\n return this.getEmoji().native\n }\n if (this._hasEmoji()) {\n return ''\n }\n return this._fallback ? this._fallback(this.getEmoji()) : null\n }\n\n _isNative() {\n return this._native\n }\n\n _isCustom() {\n return this.getEmoji().custom\n }\n\n _hasEmoji() {\n if (!this.getEmoji()._data) {\n // Return false if we have no data.\n return false\n }\n const hasImage = this.getEmoji()._data['has_img_' + this._set]\n if (hasImage === undefined) {\n // If there is no has_img_xxx in the data, we are working with\n // specific data file, like facebook.json, so we assume all\n // emojis are available (the :set setting for picker should\n // match the data file).\n return true\n }\n // Otherwise, we are using all.json and can switch between different\n // sets - in this case the `has_img_{set_name}` is a boolean that\n // indicates if there is such image or not for a given set.\n return hasImage\n }\n\n _emojiType() {\n if (this._isCustom()) {\n return 'custom'\n }\n if (this._isNative()) {\n return 'native'\n }\n if (this._hasEmoji()) {\n return 'image'\n }\n return 'fallback'\n }\n}\n\nexport function sanitize(emoji) {\n var {\n name,\n short_names,\n skin_tone,\n skin_variations,\n emoticons,\n unified,\n custom,\n imageUrl,\n } = emoji,\n id = emoji.id || short_names[0],\n colons = `:${id}:`\n\n if (custom) {\n return {\n id,\n name,\n colons,\n emoticons,\n custom,\n imageUrl,\n }\n }\n\n if (skin_tone) {\n colons += `:skin-tone-${skin_tone}:`\n }\n\n return {\n id,\n name,\n colons,\n emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n native: unifiedToNative(unified),\n }\n}\n","const EmojiProps = {\n native: {\n type: Boolean,\n default: false,\n },\n tooltip: {\n type: Boolean,\n default: false,\n },\n fallback: {\n type: Function,\n },\n skin: {\n type: Number,\n default: 1,\n },\n set: {\n type: String,\n default: 'apple',\n },\n emoji: {\n type: [String, Object],\n required: true,\n },\n size: {\n type: Number,\n default: null,\n },\n tag: {\n type: String,\n default: 'span',\n },\n}\n\nconst PickerProps = {\n perLine: {\n type: Number,\n default: 9,\n },\n maxSearchResults: {\n type: Number,\n default: 75,\n },\n emojiSize: {\n type: Number,\n default: 24,\n },\n title: {\n type: String,\n default: 'Emoji Mart™',\n },\n emoji: {\n type: String,\n default: 'department_store',\n },\n color: {\n type: String,\n default: '#ae65c5',\n },\n set: {\n type: String,\n default: 'apple',\n },\n skin: {\n type: Number,\n default: null,\n },\n defaultSkin: {\n type: Number,\n default: 1,\n },\n native: {\n type: Boolean,\n default: false,\n },\n emojiTooltip: {\n type: Boolean,\n default: false,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n i18n: {\n type: Object,\n default() {\n return {}\n },\n },\n showPreview: {\n type: Boolean,\n default: true,\n },\n showSearch: {\n type: Boolean,\n default: true,\n },\n showCategories: {\n type: Boolean,\n default: true,\n },\n showSkinTones: {\n type: Boolean,\n default: true,\n },\n infiniteScroll: {\n type: Boolean,\n default: true,\n },\n pickerStyles: {\n type: Object,\n default() {\n return {}\n },\n },\n}\n\nexport { EmojiProps, PickerProps }\n","\n \n {{\n view.content\n }}\n \n\n\n\n","\n \n
\n
{{ i18n.categories[id] }}
\n
\n\n \n \n \n\n
\n \n
{{ i18n.notfound }}
\n
\n \n\n\n\n","\n\n
\n \n \n \n
\n\n\n\n\n","\n\n
\n \n
\n \n
\n\n
\n
{{ emoji.name }}
\n
\n :{{ shortName }}:\n
\n
\n {{ emoticon }}\n
\n
\n \n\n \n
\n \n
\n\n
\n {{ title }}\n
\n\n
\n \n
\n \n
\n\n\n\n\n","\n
\n $emit('arrowLeft', $event)\"\n @keydown.right=\"() => $emit('arrowRight')\"\n @keydown.down=\"() => $emit('arrowDown')\"\n @keydown.up=\"($event) => $emit('arrowUp', $event)\"\n @keydown.enter=\"() => $emit('enter')\"\n v-model=\"value\"\n />\n Use the left, right, up and down arrow keys to navigate the emoji search\n results.\n
\n\n\n\n","// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n// MIT license\n\nvar isWindowAvailable = typeof window !== 'undefined'\n\nisWindowAvailable &&\n (function () {\n var lastTime = 0\n var vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame =\n window[vendors[x] + 'RequestAnimationFrame']\n window.cancelAnimationFrame =\n window[vendors[x] + 'CancelAnimationFrame'] ||\n window[vendors[x] + 'CancelRequestAnimationFrame']\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime()\n var timeToCall = Math.max(0, 16 - (currTime - lastTime))\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return id\n }\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id)\n }\n })()\n","export class PickerView {\n constructor(pickerComponent) {\n this._vm = pickerComponent\n this._data = pickerComponent.data\n this._perLine = pickerComponent.perLine\n\n this._categories = []\n this._categories.push(...this._data.categories())\n this._categories = this._categories.filter((category) => {\n return category.emojis.length > 0\n })\n\n this._categories[0].first = true\n Object.freeze(this._categories)\n\n this.activeCategory = this._categories[0]\n this.searchEmojis = null\n\n // Preview emoji, shown on mouse over or when we move\n // with arrow keys.\n this.previewEmoji = null\n // Indexes are used to keep the position when moving\n // with arrows: current category and current emoji\n // inside the category.\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = -1\n }\n\n onScroll() {\n const scrollElement = this._vm.$refs.scroll\n\n if (!scrollElement) {\n // Reported in https://github.com/serebrov/emoji-mart-vue/issues/305\n // Would be good to understand how it can happen, but at least\n // exiting early we prevent the error.\n return\n }\n\n const scrollTop = scrollElement.scrollTop\n\n let activeCategory = this.filteredCategories[0]\n for (let i = 0, l = this.filteredCategories.length; i < l; i++) {\n let category = this.filteredCategories[i]\n let component = this._vm.getCategoryComponent(i)\n // The `-50` offset switches active category (selected in the\n // anchors bar) a bit eariler, before it actually reaches the top.\n if (component && component.$el.offsetTop - 50 > scrollTop) {\n break\n }\n activeCategory = category\n }\n this.activeCategory = activeCategory\n }\n\n get allCategories() {\n return this._categories\n }\n\n get filteredCategories() {\n if (this.searchEmojis) {\n return [\n {\n id: 'search',\n name: 'Search',\n emojis: this.searchEmojis,\n },\n ]\n }\n return this._categories.filter((category) => {\n let hasEmojis = category.emojis.length > 0\n return hasEmojis\n })\n }\n\n get previewEmojiCategory() {\n if (this.previewEmojiCategoryIdx >= 0) {\n return this.filteredCategories[this.previewEmojiCategoryIdx]\n }\n return null\n }\n\n onAnchorClick(category) {\n if (this.searchEmojis) {\n // No categories are shown when search is active.\n return\n }\n let i = this.filteredCategories.indexOf(category)\n let component = this._vm.getCategoryComponent(i)\n let scrollToComponent = () => {\n if (component) {\n let top = component.$el.offsetTop\n if (category.first) {\n top = 0\n }\n this._vm.$refs.scroll.scrollTop = top\n }\n }\n if (this._vm.infiniteScroll) {\n scrollToComponent()\n } else {\n this.activeCategory = this.filteredCategories[i]\n }\n }\n\n onSearch(value) {\n let emojis = this._data.search(value, this.maxSearchResults)\n this.searchEmojis = emojis\n\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = 0\n this.updatePreviewEmoji()\n }\n\n onEmojiEnter(emoji) {\n this.previewEmoji = emoji\n this.previewEmojiIdx = -1\n this.previewEmojiCategoryIdx = -1\n }\n\n onEmojiLeave(emoji) {\n this.previewEmoji = null\n }\n\n onArrowLeft() {\n // Moving left, decrease emoji index.\n if (this.previewEmojiIdx > 0) {\n this.previewEmojiIdx -= 1\n } else {\n // If emoji index is zero, go to the previous category.\n this.previewEmojiCategoryIdx -= 1\n if (this.previewEmojiCategoryIdx < 0) {\n // If we reached first category, keep it.\n this.previewEmojiCategoryIdx = 0\n } else {\n // Update emoji index - we moved to the previous category,\n // get the last emoji in it.\n this.previewEmojiIdx =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length -\n 1\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowRight() {\n if (\n this.previewEmojiIdx <\n this.emojisLength(this.previewEmojiCategoryIdx) - 1\n ) {\n // Moving right within category, increase emoji index.\n this.previewEmojiIdx += 1\n } else {\n // Go to the next category.\n this.previewEmojiCategoryIdx += 1\n if (this.previewEmojiCategoryIdx >= this.filteredCategories.length) {\n // If we reached the last category - keep it.\n this.previewEmojiCategoryIdx = this.filteredCategories.length - 1\n } else {\n // If we moved to the next category, update emoji index to the\n // first emoji in the new category.\n this.previewEmojiIdx = 0\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowDown() {\n // If we are out of the emoji control (index is -1), select the first\n // emoji in the first category by calling `onArrowRight`.\n if (this.previewEmojiIdx == -1) {\n return this.onArrowRight()\n }\n\n const categoryLength =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length\n\n // When moving down, we can move `_perLine` icons right to\n // jump to the same position in the next row.\n let diff = this._perLine\n\n // TODO: previewCategory should match activeCategory\n // (so it would be both highlighted in UI and used\n // when we start moving with arrows after clicking\n // the category).\n\n // Note: probably we can alwasy take current row length\n // as a `diff` - it will fit both case of any row and\n // special case of the last row.\n // Note: it can be also easier to update indexes\n // directly here instead of calling onArrowRight.\n // Same is true for `onArrowUp`.\n\n // Unless if we are on the last row of the category and\n // there are less then `_perLine` emojis in it.\n // In this case we use the last row length as diff\n // so we go straight down, for example:\n //\n // 1 2 3 4 5 6\n // 7 8 9\n // A B C D E F\n //\n // If we go down from `8`, we need to move 3 emojis right\n // to lend at `B` (and 3 is the length of the last row of\n // this category).\n // And if we used 6 instead (row length, `_perLine`), we would\n // lend up at `E`.\n if (this.previewEmojiIdx + diff > categoryLength) {\n // Calculate the last row length.\n diff = categoryLength % this._perLine\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowRight()\n }\n this.updatePreviewEmoji()\n }\n\n onArrowUp() {\n // Similar to `onArrowDown`, to move up we can move left\n // by `_perLine` number of emojis.\n let diff = this._perLine\n\n if (this.previewEmojiIdx - diff < 0) {\n if (this.previewEmojiCategoryIdx > 0) {\n // Unless if we are on the first line of the category and\n // the last line in the previous category is shorter than\n // `_perLine`.\n // In this case we use the last row length as diff, so\n // we go straight up, for example:\n //\n // 1 2 3 4 5\n // 6 7 8\n // 9 A B C D\n //\n // If we go up from `A`, we need to move 3 emojis left to get\n // to `7` (and 3 is the length of the last row of the previous\n // category).\n const prevCategoryLastRowLength =\n this.filteredCategories[this.previewEmojiCategoryIdx - 1].emojis\n .length % this._perLine\n // diff = this.previewEmojiIdx + prevCategoryLastRowLength\n diff = prevCategoryLastRowLength\n } else {\n diff = 0\n }\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowLeft()\n }\n this.updatePreviewEmoji()\n }\n\n updatePreviewEmoji() {\n this.previewEmoji =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis[\n this.previewEmojiIdx\n ]\n\n this._vm.$nextTick(() => {\n // Scroll the view if the `previewEmoji` goes out of the visible area.\n const scrollEl = this._vm.$refs.scroll\n\n // Note: it would be more Vue-ish to mark all emojis with `ref`s\n // and then do something similar here to what we do in the\n // `getCategories` instead of using `querySelector` directly,\n // but I am not sure if having many refs would affect the performance\n // (it might, so I use `querySelector` for now).\n const emojiEl = scrollEl.querySelector('.emoji-mart-emoji-selected')\n\n const scrollHeight = scrollEl.offsetTop - scrollEl.offsetHeight\n if (\n emojiEl &&\n emojiEl.offsetTop + emojiEl.offsetHeight >\n scrollHeight + scrollEl.scrollTop\n ) {\n scrollEl.scrollTop += emojiEl.offsetHeight\n }\n if (emojiEl && emojiEl.offsetTop < scrollEl.scrollTop) {\n scrollEl.scrollTop -= emojiEl.offsetHeight\n }\n })\n }\n\n emojisLength(categoryIdx) {\n if (categoryIdx == -1) {\n return 0\n }\n return this.filteredCategories[categoryIdx].emojis.length\n }\n}\n","\n \n
\n \n
\n\n \n \n \n\n
\n
\n \n\n \n
\n
\n\n \n
\n \n
\n \n \n\n\n\n","const name = 'VueColor';\n// 自定义组件前缀\nconst prefix = '';\nconst cssPrefix = '';\nconst size = 'medium';\n\nexport { cssPrefix, name, prefix, size };\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport { styleInject as s };\n","import { prefix } from '../defaultConfig.js';\n\nconst install = function (app, options) {\n const { componentPrefix = prefix } = options || {};\n app.component(`${componentPrefix}${this.name}`, this);\n};\n\nexport { install };\n","import { openBlock, createElementBlock, normalizeStyle } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '../../defaultConfig.js';\n\nconst _checkboardCache = {};\n\nvar script = {\n name: 'Checkboard',\n props: {\n size: {\n type: [Number, String],\n default: 8,\n },\n white: {\n type: String,\n default: '#fff',\n },\n grey: {\n type: String,\n default: '#e6e6e6',\n },\n },\n computed: {\n bgStyle() {\n return {\n 'background-image': `url(${getCheckboard(this.white, this.grey, this.size)})`,\n };\n },\n },\n};\n\n/**\n * get base 64 data by canvas\n *\n * @param {String} c1 hex color\n * @param {String} c2 hex color\n * @param {Number} size\n */\n\nfunction renderCheckboard(c1, c2, size) {\n // Dont Render On Server\n if (typeof document === 'undefined')\n return null;\n\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size * 2;\n const ctx = canvas.getContext('2d');\n // If no context can be found, return early.\n if (!ctx)\n return null;\n\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n}\n\n/**\n * get checkboard base data and cache\n *\n * @param {String} c1 hex color\n * @param {String} c2 hex color\n * @param {Number} size\n */\n\nfunction getCheckboard(c1, c2, size) {\n const key = `${c1},${c2},${size}`;\n\n if (_checkboardCache[key])\n return _checkboardCache[key];\n\n const checkboard = renderCheckboard(c1, c2, size);\n _checkboardCache[key] = checkboard;\n return checkboard;\n}\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createElementBlock(\"div\", {\n class: \"vc-checkerboard\",\n style: normalizeStyle($options.bgStyle)\n }, null, 4 /* STYLE */))\n}\n\nvar css_248z = \".vc-checkerboard{background-size:contain;bottom:0;left:0;position:absolute;right:0;top:0}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/checkboard/checkboard.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","import script$1 from '../checkboard/index.js';\nimport { resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode, normalizeStyle } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '../../defaultConfig.js';\n\nvar script = {\n name: 'Alpha',\n components: {\n Checkboard: script$1,\n },\n props: {\n value: Object,\n onChange: Function,\n },\n computed: {\n colors() {\n return this.value;\n },\n gradientColor() {\n const { rgba } = this.colors;\n const rgbStr = [rgba.r, rgba.g, rgba.b].join(',');\n return `linear-gradient(to right, rgba(${rgbStr}, 0) 0%, rgba(${rgbStr}, 1) 100%)`;\n },\n },\n methods: {\n handleChange(e, skip) {\n !skip && e.preventDefault();\n const { container } = this.$refs;\n if (!container) {\n // for some edge cases, container may not exist. see #220\n return;\n }\n const containerWidth = container.clientWidth;\n\n const xOffset = container.getBoundingClientRect().left + window.pageXOffset;\n const pageX = e.pageX || (e.touches ? e.touches[0].pageX : 0);\n const left = pageX - xOffset;\n\n let a;\n if (left < 0)\n a = 0;\n else if (left > containerWidth)\n a = 1;\n else\n a = Math.round(left * 100 / containerWidth) / 100;\n\n if (this.colors.a !== a) {\n this.$emit('change', {\n h: this.colors.hsl.h,\n s: this.colors.hsl.s,\n l: this.colors.hsl.l,\n a,\n source: 'rgba',\n });\n }\n },\n handleMouseDown(e) {\n this.handleChange(e, true);\n window.addEventListener('mousemove', this.handleChange);\n window.addEventListener('mouseup', this.handleMouseUp);\n },\n handleMouseUp() {\n this.unbindEventListeners();\n },\n unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n },\n },\n};\n\nconst _hoisted_1 = { class: \"vc-alpha\" };\nconst _hoisted_2 = { class: \"vc-alpha-checkboard-wrap\" };\nconst _hoisted_3 = /*#__PURE__*/createElementVNode(\"div\", { class: \"vc-alpha-picker\" }, null, -1 /* HOISTED */);\nconst _hoisted_4 = [\n _hoisted_3\n];\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Checkboard = resolveComponent(\"Checkboard\");\n\n return (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_Checkboard)\n ]),\n createElementVNode(\"div\", {\n class: \"vc-alpha-gradient\",\n style: normalizeStyle({ background: $options.gradientColor })\n }, null, 4 /* STYLE */),\n createElementVNode(\"div\", {\n ref: \"container\",\n class: \"vc-alpha-container\",\n onMousedown: _cache[0] || (_cache[0] = (...args) => ($options.handleMouseDown && $options.handleMouseDown(...args))),\n onTouchmove: _cache[1] || (_cache[1] = (...args) => ($options.handleChange && $options.handleChange(...args))),\n onTouchstart: _cache[2] || (_cache[2] = (...args) => ($options.handleChange && $options.handleChange(...args)))\n }, [\n createElementVNode(\"div\", {\n class: \"vc-alpha-pointer\",\n style: normalizeStyle({ left: `${$options.colors.a * 100}%` })\n }, _hoisted_4, 4 /* STYLE */)\n ], 544 /* HYDRATE_EVENTS, NEED_PATCH */)\n ]))\n}\n\nvar css_248z = \".vc-alpha,.vc-alpha-checkboard-wrap{bottom:0;left:0;position:absolute;right:0;top:0}.vc-alpha-checkboard-wrap{overflow:hidden}.vc-alpha-gradient{bottom:0;left:0;position:absolute;right:0;top:0}.vc-alpha-container{cursor:pointer;height:100%;margin:0 3px;position:relative;z-index:2}.vc-alpha-pointer{position:absolute;z-index:2}.vc-alpha-picker{background:#fff;border-radius:1px;box-shadow:0 0 2px rgba(0,0,0,.6);cursor:pointer;height:8px;margin-top:1px;transform:translateX(-2px);width:4px}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/alpha/alpha.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * \n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * \n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// \nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// \nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { numberInputToObject, rgbaToHex, rgbToHex, rgbToHsl, rgbToHsv } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { inputToRGB } from './format-input';\nimport { bound01, boundAlpha, clamp01 } from './util.js';\nvar TinyColor = /** @class */ (function () {\n function TinyColor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n var _a;\n // If input is already a tinycolor, return itself\n if (color instanceof TinyColor) {\n // eslint-disable-next-line no-constructor-return\n return color;\n }\n if (typeof color === 'number') {\n color = numberInputToObject(color);\n }\n this.originalInput = color;\n var rgb = inputToRGB(color);\n this.originalInput = color;\n this.r = rgb.r;\n this.g = rgb.g;\n this.b = rgb.b;\n this.a = rgb.a;\n this.roundA = Math.round(100 * this.a) / 100;\n this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n this.gradientType = opts.gradientType;\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this.r < 1) {\n this.r = Math.round(this.r);\n }\n if (this.g < 1) {\n this.g = Math.round(this.g);\n }\n if (this.b < 1) {\n this.b = Math.round(this.b);\n }\n this.isValid = rgb.ok;\n }\n TinyColor.prototype.isDark = function () {\n return this.getBrightness() < 128;\n };\n TinyColor.prototype.isLight = function () {\n return !this.isDark();\n };\n /**\n * Returns the perceived brightness of the color, from 0-255.\n */\n TinyColor.prototype.getBrightness = function () {\n // http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n };\n /**\n * Returns the perceived luminance of a color, from 0-1.\n */\n TinyColor.prototype.getLuminance = function () {\n // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var R;\n var G;\n var B;\n var RsRGB = rgb.r / 255;\n var GsRGB = rgb.g / 255;\n var BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n };\n /**\n * Returns the alpha value of a color, from 0-1.\n */\n TinyColor.prototype.getAlpha = function () {\n return this.a;\n };\n /**\n * Sets the alpha value on the current color.\n *\n * @param alpha - The new alpha value. The accepted range is 0-1.\n */\n TinyColor.prototype.setAlpha = function (alpha) {\n this.a = boundAlpha(alpha);\n this.roundA = Math.round(100 * this.a) / 100;\n return this;\n };\n /**\n * Returns whether the color is monochrome.\n */\n TinyColor.prototype.isMonochrome = function () {\n var s = this.toHsl().s;\n return s === 0;\n };\n /**\n * Returns the object as a HSVA object.\n */\n TinyColor.prototype.toHsv = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n };\n /**\n * Returns the hsva values interpolated into a string with the following format:\n * \"hsva(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHsvString = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n var h = Math.round(hsv.h * 360);\n var s = Math.round(hsv.s * 100);\n var v = Math.round(hsv.v * 100);\n return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a HSLA object.\n */\n TinyColor.prototype.toHsl = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n };\n /**\n * Returns the hsla values interpolated into a string with the following format:\n * \"hsla(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHslString = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n var h = Math.round(hsl.h * 360);\n var s = Math.round(hsl.s * 100);\n var l = Math.round(hsl.l * 100);\n return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the hex value of the color.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHex = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n };\n /**\n * Returns the hex value of the color -with a # prefixed.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHexString = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return '#' + this.toHex(allow3Char);\n };\n /**\n * Returns the hex 8 value of the color.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8 = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n };\n /**\n * Returns the hex 8 value of the color -with a # prefixed.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8String = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return '#' + this.toHex8(allow4Char);\n };\n /**\n * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n */\n TinyColor.prototype.toHexShortString = function (allowShortChar) {\n if (allowShortChar === void 0) { allowShortChar = false; }\n return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toRgb = function () {\n return {\n r: Math.round(this.r),\n g: Math.round(this.g),\n b: Math.round(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA values interpolated into a string with the following format:\n * \"RGBA(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toRgbString = function () {\n var r = Math.round(this.r);\n var g = Math.round(this.g);\n var b = Math.round(this.b);\n return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toPercentageRgb = function () {\n var fmt = function (x) { return \"\".concat(Math.round(bound01(x, 255) * 100), \"%\"); };\n return {\n r: fmt(this.r),\n g: fmt(this.g),\n b: fmt(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA relative values interpolated into a string\n */\n TinyColor.prototype.toPercentageRgbString = function () {\n var rnd = function (x) { return Math.round(bound01(x, 255) * 100); };\n return this.a === 1\n ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n };\n /**\n * The 'real' name of the color -if there is one.\n */\n TinyColor.prototype.toName = function () {\n if (this.a === 0) {\n return 'transparent';\n }\n if (this.a < 1) {\n return false;\n }\n var hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n for (var _i = 0, _a = Object.entries(names); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (hex === value) {\n return key;\n }\n }\n return false;\n };\n TinyColor.prototype.toString = function (format) {\n var formatSet = Boolean(format);\n format = format !== null && format !== void 0 ? format : this.format;\n var formattedString = false;\n var hasAlpha = this.a < 1 && this.a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this.a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n };\n TinyColor.prototype.toNumber = function () {\n return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n };\n TinyColor.prototype.clone = function () {\n return new TinyColor(this.toString());\n };\n /**\n * Lighten the color a given amount. Providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.lighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Brighten the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.brighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var rgb = this.toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return new TinyColor(rgb);\n };\n /**\n * Darken the color a given amount, from 0 to 100.\n * Providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.darken = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.tint = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('white', amount);\n };\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.shade = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('black', amount);\n };\n /**\n * Desaturate the color a given amount, from 0 to 100.\n * Providing 100 will is the same as calling greyscale\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.desaturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Saturate the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.saturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Completely desaturates a color into greyscale.\n * Same as calling `desaturate(100)`\n */\n TinyColor.prototype.greyscale = function () {\n return this.desaturate(100);\n };\n /**\n * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n * Values outside of this range will be wrapped into this range.\n */\n TinyColor.prototype.spin = function (amount) {\n var hsl = this.toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return new TinyColor(hsl);\n };\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n TinyColor.prototype.mix = function (color, amount) {\n if (amount === void 0) { amount = 50; }\n var rgb1 = this.toRgb();\n var rgb2 = new TinyColor(color).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n return new TinyColor(rgba);\n };\n TinyColor.prototype.analogous = function (results, slices) {\n if (results === void 0) { results = 6; }\n if (slices === void 0) { slices = 30; }\n var hsl = this.toHsl();\n var part = 360 / slices;\n var ret = [this];\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(new TinyColor(hsl));\n }\n return ret;\n };\n /**\n * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n */\n TinyColor.prototype.complement = function () {\n var hsl = this.toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return new TinyColor(hsl);\n };\n TinyColor.prototype.monochromatic = function (results) {\n if (results === void 0) { results = 6; }\n var hsv = this.toHsv();\n var h = hsv.h;\n var s = hsv.s;\n var v = hsv.v;\n var res = [];\n var modification = 1 / results;\n while (results--) {\n res.push(new TinyColor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n return res;\n };\n TinyColor.prototype.splitcomplement = function () {\n var hsl = this.toHsl();\n var h = hsl.h;\n return [\n this,\n new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n };\n /**\n * Compute how the color would appear on a background\n */\n TinyColor.prototype.onBackground = function (background) {\n var fg = this.toRgb();\n var bg = new TinyColor(background).toRgb();\n var alpha = fg.a + bg.a * (1 - fg.a);\n return new TinyColor({\n r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n a: alpha,\n });\n };\n /**\n * Alias for `polyad(3)`\n */\n TinyColor.prototype.triad = function () {\n return this.polyad(3);\n };\n /**\n * Alias for `polyad(4)`\n */\n TinyColor.prototype.tetrad = function () {\n return this.polyad(4);\n };\n /**\n * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n */\n TinyColor.prototype.polyad = function (n) {\n var hsl = this.toHsl();\n var h = hsl.h;\n var result = [this];\n var increment = 360 / n;\n for (var i = 1; i < n; i++) {\n result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n }\n return result;\n };\n /**\n * compare color vs current color\n */\n TinyColor.prototype.equals = function (color) {\n return this.toRgbString() === new TinyColor(color).toRgbString();\n };\n return TinyColor;\n}());\nexport { TinyColor };\n// kept for backwards compatability with v1\nexport function tinycolor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n return new TinyColor(color, opts);\n}\n","import { TinyColor } from '@ctrl/tinycolor';\n\nfunction tinycolor(...args) {\n return new TinyColor(...args);\n}\n\nfunction _colorChange(data, oldHue) {\n const alpha = data && data.a;\n let color;\n\n // hsl is better than hex between conversions\n if (data && data.hsl)\n color = tinycolor(data.hsl);\n else if (data && data.hex && data.hex.length > 0)\n color = tinycolor(data.hex);\n else if (data && data.hsv)\n color = tinycolor(data.hsv);\n else if (data && data.rgba)\n color = tinycolor(data.rgba);\n else if (data && data.rgb)\n color = tinycolor(data.rgb);\n else\n color = tinycolor(data);\n\n if (color && (color._a === undefined || color._a === null))\n color.setAlpha(alpha || color.getAlpha());\n\n const hsl = color.toHsl();\n const hsv = color.toHsv();\n\n if (hsl.s === 0)\n hsv.h = hsl.h = data.h || (data.hsl && data.hsl.h) || oldHue || 0;\n\n /* --- comment this block to fix #109, may cause #25 again --- */\n // when the hsv.v is less than 0.0164 (base on test)\n // because of possible loss of precision\n // the result of hue and saturation would be miscalculated\n if (hsv.v < 0.0164) {\n hsv.h = data.h || (data.hsv && data.hsv.h) || 0;\n hsv.s = data.s || (data.hsv && data.hsv.s) || 0;\n }\n\n if (hsl.l < 0.01) {\n hsl.h = data.h || (data.hsl && data.hsl.h) || 0;\n hsl.s = data.s || (data.hsl && data.hsl.s) || 0;\n }\n /* ------ */\n\n return {\n hsl,\n hex: color.toHexString().toUpperCase(),\n hex8: color.toHex8String().toUpperCase(),\n rgba: color.toRgb(),\n hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source,\n a: color.getAlpha(),\n };\n}\n\nvar colorMixin = {\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n props: ['modelValue'],\n data() {\n return {\n val: _colorChange(this.modelValue),\n };\n },\n computed: {\n colors: {\n get() {\n return this.val;\n },\n set(newVal) {\n this.val = newVal;\n this.$emit('update:modelValue', newVal);\n },\n },\n },\n watch: {\n modelValue(newVal) {\n this.val = _colorChange(newVal);\n },\n },\n methods: {\n colorChange(data, oldHue) {\n this.oldHue = this.colors.hsl.h;\n this.colors = _colorChange(data, oldHue || this.oldHue);\n },\n isValidHex(hex) {\n return tinycolor(hex).isValid;\n },\n simpleCheckForValidColor(data) {\n const keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n let checked = 0;\n let passed = 0;\n\n for (let i = 0; i < keysToCheck.length; i++) {\n const letter = keysToCheck[i];\n if (data[letter]) {\n checked++;\n if (!isNaN(data[letter]))\n passed++;\n }\n }\n\n if (checked === passed)\n return data;\n },\n paletteUpperCase(palette) {\n return palette.map(c => c.toUpperCase());\n },\n isTransparent(color) {\n return tinycolor(color).getAlpha() === 0;\n },\n },\n};\n\nexport { colorMixin as default };\n","import { openBlock, createElementBlock, withDirectives, createElementVNode, vModelText, toDisplayString } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '../../defaultConfig.js';\n\nvar script = {\n name: 'EditableInput',\n props: {\n label: String,\n labelText: String,\n desc: String,\n value: [String, Number],\n max: Number,\n min: Number,\n arrowOffset: {\n type: Number,\n default: 1,\n },\n },\n computed: {\n val: {\n get() {\n return this.value;\n },\n set(v) {\n // TODO: min\n if (!(this.max === undefined) && +v > this.max)\n this.$refs.input.value = this.max;\n else\n return v;\n },\n },\n labelId() {\n return `input__label__${this.label}__${Math.random().toString().slice(2, 5)}`;\n },\n labelSpanText() {\n return this.labelText || this.label;\n },\n },\n methods: {\n update(e) {\n this.handleChange(e.target.value);\n },\n handleChange(newVal) {\n const data = {};\n data[this.label] = newVal;\n if (data.hex === undefined && data['#'] === undefined)\n this.$emit('change', data);\n else if (newVal.length > 5)\n this.$emit('change', data);\n },\n // **** unused\n // handleBlur (e) {\n // console.log(e)\n // },\n handleKeyDown(e) {\n let { val } = this;\n const number = Number(val);\n\n if (number) {\n const amount = this.arrowOffset || 1;\n\n // Up\n if (e.keyCode === 38) {\n val = number + amount;\n this.handleChange(val);\n e.preventDefault();\n }\n\n // Down\n if (e.keyCode === 40) {\n val = number - amount;\n this.handleChange(val);\n e.preventDefault();\n }\n }\n },\n // **** unused\n // handleDrag (e) {\n // console.log(e)\n // },\n // handleMouseDown (e) {\n // console.log(e)\n // }\n },\n};\n\nconst _hoisted_1 = { class: \"vc-editable-input\" };\nconst _hoisted_2 = [\"aria-labelledby\"];\nconst _hoisted_3 = [\"id\", \"for\"];\nconst _hoisted_4 = { class: \"vc-input__desc\" };\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => (($options.val) = $event)),\n \"aria-labelledby\": $options.labelId,\n class: \"vc-input__input\",\n onKeydown: _cache[1] || (_cache[1] = (...args) => ($options.handleKeyDown && $options.handleKeyDown(...args))),\n onInput: _cache[2] || (_cache[2] = (...args) => ($options.update && $options.update(...args)))\n }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_2), [\n [vModelText, $options.val]\n ]),\n createElementVNode(\"span\", {\n id: $options.labelId,\n for: $props.label,\n class: \"vc-input__label\"\n }, toDisplayString($options.labelSpanText), 9 /* TEXT, PROPS */, _hoisted_3),\n createElementVNode(\"span\", _hoisted_4, toDisplayString($props.desc), 1 /* TEXT */)\n ]))\n}\n\nvar css_248z = \".vc-editable-input{position:relative}.vc-input__input{border:0;outline:none;padding:0}.vc-input__label{text-transform:capitalize}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/editable-input/editable-input.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","function clamp(value, min, max) {\n return min < max\n ? (value < min ? min : value > max ? max : value)\n : (value < max ? max : value > min ? min : value);\n}\n\nexport { clamp };\n","import { clamp } from '../../utils/utils.js';\nimport { openBlock, createElementBlock, normalizeStyle, createElementVNode } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '../../defaultConfig.js';\n\nvar script = {\n name: 'Saturation',\n props: {\n value: Object,\n },\n computed: {\n colors() {\n return this.value;\n },\n bgColor() {\n return `hsl(${this.colors.hsv.h}, 100%, 50%)`;\n },\n pointerTop() {\n return `${(-(this.colors.hsv.v * 100) + 1) + 100}%`;\n },\n pointerLeft() {\n return `${this.colors.hsv.s * 100}%`;\n },\n },\n methods: {\n handleChange(e, skip) {\n !skip && e.preventDefault();\n const { container } = this.$refs;\n if (!container) {\n // for some edge cases, container may not exist. see #220\n return;\n }\n const containerWidth = container.clientWidth;\n const containerHeight = container.clientHeight;\n\n const xOffset = container.getBoundingClientRect().left + window.pageXOffset;\n const yOffset = container.getBoundingClientRect().top + window.pageYOffset;\n const pageX = e.pageX || (e.touches ? e.touches[0].pageX : 0);\n const pageY = e.pageY || (e.touches ? e.touches[0].pageY : 0);\n const left = clamp(pageX - xOffset, 0, containerWidth);\n const top = clamp(pageY - yOffset, 0, containerHeight);\n const saturation = left / containerWidth;\n const bright = clamp(-(top / containerHeight) + 1, 0, 1);\n\n this.onChange({\n h: this.colors.hsv.h,\n s: saturation,\n v: bright,\n a: this.colors.hsv.a,\n source: 'hsva',\n });\n },\n onChange(param) {\n this.$emit('change', param);\n },\n handleMouseDown(e) {\n // this.handleChange(e, true)\n window.addEventListener('mousemove', this.handleChange);\n window.addEventListener('mouseup', this.handleChange);\n window.addEventListener('mouseup', this.handleMouseUp);\n },\n handleMouseUp(e) {\n this.unbindEventListeners();\n },\n unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n },\n },\n};\n\nconst _hoisted_1 = /*#__PURE__*/createElementVNode(\"div\", { class: \"vc-saturation--white\" }, null, -1 /* HOISTED */);\nconst _hoisted_2 = /*#__PURE__*/createElementVNode(\"div\", { class: \"vc-saturation--black\" }, null, -1 /* HOISTED */);\nconst _hoisted_3 = /*#__PURE__*/createElementVNode(\"div\", { class: \"vc-saturation-circle\" }, null, -1 /* HOISTED */);\nconst _hoisted_4 = [\n _hoisted_3\n];\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createElementBlock(\"div\", {\n ref: \"container\",\n class: \"vc-saturation\",\n style: normalizeStyle({ background: $options.bgColor }),\n onMousedown: _cache[0] || (_cache[0] = (...args) => ($options.handleMouseDown && $options.handleMouseDown(...args))),\n onTouchmove: _cache[1] || (_cache[1] = (...args) => ($options.handleChange && $options.handleChange(...args))),\n onTouchstart: _cache[2] || (_cache[2] = (...args) => ($options.handleChange && $options.handleChange(...args)))\n }, [\n _hoisted_1,\n _hoisted_2,\n createElementVNode(\"div\", {\n class: \"vc-saturation-pointer\",\n style: normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft })\n }, _hoisted_4, 4 /* STYLE */)\n ], 36 /* STYLE, HYDRATE_EVENTS */))\n}\n\nvar css_248z = \".vc-saturation,.vc-saturation--black,.vc-saturation--white{bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0}.vc-saturation--white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.vc-saturation--black{background:linear-gradient(0deg,#000,transparent)}.vc-saturation-pointer{cursor:pointer;position:absolute}.vc-saturation-circle{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/saturation/saturation.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","import { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '../../defaultConfig.js';\n\nvar script = {\n name: 'Hue',\n props: {\n value: Object,\n direction: {\n type: String,\n // [horizontal | vertical]\n default: 'horizontal',\n },\n },\n data() {\n return {\n oldHue: 0,\n pullDirection: '',\n };\n },\n computed: {\n colors() {\n return this.value;\n },\n directionClass() {\n return {\n 'vc-hue--horizontal': this.direction === 'horizontal',\n 'vc-hue--vertical': this.direction === 'vertical',\n };\n },\n pointerTop() {\n if (this.direction === 'vertical') {\n if (this.colors.hsl.h === 0 && this.pullDirection === 'right')\n return 0;\n return `${-((this.colors.hsl.h * 100) / 360) + 100}%`;\n }\n return 0;\n },\n pointerLeft() {\n if (this.direction === 'vertical')\n return 0;\n\n if (this.colors.hsl.h === 0 && this.pullDirection === 'right')\n return '100%';\n return `${(this.colors.hsl.h * 100) / 360}%`;\n },\n },\n watch: {\n value: {\n handler(value, oldVal) {\n const { h } = value.hsl;\n if (h !== 0 && h - this.oldHue > 0)\n this.pullDirection = 'right';\n if (h !== 0 && h - this.oldHue < 0)\n this.pullDirection = 'left';\n this.oldHue = h;\n },\n deep: true,\n immediate: true,\n },\n },\n methods: {\n handleChange(e, skip) {\n !skip && e.preventDefault();\n\n const { container } = this.$refs;\n if (!container) {\n // for some edge cases, container may not exist. see #220\n return;\n }\n const containerWidth = container.clientWidth;\n const containerHeight = container.clientHeight;\n\n const xOffset = container.getBoundingClientRect().left + window.pageXOffset;\n const yOffset = container.getBoundingClientRect().top + window.pageYOffset;\n const pageX = e.pageX || (e.touches ? e.touches[0].pageX : 0);\n const pageY = e.pageY || (e.touches ? e.touches[0].pageY : 0);\n const left = pageX - xOffset;\n const top = pageY - yOffset;\n\n let h;\n let percent;\n\n if (this.direction === 'vertical') {\n if (top < 0) {\n h = 360;\n }\n else if (top > containerHeight) {\n h = 0;\n }\n else {\n percent = -(top * 100 / containerHeight) + 100;\n h = (360 * percent / 100);\n }\n\n if (this.colors.hsl.h !== h) {\n this.$emit('change', {\n h,\n s: this.colors.hsl.s,\n l: this.colors.hsl.l,\n a: this.colors.hsl.a,\n source: 'hsl',\n });\n }\n }\n else {\n if (left < 0) {\n h = 0;\n }\n else if (left > containerWidth) {\n h = 360;\n }\n else {\n percent = left * 100 / containerWidth;\n h = (360 * percent / 100);\n }\n\n if (this.colors.hsl.h !== h) {\n this.$emit('change', {\n h,\n s: this.colors.hsl.s,\n l: this.colors.hsl.l,\n a: this.colors.hsl.a,\n source: 'hsl',\n });\n }\n }\n },\n handleMouseDown(e) {\n this.handleChange(e, true);\n window.addEventListener('mousemove', this.handleChange);\n window.addEventListener('mouseup', this.handleChange);\n window.addEventListener('mouseup', this.handleMouseUp);\n },\n handleMouseUp(e) {\n this.unbindEventListeners();\n },\n unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n },\n },\n};\n\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = /*#__PURE__*/createElementVNode(\"div\", { class: \"vc-hue-picker\" }, null, -1 /* HOISTED */);\nconst _hoisted_3 = [\n _hoisted_2\n];\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vc-hue\", [$options.directionClass]])\n }, [\n createElementVNode(\"div\", {\n ref: \"container\",\n class: \"vc-hue-container\",\n role: \"slider\",\n \"aria-valuenow\": $options.colors.hsl.h,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"360\",\n onMousedown: _cache[0] || (_cache[0] = (...args) => ($options.handleMouseDown && $options.handleMouseDown(...args))),\n onTouchmove: _cache[1] || (_cache[1] = (...args) => ($options.handleChange && $options.handleChange(...args))),\n onTouchstart: _cache[2] || (_cache[2] = (...args) => ($options.handleChange && $options.handleChange(...args)))\n }, [\n createElementVNode(\"div\", {\n class: \"vc-hue-pointer\",\n style: normalizeStyle({ top: $options.pointerTop, left: $options.pointerLeft }),\n role: \"presentation\"\n }, _hoisted_3, 4 /* STYLE */)\n ], 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_1)\n ], 2 /* CLASS */))\n}\n\nvar css_248z = \".vc-hue{border-radius:2px;bottom:0;left:0;position:absolute;right:0;top:0}.vc-hue--horizontal{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.vc-hue--vertical{background:linear-gradient(0deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.vc-hue-container{cursor:pointer;height:100%;margin:0 2px;position:relative}.vc-hue-pointer{position:absolute;z-index:2}.vc-hue-picker{background:#fff;border-radius:1px;box-shadow:0 0 2px rgba(0,0,0,.6);cursor:pointer;height:8px;margin-top:1px;transform:translateX(-2px);width:4px}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/hue/hue.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","import colorMixin from '../../mixin/color.js';\nimport script$4 from '../editable-input/index.js';\nimport script$1 from '../saturation/index.js';\nimport script$2 from '../hue/index.js';\nimport script$3 from '../alpha/index.js';\nimport script$5 from '../checkboard/index.js';\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, normalizeStyle, createBlock, createCommentVNode, withDirectives, vShow } from 'vue';\nimport { s as styleInject } from '../../style-inject.es-746bb8ed.js';\nimport { install } from '../../utils/compoent.js';\nimport '@ctrl/tinycolor';\nimport '../../utils/utils.js';\nimport '../../defaultConfig.js';\n\nvar script = {\n name: 'Chrome',\n components: {\n Saturation: script$1,\n Hue: script$2,\n Alpha: script$3,\n EdIn: script$4,\n Checkboard: script$5,\n },\n mixins: [colorMixin],\n props: {\n disableAlpha: {\n type: Boolean,\n default: false,\n },\n disableFields: {\n type: Boolean,\n default: false,\n },\n format: {\n type: String,\n default: 'hex',\n },\n },\n data() {\n return {\n fieldsIndex: 'hex',\n highlight: false,\n };\n },\n computed: {\n hsl() {\n const { h, s, l } = this.colors.hsl;\n return {\n h: h.toFixed(),\n s: `${(s * 100).toFixed()}%`,\n l: `${(l * 100).toFixed()}%`,\n };\n },\n activeColor() {\n const { rgba } = this.colors;\n return `rgba(${[rgba.r, rgba.g, rgba.b, rgba.a].join(',')})`;\n },\n hasAlpha() {\n return this.colors.a < 1;\n },\n },\n watch: {\n format: {\n handler(val) {\n this.fieldsIndex = val;\n },\n immediate: true,\n },\n },\n methods: {\n childChange(data) {\n this.colorChange(data);\n },\n inputChange(data) {\n if (!data)\n return;\n\n if (data.hex) {\n this.isValidHex(data.hex) && this.colorChange({\n hex: data.hex,\n source: 'hex',\n });\n }\n else if (data.r || data.g || data.b || data.a) {\n this.colorChange({\n r: data.r || this.colors.rgba.r,\n g: data.g || this.colors.rgba.g,\n b: data.b || this.colors.rgba.b,\n a: data.a || this.colors.rgba.a,\n source: 'rgba',\n });\n }\n else if (data.h || data.s || data.l) {\n const s = data.s ? (data.s.replace('%', '') / 100) : this.colors.hsl.s;\n const l = data.l ? (data.l.replace('%', '') / 100) : this.colors.hsl.l;\n\n this.colorChange({\n h: data.h || this.colors.hsl.h,\n s,\n l,\n source: 'hsl',\n });\n }\n },\n toggleViews() {\n switch (this.fieldsIndex) {\n case 'hex':\n this.fieldsIndex = `rgb${this.disableAlpha ? '' : 'a'}`;\n break;\n case 'rgb':\n case 'rgba':\n this.fieldsIndex = `hsl${this.disableAlpha ? '' : 'a'}`;\n break;\n default:\n this.fieldsIndex = 'hex';\n break;\n }\n this.$emit('update:format', this.fieldsIndex);\n },\n showHighlight() {\n this.highlight = true;\n },\n hideHighlight() {\n this.highlight = false;\n },\n },\n};\n\nconst _hoisted_1 = { class: \"vc-chrome-saturation-wrap\" };\nconst _hoisted_2 = { class: \"vc-chrome-body\" };\nconst _hoisted_3 = { class: \"vc-chrome-controls\" };\nconst _hoisted_4 = { class: \"vc-chrome-color-wrap\" };\nconst _hoisted_5 = [\"aria-label\"];\nconst _hoisted_6 = { class: \"vc-chrome-sliders\" };\nconst _hoisted_7 = { class: \"vc-chrome-hue-wrap\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"vc-chrome-alpha-wrap\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"vc-chrome-fields-wrap\"\n};\nconst _hoisted_10 = { class: \"vc-chrome-fields\" };\nconst _hoisted_11 = { class: \"vc-chrome-field\" };\nconst _hoisted_12 = { class: \"vc-chrome-fields\" };\nconst _hoisted_13 = { class: \"vc-chrome-field\" };\nconst _hoisted_14 = { class: \"vc-chrome-field\" };\nconst _hoisted_15 = { class: \"vc-chrome-field\" };\nconst _hoisted_16 = {\n key: 0,\n class: \"vc-chrome-field\"\n};\nconst _hoisted_17 = { class: \"vc-chrome-fields\" };\nconst _hoisted_18 = { class: \"vc-chrome-field\" };\nconst _hoisted_19 = { class: \"vc-chrome-field\" };\nconst _hoisted_20 = { class: \"vc-chrome-field\" };\nconst _hoisted_21 = {\n key: 0,\n class: \"vc-chrome-field\"\n};\nconst _hoisted_22 = { class: \"vc-chrome-toggle-icon\" };\nconst _hoisted_23 = /*#__PURE__*/createElementVNode(\"path\", {\n fill: \"#333\",\n d: \"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z\"\n}, null, -1 /* HOISTED */);\nconst _hoisted_24 = [\n _hoisted_23\n];\nconst _hoisted_25 = { class: \"vc-chrome-toggle-icon-highlight\" };\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Saturation = resolveComponent(\"Saturation\");\n const _component_Checkboard = resolveComponent(\"Checkboard\");\n const _component_Hue = resolveComponent(\"Hue\");\n const _component_Alpha = resolveComponent(\"Alpha\");\n const _component_EdIn = resolveComponent(\"EdIn\");\n\n return (openBlock(), createElementBlock(\"div\", {\n role: \"application\",\n \"aria-label\": \"Chrome color picker\",\n class: normalizeClass([\"vc-chrome\", [$props.disableAlpha ? 'vc-chrome__disable-alpha' : '']])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createVNode(_component_Saturation, {\n value: _ctx.colors,\n onChange: $options.childChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", {\n \"aria-label\": `current color is ${_ctx.colors.hex}`,\n class: \"vc-chrome-active-color\",\n style: normalizeStyle({ background: $options.activeColor })\n }, null, 12 /* STYLE, PROPS */, _hoisted_5),\n (!$props.disableAlpha)\n ? (openBlock(), createBlock(_component_Checkboard, { key: 0 }))\n : createCommentVNode(\"v-if\", true)\n ]),\n createElementVNode(\"div\", _hoisted_6, [\n createElementVNode(\"div\", _hoisted_7, [\n createVNode(_component_Hue, {\n value: _ctx.colors,\n onChange: $options.childChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n (!$props.disableAlpha)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n createVNode(_component_Alpha, {\n value: _ctx.colors,\n onChange: $options.childChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]))\n : createCommentVNode(\"v-if\", true)\n ])\n ]),\n (!$props.disableFields)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_9, [\n withDirectives(createElementVNode(\"div\", _hoisted_10, [\n createCommentVNode(\" hex \"),\n createElementVNode(\"div\", _hoisted_11, [\n (!$options.hasAlpha)\n ? (openBlock(), createBlock(_component_EdIn, {\n key: 0,\n label: \"hex\",\n value: _ctx.colors.hex,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"]))\n : createCommentVNode(\"v-if\", true),\n ($options.hasAlpha)\n ? (openBlock(), createBlock(_component_EdIn, {\n key: 1,\n label: \"hex\",\n value: _ctx.colors.hex8,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"]))\n : createCommentVNode(\"v-if\", true)\n ])\n ], 512 /* NEED_PATCH */), [\n [vShow, $data.fieldsIndex === 'hex']\n ]),\n withDirectives(createElementVNode(\"div\", _hoisted_12, [\n createCommentVNode(\" rgba \"),\n createElementVNode(\"div\", _hoisted_13, [\n createVNode(_component_EdIn, {\n label: \"r\",\n value: _ctx.colors.rgba.r,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n createElementVNode(\"div\", _hoisted_14, [\n createVNode(_component_EdIn, {\n label: \"g\",\n value: _ctx.colors.rgba.g,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n createElementVNode(\"div\", _hoisted_15, [\n createVNode(_component_EdIn, {\n label: \"b\",\n value: _ctx.colors.rgba.b,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n (!$props.disableAlpha)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_16, [\n createVNode(_component_EdIn, {\n label: \"a\",\n value: _ctx.colors.a,\n \"arrow-offset\": 0.01,\n max: 1,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"arrow-offset\", \"onChange\"])\n ]))\n : createCommentVNode(\"v-if\", true)\n ], 512 /* NEED_PATCH */), [\n [vShow, ['rgb', 'rgba'].includes($data.fieldsIndex)]\n ]),\n withDirectives(createElementVNode(\"div\", _hoisted_17, [\n createCommentVNode(\" hsla \"),\n createElementVNode(\"div\", _hoisted_18, [\n createVNode(_component_EdIn, {\n label: \"h\",\n value: $options.hsl.h,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n createElementVNode(\"div\", _hoisted_19, [\n createVNode(_component_EdIn, {\n label: \"s\",\n value: $options.hsl.s,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n createElementVNode(\"div\", _hoisted_20, [\n createVNode(_component_EdIn, {\n label: \"l\",\n value: $options.hsl.l,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"onChange\"])\n ]),\n (!$props.disableAlpha)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_21, [\n createVNode(_component_EdIn, {\n label: \"a\",\n value: _ctx.colors.a,\n \"arrow-offset\": 0.01,\n max: 1,\n onChange: $options.inputChange\n }, null, 8 /* PROPS */, [\"value\", \"arrow-offset\", \"onChange\"])\n ]))\n : createCommentVNode(\"v-if\", true)\n ], 512 /* NEED_PATCH */), [\n [vShow, ['hsl', 'hsla'].includes($data.fieldsIndex)]\n ]),\n createCommentVNode(\" btn \"),\n createElementVNode(\"div\", {\n class: \"vc-chrome-toggle-btn\",\n role: \"button\",\n \"aria-label\": \"Change another color definition\",\n onClick: _cache[3] || (_cache[3] = (...args) => ($options.toggleViews && $options.toggleViews(...args)))\n }, [\n createElementVNode(\"div\", _hoisted_22, [\n (openBlock(), createElementBlock(\"svg\", {\n style: {\"width\":\"24px\",\"height\":\"24px\"},\n viewBox: \"0 0 24 24\",\n onMouseover: _cache[0] || (_cache[0] = (...args) => ($options.showHighlight && $options.showHighlight(...args))),\n onMouseenter: _cache[1] || (_cache[1] = (...args) => ($options.showHighlight && $options.showHighlight(...args))),\n onMouseout: _cache[2] || (_cache[2] = (...args) => ($options.hideHighlight && $options.hideHighlight(...args)))\n }, _hoisted_24, 32 /* HYDRATE_EVENTS */))\n ]),\n withDirectives(createElementVNode(\"div\", _hoisted_25, null, 512 /* NEED_PATCH */), [\n [vShow, $data.highlight]\n ])\n ]),\n createCommentVNode(\" btn \")\n ]))\n : createCommentVNode(\"v-if\", true)\n ])\n ], 2 /* CLASS */))\n}\n\nvar css_248z = \".vc-chrome{background:#fff;background-color:#fff;border-radius:2px;box-shadow:0 0 2px rgba(0,0,0,.3),0 4px 8px rgba(0,0,0,.3);box-sizing:initial;font-family:Menlo;width:225px}.vc-chrome-controls{display:flex}.vc-chrome-color-wrap{position:relative;width:36px}.vc-chrome-active-color{border-radius:15px;height:30px;overflow:hidden;position:relative;width:30px;z-index:1}.vc-chrome-color-wrap .vc-checkerboard{background-size:auto;border-radius:15px;height:30px;width:30px}.vc-chrome-sliders{flex:1}.vc-chrome-fields-wrap{display:flex;padding-top:16px}.vc-chrome-fields{display:flex;flex:1;margin-left:-6px}.vc-chrome-field{padding-left:6px;width:100%}.vc-chrome-toggle-btn{position:relative;text-align:right;width:32px}.vc-chrome-toggle-icon{cursor:pointer;margin-right:-4px;margin-top:12px;position:relative;z-index:2}.vc-chrome-toggle-icon-highlight{background:#eee;border-radius:4px;height:28px;left:12px;position:absolute;top:10px;width:24px}.vc-chrome-hue-wrap{margin-bottom:8px}.vc-chrome-alpha-wrap,.vc-chrome-hue-wrap{height:10px;position:relative}.vc-chrome-alpha-wrap .vc-alpha-gradient,.vc-chrome-hue-wrap .vc-hue{border-radius:2px}.vc-chrome-alpha-wrap .vc-alpha-picker,.vc-chrome-hue-wrap .vc-hue-picker{background-color:#f8f8f8;border-radius:6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.37);height:12px;transform:translate(-6px,-2px);width:12px}.vc-chrome-body{background-color:#fff;padding:16px 16px 12px}.vc-chrome-saturation-wrap{border-radius:2px 2px 0 0;overflow:hidden;padding-bottom:55%;position:relative;width:100%}.vc-chrome-saturation-wrap .vc-saturation-circle{height:12px;width:12px}.vc-chrome-fields .vc-input__input{border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #dadada;color:#333;font-size:11px;height:21px;text-align:center;width:100%}.vc-chrome-fields .vc-input__label{color:#969696;display:block;font-size:11px;line-height:11px;margin-top:12px;text-align:center;text-transform:uppercase}.vc-chrome__disable-alpha .vc-chrome-active-color{height:18px;width:18px}.vc-chrome__disable-alpha .vc-chrome-color-wrap{width:30px}.vc-chrome__disable-alpha .vc-chrome-hue-wrap{margin-bottom:4px;margin-top:4px}\";\nstyleInject(css_248z);\n\nscript.render = render;\nscript.__file = \"src/components/chrome/chrome.vue\";\n\nscript.install = install;\n\nexport { script as default };\n","import '../assets/NcColorPicker.css';\nimport { defineComponent, useModel, ref, computed, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, createVNode, Transition, createElementBlock, Fragment, renderList, normalizeStyle, createCommentVNode, createTextVNode, toDisplayString, renderSlot, normalizeProps, guardReactiveProps, mergeModels } from \"vue\";\nimport { Chrome } from \"@ckpack/vue-color\";\nimport { d as mdiCheck, u as mdiCloseCircleOutline, v as mdiArrowLeft, w as mdiDotsHorizontal } from \"./mdi.mjs\";\nimport { r as register, x as t1, a as t } from \"./_l10n.mjs\";\nimport { d as defaultPalette, a as COLOR_BLACK, b as COLOR_WHITE } from \"./colors.mjs\";\nimport { c as createElementId } from \"./createElementId.mjs\";\nimport { l as logger } from \"./logger.mjs\";\nimport { N as NcButton } from \"./NcButton.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper.mjs\";\nimport { N as NcPopover } from \"./NcPopover.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nregister(t1);\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"color-picker__simple\"\n};\nconst _hoisted_3 = [\"aria-label\", \"name\", \"checked\", \"onClick\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = [\"aria-label\", \"name\", \"checked\"];\nconst _hoisted_6 = {\n key: 0,\n class: \"color-picker__navigation\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcColorPicker\",\n props: /* @__PURE__ */ mergeModels({\n advancedFields: { type: Boolean },\n clearable: { type: Boolean },\n container: { default: \"body\" },\n palette: { default: () => [] },\n paletteOnly: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {},\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"submit\", \"closed\"], [\"update:modelValue\", \"update:open\"]),\n setup(__props, { emit: __emit }) {\n const currentColor = useModel(__props, \"modelValue\");\n const open = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const HEX_REGEX = /^#([a-f0-9]{3}|[a-f0-9]{6})$/i;\n const id = createElementId();\n const advanced = ref(false);\n const normalizedPalette = computed(() => {\n let palette = props.palette;\n for (const color of palette) {\n if (typeof color === \"string\" && !color.match(HEX_REGEX) || typeof color === \"object\" && !color.color?.match(HEX_REGEX)) {\n logger.error(\"[NcColorPicker] Invalid palette passed\", { color });\n palette = [];\n break;\n }\n }\n if (palette.length === 0) {\n palette = props.clearable ? [...defaultPalette, COLOR_BLACK, COLOR_WHITE] : [...defaultPalette];\n }\n return palette.map((item) => ({\n color: typeof item === \"object\" ? item.color : item,\n name: typeof item === \"object\" && item.name ? item.name : t(\"A color with a HEX value {hex}\", { hex: typeof item === \"string\" ? item : item.color })\n }));\n });\n function handleConfirm(hideCallback) {\n emit(\"submit\", currentColor.value);\n hideCallback();\n advanced.value = false;\n }\n function toggleColor(color) {\n color = typeof color === \"string\" ? color : color.color;\n if (props.clearable && currentColor.value === color) {\n currentColor.value = void 0;\n } else {\n currentColor.value = color;\n }\n }\n function pickCustomColor(color) {\n currentColor.value = color.hex;\n }\n function getContrastColor(color) {\n return calculateLuma(color) > 0.5 ? COLOR_BLACK.color : COLOR_WHITE.color;\n }\n function calculateLuma(color) {\n const [red, green, blue] = hexToRGB(color);\n return (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255;\n }\n function hexToRGB(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) {\n return [0, 0, 0];\n }\n return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)];\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcPopover), {\n shown: open.value,\n \"onUpdate:shown\": _cache[3] || (_cache[3] = ($event) => open.value = $event),\n container: __props.container,\n popupRole: \"dialog\",\n onApplyHide: _cache[4] || (_cache[4] = ($event) => emit(\"closed\"))\n }, {\n trigger: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)), void 0, true)\n ]),\n default: withCtx((slotProps) => [\n createElementVNode(\"div\", {\n role: \"dialog\",\n class: normalizeClass([\"color-picker\", {\n \"color-picker--advanced-fields\": advanced.value && __props.advancedFields,\n \"color-picker--clearable\": __props.clearable\n }]),\n \"aria-modal\": \"true\",\n \"aria-label\": unref(t)(\"Color picker\")\n }, [\n createVNode(Transition, {\n name: \"slide\",\n mode: \"out-in\"\n }, {\n default: withCtx(() => [\n !advanced.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedPalette.value, ({ color, name }, index) => {\n return openBlock(), createElementBlock(\"label\", {\n key: index,\n class: normalizeClass([\"color-picker__simple-color-circle\", { \"color-picker__simple-color-circle--active\": color === currentColor.value }]),\n style: normalizeStyle({\n backgroundColor: color,\n color: getContrastColor(color)\n })\n }, [\n color === currentColor.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n path: unref(mdiCheck)\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"input\", {\n type: \"radio\",\n class: \"hidden-visually\",\n \"aria-label\": name,\n name: `color-picker-${unref(id)}`,\n checked: color === currentColor.value,\n onClick: ($event) => toggleColor(color)\n }, null, 8, _hoisted_3)\n ], 6);\n }), 128)),\n __props.clearable ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"color-picker__clear\",\n title: unref(t)(\"No color\")\n }, [\n createVNode(unref(NcIconSvgWrapper), {\n size: currentColor.value ? 28 : 34,\n path: unref(mdiCloseCircleOutline)\n }, null, 8, [\"size\", \"path\"]),\n createElementVNode(\"input\", {\n type: \"radio\",\n class: \"hidden-visually\",\n \"aria-label\": unref(t)(\"No color\"),\n name: `color-picker-${unref(id)}`,\n checked: !currentColor.value,\n onClick: _cache[0] || (_cache[0] = ($event) => currentColor.value = void 0)\n }, null, 8, _hoisted_5)\n ], 8, _hoisted_4)) : createCommentVNode(\"\", true)\n ])) : (openBlock(), createBlock(unref(Chrome), {\n key: 1,\n class: \"color-picker__advanced\",\n disableAlpha: \"\",\n disableFields: !__props.advancedFields,\n modelValue: currentColor.value ?? \"#000000\",\n \"onUpdate:modelValue\": pickCustomColor\n }, null, 8, [\"disableFields\", \"modelValue\"]))\n ]),\n _: 1\n }),\n !__props.paletteOnly ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n advanced.value ? (openBlock(), createBlock(unref(NcButton), {\n key: 0,\n \"aria-label\": unref(t)(\"Back\"),\n title: unref(t)(\"Back\"),\n variant: \"tertiary\",\n onClick: _cache[1] || (_cache[1] = ($event) => advanced.value = false)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n directional: \"\",\n path: unref(mdiArrowLeft)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])) : (openBlock(), createBlock(unref(NcButton), {\n key: 1,\n \"aria-label\": unref(t)(\"More options\"),\n title: unref(t)(\"More options\"),\n variant: \"tertiary\",\n onClick: _cache[2] || (_cache[2] = ($event) => advanced.value = true)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), { path: unref(mdiDotsHorizontal) }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])),\n createVNode(unref(NcButton), {\n variant: \"primary\",\n onClick: ($event) => handleConfirm(slotProps.hide)\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Choose\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1)\n ]),\n _: 3\n }, 8, [\"shown\", \"container\"]);\n };\n }\n});\nconst NcColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-fab7cffe\"]]);\nexport {\n NcColorPicker as N\n};\n//# sourceMappingURL=NcColorPicker.mjs.map\n","import '../assets/NcEmojiPicker.css';\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast/src/index.js\";\nimport { isFocusable } from \"tabbable\";\nimport { openBlock, createElementBlock, mergeProps, toDisplayString, createCommentVNode, createElementVNode, resolveComponent, createBlock, withCtx, createVNode, withKeys, withModifiers, createSlots, normalizeStyle, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji.mjs\";\nimport { r as register, s as t46, u as t40, v as t17, w as t5, a as t } from \"./_l10n.mjs\";\nimport { C as Color } from \"./colors.mjs\";\nimport { N as NcButton } from \"./NcButton.mjs\";\nimport { N as NcPopover } from \"./NcPopover.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_3$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true),\n _cache[1] || (_cache[1] = createElementVNode(\"path\", { d: \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" }, null, -1))\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst IconCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t5, t17, t40, t46);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField: _sfc_main$2,\n Emoji,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"selectData\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"selectData\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via 's handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nconst _hoisted_1 = { class: \"nc-emoji-picker-container\" };\nconst _hoisted_2 = { class: \"search__wrapper\" };\nconst _hoisted_3 = { class: \"emoji-mart-category-label\" };\nconst _hoisted_4 = { class: \"emoji-mart-category-label\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n const _component_IconCircle = resolveComponent(\"IconCircle\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_Emoji = resolveComponent(\"Emoji\");\n const _component_Picker = resolveComponent(\"Picker\");\n const _component_NcPopover = resolveComponent(\"NcPopover\");\n return openBlock(), createBlock(_component_NcPopover, {\n ref: \"popover\",\n shown: $data.open,\n \"onUpdate:shown\": _cache[6] || (_cache[6] = ($event) => $data.open = $event),\n container: $props.container,\n popupRole: \"dialog\",\n noFocusTrap: true,\n onAfterShow: $options.afterShow,\n onAfterHide: $options.afterHide\n }, {\n trigger: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)), void 0, true)\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n createVNode(_component_Picker, mergeProps({\n ref: \"picker\",\n color: \"var(--color-primary-element)\",\n data: $setup.emojiIndex,\n emoji: $props.previewFallbackEmoji,\n i18n: $setup.i18n,\n native: $options.native,\n emojiSize: 20,\n perLine: 8,\n pickerStyles: { width: \"320px\" },\n showPreview: $props.showPreview,\n skin: $data.currentSkinTone,\n showSkinTones: false,\n title: $props.previewFallbackName,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": $options.t(\"Emoji picker\")\n }, _ctx.$attrs, {\n onKeydown: withKeys(withModifiers($options.handleTabNavigationSkippingEmojis, [\"prevent\"]), [\"tab\"]),\n onSelect: $options.select\n }), createSlots({\n searchTemplate: withCtx(({ onSearch }) => [\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcTextField, {\n ref: \"search\",\n modelValue: $data.search,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n ($event) => onSearch($data.search)\n ],\n class: \"search\",\n label: $options.t(\"Search\"),\n labelVisible: true,\n placeholder: $setup.i18n.search,\n trailingButtonIcon: \"close\",\n trailingButtonLabel: $options.t(\"Clear search\"),\n showTrailingButton: $data.search !== \"\",\n onKeydown: [\n _cache[1] || (_cache[1] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event), [\"left\"])),\n _cache[2] || (_cache[2] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event), [\"right\"])),\n _cache[3] || (_cache[3] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event), [\"down\"])),\n _cache[4] || (_cache[4] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event), [\"up\"])),\n _cache[5] || (_cache[5] = withKeys(($event) => _ctx.$refs.picker.onEnter($event), [\"enter\"]))\n ],\n onTrailingButtonClick: ($event) => {\n $options.clearSearch();\n onSearch(\"\");\n }\n }, null, 8, [\"modelValue\", \"label\", \"placeholder\", \"trailingButtonLabel\", \"showTrailingButton\", \"onTrailingButtonClick\", \"onUpdate:modelValue\"]),\n createVNode(_component_NcColorPicker, {\n paletteOnly: \"\",\n container: $props.container,\n palette: $setup.skinTonePalette,\n modelValue: $data.currentColor.color,\n \"onUpdate:modelValue\": $options.onChangeSkinTone\n }, {\n default: withCtx(() => [\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"Skin tone\"),\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconCircle, {\n style: normalizeStyle({ color: $data.currentColor.color }),\n title: $data.currentColor.name,\n size: 20\n }, null, 8, [\"style\", \"title\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ]),\n _: 1\n }, 8, [\"container\", \"palette\", \"modelValue\", \"onUpdate:modelValue\"])\n ])\n ]),\n _: 2\n }, [\n $props.allowUnselect && $props.selectedEmoji ? {\n name: \"customCategory\",\n fn: withCtx(() => [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"h3\", _hoisted_4, toDisplayString($options.t(\"Selected\")), 1)\n ]),\n createVNode(_component_Emoji, {\n class: \"emoji-selected\",\n data: $setup.emojiIndex,\n emoji: $props.selectedEmoji,\n native: \"\",\n size: 32,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"emoji\", \"onClick\"]),\n createVNode(_component_Emoji, {\n class: \"emoji-delete\",\n data: $setup.emojiIndex,\n emoji: \":x:\",\n native: \"\",\n size: 10,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"onClick\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"data\", \"emoji\", \"i18n\", \"native\", \"showPreview\", \"skin\", \"title\", \"aria-label\", \"onKeydown\", \"onSelect\"])\n ])\n ]),\n _: 3\n }, 8, [\"shown\", \"container\", \"onAfterShow\", \"onAfterHide\"]);\n}\nconst NcEmojiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-11acdb77\"]]);\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker.mjs.map\n","import '../assets/NcActionSeparator.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator.mjs.map\n","import './assets/index.css';\nimport { shallowRef, computed, defineComponent, openBlock, createElementBlock, normalizeClass, renderSlot, mergeProps, createElementVNode, toDisplayString, createCommentVNode, normalizeStyle, createTextVNode, watch, provide, inject, Fragment, renderList, createVNode, withCtx, createBlock, resolveDynamicComponent, unref, createSlots, withModifiers, ref, useTemplateRef, onMounted, onBeforeUnmount, withDirectives, withKeys, vModelText } from \"vue\";\nimport { showConfirmation } from \"@nextcloud/dialogs\";\nimport Konva from \"konva\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcLoadingIcon from \"@nextcloud/vue/components/NcLoadingIcon\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { emojiSearch } from \"@nextcloud/vue/functions/emoji\";\nimport NcEmojiPicker from \"@nextcloud/vue/components/NcEmojiPicker\";\nimport NcActionButton from \"@nextcloud/vue/components/NcActionButton\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcActionSeparator from \"@nextcloud/vue/components/NcActionSeparator\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\nimport { e as estimateJpegQuality, r as readMetadataSegments, w as withMetadata } from \"./chunks/jpeg.mjs\";\nimport { D, i, a, b, s } from \"./chunks/jpeg.mjs\";\nfunction useHistory(capacity = 100) {\n if (!Number.isInteger(capacity) || capacity < 1) {\n throw new RangeError(\"History capacity must be a positive integer\");\n }\n const entries = shallowRef([]);\n const index = shallowRef(-1);\n const canUndo = computed(() => index.value > 0);\n const canRedo = computed(() => index.value < entries.value.length - 1);\n const current = computed(() => entries.value[index.value]?.snapshot);\n function push(snapshot, label) {\n const kept = [...entries.value.slice(0, index.value + 1), { snapshot, label }];\n entries.value = kept.slice(Math.max(0, kept.length - capacity));\n index.value = entries.value.length - 1;\n }\n function jumpTo(target) {\n if (target === index.value || target < 0 || target >= entries.value.length) {\n return void 0;\n }\n index.value = target;\n return current.value;\n }\n function undo() {\n return canUndo.value ? jumpTo(index.value - 1) : void 0;\n }\n function redo() {\n return canRedo.value ? jumpTo(index.value + 1) : void 0;\n }\n function clear() {\n entries.value = [];\n index.value = -1;\n }\n return {\n canUndo,\n canRedo,\n current,\n entries: computed(() => entries.value),\n index: computed(() => index.value),\n push,\n undo,\n redo,\n jumpTo,\n clear\n };\n}\nfunction newId() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return [...crypto.getRandomValues(new Uint8Array(16))].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction createInitialState() {\n return {\n rotation: 0,\n fineRotation: 0,\n zoom: 1,\n flipX: false,\n flipY: false,\n crop: null,\n adjustments: {\n exposure: 0,\n brightness: 0,\n contrast: 0,\n saturation: 0,\n temperature: 0,\n tint: 0,\n sharpen: 0,\n highlights: 0,\n shadows: 0,\n vignette: 0\n },\n preset: \"none\",\n annotations: []\n };\n}\nfunction normaliseState(state) {\n const defaults = createInitialState().adjustments;\n const repaired = Object.entries(defaults).filter(([key]) => !Number.isFinite(state.adjustments[key]));\n if (repaired.length === 0) {\n return state;\n }\n return {\n ...state,\n adjustments: { ...state.adjustments, ...Object.fromEntries(repaired) }\n };\n}\nfunction isPristine(state) {\n return state.rotation === 0 && state.fineRotation === 0 && state.zoom === 1 && !state.flipX && !state.flipY && state.crop === null && Object.values(state.adjustments).every((value) => value === 0) && state.preset === \"none\" && state.annotations.length === 0;\n}\nfunction orientedSize(natural, rotation) {\n return rotation % 180 === 0 ? { width: natural.width, height: natural.height } : { width: natural.height, height: natural.width };\n}\nfunction clampRect(rect, bounds) {\n const x = Math.min(Math.max(rect.x, 0), bounds.width - 1);\n const y = Math.min(Math.max(rect.y, 0), bounds.height - 1);\n return {\n x,\n y,\n width: Math.max(1, Math.min(rect.width, bounds.width - x)),\n height: Math.max(1, Math.min(rect.height, bounds.height - y))\n };\n}\nfunction sameRect(a2, b2) {\n if (a2 === null || b2 === null) {\n return a2 === b2;\n }\n return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;\n}\nfunction mapPointsCW(points, height) {\n const mapped = [];\n for (let i2 = 0; i2 < points.length; i2 += 2) {\n mapped.push(height - (points[i2 + 1] ?? 0), points[i2] ?? 0);\n }\n return mapped;\n}\nfunction mapRectCW(rect, height) {\n return {\n x: height - rect.y - rect.height,\n y: rect.x,\n width: rect.height,\n height: rect.width\n };\n}\nfunction mapAnnotationCW(annotation, height) {\n switch (annotation.type) {\n case \"draw\":\n return { ...annotation, points: mapPointsCW(annotation.points, height) };\n case \"arrow\":\n case \"line\":\n return { ...annotation, points: mapPointsCW(annotation.points, height) };\n case \"rectangle\":\n case \"ellipse\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: height - annotation.rect.y, y: annotation.rect.x },\n rotation: (annotation.rotation + 90) % 360\n };\n case \"redact\":\n return { ...annotation, rect: mapRectCW(annotation.rect, height) };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: height - annotation.y,\n y: annotation.x,\n rotation: (annotation.rotation + 90) % 360\n };\n }\n}\nfunction rotateCW(state, oriented) {\n return {\n ...state,\n rotation: (state.rotation + 90) % 360,\n crop: state.crop && mapRectCW(state.crop, oriented.height),\n annotations: state.annotations.map((annotation) => mapAnnotationCW(annotation, oriented.height))\n };\n}\nfunction mapAnnotationFlipX(annotation, width) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => i2 % 2 === 0 ? width - value : value);\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\": {\n const radians = annotation.rotation * Math.PI / 180;\n return {\n ...annotation,\n rect: {\n ...annotation.rect,\n x: width - annotation.rect.x - annotation.rect.width * Math.cos(radians),\n y: annotation.rect.y + annotation.rect.width * Math.sin(radians)\n },\n rotation: (360 - annotation.rotation) % 360\n };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: width - annotation.rect.x - annotation.rect.width }\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: width - annotation.x,\n rotation: (360 - annotation.rotation) % 360\n };\n }\n}\nfunction flipHorizontal(state, oriented) {\n const sideways = state.rotation % 180 !== 0;\n return {\n ...state,\n flipX: sideways ? state.flipX : !state.flipX,\n flipY: sideways ? !state.flipY : state.flipY,\n fineRotation: -state.fineRotation,\n crop: state.crop && { ...state.crop, x: oriented.width - state.crop.x - state.crop.width },\n annotations: state.annotations.map((annotation) => mapAnnotationFlipX(annotation, oriented.width))\n };\n}\nfunction mapAnnotationFlipY(annotation, height) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => i2 % 2 === 1 ? height - value : value);\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\": {\n const radians = annotation.rotation * Math.PI / 180;\n return {\n ...annotation,\n rect: {\n ...annotation.rect,\n x: annotation.rect.x - annotation.rect.height * Math.sin(radians),\n y: height - annotation.rect.y - annotation.rect.height * Math.cos(radians)\n },\n rotation: (360 - annotation.rotation) % 360\n };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, y: height - annotation.rect.y - annotation.rect.height }\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n y: height - annotation.y,\n rotation: (360 - annotation.rotation) % 360\n };\n }\n}\nfunction flipVertical(state, oriented) {\n const sideways = state.rotation % 180 !== 0;\n return {\n ...state,\n flipX: sideways ? !state.flipX : state.flipX,\n flipY: sideways ? state.flipY : !state.flipY,\n fineRotation: -state.fineRotation,\n crop: state.crop && { ...state.crop, y: oriented.height - state.crop.y - state.crop.height },\n annotations: state.annotations.map((annotation) => mapAnnotationFlipY(annotation, oriented.height))\n };\n}\nfunction translateAnnotation(annotation, dx, dy) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => value + (i2 % 2 === 0 ? dx : dy));\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\":\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: annotation.rect.x + dx, y: annotation.rect.y + dy }\n };\n case \"text\":\n case \"sticker\":\n return { ...annotation, x: annotation.x + dx, y: annotation.y + dy };\n }\n}\nfunction duplicateAnnotation(annotation, offset = 16) {\n return { ...translateAnnotation(annotation, offset, offset), id: newId() };\n}\nconst _sfc_main$13 = /* @__PURE__ */ defineComponent({\n __name: \"GlassSurface\",\n props: {\n variant: {},\n opaque: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"glass-surface\", [`glass-surface--${__props.variant ?? \"card\"}`, { \"glass-surface--opaque\": __props.opaque }]])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2);\n };\n }\n});\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nconst GlassSurface = /* @__PURE__ */ _export_sfc(_sfc_main$13, [[\"__scopeId\", \"data-v-ffbdec7e\"]]);\nconst _sfc_main$12 = {\n name: \"BoxShadowIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$10 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$X = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$T = { d: \"M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z\" };\nconst _hoisted_4$S = { key: 0 };\nfunction _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon box-shadow-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$T, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$S, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$X))\n ], 16, _hoisted_1$10);\n}\nconst BoxShadow = /* @__PURE__ */ _export_sfc(_sfc_main$12, [[\"render\", _sfc_render$O]]);\nconst _sfc_main$11 = {\n name: \"CameraIrisIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$$ = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$W = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$S = { d: \"M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z\" };\nconst _hoisted_4$R = { key: 0 };\nfunction _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon camera-iris-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$S, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$R, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$W))\n ], 16, _hoisted_1$$);\n}\nconst CameraIris = /* @__PURE__ */ _export_sfc(_sfc_main$11, [[\"render\", _sfc_render$N]]);\nconst _sfc_main$10 = {\n name: \"CircleOpacityIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$_ = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$V = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$R = { d: \"M18 10V8H20V10H18M18 12V10H16V12H18M18 8V6H16V8H18M16 2.84V4H18C17.37 3.54 16.71 3.15 16 2.84M18 4V6H20C19.42 5.25 18.75 4.58 18 4M20 6V8H21.16C20.85 7.29 20.46 6.63 20 6M22 12C22 11.32 21.93 10.65 21.8 10H20V12H22M16 6V4H14V6H16M16 16H18V14H16V16M18 18H20L20 18V16H18V18M16 20H18L18 20V18H16V20M14 21.8C14.7 21.66 15.36 21.44 16 21.16V20H14V21.8M18 14H20V12H18V14M16 8H14V10H16V8M20 16H21.16C21.44 15.36 21.66 14.7 21.8 14H20V16M16 12H14V14H16V12M12 18V16H14V14H12V12H14V10H12V8H14V6H12V4H14V2.2C13.35 2.07 12.69 2 12 2C6.5 2 2 6.5 2 12S6.5 22 12 22V20H14V18H12M14 18H16V16H14V18Z\" };\nconst _hoisted_4$Q = { key: 0 };\nfunction _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon circle-opacity-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$R, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$Q, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$V))\n ], 16, _hoisted_1$_);\n}\nconst CircleOpacity = /* @__PURE__ */ _export_sfc(_sfc_main$10, [[\"render\", _sfc_render$M]]);\nconst _sfc_main$$ = {\n name: \"ContrastCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$Z = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$U = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$Q = { d: \"M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z\" };\nconst _hoisted_4$P = { key: 0 };\nfunction _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon contrast-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$Q, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$P, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$U))\n ], 16, _hoisted_1$Z);\n}\nconst ContrastCircle = /* @__PURE__ */ _export_sfc(_sfc_main$$, [[\"render\", _sfc_render$L]]);\nconst _sfc_main$_ = {\n name: \"ImageFilterCenterFocusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$Y = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$T = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$P = { d: \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z\" };\nconst _hoisted_4$O = { key: 0 };\nfunction _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon image-filter-center-focus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$P, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$O, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$T))\n ], 16, _hoisted_1$Y);\n}\nconst ImageFilterCenterFocus = /* @__PURE__ */ _export_sfc(_sfc_main$_, [[\"render\", _sfc_render$K]]);\nconst _sfc_main$Z = {\n name: \"InvertColorsIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$X = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$S = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$O = { d: \"M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z\" };\nconst _hoisted_4$N = { key: 0 };\nfunction _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon invert-colors-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$O, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$N, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$S))\n ], 16, _hoisted_1$X);\n}\nconst InvertColors = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [[\"render\", _sfc_render$J]]);\nconst _sfc_main$Y = {\n name: \"SpotlightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$W = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$R = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$N = { d: \"M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z\" };\nconst _hoisted_4$M = { key: 0 };\nfunction _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon spotlight-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$N, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$M, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$R))\n ], 16, _hoisted_1$W);\n}\nconst Spotlight = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [[\"render\", _sfc_render$I]]);\nconst _sfc_main$X = {\n name: \"ThermometerIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$V = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$Q = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$M = { d: \"M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z\" };\nconst _hoisted_4$L = { key: 0 };\nfunction _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon thermometer-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$M, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$L, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$Q))\n ], 16, _hoisted_1$V);\n}\nconst Thermometer = /* @__PURE__ */ _export_sfc(_sfc_main$X, [[\"render\", _sfc_render$H]]);\nconst _sfc_main$W = {\n name: \"WhiteBalanceIridescentIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$U = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$P = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$L = { d: \"M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z\" };\nconst _hoisted_4$K = { key: 0 };\nfunction _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon white-balance-iridescent-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$L, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$K, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$P))\n ], 16, _hoisted_1$U);\n}\nconst WhiteBalanceIridescent = /* @__PURE__ */ _export_sfc(_sfc_main$W, [[\"render\", _sfc_render$G]]);\nconst _sfc_main$V = {\n name: \"WhiteBalanceSunnyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$T = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$O = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$K = { d: \"M3.55 19.09L4.96 20.5L6.76 18.71L5.34 17.29M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12C18 8.68 15.31 6 12 6M20 13H23V11H20M17.24 18.71L19.04 20.5L20.45 19.09L18.66 17.29M20.45 5L19.04 3.6L17.24 5.39L18.66 6.81M13 1H11V4H13M6.76 5.39L4.96 3.6L3.55 5L5.34 6.81L6.76 5.39M1 13H4V11H1M13 20H11V23H13\" };\nconst _hoisted_4$J = { key: 0 };\nfunction _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon white-balance-sunny-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$K, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$J, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$O))\n ], 16, _hoisted_1$T);\n}\nconst WhiteBalanceSunny = /* @__PURE__ */ _export_sfc(_sfc_main$V, [[\"render\", _sfc_render$F]]);\nconst SNAP_RATIO = 0.02;\nfunction defaultOrigin(min, max) {\n return min < 0 && max > 0 ? 0 : null;\n}\nfunction originPosition(origin, min, max) {\n return (origin - min) / (max - min);\n}\nfunction snapToOrigin(value, origin, min, max) {\n if (origin === null) {\n return value;\n }\n return Math.abs(value - origin) <= (max - min) * SNAP_RATIO ? origin : value;\n}\nconst _hoisted_1$S = { class: \"editor-slider\" };\nconst _hoisted_2$N = { class: \"editor-slider__track\" };\nconst _hoisted_3$J = [\"value\", \"data-test\", \"disabled\", \"aria-label\", \"min\", \"max\", \"step\"];\nconst _sfc_main$U = /* @__PURE__ */ defineComponent({\n __name: \"EditorSlider\",\n props: {\n value: {},\n min: {},\n max: {},\n step: {},\n label: {},\n display: {},\n dataTest: {},\n disabled: { type: Boolean },\n origin: {}\n },\n emits: [\"input\", \"commit\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const origin = computed(() => props.origin ?? defaultOrigin(props.min, props.max));\n const originOffset = computed(() => origin.value === null ? null : `calc(var(--slider-thumb-size) / 2 + (100% - var(--slider-thumb-size)) * ${originPosition(origin.value, props.min, props.max)})`);\n function onInput(event) {\n const input = event.target;\n const value = snapToOrigin(Number(input.value), origin.value, props.min, props.max);\n input.value = String(value);\n emit(\"input\", value);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$S, [\n createElementVNode(\"div\", _hoisted_2$N, [\n originOffset.value !== null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"editor-slider__origin\",\n \"aria-hidden\": \"true\",\n style: normalizeStyle({ insetInlineStart: originOffset.value })\n }, null, 4)) : createCommentVNode(\"\", true),\n createElementVNode(\"input\", {\n value: props.value,\n \"data-test\": __props.dataTest,\n disabled: __props.disabled,\n \"aria-label\": __props.label,\n type: \"range\",\n min: __props.min,\n max: __props.max,\n step: __props.step,\n onInput,\n onChange: _cache[0] || (_cache[0] = ($event) => emit(\"commit\"))\n }, null, 40, _hoisted_3$J)\n ]),\n createElementVNode(\"output\", null, [\n renderSlot(_ctx.$slots, \"preview\", {}, () => [\n createTextVNode(toDisplayString(__props.display ?? props.value), 1)\n ], true)\n ])\n ]);\n };\n }\n});\nconst EditorSlider = /* @__PURE__ */ _export_sfc(_sfc_main$U, [[\"__scopeId\", \"data-v-b180b2e1\"]]);\nconst _hoisted_1$R = [\"disabled\", \"data-test\", \"aria-pressed\", \"aria-label\", \"title\"];\nconst _hoisted_2$M = { key: 0 };\nconst _sfc_main$T = /* @__PURE__ */ defineComponent({\n __name: \"IconTab\",\n props: {\n label: {},\n active: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n dataTest: {}\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n type: \"button\",\n class: normalizeClass([\"icon-tab\", { \"icon-tab--active\": __props.active, \"icon-tab--icon-only\": __props.iconOnly }]),\n disabled: __props.disabled,\n \"data-test\": __props.dataTest,\n \"aria-pressed\": __props.active,\n \"aria-label\": __props.iconOnly ? __props.label : void 0,\n title: __props.iconOnly ? __props.label : void 0,\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !__props.iconOnly ? (openBlock(), createElementBlock(\"span\", _hoisted_2$M, toDisplayString(__props.label), 1)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$R);\n };\n }\n});\nconst IconTab = /* @__PURE__ */ _export_sfc(_sfc_main$T, [[\"__scopeId\", \"data-v-92c91076\"]]);\nconst gtBuilder = getGettextBuilder().detectLocale();\n[].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst FONT_STACKS = {\n sans: \"Helvetica, Arial, sans-serif\",\n serif: 'Georgia, \"Times New Roman\", serif',\n mono: 'Menlo, Consolas, \"Courier New\", monospace'\n};\nconst DEFAULT_FONT = \"sans\";\nfunction fontStack(font) {\n return FONT_STACKS[font ?? DEFAULT_FONT] ?? FONT_STACKS[DEFAULT_FONT];\n}\nconst REDACT_SHAPES = [\"rectangle\", \"ellipse\"];\nconst DEFAULT_REDACT_SHAPE = \"rectangle\";\nfunction redactShape(shape) {\n return REDACT_SHAPES.includes(shape) ? shape : DEFAULT_REDACT_SHAPE;\n}\nconst TEXT_ALIGNS = [\"left\", \"center\", \"right\"];\nconst DEFAULT_ALIGN = \"left\";\nfunction textAlign(align) {\n return TEXT_ALIGNS.includes(align) ? align : DEFAULT_ALIGN;\n}\nconst VIEW_MARGIN = 16;\nconst PAN_SLACK = 1 / 3;\nconst FIT_ZOOM = 1;\nconst MIN_ZOOM = 0.5;\nconst MAX_ZOOM = 4;\nconst ZOOM_SNAP = 1.05;\nconst PINCH_TOLERANCE = 0.01;\nconst WHEEL_LINE = 16;\nconst WHEEL_CLAMP = 300;\nconst WHEEL_SENSITIVITY = 15e-4;\nfunction panBounds(visible, scale, container) {\n return {\n x: Math.max(Math.abs(visible.width * scale - container.width) / 2, container.width * PAN_SLACK) + VIEW_MARGIN,\n y: Math.max(Math.abs(visible.height * scale - container.height) / 2, container.height * PAN_SLACK) + VIEW_MARGIN\n };\n}\nfunction clampPan(pan, bounds) {\n return {\n x: Math.min(bounds.x, Math.max(-bounds.x, pan.x)),\n y: Math.min(bounds.y, Math.max(-bounds.y, pan.y))\n };\n}\nfunction clampZoom(zoom, previous = FIT_ZOOM) {\n const bounded = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, zoom));\n const crossed = (previous - FIT_ZOOM) * (bounded - FIT_ZOOM) < 0;\n const near = bounded > FIT_ZOOM / ZOOM_SNAP && bounded < FIT_ZOOM * ZOOM_SNAP;\n return crossed && near ? FIT_ZOOM : bounded;\n}\nfunction anchoredPan(pan, cursor, factor) {\n return {\n x: cursor.x - factor * (cursor.x - pan.x),\n y: cursor.y - factor * (cursor.y - pan.y)\n };\n}\nfunction wheelZoomFactor(deltaY, deltaMode, pageHeight) {\n const scaled = deltaMode === 1 ? deltaY * WHEEL_LINE : deltaMode === 2 ? deltaY * pageHeight : deltaY;\n const bounded = Math.min(WHEEL_CLAMP, Math.max(-WHEEL_CLAMP, scaled));\n return Math.exp(-bounded * WHEEL_SENSITIVITY);\n}\nconst MODE_DEFAULT_TOOL = {\n select: \"select\",\n crop: \"crop\",\n finetune: \"adjust\",\n filter: \"adjust\",\n annotate: \"draw\",\n sticker: \"sticker\",\n redact: \"redact\"\n};\nconst EDITOR_CONTEXT = /* @__PURE__ */ Symbol(\"nextcloud:image-editor\");\nfunction createEditorContext() {\n const history = useHistory();\n const state = shallowRef(createInitialState());\n const viewZoom = shallowRef(FIT_ZOOM);\n const cropChanged = shallowRef(false);\n const viewPan = shallowRef({ x: 0, y: 0 });\n const viewFit = shallowRef(null);\n const boundsAt = (zoom) => {\n const fit = viewFit.value;\n return fit === null ? { x: 0, y: 0 } : panBounds(fit.visible, fit.scale * zoom, fit.container);\n };\n const activeMode = shallowRef(\"crop\");\n const activeTool = shallowRef(MODE_DEFAULT_TOOL.crop);\n history.push(state.value, t(\"Original\"));\n const context = {\n state,\n activeMode,\n activeTool,\n setMode(mode) {\n activeMode.value = mode;\n activeTool.value = MODE_DEFAULT_TOOL[mode];\n context.selectedId.value = null;\n },\n drawColor: shallowRef(\"#ff0000\"),\n strokeWidth: shallowRef(6),\n fontSize: shallowRef(24),\n textOutline: shallowRef(false),\n textBackground: shallowRef(false),\n textFont: shallowRef(DEFAULT_FONT),\n textAlign: shallowRef(DEFAULT_ALIGN),\n textBold: shallowRef(false),\n textItalic: shallowRef(false),\n textUnderline: shallowRef(false),\n textStrikethrough: shallowRef(false),\n sticker: shallowRef(\"😀\"),\n redactStyle: shallowRef(\"pixelate\"),\n redactShape: shallowRef(DEFAULT_REDACT_SHAPE),\n cropAspect: shallowRef(null),\n viewZoom,\n viewPan,\n viewFit,\n cropChanged,\n panning: shallowRef(false),\n setViewZoom(zoom, anchor) {\n const previous = viewZoom.value;\n const next = clampZoom(zoom, previous);\n viewZoom.value = next;\n const panned = anchor === void 0 ? viewPan.value : anchoredPan(viewPan.value, anchor, next / previous);\n viewPan.value = clampPan(panned, boundsAt(next));\n },\n setViewPan(pan) {\n viewPan.value = clampPan(pan, boundsAt(viewZoom.value));\n },\n interacting: shallowRef(false),\n selectedId: shallowRef(null),\n canUndo: history.canUndo,\n canRedo: history.canRedo,\n historyEntries: history.entries,\n historyIndex: history.index,\n commit(next, label) {\n context.interacting.value = false;\n state.value = next;\n history.push(next, label);\n },\n preview(next) {\n context.interacting.value = true;\n state.value = next;\n },\n undo() {\n const snapshot = history.undo();\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n redo() {\n const snapshot = history.redo();\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n jumpTo(index) {\n const snapshot = history.jumpTo(index);\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n reset(next) {\n history.clear();\n state.value = next === void 0 ? createInitialState() : normaliseState(next);\n activeMode.value = \"crop\";\n activeTool.value = MODE_DEFAULT_TOOL.crop;\n context.selectedId.value = null;\n viewZoom.value = FIT_ZOOM;\n viewPan.value = { x: 0, y: 0 };\n context.panning.value = false;\n history.push(state.value, next === void 0 ? t(\"Original\") : t(\"Restored\"));\n }\n };\n watch(activeTool, (tool) => {\n if (tool !== \"select\") {\n context.selectedId.value = null;\n }\n });\n provide(EDITOR_CONTEXT, context);\n return context;\n}\nfunction useEditorContext() {\n const context = inject(EDITOR_CONTEXT, null);\n if (context === null) {\n throw new Error(\"useEditorContext() called outside of an ImageEditor tree\");\n }\n return context;\n}\nconst _hoisted_1$Q = { class: \"adjust-panel\" };\nconst _hoisted_2$L = { class: \"adjust-panel__tabs\" };\nconst _sfc_main$S = /* @__PURE__ */ defineComponent({\n __name: \"AdjustPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const adjustments = [\n { id: \"exposure\", label: t(\"Exposure\"), icon: CameraIris },\n { id: \"brightness\", label: t(\"Brightness\"), icon: WhiteBalanceSunny },\n { id: \"contrast\", label: t(\"Contrast\"), icon: ContrastCircle },\n { id: \"saturation\", label: t(\"Saturation\"), icon: InvertColors },\n { id: \"temperature\", label: t(\"Temperature\"), icon: Thermometer },\n { id: \"tint\", label: t(\"Tint\"), icon: WhiteBalanceIridescent },\n { id: \"sharpen\", label: t(\"Sharpen\"), icon: ImageFilterCenterFocus },\n { id: \"highlights\", label: t(\"Highlights\"), icon: Spotlight },\n { id: \"shadows\", label: t(\"Shadows\"), icon: BoxShadow },\n { id: \"vignette\", label: t(\"Vignette\"), icon: CircleOpacity }\n ];\n const activeAdjustment = shallowRef(\"exposure\");\n const display = computed(() => {\n const value = context.state.value.adjustments[activeAdjustment.value];\n return value > 0 ? `+${value}` : `${value}`;\n });\n function select(id, event) {\n activeAdjustment.value = id;\n event.currentTarget?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }\n function onAdjustInput(value) {\n const state = context.state.value;\n context.preview({\n ...state,\n adjustments: { ...state.adjustments, [activeAdjustment.value]: value }\n });\n }\n function onSliderCommit() {\n context.commit(context.state.value, adjustments.find((entry) => entry.id === activeAdjustment.value).label);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$Q, [\n createElementVNode(\"div\", _hoisted_2$L, [\n (openBlock(), createElementBlock(Fragment, null, renderList(adjustments, (adjustment) => {\n return createVNode(IconTab, {\n key: adjustment.id,\n label: adjustment.label,\n active: activeAdjustment.value === adjustment.id,\n disabled: !__props.loaded,\n \"data-test\": `tab-${adjustment.id}`,\n onClick: ($event) => select(adjustment.id, $event)\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(adjustment.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"data-test\", \"onClick\"]);\n }), 64))\n ]),\n createVNode(EditorSlider, {\n value: unref(context).state.value.adjustments[activeAdjustment.value],\n min: -100,\n max: 100,\n step: 1,\n label: adjustments.find((entry) => entry.id === activeAdjustment.value).label,\n display: display.value,\n \"data-test\": `adjust-${activeAdjustment.value}`,\n disabled: !__props.loaded,\n onInput: onAdjustInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"data-test\", \"disabled\"])\n ]);\n };\n }\n});\nconst AdjustPanel = /* @__PURE__ */ _export_sfc(_sfc_main$S, [[\"__scopeId\", \"data-v-1450b457\"]]);\nconst _sfc_main$R = {\n name: \"ArrowTopRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$P = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$K = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$I = { d: \"M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z\" };\nconst _hoisted_4$I = { key: 0 };\nfunction _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-top-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$I, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$I, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$K))\n ], 16, _hoisted_1$P);\n}\nconst ArrowTopRight = /* @__PURE__ */ _export_sfc(_sfc_main$R, [[\"render\", _sfc_render$E]]);\nconst _sfc_main$Q = {\n name: \"EllipseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$O = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$J = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$H = { d: \"M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z\" };\nconst _hoisted_4$H = { key: 0 };\nfunction _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon ellipse-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$H, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$H, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$J))\n ], 16, _hoisted_1$O);\n}\nconst EllipseOutline = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [[\"render\", _sfc_render$D]]);\nconst _sfc_main$P = {\n name: \"FormatTextIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$N = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$I = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$G = { d: \"M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z\" };\nconst _hoisted_4$G = { key: 0 };\nfunction _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-text-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$G, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$G, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$I))\n ], 16, _hoisted_1$N);\n}\nconst FormatText = /* @__PURE__ */ _export_sfc(_sfc_main$P, [[\"render\", _sfc_render$C]]);\nconst _sfc_main$O = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$M = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$H = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$F = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$F = { key: 0 };\nfunction _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$F, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$F, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$H))\n ], 16, _hoisted_1$M);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$O, [[\"render\", _sfc_render$B]]);\nconst _sfc_main$N = {\n name: \"RectangleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$L = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$G = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$E = { d: \"M4,6V19H20V6H4M18,17H6V8H18V17Z\" };\nconst _hoisted_4$E = { key: 0 };\nfunction _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rectangle-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$E, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$E, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$G))\n ], 16, _hoisted_1$L);\n}\nconst RectangleOutline = /* @__PURE__ */ _export_sfc(_sfc_main$N, [[\"render\", _sfc_render$A]]);\nconst _sfc_main$M = {\n name: \"VectorLineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$K = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$F = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$D = { d: \"M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5\" };\nconst _hoisted_4$D = { key: 0 };\nfunction _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon vector-line-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$D, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$D, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$F))\n ], 16, _hoisted_1$K);\n}\nconst VectorLine = /* @__PURE__ */ _export_sfc(_sfc_main$M, [[\"render\", _sfc_render$z]]);\nfunction useAnnotationColor(context) {\n function recolorable() {\n const annotation = context.state.value.annotations.find((entry) => entry.id === context.selectedId.value);\n return annotation !== void 0 && \"color\" in annotation && annotation.type !== \"sticker\" ? annotation : void 0;\n }\n function apply(color) {\n const annotation = recolorable();\n if (annotation === void 0 || annotation.color === color) {\n return;\n }\n const state = context.state.value;\n context.preview({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, color } : entry)\n });\n }\n return {\n preview(color) {\n context.drawColor.value = color;\n apply(color);\n },\n commit(color) {\n context.drawColor.value = color;\n apply(color);\n if (recolorable() !== void 0) {\n context.commit(context.state.value, t(\"Color\"));\n }\n }\n };\n}\nconst _hoisted_1$J = { class: \"annotate-panel\" };\nconst _hoisted_2$E = { class: \"annotate-panel__row\" };\nconst _hoisted_3$C = { class: \"annotate-panel__option\" };\nconst _hoisted_4$C = [\"value\"];\nconst FONT_SAMPLE = \"A\";\nconst PREVIEW_CAP = 44;\nconst _sfc_main$L = /* @__PURE__ */ defineComponent({\n __name: \"AnnotatePanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const color = useAnnotationColor(context);\n const labels = {\n color: t(\"Color\"),\n strokeWidth: t(\"Stroke width\"),\n fontSize: t(\"Font size\")\n };\n const subTools = [\n { id: \"draw\", label: t(\"Draw\"), icon: Pencil },\n { id: \"rectangle\", label: t(\"Rectangle\"), icon: RectangleOutline },\n { id: \"ellipse\", label: t(\"Ellipse\"), icon: EllipseOutline },\n { id: \"arrow\", label: t(\"Arrow\"), icon: ArrowTopRight },\n { id: \"line\", label: t(\"Line\"), icon: VectorLine },\n { id: \"text\", label: t(\"Text\"), icon: FormatText }\n ];\n const showStrokeOptions = computed(() => [\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\"].includes(context.activeTool.value));\n const viewScale = computed(() => (context.viewFit.value?.scale ?? 1) * context.viewZoom.value);\n const strokePreview = computed(() => Math.min(PREVIEW_CAP, Math.max(2, context.strokeWidth.value * viewScale.value)));\n const fontPreview = computed(() => Math.min(PREVIEW_CAP, Math.max(8, context.fontSize.value * viewScale.value)));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$J, [\n createElementVNode(\"div\", _hoisted_2$E, [\n (openBlock(), createElementBlock(Fragment, null, renderList(subTools, (tool) => {\n return createVNode(IconTab, {\n key: tool.id,\n label: tool.label,\n active: unref(context).activeTool.value === tool.id,\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: ($event) => unref(context).activeTool.value = tool.id\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(tool.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64)),\n _cache[4] || (_cache[4] = createElementVNode(\"span\", { class: \"annotate-panel__divider\" }, null, -1)),\n createElementVNode(\"label\", _hoisted_3$C, [\n createTextVNode(toDisplayString(labels.color) + \" \", 1),\n createElementVNode(\"input\", {\n value: unref(context).drawColor.value,\n type: \"color\",\n \"data-test\": \"color\",\n onInput: _cache[0] || (_cache[0] = ($event) => unref(color).preview($event.target.value)),\n onChange: _cache[1] || (_cache[1] = ($event) => unref(color).commit($event.target.value))\n }, null, 40, _hoisted_4$C)\n ])\n ]),\n showStrokeOptions.value ? (openBlock(), createBlock(EditorSlider, {\n key: 0,\n value: unref(context).strokeWidth.value,\n min: 1,\n max: 32,\n step: 1,\n label: labels.strokeWidth,\n onInput: _cache[2] || (_cache[2] = ($event) => unref(context).strokeWidth.value = $event),\n onCommit: () => {\n }\n }, {\n preview: withCtx(() => [\n createElementVNode(\"span\", {\n class: \"annotate-panel__dot\",\n \"data-test\": \"stroke-preview\",\n style: normalizeStyle({\n inlineSize: `${strokePreview.value}px`,\n blockSize: `${strokePreview.value}px`,\n backgroundColor: unref(context).drawColor.value\n })\n }, null, 4)\n ]),\n _: 1\n }, 8, [\"value\", \"label\"])) : unref(context).activeTool.value === \"text\" ? (openBlock(), createBlock(EditorSlider, {\n key: 1,\n value: unref(context).fontSize.value,\n min: 8,\n max: 128,\n step: 1,\n label: labels.fontSize,\n onInput: _cache[3] || (_cache[3] = ($event) => unref(context).fontSize.value = $event),\n onCommit: () => {\n }\n }, {\n preview: withCtx(() => [\n createElementVNode(\"span\", {\n class: \"annotate-panel__glyph\",\n \"data-test\": \"font-preview\",\n style: normalizeStyle({\n fontSize: `${fontPreview.value}px`,\n color: unref(context).drawColor.value\n })\n }, toDisplayString(FONT_SAMPLE), 4)\n ]),\n _: 1\n }, 8, [\"value\", \"label\"])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst AnnotatePanel = /* @__PURE__ */ _export_sfc(_sfc_main$L, [[\"__scopeId\", \"data-v-f1bf58b5\"]]);\nconst _sfc_main$K = {\n name: \"FlipHorizontalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$I = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$D = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$B = { d: \"M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z\" };\nconst _hoisted_4$B = { key: 0 };\nfunction _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon flip-horizontal-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$B, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$B, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$D))\n ], 16, _hoisted_1$I);\n}\nconst FlipHorizontal = /* @__PURE__ */ _export_sfc(_sfc_main$K, [[\"render\", _sfc_render$y]]);\nconst _sfc_main$J = {\n name: \"FlipVerticalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$H = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$C = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$A = { d: \"M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z\" };\nconst _hoisted_4$A = { key: 0 };\nfunction _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon flip-vertical-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$A, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$A, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$C))\n ], 16, _hoisted_1$H);\n}\nconst FlipVertical = /* @__PURE__ */ _export_sfc(_sfc_main$J, [[\"render\", _sfc_render$x]]);\nconst _sfc_main$I = {\n name: \"RotateLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$G = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$B = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$z = { d: \"M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z\" };\nconst _hoisted_4$z = { key: 0 };\nfunction _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rotate-left-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$z, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$z, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$B))\n ], 16, _hoisted_1$G);\n}\nconst RotateLeft = /* @__PURE__ */ _export_sfc(_sfc_main$I, [[\"render\", _sfc_render$w]]);\nconst _sfc_main$H = {\n name: \"RotateRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$F = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$A = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$y = { d: \"M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z\" };\nconst _hoisted_4$y = { key: 0 };\nfunction _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rotate-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$y, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$y, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$A))\n ], 16, _hoisted_1$F);\n}\nconst RotateRight = /* @__PURE__ */ _export_sfc(_sfc_main$H, [[\"render\", _sfc_render$v]]);\nconst EDITOR_COMMANDS = /* @__PURE__ */ Symbol(\"nextcloud:image-editor:commands\");\nfunction provideEditorCommands(commands) {\n provide(EDITOR_COMMANDS, commands);\n return commands;\n}\nfunction useEditorCommands() {\n const commands = inject(EDITOR_COMMANDS, null);\n if (commands === null) {\n throw new Error(\"useEditorCommands() called outside of an ImageEditor tree\");\n }\n return commands;\n}\nconst _hoisted_1$E = { class: \"crop-panel\" };\nconst _hoisted_2$z = { class: \"crop-panel__row\" };\nconst _hoisted_3$x = { class: \"crop-panel__row\" };\nconst _hoisted_4$x = {\n key: 0,\n class: \"crop-panel__divider\",\n \"data-test\": \"crop-divider\"\n};\nconst _sfc_main$G = /* @__PURE__ */ defineComponent({\n __name: \"CropPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const context = useEditorContext();\n const commands = useEditorCommands();\n const labels = {\n rotateLeft: t(\"Rotate left\"),\n rotateRight: t(\"Rotate right\"),\n flipHorizontal: t(\"Flip horizontal\"),\n flipVertical: t(\"Flip vertical\"),\n applyCrop: t(\"Apply crop\"),\n resetCrop: t(\"Reset crop\"),\n rotation: t(\"Rotation\"),\n scale: t(\"Scale\")\n };\n const aspectPresets = [\n { id: null, label: t(\"Free\") },\n { id: \"original\", label: t(\"Original\") },\n { id: 1, label: \"1:1\" },\n { id: 4 / 3, label: \"4:3\" },\n { id: 16 / 9, label: \"16:9\" }\n ];\n const cropControls = [\n { id: \"rotation\", label: labels.rotation },\n { id: \"scale\", label: labels.scale }\n ];\n const activeCropControl = shallowRef(\"rotation\");\n const display = computed(() => activeCropControl.value === \"rotation\" ? `${context.state.value.fineRotation}°` : `×${context.state.value.zoom.toFixed(2)}`);\n const hasCropActions = computed(() => props.loaded && (context.state.value.crop !== null || context.cropChanged.value));\n function onTransformInput(value) {\n context.preview(activeCropControl.value === \"rotation\" ? { ...context.state.value, fineRotation: value } : { ...context.state.value, zoom: value });\n }\n function onSliderCommit() {\n context.commit(context.state.value, activeCropControl.value === \"rotation\" ? labels.rotation : labels.scale);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$E, [\n createElementVNode(\"div\", _hoisted_2$z, [\n (openBlock(), createElementBlock(Fragment, null, renderList(aspectPresets, (preset) => {\n return createVNode(IconTab, {\n key: String(preset.id),\n \"data-test\": `aspect-${preset.id === null ? \"free\" : preset.id === \"original\" ? \"original\" : preset.label}`,\n label: preset.label,\n active: unref(context).cropAspect.value === preset.id,\n disabled: !__props.loaded,\n onClick: ($event) => unref(context).cropAspect.value = preset.id\n }, null, 8, [\"data-test\", \"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64))\n ]),\n createElementVNode(\"div\", _hoisted_3$x, [\n createVNode(unref(NcButton), {\n \"aria-label\": labels.rotateLeft,\n title: labels.rotateLeft,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => unref(commands).rotateCCW())\n }, {\n icon: withCtx(() => [\n createVNode(RotateLeft, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.rotateRight,\n title: labels.rotateRight,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[1] || (_cache[1] = ($event) => unref(commands).rotateCW())\n }, {\n icon: withCtx(() => [\n createVNode(RotateRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.flipHorizontal,\n title: labels.flipHorizontal,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[2] || (_cache[2] = ($event) => unref(commands).flipHorizontal())\n }, {\n icon: withCtx(() => [\n createVNode(FlipHorizontal, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.flipVertical,\n title: labels.flipVertical,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[3] || (_cache[3] = ($event) => unref(commands).flipVertical())\n }, {\n icon: withCtx(() => [\n createVNode(FlipVertical, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n _cache[6] || (_cache[6] = createElementVNode(\"span\", {\n class: \"crop-panel__divider\",\n \"data-test\": \"crop-divider\"\n }, null, -1)),\n (openBlock(), createElementBlock(Fragment, null, renderList(cropControls, (control) => {\n return createVNode(IconTab, {\n key: control.id,\n \"data-test\": `tab-${control.id}`,\n label: control.label,\n active: activeCropControl.value === control.id,\n disabled: !__props.loaded,\n onClick: ($event) => activeCropControl.value = control.id\n }, null, 8, [\"data-test\", \"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64)),\n hasCropActions.value ? (openBlock(), createElementBlock(\"span\", _hoisted_4$x)) : createCommentVNode(\"\", true),\n __props.loaded && unref(context).state.value.crop !== null ? (openBlock(), createBlock(unref(NcButton), {\n key: 1,\n \"data-test\": \"reset-crop\",\n variant: \"tertiary\",\n onClick: _cache[4] || (_cache[4] = ($event) => unref(commands).resetCrop())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.resetCrop), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n __props.loaded && unref(context).cropChanged.value ? (openBlock(), createBlock(unref(NcButton), {\n key: 2,\n \"data-test\": \"apply-crop\",\n variant: \"tertiary\",\n onClick: _cache[5] || (_cache[5] = ($event) => unref(commands).applyCrop())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.applyCrop), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ]),\n activeCropControl.value === \"rotation\" ? (openBlock(), createBlock(EditorSlider, {\n key: 0,\n value: unref(context).state.value.fineRotation,\n min: -45,\n max: 45,\n step: 1,\n label: labels.rotation,\n display: display.value,\n \"data-test\": \"fine-rotation\",\n disabled: !__props.loaded,\n onInput: onTransformInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"disabled\"])) : (openBlock(), createBlock(EditorSlider, {\n key: 1,\n value: unref(context).state.value.zoom,\n min: 1,\n max: 3,\n step: 0.05,\n label: labels.scale,\n display: display.value,\n \"data-test\": \"zoom\",\n disabled: !__props.loaded,\n onInput: onTransformInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"disabled\"]))\n ]);\n };\n }\n});\nconst CropPanel = /* @__PURE__ */ _export_sfc(_sfc_main$G, [[\"__scopeId\", \"data-v-091ea9a4\"]]);\nconst FLOOR_AREA = 512 * 512;\nconst REFINEMENTS = 4;\nlet largestGood = 0;\nlet smallestBad = Number.POSITIVE_INFINITY;\nfunction paints(area) {\n const side = Math.floor(Math.sqrt(area));\n const canvas = document.createElement(\"canvas\");\n canvas.width = side;\n canvas.height = side;\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n return false;\n }\n try {\n context.fillStyle = \"#ffffff\";\n context.fillRect(side - 1, side - 1, 1, 1);\n return context.getImageData(side - 1, side - 1, 1, 1).data[3] === 255;\n } catch {\n return false;\n } finally {\n canvas.width = 0;\n canvas.height = 0;\n }\n}\nfunction fits(area) {\n if (area <= largestGood) {\n return true;\n }\n if (area >= smallestBad) {\n return false;\n }\n if (paints(area)) {\n largestGood = area;\n return true;\n }\n smallestBad = area;\n return false;\n}\nfunction canvasScaleFor(size) {\n const area = size.width * size.height;\n if (area <= 0 || fits(area)) {\n return 1;\n }\n let bad = area;\n let good = 0;\n for (let candidate = area / 2; candidate >= FLOOR_AREA; candidate /= 2) {\n if (fits(candidate)) {\n good = candidate;\n break;\n }\n bad = candidate;\n }\n if (good === 0) {\n return Math.min(1, Math.sqrt(FLOOR_AREA / area));\n }\n for (let step = 0; step < REFINEMENTS; step++) {\n const middle = (good + bad) / 2;\n if (fits(middle)) {\n good = middle;\n } else {\n bad = middle;\n }\n }\n return Math.min(1, Math.sqrt(good / area));\n}\nfunction luma(r, g, b2) {\n return 0.299 * r + 0.587 * g + 0.114 * b2;\n}\nconst EXPOSURE_RANGE = 2;\nconst TEMPERATURE_RANGE = 0.25;\nconst TINT_RANGE = 0.25;\nfunction tone(imageData) {\n const { data } = imageData;\n const exposure = 2 ** ((this.getAttr(\"exposure\") ?? 0) * EXPOSURE_RANGE);\n const temperature = (this.getAttr(\"temperature\") ?? 0) * TEMPERATURE_RANGE;\n const tint = (this.getAttr(\"tint\") ?? 0) * TINT_RANGE;\n const red = exposure * (1 + temperature) * (1 + tint / 2);\n const green = exposure * (1 - tint);\n const blue = exposure * (1 - temperature) * (1 + tint / 2);\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * red;\n data[i2 + 1] = data[i2 + 1] * green;\n data[i2 + 2] = data[i2 + 2] * blue;\n }\n}\nconst HIGHLIGHTS_RANGE = 0.6;\nconst SHADOWS_RANGE = 0.6;\nfunction tonal(imageData) {\n const highlights = (this.getAttr(\"highlights\") ?? 0) * HIGHLIGHTS_RANGE;\n const shadows = (this.getAttr(\"shadows\") ?? 0) * SHADOWS_RANGE;\n if (highlights === 0 && shadows === 0) {\n return;\n }\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const level = luma(data[i2], data[i2 + 1], data[i2 + 2]) / 255;\n const bright = level * level;\n const dark = (1 - level) * (1 - level);\n const gain = 1 + highlights * bright + shadows * dark;\n data[i2] = data[i2] * gain;\n data[i2 + 1] = data[i2 + 1] * gain;\n data[i2 + 2] = data[i2 + 2] * gain;\n }\n}\nconst VIGNETTE_RANGE = 0.9;\nconst VIGNETTE_START = 0.35;\nfunction vignette(imageData) {\n const amount = (this.getAttr(\"vignette\") ?? 0) * VIGNETTE_RANGE;\n if (amount === 0) {\n return;\n }\n const { data, width, height } = imageData;\n const centreX = width / 2;\n const centreY = height / 2;\n for (let y = 0; y < height; y++) {\n const dy = (y - centreY) / centreY;\n for (let x = 0; x < width; x++) {\n const dx = (x - centreX) / centreX;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const t2 = Math.min(1, Math.max(0, (distance - VIGNETTE_START) / (1 - VIGNETTE_START)));\n const gain = 1 - amount * t2 * t2 * (3 - 2 * t2);\n const i2 = (y * width + x) * 4;\n data[i2] = data[i2] * gain;\n data[i2 + 1] = data[i2 + 1] * gain;\n data[i2 + 2] = data[i2 + 2] * gain;\n }\n }\n}\nconst SHARPEN_RANGE = 1.2;\nfunction sharpen(imageData) {\n const amount = (this.getAttr(\"sharpen\") ?? 0) * SHARPEN_RANGE;\n if (amount === 0) {\n return;\n }\n const { data, width, height } = imageData;\n const source = new Uint8ClampedArray(data);\n const stride = width * 4;\n for (let y = 1; y < height - 1; y++) {\n for (let x = 1; x < width - 1; x++) {\n const centre = y * stride + x * 4;\n for (let channel = 0; channel < 3; channel++) {\n const i2 = centre + channel;\n const neighbours = source[i2 - 4] + source[i2 + 4] + source[i2 - stride] + source[i2 + stride];\n data[i2] = source[i2] * (1 + 4 * amount) - amount * neighbours;\n }\n }\n }\n}\nfunction saturate(imageData) {\n const { data } = imageData;\n const factor = this.saturation() + 1;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const gray = luma(data[i2], data[i2 + 1], data[i2 + 2]);\n data[i2] = gray + (data[i2] - gray) * factor;\n data[i2 + 1] = gray + (data[i2 + 1] - gray) * factor;\n data[i2 + 2] = gray + (data[i2 + 2] - gray) * factor;\n }\n}\nfunction warm(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = Math.min(255, data[i2] * 1.12);\n data[i2 + 2] = data[i2 + 2] * 0.9;\n }\n}\nfunction cool(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * 0.9;\n data[i2 + 2] = Math.min(255, data[i2 + 2] * 1.12);\n }\n}\nfunction fade(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n data[i2] = 28 + (0.7 * data[i2] + 0.3 * luma2) * 0.86 * 1.04;\n data[i2 + 1] = 28 + (0.7 * data[i2 + 1] + 0.3 * luma2) * 0.86;\n data[i2 + 2] = 28 + (0.7 * data[i2 + 2] + 0.3 * luma2) * 0.86 * 0.96;\n }\n}\nfunction noir(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const value = Math.min(255, Math.max(0, (luma2 - 128) * 1.35 + 118));\n data[i2] = value;\n data[i2 + 1] = value;\n data[i2 + 2] = value;\n }\n}\nfunction golden(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * 1.12 + 12;\n data[i2 + 1] = data[i2 + 1] * 1.04 + 5;\n data[i2 + 2] = data[i2 + 2] * 0.82;\n }\n}\nfunction coast(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const shadow = Math.max(0, 1 - luma2 / 140);\n data[i2] = (data[i2] - 128) * 1.12 + 132;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.12 + 132 + 10 * shadow;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.12 + 132 + 22 * shadow;\n }\n}\nfunction mist(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n data[i2] = 22 + (0.6 * data[i2] + 0.4 * luma2) * 0.84;\n data[i2 + 1] = 22 + (0.6 * data[i2 + 1] + 0.4 * luma2) * 0.84;\n data[i2 + 2] = 26 + (0.6 * data[i2 + 2] + 0.4 * luma2) * 0.84;\n }\n}\nfunction berry(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = (data[i2] - 128) * 1.08 + 128 + 10;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.08 + 128 - 12;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.08 + 128 + 8;\n }\n}\nfunction cinema(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const balance = (luma2 - 128) / 128;\n data[i2] = (data[i2] - 128) * 1.06 + 128 + 16 * balance;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.06 + 128;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.06 + 128 - 20 * balance;\n }\n}\nfunction luna(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const value = 18 + luma2 * 0.9;\n data[i2] = value;\n data[i2 + 1] = value;\n data[i2 + 2] = value + 4;\n }\n}\nconst jsContent = '(function() {\\n \"use strict\";\\n function halve(source) {\\n const canvas = new OffscreenCanvas(\\n Math.max(1, Math.ceil(source.width / 2)),\\n Math.max(1, Math.ceil(source.height / 2))\\n );\\n const context = canvas.getContext(\"2d\");\\n if (context === null) {\\n throw new Error(\"Canvas 2D context unavailable\");\\n }\\n context.imageSmoothingQuality = \"high\";\\n context.drawImage(source, 0, 0, canvas.width, canvas.height);\\n return canvas.transferToImageBitmap();\\n }\\n self.addEventListener(\"message\", async (event) => {\\n const request = event.data;\\n try {\\n if (request.kind === \"decode\") {\\n const bitmap = await createImageBitmap(request.blob);\\n const response2 = { id: request.id, kind: \"decode\", bitmap };\\n self.postMessage(response2, { transfer: [bitmap] });\\n return;\\n }\\n let level = request.bitmap;\\n const levels = [];\\n for (let step = 0; step < request.steps && (level.width > 1 || level.height > 1); step++) {\\n level = halve(level);\\n levels.push(level);\\n }\\n request.bitmap.close();\\n const response = { id: request.id, kind: \"levels\", levels };\\n self.postMessage(response, { transfer: levels });\\n } catch (error) {\\n const response = {\\n id: request.id,\\n kind: \"error\",\\n message: error instanceof Error ? error.message : String(error)\\n };\\n self.postMessage(response);\\n }\\n });\\n})();\\n//# sourceMappingURL=image.worker-CCbQx30t.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([\"(self.URL || self.webkitURL).revokeObjectURL(self.location.href);\", jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options?.name\n });\n worker.addEventListener(\"error\", () => {\n (self.URL || self.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e) {\n return new Worker(\n \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n {\n name: options?.name\n }\n );\n }\n}\nfunction createImageWorkerClient(worker) {\n const pending = /* @__PURE__ */ new Map();\n let nextId = 0;\n let broken = false;\n function fail() {\n broken = true;\n const waiting = [...pending.values()];\n pending.clear();\n waiting.forEach((one) => one.reject(new Error(\"The image worker stopped\")));\n }\n worker.addEventListener(\"error\", fail);\n worker.addEventListener(\"messageerror\", fail);\n worker.addEventListener(\"message\", (event) => {\n const response = event.data;\n const waiting = pending.get(response.id);\n if (waiting === void 0) {\n return;\n }\n pending.delete(response.id);\n if (response.kind === \"error\") {\n waiting.reject(new Error(response.message));\n return;\n }\n waiting.resolve(response.kind === \"decode\" ? response.bitmap : response.levels);\n });\n function ask(request, transfer) {\n if (broken) {\n return Promise.reject(new Error(\"The image worker stopped\"));\n }\n const id = nextId++;\n return new Promise((resolve, reject) => {\n pending.set(id, { resolve, reject });\n worker.postMessage({ ...request, id }, transfer);\n });\n }\n return {\n decode: (blob2) => ask({ kind: \"decode\", blob: blob2 }, []),\n levels: (bitmap, steps) => ask({ kind: \"levels\", bitmap, steps }, [bitmap])\n };\n}\nlet client;\nfunction imageWorker() {\n if (client !== void 0) {\n return client;\n }\n client = null;\n if (typeof Worker === \"undefined\" || typeof OffscreenCanvas === \"undefined\" || typeof createImageBitmap === \"undefined\") {\n return client;\n }\n try {\n client = createImageWorkerClient(new WorkerWrapper());\n } catch {\n client = null;\n }\n return client;\n}\nconst halves = /* @__PURE__ */ new WeakMap();\nconst PREBUILT_LEVELS = 4;\nfunction halve(source) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = Math.max(1, Math.ceil(source.width / 2));\n canvas.height = Math.max(1, Math.ceil(source.height / 2));\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n context.imageSmoothingQuality = \"high\";\n context.drawImage(source, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nasync function prepareLevels(source) {\n const worker = imageWorker();\n if (worker === null || halves.has(source)) {\n return;\n }\n try {\n const bitmap = await createImageBitmap(source);\n const levels = await worker.levels(bitmap, PREBUILT_LEVELS);\n halves.set(source, levels);\n } catch {\n }\n}\nfunction levelFor(source, scale) {\n let level = source;\n let drawn = scale;\n let depth = 0;\n while (drawn <= 0.5 && (level.width > 1 || level.height > 1)) {\n const cached = halves.get(source) ?? [];\n level = cached[depth] ?? halve(level);\n cached[depth] = level;\n halves.set(source, cached);\n drawn *= 2;\n depth += 1;\n }\n return level;\n}\nconst TEXT_EMPHASES = [\"bold\", \"italic\", \"underline\", \"strikethrough\"];\nfunction fontStyle(text) {\n if (text.italic === true) {\n return text.bold === true ? \"italic bold\" : \"italic\";\n }\n return text.bold === true ? \"bold\" : \"normal\";\n}\nfunction textDecoration(text) {\n if (text.underline === true) {\n return text.strikethrough === true ? \"underline line-through\" : \"underline\";\n }\n return text.strikethrough === true ? \"line-through\" : \"\";\n}\nconst OUTLINE_RATIO = 8;\nfunction outlineColor(color) {\n const hex = /^#?([0-9a-f]{6})$/i.exec(color)?.[1];\n if (hex === void 0) {\n return \"#000000\";\n }\n const red = Number.parseInt(hex.slice(0, 2), 16);\n const green = Number.parseInt(hex.slice(2, 4), 16);\n const blue = Number.parseInt(hex.slice(4, 6), 16);\n const luma2 = 0.299 * red + 0.587 * green + 0.114 * blue;\n return luma2 > 140 ? \"#000000\" : \"#ffffff\";\n}\nfunction outlineWidth(fontSize) {\n return Math.max(1, Math.round(fontSize / OUTLINE_RATIO));\n}\nfunction visibleRect(state, oriented) {\n return state.crop ?? { x: 0, y: 0, ...oriented };\n}\nfunction context2d(canvas) {\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n return context;\n}\nfunction supportsContextFilter(context) {\n if (context === null) {\n return false;\n }\n context.filter = \"blur(1px)\";\n return context.filter !== \"none\";\n}\nlet contextFilterSupport = null;\nfunction contextFilterAvailable() {\n contextFilterSupport ??= supportsContextFilter(document.createElement(\"canvas\").getContext(\"2d\"));\n return contextFilterSupport;\n}\nfunction obfuscateRegion(region, style, strength) {\n const out = document.createElement(\"canvas\");\n out.width = region.width;\n out.height = region.height;\n const context = context2d(out);\n if (style === \"blur\" && contextFilterAvailable()) {\n context.filter = `blur(${strength}px)`;\n context.drawImage(region, 0, 0);\n return out;\n }\n const small = document.createElement(\"canvas\");\n small.width = Math.max(1, Math.ceil(region.width / strength));\n small.height = Math.max(1, Math.ceil(region.height / strength));\n context2d(small).drawImage(region, 0, 0, small.width, small.height);\n context.imageSmoothingEnabled = false;\n context.drawImage(small, 0, 0, out.width, out.height);\n return out;\n}\nfunction cutEllipse(patch, x, y, width, height) {\n const out = document.createElement(\"canvas\");\n out.width = width;\n out.height = height;\n const context = context2d(out);\n context.drawImage(patch, x, y, width, height, 0, 0, width, height);\n context.globalCompositeOperation = \"destination-in\";\n context.beginPath();\n context.ellipse(width / 2, height / 2, width / 2, height / 2, 0, 0, Math.PI * 2);\n context.fill();\n return out;\n}\nfunction redactStrength(source) {\n return Math.max(4, Math.round(Math.min(source.width, source.height) / 40));\n}\nfunction redactSceneFunc(annotation, strength) {\n return (context, shape) => {\n const canvas = context.canvas;\n if (canvas.hitCanvas === true) {\n return;\n }\n const width = shape.width();\n const height = shape.height();\n const transform = shape.getAbsoluteTransform();\n const topLeft = transform.point({ x: 0, y: 0 });\n const bottomRight = transform.point({ x: width, y: height });\n const ratio = canvas.pixelRatio || 1;\n const left = Math.round(topLeft.x * ratio);\n const top = Math.round(topLeft.y * ratio);\n const deviceWidth = Math.round(bottomRight.x * ratio) - left;\n const deviceHeight = Math.round(bottomRight.y * ratio) - top;\n if (deviceWidth < 1 || deviceHeight < 1 || width <= 0 || height <= 0) {\n return;\n }\n const deviceStrength = Math.max(2, Math.round(strength * (deviceWidth / width)));\n const pad = annotation.style === \"blur\" ? deviceStrength * 2 : 0;\n const readLeft = Math.max(0, left - pad);\n const readTop = Math.max(0, top - pad);\n const readWidth = Math.min(canvas.width, left + deviceWidth + pad) - readLeft;\n const readHeight = Math.min(canvas.height, top + deviceHeight + pad) - readTop;\n if (readWidth < 1 || readHeight < 1) {\n return;\n }\n const region = document.createElement(\"canvas\");\n region.width = readWidth;\n region.height = readHeight;\n context2d(region).putImageData(context.getImageData(readLeft, readTop, readWidth, readHeight), 0, 0);\n const patch = obfuscateRegion(region, annotation.style, deviceStrength);\n if (redactShape(annotation.shape) === \"ellipse\") {\n const cut = cutEllipse(patch, left - readLeft, top - readTop, deviceWidth, deviceHeight);\n context.drawImage(cut, 0, 0, width, height);\n return;\n }\n context.drawImage(\n patch,\n left - readLeft,\n top - readTop,\n deviceWidth,\n deviceHeight,\n 0,\n 0,\n width,\n height\n );\n };\n}\nfunction backgroundPadding(fontSize) {\n return Math.max(2, Math.round(fontSize / 6));\n}\nconst MIN_HIT_AREA = 24;\nfunction hitAreaWidth(strokeWidth, scale) {\n return Math.max(strokeWidth, MIN_HIT_AREA / Math.max(scale, Number.EPSILON));\n}\nfunction buildAnnotationNode(annotation, source) {\n const base = { id: annotation.id, name: \"annotation\" };\n switch (annotation.type) {\n case \"draw\":\n return new Konva.Line({\n ...base,\n points: annotation.points,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth,\n lineCap: \"round\",\n lineJoin: \"round\"\n });\n case \"line\":\n return new Konva.Line({\n ...base,\n points: [...annotation.points],\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth,\n lineCap: \"round\"\n });\n case \"arrow\":\n return new Konva.Arrow({\n ...base,\n points: [...annotation.points],\n stroke: annotation.color,\n fill: annotation.color,\n strokeWidth: annotation.strokeWidth,\n pointerLength: annotation.strokeWidth * 4,\n pointerWidth: annotation.strokeWidth * 4\n });\n case \"rectangle\":\n return new Konva.Rect({\n ...base,\n ...annotation.rect,\n rotation: annotation.rotation,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth\n });\n case \"ellipse\":\n return new Konva.Ellipse({\n ...base,\n x: annotation.rect.x,\n y: annotation.rect.y,\n offsetX: -annotation.rect.width / 2,\n offsetY: -annotation.rect.height / 2,\n radiusX: annotation.rect.width / 2,\n radiusY: annotation.rect.height / 2,\n rotation: annotation.rotation,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth\n });\n case \"text\":\n case \"sticker\": {\n const text = new Konva.Text({\n ...base,\n x: annotation.x,\n y: annotation.y,\n text: annotation.text,\n fill: annotation.color,\n fontSize: annotation.fontSize,\n rotation: annotation.rotation,\n // Kept in sync with the text overlay for WYSIWYG editing\n fontFamily: fontStack(annotation.font),\n fontStyle: fontStyle(annotation),\n textDecoration: textDecoration(annotation),\n align: textAlign(annotation.align),\n ...annotation.outline === true ? {\n stroke: outlineColor(annotation.color),\n strokeWidth: outlineWidth(annotation.fontSize),\n // The edge sits behind the glyph rather than eating\n // into it, which is what keeps small text legible\n fillAfterStrokeEnabled: true\n } : {},\n ...annotation.background === true ? { padding: backgroundPadding(annotation.fontSize) } : {}\n });\n if (annotation.background !== true) {\n return text;\n }\n const label = new Konva.Label({ ...base, x: annotation.x, y: annotation.y, rotation: annotation.rotation });\n text.position({ x: 0, y: 0 });\n text.rotation(0);\n label.add(new Konva.Tag({ fill: outlineColor(annotation.color), cornerRadius: 2 }));\n label.add(text);\n return label;\n }\n case \"redact\": {\n if (source === void 0) {\n throw new Error(\"Redaction requires the source image size\");\n }\n const { rect } = annotation;\n return new Konva.Shape({\n ...base,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n // Something has to be fillable for the shape to register on\n // the hit canvas; what is drawn there is the hit colour\n fill: \"black\",\n sceneFunc: redactSceneFunc(annotation, redactStrength(source)),\n hitFunc: (context, shape) => {\n const shapeWidth = shape.width();\n const shapeHeight = shape.height();\n context.beginPath();\n if (redactShape(annotation.shape) === \"ellipse\") {\n context.ellipse(\n shapeWidth / 2,\n shapeHeight / 2,\n shapeWidth / 2,\n shapeHeight / 2,\n 0,\n 0,\n Math.PI * 2\n );\n } else {\n context.rect(0, 0, shapeWidth, shapeHeight);\n }\n context.closePath();\n context.fillStrokeShape(shape);\n }\n });\n }\n }\n}\nfunction applyFilters(node, state, pixelRatio = 1) {\n const { exposure, brightness, contrast, saturation, temperature, tint } = state.adjustments;\n const { highlights, shadows } = state.adjustments;\n const filters = [];\n if (exposure !== 0 || temperature !== 0 || tint !== 0) {\n filters.push(tone);\n }\n if (brightness !== 0) {\n filters.push(Konva.Filters.Brighten);\n }\n if (contrast !== 0) {\n filters.push(Konva.Filters.Contrast);\n }\n if (saturation !== 0) {\n filters.push(saturate);\n }\n if (highlights !== 0 || shadows !== 0) {\n filters.push(tonal);\n }\n const presetFilters = {\n none: null,\n grayscale: Konva.Filters.Grayscale,\n noir,\n luna,\n sepia: Konva.Filters.Sepia,\n fade,\n warm,\n cool,\n golden,\n coast,\n mist,\n berry,\n cinema,\n invert: Konva.Filters.Invert,\n solarize: Konva.Filters.Solarize,\n posterize: Konva.Filters.Posterize,\n pop: Konva.Filters.Enhance\n }[state.preset];\n if (presetFilters !== null) {\n filters.push(presetFilters);\n }\n if (state.adjustments.sharpen !== 0) {\n filters.push(sharpen);\n }\n if (state.adjustments.vignette !== 0) {\n filters.push(vignette);\n }\n if (filters.length === 0) {\n node.filters([]);\n node.clearCache();\n return;\n }\n node.filters(filters);\n node.brightness(brightness / 100);\n node.contrast(contrast);\n node.saturation(saturation / 100);\n node.setAttr(\"exposure\", exposure / 100);\n node.setAttr(\"temperature\", temperature / 100);\n node.setAttr(\"tint\", tint / 100);\n node.setAttr(\"sharpen\", state.adjustments.sharpen / 100);\n node.setAttr(\"highlights\", highlights / 100);\n node.setAttr(\"shadows\", shadows / 100);\n node.setAttr(\"vignette\", state.adjustments.vignette / 100);\n if (state.preset === \"posterize\") {\n node.levels(0.02);\n }\n if (state.preset === \"pop\") {\n node.enhance(0.25);\n }\n const cacheFit = canvasScaleFor({\n width: node.width() * pixelRatio,\n height: node.height() * pixelRatio\n });\n node.cache({ pixelRatio: pixelRatio * cacheFit });\n}\nfunction thumbnailKey(state) {\n const { crop, adjustments } = state;\n return [\n crop?.x,\n crop?.y,\n crop?.width,\n crop?.height,\n ...Object.values(adjustments)\n ].join(\"|\");\n}\nfunction presetThumbnail(oriented, state, preset, size = 96) {\n const visible = visibleRect(state, { width: oriented.width, height: oriented.height });\n const scale = Math.min(size / visible.width, size / visible.height);\n const thumb = document.createElement(\"canvas\");\n thumb.width = Math.max(1, Math.round(visible.width * scale));\n thumb.height = Math.max(1, Math.round(visible.height * scale));\n context2d(thumb).drawImage(oriented, visible.x, visible.y, visible.width, visible.height, 0, 0, thumb.width, thumb.height);\n const stage = new Konva.Stage({\n container: document.createElement(\"div\"),\n width: thumb.width,\n height: thumb.height\n });\n try {\n const node = new Konva.Image({ image: thumb, listening: false });\n applyFilters(node, { ...state, preset });\n const layer = new Konva.Layer();\n layer.add(node);\n stage.add(layer);\n return stage.toDataURL();\n } finally {\n stage.destroy();\n }\n}\nfunction createScene(stage) {\n const layer = new Konva.Layer();\n const viewGroup = new Konva.Group({ name: \"view\" });\n const contentGroup = new Konva.Group({ name: \"content\" });\n const imageNode = new Konva.Image({ image: void 0, listening: false });\n contentGroup.add(imageNode);\n viewGroup.add(contentGroup);\n layer.add(viewGroup);\n stage.add(layer);\n const built = /* @__PURE__ */ new Map();\n let filterKey = \"\";\n const update = (oriented, state, options) => {\n const level = levelFor(oriented, options.scale * layer.getCanvas().getPixelRatio());\n const imageChanged = imageNode.image() !== level;\n if (imageChanged) {\n imageNode.image(level);\n imageNode.scale({ x: oriented.width / level.width, y: oriented.height / level.height });\n }\n const origin = options.showCropped ? visibleRect(state, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n viewGroup.position({\n x: options.offset.x - origin.x * options.scale,\n y: options.offset.y - origin.y * options.scale\n });\n viewGroup.scale({ x: options.scale, y: options.scale });\n if (options.showCropped && state.crop !== null) {\n viewGroup.clip(state.crop);\n } else {\n viewGroup.clipWidth(void 0);\n viewGroup.clipHeight(void 0);\n }\n const pixelRatio = options.fastFilters ? Math.min(1, options.scale * imageNode.scaleX() * (globalThis.devicePixelRatio || 1)) : 1;\n const nextFilterKey = `${Object.values(state.adjustments).join(\"|\")}|${state.preset}|${pixelRatio}`;\n if (imageChanged || nextFilterKey !== filterKey) {\n applyFilters(imageNode, state, pixelRatio);\n filterKey = nextFilterKey;\n }\n const seen = /* @__PURE__ */ new Set();\n const sourceSize = { width: oriented.width, height: oriented.height };\n for (const annotation of state.annotations) {\n seen.add(annotation.id);\n const entry = built.get(annotation.id);\n if (entry !== void 0 && entry.annotation === annotation) {\n continue;\n }\n entry?.node.destroy();\n const node = buildAnnotationNode(annotation, sourceSize);\n contentGroup.add(node);\n built.set(annotation.id, { annotation, node });\n }\n for (const [id, entry] of built) {\n if (!seen.has(id)) {\n entry.node.destroy();\n built.delete(id);\n }\n }\n for (const { node } of built.values()) {\n if (node instanceof Konva.Shape && node.strokeWidth() > 0) {\n node.hitStrokeWidth(hitAreaWidth(node.strokeWidth(), options.scale));\n }\n }\n imageNode.zIndex(0);\n state.annotations.forEach((annotation, index) => built.get(annotation.id).node.zIndex(index + 1));\n layer.batchDraw();\n };\n return {\n viewGroup,\n contentGroup,\n imageNode,\n update,\n destroy: () => {\n built.clear();\n layer.destroy();\n }\n };\n}\nfunction renderScene(stage, oriented, state, options) {\n const scene = createScene(stage);\n scene.update(oriented, state, options);\n return scene;\n}\nfunction renderToCanvas(oriented, state, maxSize) {\n const visible = visibleRect(state, { width: oriented.width, height: oriented.height });\n const requested = maxSize === void 0 ? 1 : Math.min(1, maxSize / Math.max(visible.width, visible.height));\n const pixelRatio = requested * canvasScaleFor({\n width: visible.width * requested,\n height: visible.height * requested\n });\n const stage = new Konva.Stage({\n // Detached container: the export stage is never displayed\n container: document.createElement(\"div\"),\n width: visible.width,\n height: visible.height\n });\n try {\n renderScene(stage, oriented, state, {\n scale: 1,\n offset: { x: 0, y: 0 },\n showCropped: true\n });\n return stage.toCanvas({ pixelRatio });\n } finally {\n stage.destroy();\n }\n}\nfunction toImageCoords(pointer, state, oriented, options) {\n const visible = visibleRect(state, oriented);\n return {\n x: (pointer.x - options.offset.x) / options.scale + (options.showCropped ? visible.x : 0),\n y: (pointer.y - options.offset.y) / options.scale + (options.showCropped ? visible.y : 0)\n };\n}\nconst _hoisted_1$D = [\"src\", \"alt\"];\nconst _sfc_main$F = /* @__PURE__ */ defineComponent({\n __name: \"FilterStrip\",\n props: {\n loaded: { type: Boolean },\n oriented: {}\n },\n setup(__props) {\n const props = __props;\n const context = useEditorContext();\n const presets = [\n { id: \"none\", label: t(\"No filter\") },\n { id: \"pop\", label: t(\"Pop\") },\n { id: \"golden\", label: t(\"Golden\") },\n { id: \"coast\", label: t(\"Coast\") },\n { id: \"cinema\", label: t(\"Cinema\") },\n { id: \"berry\", label: t(\"Berry\") },\n { id: \"mist\", label: t(\"Mist\") },\n { id: \"warm\", label: t(\"Warm\") },\n { id: \"cool\", label: t(\"Cool\") },\n { id: \"fade\", label: t(\"Fade\") },\n { id: \"grayscale\", label: t(\"Grayscale\") },\n { id: \"noir\", label: t(\"Noir\") },\n { id: \"luna\", label: t(\"Luna\") },\n { id: \"sepia\", label: t(\"Sepia\") },\n { id: \"invert\", label: t(\"Invert\") },\n { id: \"solarize\", label: t(\"Solarize\") },\n { id: \"posterize\", label: t(\"Posterize\") }\n ];\n const presetPreviews = shallowRef([]);\n watch(\n [() => props.oriented, () => thumbnailKey(context.state.value)],\n ([oriented]) => {\n presetPreviews.value = oriented ? presets.map((preset) => ({\n ...preset,\n url: presetThumbnail(oriented, context.state.value, preset.id)\n })) : [];\n },\n { immediate: true }\n );\n function setPreset(preset, label) {\n context.commit({ ...context.state.value, preset }, label);\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"strip\",\n class: \"filter-strip\"\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(presetPreviews.value, (preset) => {\n return openBlock(), createBlock(IconTab, {\n key: preset.id,\n label: preset.label,\n active: unref(context).state.value.preset === preset.id,\n disabled: !__props.loaded,\n \"data-test\": `preset-${preset.id}`,\n onClick: ($event) => setPreset(preset.id, preset.label)\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: preset.url,\n alt: preset.label\n }, null, 8, _hoisted_1$D)\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n });\n };\n }\n});\nconst FilterStrip = /* @__PURE__ */ _export_sfc(_sfc_main$F, [[\"__scopeId\", \"data-v-ceab69b4\"]]);\nconst _hoisted_1$C = { class: \"redact-panel\" };\nconst _sfc_main$E = /* @__PURE__ */ defineComponent({\n __name: \"RedactPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const labels = {\n pixelate: t(\"Pixelate\"),\n blur: t(\"Smooth\"),\n rectangle: t(\"Rectangular area\"),\n ellipse: t(\"Oval area\")\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$C, [\n createVNode(IconTab, {\n \"data-test\": \"redact-pixelate\",\n label: labels.pixelate,\n active: unref(context).redactStyle.value === \"pixelate\",\n disabled: !__props.loaded,\n onClick: _cache[0] || (_cache[0] = ($event) => unref(context).redactStyle.value = \"pixelate\")\n }, null, 8, [\"label\", \"active\", \"disabled\"]),\n createVNode(IconTab, {\n \"data-test\": \"redact-blur\",\n label: labels.blur,\n active: unref(context).redactStyle.value === \"blur\",\n disabled: !__props.loaded,\n onClick: _cache[1] || (_cache[1] = ($event) => unref(context).redactStyle.value = \"blur\")\n }, null, 8, [\"label\", \"active\", \"disabled\"]),\n _cache[4] || (_cache[4] = createElementVNode(\"span\", { class: \"redact-panel__divider\" }, null, -1)),\n createVNode(IconTab, {\n \"data-test\": \"redact-rectangle\",\n label: labels.rectangle,\n active: unref(context).redactShape.value === \"rectangle\",\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => unref(context).redactShape.value = \"rectangle\")\n }, {\n default: withCtx(() => [\n createVNode(RectangleOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\", \"disabled\"]),\n createVNode(IconTab, {\n \"data-test\": \"redact-ellipse\",\n label: labels.ellipse,\n active: unref(context).redactShape.value === \"ellipse\",\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: _cache[3] || (_cache[3] = ($event) => unref(context).redactShape.value = \"ellipse\")\n }, {\n default: withCtx(() => [\n createVNode(EllipseOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\", \"disabled\"])\n ]);\n };\n }\n});\nconst RedactPanel = /* @__PURE__ */ _export_sfc(_sfc_main$E, [[\"__scopeId\", \"data-v-ca1eeeeb\"]]);\nconst _hoisted_1$B = { class: \"select-panel\" };\nconst _hoisted_2$y = { class: \"select-panel__hint\" };\nconst _sfc_main$D = /* @__PURE__ */ defineComponent({\n __name: \"SelectPanel\",\n setup(__props) {\n const context = useEditorContext();\n const hint = t(\"Click an annotation to move, resize or recolor it\");\n const transformHint = t(\"Drag to move, use the handles to resize\");\n const selected = computed(() => context.selectedId.value !== null);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$B, [\n createElementVNode(\"span\", _hoisted_2$y, toDisplayString(selected.value ? unref(transformHint) : unref(hint)), 1)\n ]);\n };\n }\n});\nconst SelectPanel = /* @__PURE__ */ _export_sfc(_sfc_main$D, [[\"__scopeId\", \"data-v-6c179f9e\"]]);\nconst _hoisted_1$A = { class: \"sticker-panel\" };\nconst _sfc_main$C = /* @__PURE__ */ defineComponent({\n __name: \"StickerPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const moreLabel = t(\"More emojis\");\n const FALLBACK_STICKERS = [\"😀\", \"😍\", \"🎉\", \"👍\", \"❤️\", \"⭐\", \"🔥\", \"💡\", \"✅\", \"❌\", \"❓\", \"⚠️\"];\n function frequentStickers() {\n try {\n const frequent = emojiSearch(\"\", 12).map((emoji) => emoji.native).filter((native) => typeof native === \"string\" && native !== \"\");\n return frequent.length >= 6 ? frequent : FALLBACK_STICKERS;\n } catch {\n return FALLBACK_STICKERS;\n }\n }\n const DEFAULT_STICKERS = frequentStickers();\n const stickers = computed(() => DEFAULT_STICKERS.includes(context.sticker.value) ? DEFAULT_STICKERS : [context.sticker.value, ...DEFAULT_STICKERS.slice(0, 11)]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$A, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(stickers.value, (sticker) => {\n return openBlock(), createBlock(IconTab, {\n key: sticker,\n label: sticker,\n active: unref(context).sticker.value === sticker,\n disabled: !__props.loaded,\n class: \"sticker-panel__emoji\",\n iconOnly: \"\",\n onClick: ($event) => unref(context).sticker.value = sticker\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(sticker), 1)\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 128)),\n createVNode(unref(NcEmojiPicker), {\n onSelect: _cache[0] || (_cache[0] = ($event) => unref(context).sticker.value = $event)\n }, {\n default: withCtx(() => [\n createVNode(unref(NcButton), {\n \"data-test\": \"emoji-picker\",\n variant: \"tertiary\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(moreLabel)), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]);\n };\n }\n});\nconst StickerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$C, [[\"__scopeId\", \"data-v-02765a0d\"]]);\nconst _sfc_main$B = /* @__PURE__ */ defineComponent({\n __name: \"EditorPanel\",\n props: {\n loaded: { type: Boolean },\n oriented: {}\n },\n setup(__props) {\n const context = useEditorContext();\n return (_ctx, _cache) => {\n return unref(context).activeMode.value === \"filter\" ? (openBlock(), createBlock(FilterStrip, {\n key: 0,\n loaded: __props.loaded,\n oriented: __props.oriented\n }, null, 8, [\"loaded\", \"oriented\"])) : (openBlock(), createBlock(GlassSurface, {\n key: 1,\n variant: \"card\",\n class: \"editor-card\"\n }, {\n default: withCtx(() => [\n unref(context).activeMode.value === \"crop\" ? (openBlock(), createBlock(CropPanel, {\n key: 0,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"finetune\" ? (openBlock(), createBlock(AdjustPanel, {\n key: 1,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"annotate\" ? (openBlock(), createBlock(AnnotatePanel, {\n key: 2,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"select\" ? (openBlock(), createBlock(SelectPanel, { key: 3 })) : unref(context).activeMode.value === \"sticker\" ? (openBlock(), createBlock(StickerPanel, {\n key: 4,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"redact\" ? (openBlock(), createBlock(RedactPanel, {\n key: 5,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }));\n };\n }\n});\nconst EditorPanel = /* @__PURE__ */ _export_sfc(_sfc_main$B, [[\"__scopeId\", \"data-v-25ead0dc\"]]);\nconst _sfc_main$A = {\n name: \"BlurIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$z = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$x = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$w = { d: \"M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z\" };\nconst _hoisted_4$w = { key: 0 };\nfunction _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon blur-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$w, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$w, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$x))\n ], 16, _hoisted_1$z);\n}\nconst Blur = /* @__PURE__ */ _export_sfc(_sfc_main$A, [[\"render\", _sfc_render$u]]);\nconst _sfc_main$z = {\n name: \"CropIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$y = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$w = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$v = { d: \"M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z\" };\nconst _hoisted_4$v = { key: 0 };\nfunction _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon crop-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$v, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$v, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$w))\n ], 16, _hoisted_1$y);\n}\nconst Crop = /* @__PURE__ */ _export_sfc(_sfc_main$z, [[\"render\", _sfc_render$t]]);\nconst _sfc_main$y = {\n name: \"CursorDefaultOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$x = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$v = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$u = { d: \"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z\" };\nconst _hoisted_4$u = { key: 0 };\nfunction _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon cursor-default-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$u, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$u, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$v))\n ], 16, _hoisted_1$x);\n}\nconst CursorDefaultOutline = /* @__PURE__ */ _export_sfc(_sfc_main$y, [[\"render\", _sfc_render$s]]);\nconst _sfc_main$x = {\n name: \"PaletteOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$w = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$u = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$t = { d: \"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z\" };\nconst _hoisted_4$t = { key: 0 };\nfunction _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon palette-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$t, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$t, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$u))\n ], 16, _hoisted_1$w);\n}\nconst PaletteOutline = /* @__PURE__ */ _export_sfc(_sfc_main$x, [[\"render\", _sfc_render$r]]);\nconst _sfc_main$w = {\n name: \"StickerEmojiIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$v = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$t = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$s = { d: \"M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z\" };\nconst _hoisted_4$s = { key: 0 };\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon sticker-emoji-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$s, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$s, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$t))\n ], 16, _hoisted_1$v);\n}\nconst StickerEmoji = /* @__PURE__ */ _export_sfc(_sfc_main$w, [[\"render\", _sfc_render$q]]);\nconst _sfc_main$v = {\n name: \"TuneIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$u = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$s = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$r = { d: \"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\" };\nconst _hoisted_4$r = { key: 0 };\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon tune-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$r, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$r, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$s))\n ], 16, _hoisted_1$u);\n}\nconst Tune = /* @__PURE__ */ _export_sfc(_sfc_main$v, [[\"render\", _sfc_render$p]]);\nconst _hoisted_1$t = { class: \"editor-sidebar__nav\" };\nconst _sfc_main$u = /* @__PURE__ */ defineComponent({\n __name: \"EditorSidebar\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const modes = [\n { id: \"select\", label: t(\"Select\"), icon: CursorDefaultOutline },\n { id: \"crop\", label: t(\"Crop\"), icon: Crop },\n { id: \"finetune\", label: t(\"Adjust\"), icon: Tune },\n { id: \"filter\", label: t(\"Filter\"), icon: PaletteOutline },\n { id: \"annotate\", label: t(\"Annotate\"), icon: Pencil },\n { id: \"sticker\", label: t(\"Sticker\"), icon: StickerEmoji },\n { id: \"redact\", label: t(\"Blur\"), icon: Blur }\n ];\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"card\",\n opaque: \"\",\n class: \"editor-sidebar\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"nav\", _hoisted_1$t, [\n (openBlock(), createElementBlock(Fragment, null, renderList(modes, (mode) => {\n return createVNode(IconTab, {\n key: mode.id,\n label: mode.label,\n active: unref(context).activeMode.value === mode.id,\n disabled: !__props.loaded,\n onClick: ($event) => unref(context).setMode(mode.id)\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(mode.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64))\n ])\n ]),\n _: 1\n });\n };\n }\n});\nconst EditorSidebar = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"__scopeId\", \"data-v-54ce7748\"]]);\nconst _sfc_main$t = {\n name: \"ChevronDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$s = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$r = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$q = { d: \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" };\nconst _hoisted_4$q = { key: 0 };\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$q, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$q, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$r))\n ], 16, _hoisted_1$s);\n}\nconst ChevronDown = /* @__PURE__ */ _export_sfc(_sfc_main$t, [[\"render\", _sfc_render$o]]);\nconst _sfc_main$s = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$r = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$q = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$p = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$p = { key: 0 };\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$p, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$p, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$q))\n ], 16, _hoisted_1$r);\n}\nconst Close = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"render\", _sfc_render$n]]);\nconst _sfc_main$r = {\n name: \"ContentCopyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$q = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$p = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$o = { d: \"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\" };\nconst _hoisted_4$o = { key: 0 };\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon content-copy-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$o, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$o, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$p))\n ], 16, _hoisted_1$q);\n}\nconst ContentCopy = /* @__PURE__ */ _export_sfc(_sfc_main$r, [[\"render\", _sfc_render$m]]);\nconst _sfc_main$q = {\n name: \"HistoryIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$p = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$o = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$n = { d: \"M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3\" };\nconst _hoisted_4$n = { key: 0 };\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon history-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$n, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$n, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$o))\n ], 16, _hoisted_1$p);\n}\nconst History = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$p = {\n name: \"MagnifyMinusOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$o = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$n = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$m = { d: \"M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z\" };\nconst _hoisted_4$m = { key: 0 };\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-minus-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$m, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$m, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$n))\n ], 16, _hoisted_1$o);\n}\nconst MagnifyMinusOutline = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$k]]);\nconst _sfc_main$o = {\n name: \"MagnifyPlusOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$n = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$m = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$l = { d: \"M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z\" };\nconst _hoisted_4$l = { key: 0 };\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-plus-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$l, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$l, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$m))\n ], 16, _hoisted_1$n);\n}\nconst MagnifyPlusOutline = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$j]]);\nconst _sfc_main$n = {\n name: \"RedoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$m = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$l = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$k = { d: \"M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z\" };\nconst _hoisted_4$k = { key: 0 };\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon redo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$k, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$k, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$l))\n ], 16, _hoisted_1$m);\n}\nconst Redo = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$i]]);\nconst _sfc_main$m = {\n name: \"RestoreIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$l = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$k = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$j = { d: \"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z\" };\nconst _hoisted_4$j = { key: 0 };\nfunction _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon restore-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$j, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$j, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$k))\n ], 16, _hoisted_1$l);\n}\nconst Restore = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$l = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$k = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$j = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$i = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$i = { key: 0 };\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$i, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$i, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$j))\n ], 16, _hoisted_1$k);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$g]]);\nconst _sfc_main$k = {\n name: \"ArrowExpandIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$j = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$i = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$h = { d: \"M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z\" };\nconst _hoisted_4$h = { key: 0 };\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-expand-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$h, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$h, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$i))\n ], 16, _hoisted_1$j);\n}\nconst ArrowExpand = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$f]]);\nconst _sfc_main$j = {\n name: \"BorderOutsideIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$i = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$h = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$g = { d: \"M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z\" };\nconst _hoisted_4$g = { key: 0 };\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon border-outside-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$g, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$g, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$h))\n ], 16, _hoisted_1$i);\n}\nconst BorderOutside = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$e]]);\nconst _sfc_main$i = {\n name: \"CropFreeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$h = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$g = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$f = { d: \"M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z\" };\nconst _hoisted_4$f = { key: 0 };\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon crop-free-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$f, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$f, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$g))\n ], 16, _hoisted_1$h);\n}\nconst CropFree = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$d]]);\nconst _sfc_main$h = {\n name: \"CursorMoveIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$g = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$f = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$e = { d: \"M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z\" };\nconst _hoisted_4$e = { key: 0 };\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon cursor-move-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$e, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$e, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$f))\n ], 16, _hoisted_1$g);\n}\nconst CursorMove = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$c]]);\nconst _sfc_main$g = {\n name: \"DeleteIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$f = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$e = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$d = { d: \"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\" };\nconst _hoisted_4$d = { key: 0 };\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon delete-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$d, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$d, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$e))\n ], 16, _hoisted_1$f);\n}\nconst Delete = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$b]]);\nconst _sfc_main$f = {\n name: \"FormatAlignLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$e = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$d = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$c = { d: \"M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$c = { key: 0 };\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-left-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$c, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$c, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$d))\n ], 16, _hoisted_1$e);\n}\nconst FormatAlignLeft = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$a]]);\nconst _sfc_main$e = {\n name: \"FormatBoldIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$d = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$c = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$b = { d: \"M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z\" };\nconst _hoisted_4$b = { key: 0 };\nfunction _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-bold-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$b, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$b, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$c))\n ], 16, _hoisted_1$d);\n}\nconst FormatBold = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$d = {\n name: \"FormatColorHighlightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-color-highlight-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst FormatColorHighlight = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$c = {\n name: \"FormatFontIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-font-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst FormatFont = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$b = {\n name: \"FormatItalicIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-italic-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst FormatItalic = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$a = {\n name: \"FormatStrikethroughIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-strikethrough-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst FormatStrikethrough = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$9 = {\n name: \"FormatUnderlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$8 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$7 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$6 = { d: \"M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z\" };\nconst _hoisted_4$6 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-underline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$6, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$6, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$7))\n ], 16, _hoisted_1$8);\n}\nconst FormatUnderline = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$8 = {\n name: \"ImageOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$7 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$6 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$5 = { d: \"M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z\" };\nconst _hoisted_4$5 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon image-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$5, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$5, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$6))\n ], 16, _hoisted_1$7);\n}\nconst ImageOutline = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$7 = {\n name: \"PaletteIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$6 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$5 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$4 = { d: \"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" };\nconst _hoisted_4$4 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon palette-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$4, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$5))\n ], 16, _hoisted_1$6);\n}\nconst Palette = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$2]]);\nconst ICONS = /* @__PURE__ */ new Map([\n [t(\"Original\"), ImageOutline],\n [t(\"Restored\"), ImageOutline],\n [t(\"Revert all changes\"), Restore],\n [t(\"Crop\"), Crop],\n [t(\"Reset crop\"), CropFree],\n [t(\"Rotate left\"), RotateLeft],\n [t(\"Rotate right\"), RotateRight],\n [t(\"Flip horizontal\"), FlipHorizontal],\n [t(\"Flip vertical\"), FlipVertical],\n [t(\"Rotation\"), RotateRight],\n [t(\"Scale\"), ArrowExpand],\n [t(\"Exposure\"), CameraIris],\n [t(\"Brightness\"), WhiteBalanceSunny],\n [t(\"Contrast\"), ContrastCircle],\n [t(\"Saturation\"), InvertColors],\n [t(\"Temperature\"), Thermometer],\n [t(\"Tint\"), WhiteBalanceIridescent],\n [t(\"Sharpen\"), ImageFilterCenterFocus],\n [t(\"Highlights\"), Spotlight],\n [t(\"Shadows\"), BoxShadow],\n [t(\"Vignette\"), CircleOpacity],\n [t(\"Draw\"), Pencil],\n [t(\"Rectangle\"), RectangleOutline],\n [t(\"Ellipse\"), EllipseOutline],\n [t(\"Arrow\"), ArrowTopRight],\n [t(\"Line\"), VectorLine],\n [t(\"Text\"), FormatText],\n [t(\"Sticker\"), StickerEmoji],\n [t(\"Blur\"), Blur],\n [t(\"Color\"), Palette],\n [t(\"Duplicate\"), ContentCopy],\n [t(\"Delete\"), Delete],\n [t(\"Move or resize\"), CursorMove],\n [t(\"Bold\"), FormatBold],\n [t(\"Italic\"), FormatItalic],\n [t(\"Underline\"), FormatUnderline],\n [t(\"Strikethrough\"), FormatStrikethrough],\n [t(\"Outline\"), BorderOutside],\n [t(\"Background\"), FormatColorHighlight],\n [t(\"Font\"), FormatFont],\n [t(\"Alignment\"), FormatAlignLeft],\n // Every filter preset is recorded under its own name\n [t(\"No filter\"), PaletteOutline],\n [t(\"Pop\"), PaletteOutline],\n [t(\"Golden\"), PaletteOutline],\n [t(\"Coast\"), PaletteOutline],\n [t(\"Cinema\"), PaletteOutline],\n [t(\"Berry\"), PaletteOutline],\n [t(\"Mist\"), PaletteOutline],\n [t(\"Warm\"), PaletteOutline],\n [t(\"Cool\"), PaletteOutline],\n [t(\"Fade\"), PaletteOutline],\n [t(\"Grayscale\"), PaletteOutline],\n [t(\"Noir\"), PaletteOutline],\n [t(\"Luna\"), PaletteOutline],\n [t(\"Sepia\"), PaletteOutline],\n [t(\"Invert\"), PaletteOutline],\n [t(\"Solarize\"), PaletteOutline],\n [t(\"Posterize\"), PaletteOutline],\n [t(\"Edit\"), Tune]\n]);\nfunction historyIcon(label) {\n return ICONS.get(label) ?? Tune;\n}\n[...ICONS.keys()];\nconst _hoisted_1$5 = { class: \"editor-topbar\" };\nconst _hoisted_2$4 = { class: \"editor-topbar__history\" };\nconst _hoisted_3$3 = [\"aria-label\", \"title\", \"disabled\"];\nconst _hoisted_4$3 = { class: \"editor-topbar__actions\" };\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n __name: \"EditorTopBar\",\n props: {\n loaded: { type: Boolean },\n saving: { type: Boolean },\n popoverContainer: {},\n canSaveAs: { type: Boolean }\n },\n emits: [\"save\", \"saveAs\", \"cancel\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const context = useEditorContext();\n const commands = useEditorCommands();\n const labels = {\n undo: t(\"Undo\"),\n redo: t(\"Redo\"),\n revert: t(\"Revert all changes\"),\n revertText: t(\"All edits will be discarded. This action cannot be undone.\"),\n zoomIn: t(\"Zoom in\"),\n zoomOut: t(\"Zoom out\"),\n resetZoom: t(\"Reset zoom\"),\n save: t(\"Save\"),\n saveOptions: t(\"More ways to save\"),\n saveAs: t(\"Save as copy\"),\n cancel: t(\"Cancel\"),\n close: t(\"Close the editor\"),\n unsaved: t(\"Save your edits before closing?\"),\n unsavedText: t(\"The image has edits that were never saved.\"),\n discard: t(\"Discard changes\"),\n history: t(\"Edit history\"),\n step: t(\"Edit\")\n };\n const historySteps = computed(() => context.historyEntries.value.map((entry, index) => ({\n index,\n label: entry.label ?? labels.step,\n icon: historyIcon(entry.label ?? labels.step)\n })).reverse());\n function stepZoom(direction) {\n const factor = direction === 1 ? 1.5 : 1 / 1.5;\n context.setViewZoom(context.viewZoom.value * factor);\n }\n function resetZoom() {\n context.setViewZoom(FIT_ZOOM);\n context.setViewPan({ x: 0, y: 0 });\n }\n const closing = shallowRef(false);\n function onClose() {\n if (isPristine(context.state.value)) {\n emit(\"cancel\");\n return;\n }\n closing.value = true;\n }\n function onCloseAnswer(answer) {\n closing.value = false;\n if (answer === \"save\") {\n emit(\"save\");\n } else if (answer === \"discard\") {\n emit(\"cancel\");\n }\n }\n async function onRevert() {\n if (await showConfirmation({\n name: labels.revert,\n text: labels.revertText,\n labelConfirm: labels.revert,\n labelReject: labels.cancel,\n severity: \"warning\"\n })) {\n commands.revert();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$5, [\n _cache[11] || (_cache[11] = createElementVNode(\"span\", { class: \"editor-topbar__spacer\" }, null, -1)),\n createElementVNode(\"div\", _hoisted_2$4, [\n createVNode(unref(NcActions), {\n forceMenu: \"\",\n container: __props.popoverContainer ?? \"body\",\n \"aria-label\": labels.history,\n title: labels.history,\n disabled: !__props.loaded || !unref(context).canUndo.value,\n variant: \"tertiary\",\n \"data-test\": \"history\"\n }, {\n icon: withCtx(() => [\n createVNode(History, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionButton), {\n \"data-test\": \"revert\",\n onClick: onRevert\n }, {\n icon: withCtx(() => [\n createVNode(Restore, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(labels.revert), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcActionSeparator)),\n (openBlock(true), createElementBlock(Fragment, null, renderList(historySteps.value, (step) => {\n return openBlock(), createBlock(unref(NcActionButton), {\n key: step.index,\n type: \"radio\",\n modelValue: String(unref(context).historyIndex.value),\n value: String(step.index),\n \"data-test\": `history-step-${step.index}`,\n onClick: ($event) => unref(context).jumpTo(step.index)\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(step.icon), { size: 20 }))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(step.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"container\", \"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"data-test\": \"undo\",\n \"aria-label\": labels.undo,\n title: labels.undo,\n disabled: !__props.loaded || !unref(context).canUndo.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => unref(context).undo())\n }, {\n icon: withCtx(() => [\n createVNode(Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.redo,\n title: labels.redo,\n disabled: !__props.loaded || !unref(context).canRedo.value,\n variant: \"tertiary\",\n onClick: _cache[1] || (_cache[1] = ($event) => unref(context).redo())\n }, {\n icon: withCtx(() => [\n createVNode(Redo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n _cache[10] || (_cache[10] = createElementVNode(\"span\", { class: \"editor-topbar__separator\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"zoom-out\",\n \"aria-label\": labels.zoomOut,\n title: labels.zoomOut,\n disabled: !__props.loaded || unref(context).viewZoom.value <= unref(MIN_ZOOM),\n variant: \"tertiary\",\n onClick: _cache[2] || (_cache[2] = ($event) => stepZoom(-1))\n }, {\n icon: withCtx(() => [\n createVNode(MagnifyMinusOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createElementVNode(\"button\", {\n type: \"button\",\n class: \"editor-topbar__zoom\",\n \"data-test\": \"zoom-reset\",\n \"aria-label\": labels.resetZoom,\n title: labels.resetZoom,\n disabled: !__props.loaded,\n onClick: resetZoom\n }, toDisplayString(Math.round(unref(context).viewZoom.value * 100)) + \"% \", 9, _hoisted_3$3),\n createVNode(unref(NcButton), {\n \"data-test\": \"zoom-in\",\n \"aria-label\": labels.zoomIn,\n title: labels.zoomIn,\n disabled: !__props.loaded || unref(context).viewZoom.value >= unref(MAX_ZOOM),\n variant: \"tertiary\",\n onClick: _cache[3] || (_cache[3] = ($event) => stepZoom(1))\n }, {\n icon: withCtx(() => [\n createVNode(MagnifyPlusOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"])\n ]),\n createElementVNode(\"div\", _hoisted_4$3, [\n createElementVNode(\"div\", {\n class: normalizeClass([\"editor-topbar__save\", { \"editor-topbar__save--split\": __props.canSaveAs }])\n }, [\n createVNode(unref(NcButton), {\n \"data-test\": \"save\",\n variant: \"primary\",\n disabled: !__props.loaded || __props.saving,\n onClick: _cache[4] || (_cache[4] = ($event) => emit(\"save\"))\n }, createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(labels.save), 1)\n ]),\n _: 2\n }, [\n __props.saving ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(unref(NcLoadingIcon), {\n size: 20,\n \"data-test\": \"saving\"\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"disabled\"]),\n __props.canSaveAs ? (openBlock(), createBlock(unref(NcActions), {\n key: 0,\n \"data-test\": \"save-menu\",\n forceMenu: \"\",\n variant: \"primary\",\n \"aria-label\": labels.saveOptions,\n container: __props.popoverContainer ?? \"body\",\n disabled: !__props.loaded || __props.saving\n }, {\n icon: withCtx(() => [\n createVNode(ChevronDown, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionButton), {\n \"data-test\": \"save-as\",\n closeAfterClick: \"\",\n onClick: _cache[5] || (_cache[5] = ($event) => emit(\"saveAs\"))\n }, {\n icon: withCtx(() => [\n createVNode(ContentCopy, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(labels.saveAs), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"container\", \"disabled\"])) : createCommentVNode(\"\", true)\n ], 2),\n createVNode(unref(NcButton), {\n \"data-test\": \"cancel\",\n \"aria-label\": labels.close,\n title: labels.close,\n variant: \"tertiary\",\n onClick: onClose\n }, {\n icon: withCtx(() => [\n createVNode(Close, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])\n ]),\n closing.value ? (openBlock(), createBlock(unref(NcDialog), {\n key: 0,\n name: labels.unsaved,\n noClose: \"\",\n \"data-test\": \"closing-dialog\",\n \"onUpdate:open\": _cache[9] || (_cache[9] = ($event) => onCloseAnswer(\"stay\"))\n }, {\n actions: withCtx(() => [\n createVNode(unref(NcButton), {\n class: \"editor-topbar__stay\",\n \"data-test\": \"closing-cancel\",\n variant: \"tertiary\",\n onClick: _cache[6] || (_cache[6] = ($event) => onCloseAnswer(\"stay\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.cancel), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n \"data-test\": \"closing-discard\",\n variant: \"error\",\n onClick: _cache[7] || (_cache[7] = ($event) => onCloseAnswer(\"discard\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.discard), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n \"data-test\": \"closing-save\",\n variant: \"primary\",\n onClick: _cache[8] || (_cache[8] = ($event) => onCloseAnswer(\"save\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.save), 1)\n ]),\n _: 1\n })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcNoteCard), {\n type: \"warning\",\n text: labels.unsavedText\n }, null, 8, [\"text\"])\n ]),\n _: 1\n }, 8, [\"name\"])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst EditorTopBar = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"__scopeId\", \"data-v-da1c3a53\"]]);\nconst _sfc_main$5 = {\n name: \"FormatAlignCenterIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-center-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst FormatAlignCenter = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$4 = {\n name: \"FormatAlignRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst FormatAlignRight = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render]]);\nconst SWITCH_DEFAULTS = {\n outline: \"textOutline\",\n background: \"textBackground\",\n bold: \"textBold\",\n italic: \"textItalic\",\n underline: \"textUnderline\",\n strikethrough: \"textStrikethrough\"\n};\nfunction useTextStyle(context) {\n function styleable() {\n const annotation = context.state.value.annotations.find((entry) => entry.id === context.selectedId.value);\n return annotation?.type === \"text\" ? annotation : void 0;\n }\n function toggle(key, label) {\n const fallback = SWITCH_DEFAULTS[key];\n return computed({\n get() {\n return styleable()?.[key] ?? context[fallback].value;\n },\n set(value) {\n context[fallback].value = value;\n const annotation = styleable();\n if (annotation === void 0) {\n return;\n }\n const state = context.state.value;\n context.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, [key]: value } : entry)\n }, label);\n }\n });\n }\n function choice(key, fallback, label) {\n return computed({\n get() {\n return styleable()?.[key] ?? context[fallback].value;\n },\n set(value) {\n context[fallback].value = value;\n const annotation = styleable();\n if (annotation === void 0 || annotation[key] === value) {\n return;\n }\n const state = context.state.value;\n context.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, [key]: value } : entry)\n }, label);\n }\n });\n }\n return {\n outline: toggle(\"outline\", t(\"Outline\")),\n background: toggle(\"background\", t(\"Background\")),\n font: choice(\"font\", \"textFont\", t(\"Font\")),\n align: choice(\"align\", \"textAlign\", t(\"Alignment\")),\n bold: toggle(\"bold\", t(\"Bold\")),\n italic: toggle(\"italic\", t(\"Italic\")),\n underline: toggle(\"underline\", t(\"Underline\")),\n strikethrough: toggle(\"strikethrough\", t(\"Strikethrough\"))\n };\n}\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n __name: \"TextEmphasisButtons\",\n props: {\n testPrefix: {},\n size: {}\n },\n setup(__props) {\n const textStyle = useTextStyle(useEditorContext());\n const META = {\n bold: { label: t(\"Bold\"), icon: FormatBold },\n italic: { label: t(\"Italic\"), icon: FormatItalic },\n underline: { label: t(\"Underline\"), icon: FormatUnderline },\n strikethrough: { label: t(\"Strikethrough\"), icon: FormatStrikethrough }\n };\n const emphases = TEXT_EMPHASES.map((id) => ({ id, ...META[id] }));\n return (_ctx, _cache) => {\n return openBlock(true), createElementBlock(Fragment, null, renderList(unref(emphases), (entry) => {\n return openBlock(), createBlock(IconTab, {\n key: entry.id,\n label: entry.label,\n active: unref(textStyle)[entry.id].value,\n \"data-test\": `${__props.testPrefix}-${entry.id}`,\n iconOnly: \"\",\n onClick: ($event) => unref(textStyle)[entry.id].value = !unref(textStyle)[entry.id].value\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(entry.icon), { size: __props.size }, null, 8, [\"size\"]))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"data-test\", \"onClick\"]);\n }), 128);\n };\n }\n});\nconst _hoisted_1$2 = {\n key: 0,\n class: \"floating-toolbar__color\"\n};\nconst _hoisted_2$1 = [\"value\", \"aria-label\", \"title\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"FloatingToolbar\",\n props: {\n box: {},\n typing: { type: Boolean }\n },\n emits: [\"duplicate\", \"delete\", \"refocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const context = useEditorContext();\n const color = useAnnotationColor(context);\n const textStyle = useTextStyle(context);\n const selected = computed(() => context.state.value.annotations.find((entry) => entry.id === context.selectedId.value));\n const isText = computed(() => props.typing === true || selected.value?.type === \"text\");\n const recolorable = computed(() => props.typing === true || selected.value !== void 0 && selected.value.type !== \"sticker\" && selected.value.type !== \"redact\");\n const lift = computed(() => props.typing === true ? 52 : 76);\n const labels = {\n color: t(\"Color\"),\n duplicate: t(\"Duplicate\"),\n delete: t(\"Delete\"),\n outline: t(\"Outline\"),\n background: t(\"Background\"),\n font: t(\"Font\"),\n align: t(\"Alignment\")\n };\n const fonts = [\n { id: \"sans\", label: t(\"Sans serif\") },\n { id: \"serif\", label: t(\"Serif\") },\n { id: \"mono\", label: t(\"Monospace\") }\n ];\n const ALIGN_META = {\n left: { label: t(\"Align left\"), icon: FormatAlignLeft },\n center: { label: t(\"Align centre\"), icon: FormatAlignCenter },\n right: { label: t(\"Align right\"), icon: FormatAlignRight }\n };\n const alignments = TEXT_ALIGNS.map((id) => ({ id, ...ALIGN_META[id] }));\n const alignment = computed(() => ALIGN_META[textAlign(textStyle.align.value)]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"pill\",\n class: \"floating-toolbar\",\n \"data-test\": \"floating-toolbar\",\n style: normalizeStyle({\n insetInlineStart: `${__props.box.x + __props.box.width / 2}px`,\n // Below only when the top edge would clip the bar\n insetBlockStart: __props.box.y - lift.value >= 4 ? `${__props.box.y - lift.value}px` : `${__props.box.y + __props.box.height + 12}px`\n }),\n onMousedown: _cache[8] || (_cache[8] = withModifiers(() => {\n }, [\"prevent\"]))\n }, {\n default: withCtx(() => [\n recolorable.value ? (openBlock(), createElementBlock(\"span\", _hoisted_1$2, [\n createElementVNode(\"input\", {\n value: unref(context).drawColor.value,\n type: \"color\",\n \"aria-label\": labels.color,\n title: labels.color,\n \"data-test\": \"toolbar-color\",\n onInput: _cache[0] || (_cache[0] = ($event) => unref(color).preview($event.target.value)),\n onChange: _cache[1] || (_cache[1] = ($event) => unref(color).commit($event.target.value))\n }, null, 40, _hoisted_2$1)\n ])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(unref(NcActions), {\n key: 1,\n forceMenu: \"\",\n \"aria-label\": labels.font,\n title: labels.font,\n variant: \"tertiary\",\n \"data-test\": \"toolbar-font\",\n onClose: _cache[2] || (_cache[2] = ($event) => emit(\"refocus\"))\n }, {\n icon: withCtx(() => [\n createVNode(FormatFont, { size: 18 })\n ]),\n default: withCtx(() => [\n (openBlock(), createElementBlock(Fragment, null, renderList(fonts, (entry) => {\n return createVNode(unref(NcActionButton), {\n key: entry.id,\n type: \"radio\",\n closeAfterClick: \"\",\n modelValue: unref(textStyle).font.value,\n value: entry.id,\n \"data-test\": `toolbar-font-${entry.id}`,\n onClick: ($event) => unref(textStyle).font.value = entry.id\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(entry.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 64))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(unref(NcActions), {\n key: 2,\n forceMenu: \"\",\n \"aria-label\": labels.align,\n title: labels.align,\n variant: \"tertiary\",\n \"data-test\": \"toolbar-align\",\n onClose: _cache[3] || (_cache[3] = ($event) => emit(\"refocus\"))\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(alignment.value.icon), { size: 18 }))\n ]),\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(alignments), (entry) => {\n return openBlock(), createBlock(unref(NcActionButton), {\n key: entry.id,\n type: \"radio\",\n closeAfterClick: \"\",\n modelValue: unref(textStyle).align.value,\n value: entry.id,\n \"data-test\": `toolbar-align-${entry.id}`,\n onClick: ($event) => unref(textStyle).align.value = entry.id\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(entry.icon), { size: 20 }))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(entry.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(_sfc_main$3, {\n key: 3,\n testPrefix: \"toolbar\",\n size: 18\n })) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(IconTab, {\n key: 4,\n \"data-test\": \"toolbar-outline\",\n label: labels.outline,\n active: unref(textStyle).outline.value,\n iconOnly: \"\",\n onClick: _cache[4] || (_cache[4] = ($event) => unref(textStyle).outline.value = !unref(textStyle).outline.value)\n }, {\n default: withCtx(() => [\n createVNode(BorderOutside, { size: 18 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(IconTab, {\n key: 5,\n \"data-test\": \"toolbar-background\",\n label: labels.background,\n active: unref(textStyle).background.value,\n iconOnly: \"\",\n onClick: _cache[5] || (_cache[5] = ($event) => unref(textStyle).background.value = !unref(textStyle).background.value)\n }, {\n default: withCtx(() => [\n createVNode(FormatColorHighlight, { size: 18 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\"])) : createCommentVNode(\"\", true),\n !__props.typing ? (openBlock(), createElementBlock(Fragment, { key: 6 }, [\n createVNode(unref(NcButton), {\n \"data-test\": \"duplicate\",\n \"aria-label\": labels.duplicate,\n title: labels.duplicate,\n variant: \"tertiary\",\n onClick: _cache[6] || (_cache[6] = ($event) => emit(\"duplicate\"))\n }, {\n icon: withCtx(() => [\n createVNode(ContentCopy, { size: 18 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"]),\n createVNode(unref(NcButton), {\n \"data-test\": \"delete\",\n \"aria-label\": labels.delete,\n title: labels.delete,\n variant: \"tertiary\",\n onClick: _cache[7] || (_cache[7] = ($event) => emit(\"delete\"))\n }, {\n icon: withCtx(() => [\n createVNode(Delete, { size: 18 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])\n ], 64)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"style\"]);\n };\n }\n});\nconst FloatingToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__scopeId\", \"data-v-b2b848a3\"]]);\nconst _hoisted_1$1 = [\"aria-label\"];\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"TextOverlay\",\n props: {\n x: {},\n y: {},\n fontSize: {},\n color: {},\n initial: {},\n outline: { type: Boolean },\n background: { type: Boolean },\n font: {},\n align: {},\n bold: { type: Boolean },\n italic: { type: Boolean },\n underline: { type: Boolean },\n strikethrough: { type: Boolean }\n },\n emits: [\"confirm\", \"cancel\", \"resize\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const inputLabel = t(\"Annotation text\");\n const value = ref(props.initial);\n const input = useTemplateRef(\"input\");\n function autosize() {\n const element = input.value;\n if (element === null) {\n return;\n }\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.width = `${Math.max(element.scrollWidth + 4, props.fontSize * 2)}px`;\n element.style.height = `${Math.max(element.scrollHeight, props.fontSize * 1.2)}px`;\n emit(\"resize\", { width: element.offsetWidth, height: element.offsetHeight });\n }\n function onPointerDown(event) {\n const target = event.target;\n if (!(target instanceof Element) || target === input.value || target.closest(\".floating-toolbar, .v-popper__popper\") !== null) {\n return;\n }\n emit(\"confirm\", value.value);\n }\n function focus() {\n input.value?.focus();\n }\n __expose({ focus });\n onMounted(() => {\n autosize();\n input.value.focus();\n input.value.select();\n document.addEventListener(\"pointerdown\", onPointerDown, { capture: true });\n });\n onBeforeUnmount(() => {\n document.removeEventListener(\"pointerdown\", onPointerDown, { capture: true });\n });\n function onEnter(event) {\n if (!event.shiftKey) {\n event.preventDefault();\n emit(\"confirm\", value.value);\n }\n }\n return (_ctx, _cache) => {\n return withDirectives((openBlock(), createElementBlock(\"textarea\", {\n ref_key: \"input\",\n ref: input,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => value.value = $event),\n class: \"text-overlay\",\n \"aria-label\": unref(inputLabel),\n \"data-test\": \"text-overlay\",\n style: normalizeStyle({\n insetInlineStart: `${__props.x}px`,\n insetBlockStart: `${__props.y}px`,\n fontSize: `${__props.fontSize}px`,\n color: __props.color,\n // The same stack the canvas uses, or the overlay would measure\n // and wrap differently from what gets drawn\n fontFamily: unref(fontStack)(__props.font),\n fontWeight: __props.bold === true ? \"bold\" : \"normal\",\n fontStyle: __props.italic === true ? \"italic\" : \"normal\",\n textDecorationLine: unref(textDecoration)({ underline: __props.underline, strikethrough: __props.strikethrough }) || \"none\",\n textAlign: unref(textAlign)(__props.align),\n ...__props.background === true ? {\n backgroundColor: unref(outlineColor)(__props.color),\n padding: `${Math.max(2, Math.round(__props.fontSize / 6))}px`\n } : {},\n ...__props.outline === true ? {\n // Mirrors the stroke the canvas draws, so what is typed\n // is what gets saved. paintOrder keeps the edge behind\n // the glyph the way fillAfterStrokeEnabled does there.\n webkitTextStrokeWidth: `${unref(outlineWidth)(__props.fontSize)}px`,\n webkitTextStrokeColor: unref(outlineColor)(__props.color),\n paintOrder: \"stroke fill\"\n } : {}\n }),\n rows: \"1\",\n onInput: autosize,\n onKeydown: [\n withKeys(onEnter, [\"enter\"]),\n _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => emit(\"cancel\"), [\"stop\"]), [\"esc\"]))\n ]\n }, null, 44, _hoisted_1$1)), [\n [vModelText, value.value]\n ]);\n };\n }\n});\nconst TextOverlay = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-9a528a49\"]]);\nfunction imageSize(image) {\n return \"naturalWidth\" in image ? { width: image.naturalWidth, height: image.naturalHeight } : { width: image.width, height: image.height };\n}\nfunction needsCors(url) {\n let target;\n try {\n target = new URL(url, window.location.href);\n } catch {\n return false;\n }\n return (target.protocol === \"http:\" || target.protocol === \"https:\") && target.origin !== window.location.origin;\n}\nasync function loadImage(source) {\n const url = typeof source === \"string\" ? source : URL.createObjectURL(source);\n try {\n return await new Promise((resolve, reject) => {\n const image = new Image();\n if (needsCors(url)) {\n image.crossOrigin = \"anonymous\";\n }\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(t(\"Image could not be decoded\")));\n image.src = url;\n });\n } finally {\n if (typeof source !== \"string\") {\n URL.revokeObjectURL(url);\n }\n }\n}\nasync function sourceBytes(source) {\n if (typeof source !== \"string\") {\n return source;\n }\n try {\n const response = await fetch(source, needsCors(source) ? { mode: \"cors\", credentials: \"omit\" } : { credentials: \"same-origin\" });\n return response.ok ? await response.blob() : null;\n } catch {\n return null;\n }\n}\nasync function decodeImage(source) {\n const worker = imageWorker();\n if (worker !== null) {\n const bytes = await sourceBytes(source);\n if (bytes !== null) {\n try {\n return await worker.decode(bytes);\n } catch {\n }\n }\n }\n return await loadImage(source);\n}\nasync function canvasToBlob(canvas, type = \"image/png\", quality) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob2) => {\n if (blob2 === null) {\n reject(new Error(t(\"Canvas could not be encoded\")));\n return;\n }\n resolve(blob2);\n }, type, quality);\n });\n}\nfunction primaryColor() {\n const value = getComputedStyle(document.body).getPropertyValue(\"--color-primary-element\").trim();\n return value !== \"\" ? value : \"#0082c9\";\n}\nfunction ambientBackdrop(canvas) {\n const sample = document.createElement(\"canvas\");\n const { width, height } = imageSize(canvas);\n if (width === 0 || height === 0) {\n return \"\";\n }\n sample.width = 24;\n sample.height = Math.max(1, Math.round(24 * height / width));\n const context = sample.getContext(\"2d\");\n if (context === null) {\n return \"\";\n }\n context.drawImage(canvas, 0, 0, sample.width, sample.height);\n try {\n return sample.toDataURL();\n } catch {\n return \"\";\n }\n}\nfunction useAmbient(source) {\n const backdrop = ref(\"\");\n watch(source, (image) => {\n if (image !== null) {\n backdrop.value = ambientBackdrop(image);\n }\n });\n return { backdrop };\n}\nfunction useAnnouncements(context) {\n const message = ref(\"\");\n const modeLabels = {\n select: t(\"Select\"),\n crop: t(\"Crop\"),\n finetune: t(\"Adjust\"),\n filter: t(\"Filter\"),\n annotate: t(\"Annotate\"),\n sticker: t(\"Sticker\"),\n redact: t(\"Blur\")\n };\n watch(context.activeMode, (mode) => {\n message.value = t(\"{mode} mode\", { mode: modeLabels[mode] ?? mode });\n });\n let annotationCount = 0;\n watch(context.state, (state) => {\n if (state.annotations.length > annotationCount) {\n message.value = t(\"Annotation added\");\n } else if (state.annotations.length < annotationCount) {\n message.value = t(\"Annotation removed\");\n }\n annotationCount = state.annotations.length;\n });\n let historyLength = 0;\n watch(context.historyIndex, (index) => {\n const entries = context.historyEntries.value;\n const moved = entries.length === historyLength;\n historyLength = entries.length;\n const entry = entries[index];\n if (moved && entry !== void 0) {\n message.value = t(\"Jumped to {step}\", { step: entry.label ?? t(\"Edit\") });\n }\n });\n watch(() => context.state.value.preset, (preset) => {\n message.value = preset === \"none\" ? t(\"Filter removed\") : t(\"Filter applied\");\n });\n return message;\n}\nconst TEXT_ENTRY = \"input, textarea, select, [contenteditable]\";\nconst ACTIVATABLE = 'button, [role=\"button\"], a[href], summary';\nfunction ownsTextEntry(target) {\n return target instanceof HTMLElement && target.closest(TEXT_ENTRY) !== null;\n}\nfunction ownsSpaceKey(target) {\n return target instanceof HTMLElement && target.closest(`${TEXT_ENTRY}, ${ACTIVATABLE}`) !== null;\n}\nconst NUDGE_KEYS = {\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0],\n ArrowUp: [0, -1],\n ArrowDown: [0, 1]\n};\nfunction useEditorShortcuts(deps) {\n const { context } = deps;\n let nudging = false;\n function nudgeSelection(event) {\n const id = context.selectedId.value;\n const direction = NUDGE_KEYS[event.key];\n if (id === null || direction === void 0) {\n return;\n }\n event.preventDefault();\n const step = event.shiftKey ? 10 : 1;\n const state = context.state.value;\n nudging = true;\n context.preview({\n ...state,\n annotations: state.annotations.map((annotation) => annotation.id === id ? translateAnnotation(annotation, direction[0] * step, direction[1] * step) : annotation)\n });\n }\n function onKeydown(event) {\n if (deps.isTextEditing() || ownsTextEntry(event.target)) {\n return;\n }\n const meta = event.ctrlKey || event.metaKey;\n if (meta && !event.shiftKey && event.key.toLowerCase() === \"z\") {\n event.preventDefault();\n context.undo();\n return;\n }\n if (meta && event.shiftKey && event.key.toLowerCase() === \"z\" || meta && event.key.toLowerCase() === \"y\") {\n event.preventDefault();\n context.redo();\n return;\n }\n if (event.key === \"+\" || event.key === \"=\") {\n context.setViewZoom(context.viewZoom.value * 1.25);\n return;\n }\n if (event.key === \"-\") {\n context.setViewZoom(context.viewZoom.value / 1.25);\n return;\n }\n if (event.key in NUDGE_KEYS && context.selectedId.value !== null) {\n nudgeSelection(event);\n return;\n }\n if ((event.key === \"Delete\" || event.key === \"Backspace\") && context.selectedId.value !== null) {\n event.preventDefault();\n deps.onDelete();\n } else if (event.key === \"Escape\") {\n deps.onEscape();\n }\n }\n function onKeyup(event) {\n if (ownsTextEntry(event.target)) {\n return;\n }\n if (nudging && event.key in NUDGE_KEYS) {\n nudging = false;\n context.commit(context.state.value, t(\"Move or resize\"));\n }\n }\n onMounted(() => {\n window.addEventListener(\"keydown\", onKeydown);\n window.addEventListener(\"keyup\", onKeyup);\n });\n onBeforeUnmount(() => {\n window.removeEventListener(\"keydown\", onKeydown);\n window.removeEventListener(\"keyup\", onKeyup);\n });\n}\nlet converts;\nfunction convertsToSrgb() {\n if (converts !== void 0) {\n return converts;\n }\n converts = false;\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const context = canvas.getContext(\"2d\", { colorSpace: \"display-p3\" });\n converts = context?.getContextAttributes().colorSpace === \"display-p3\";\n } catch {\n }\n return converts;\n}\nconst DEFAULT_QUALITY = 0.92;\nconst MIN_QUALITY = 0.75;\nconst MAX_QUALITY = 0.97;\nasync function painted() {\n await new Promise((resolve) => {\n requestAnimationFrame(() => requestAnimationFrame(() => resolve(null)));\n });\n}\nfunction useExportImage(deps) {\n const exporting = ref(false);\n const ENCODABLE = [\"image/jpeg\", \"image/png\", \"image/webp\"];\n function sourceFormat() {\n const type = deps.source()?.type;\n return type !== void 0 && ENCODABLE.includes(type) ? type : void 0;\n }\n async function jpegSource(mimeType) {\n const source = deps.source();\n if (source === null || mimeType !== \"image/jpeg\" || source.type !== \"image/jpeg\") {\n return null;\n }\n return new Uint8Array(await source.arrayBuffer());\n }\n function qualityFor(source) {\n const estimated = source === null ? void 0 : estimateJpegQuality(source);\n if (estimated === void 0) {\n return DEFAULT_QUALITY;\n }\n return Math.min(MAX_QUALITY, Math.max(MIN_QUALITY, estimated / 100));\n }\n async function carryMetadata(blob2, canvas, source) {\n if (source === null || blob2.type !== \"image/jpeg\") {\n return blob2;\n }\n const segments = readMetadataSegments(source, { icc: !convertsToSrgb() });\n if (segments.length === 0) {\n return blob2;\n }\n const carried = withMetadata(\n new Uint8Array(await blob2.arrayBuffer()),\n segments,\n { width: canvas.width, height: canvas.height }\n );\n return new Blob([carried], { type: blob2.type });\n }\n async function exportImage(options = {}) {\n const oriented = deps.oriented();\n if (oriented === null) {\n throw new Error(\"No image loaded\");\n }\n const source = deps.source();\n if (source !== null && source.type !== \"\" && isPristine(deps.getState()) && options.maxSize === void 0 && (options.format === void 0 || options.format === source.type)) {\n return { blob: source, width: oriented.width, height: oriented.height, mimeType: source.type, downscaled: false };\n }\n exporting.value = true;\n await painted();\n try {\n return await encode(oriented, options);\n } finally {\n exporting.value = false;\n }\n }\n async function encode(oriented, options) {\n const canvas = renderToCanvas(oriented, deps.getState(), options.maxSize);\n const mimeType = options.format ?? sourceFormat() ?? \"image/png\";\n try {\n const source = await jpegSource(mimeType);\n const quality = options.quality ?? (mimeType === \"image/jpeg\" ? qualityFor(source) : void 0);\n let blob2 = await canvasToBlob(canvas, mimeType, quality);\n blob2 = await carryMetadata(blob2, canvas, source);\n const visible = visibleRect(deps.getState(), { width: oriented.width, height: oriented.height });\n const wanted = options.maxSize === void 0 ? Math.max(visible.width, visible.height) : Math.min(options.maxSize, Math.max(visible.width, visible.height));\n return {\n blob: blob2,\n width: canvas.width,\n height: canvas.height,\n mimeType,\n downscaled: Math.max(canvas.width, canvas.height) < Math.floor(wanted)\n };\n } catch (error) {\n if (error instanceof DOMException && error.name === \"SecurityError\") {\n throw new Error(\n t(\"The image cannot be exported because it was loaded without cross-origin access\"),\n { cause: error }\n );\n }\n throw error;\n }\n }\n async function save(onSaved = deps.onSaved) {\n try {\n onSaved(await exportImage(deps.saveOptions()));\n } catch (error) {\n deps.onError(error instanceof Error ? error : new Error(String(error)));\n }\n }\n return { exporting, exportImage, save };\n}\nfunction useTextEditing(deps) {\n const { context } = deps;\n const textEdit = ref(null);\n function startTextEdit(position, existing) {\n const options = deps.viewOptions();\n const oriented = deps.oriented();\n if (options === null || oriented === null) {\n return;\n }\n const origin = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n textEdit.value = {\n sceneX: position.x,\n sceneY: position.y,\n screenX: options.offset.x + (position.x - origin.x) * options.scale,\n screenY: options.offset.y + (position.y - origin.y) * options.scale,\n screenFontSize: (existing?.fontSize ?? context.fontSize.value) * options.scale,\n value: existing?.text ?? \"\",\n id: existing?.id ?? null\n };\n }\n function confirmTextEdit(text) {\n const edit = textEdit.value;\n textEdit.value = null;\n if (edit === null) {\n return;\n }\n const state = context.state.value;\n const trimmed = text.trim();\n if (edit.id !== null) {\n context.commit({\n ...state,\n annotations: trimmed === \"\" ? state.annotations.filter((annotation) => annotation.id !== edit.id) : state.annotations.map((annotation) => annotation.id === edit.id ? { ...annotation, text: trimmed } : annotation)\n }, trimmed === \"\" ? t(\"Delete\") : t(\"Text\"));\n } else if (trimmed !== \"\") {\n context.commit({\n ...state,\n annotations: [...state.annotations, {\n id: newId(),\n type: \"text\",\n x: edit.sceneX,\n y: edit.sceneY,\n text: trimmed,\n color: context.drawColor.value,\n fontSize: context.fontSize.value,\n rotation: 0,\n outline: context.textOutline.value,\n background: context.textBackground.value,\n font: context.textFont.value,\n align: context.textAlign.value,\n bold: context.textBold.value,\n italic: context.textItalic.value,\n underline: context.textUnderline.value,\n strikethrough: context.textStrikethrough.value\n }]\n }, t(\"Text\"));\n }\n }\n return { textEdit, startTextEdit, confirmTextEdit };\n}\nfunction useWheelControls(element, context) {\n let dragFrom = null;\n let pinch = null;\n const pointers = /* @__PURE__ */ new Map();\n const spaceHeld = shallowRef(false);\n const toolFreeDrag = () => context.activeTool.value === \"adjust\";\n const panArmed = computed(() => spaceHeld.value || context.activeTool.value === \"adjust\");\n function anchorAt(position) {\n const rect = element.value?.getBoundingClientRect();\n if (rect === void 0) {\n return void 0;\n }\n return {\n x: position.x - rect.x - rect.width / 2,\n y: position.y - rect.y - rect.height / 2\n };\n }\n function currentPinch() {\n if (pointers.size !== 2) {\n return null;\n }\n const [a2, b2] = [...pointers.values()];\n return {\n distance: Math.hypot(a2.x - b2.x, a2.y - b2.y),\n centroid: { x: (a2.x + b2.x) / 2, y: (a2.y + b2.y) / 2 }\n };\n }\n function onWheel(event) {\n event.preventDefault();\n if (event.deltaY === 0) {\n return;\n }\n const height = element.value?.clientHeight ?? window.innerHeight;\n const factor = wheelZoomFactor(event.deltaY, event.deltaMode, height);\n context.setViewZoom(context.viewZoom.value * factor, anchorAt({ x: event.clientX, y: event.clientY }));\n }\n function onPointerDown(event) {\n if (event.pointerType === \"touch\") {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n if (pointers.size === 2) {\n pinch = currentPinch();\n context.panning.value = true;\n event.stopPropagation();\n }\n return;\n }\n const wantsPan = event.button === 1 || event.button === 0 && (spaceHeld.value || toolFreeDrag());\n if (!wantsPan) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n dragFrom = {\n pointer: { x: event.clientX, y: event.clientY },\n pan: context.viewPan.value\n };\n context.panning.value = true;\n element.value?.setPointerCapture(event.pointerId);\n }\n function onPointerMove(event) {\n if (event.pointerType === \"touch\" && pointers.has(event.pointerId)) {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n const next = currentPinch();\n if (next === null || pinch === null) {\n return;\n }\n event.stopPropagation();\n const ratio = next.distance / pinch.distance;\n if (Math.abs(ratio - 1) > PINCH_TOLERANCE) {\n context.setViewZoom(context.viewZoom.value * ratio, anchorAt(next.centroid));\n } else {\n context.setViewPan({\n x: context.viewPan.value.x + next.centroid.x - pinch.centroid.x,\n y: context.viewPan.value.y + next.centroid.y - pinch.centroid.y\n });\n }\n pinch = next;\n return;\n }\n if (dragFrom === null) {\n return;\n }\n event.stopPropagation();\n context.setViewPan({\n x: dragFrom.pan.x + (event.clientX - dragFrom.pointer.x),\n y: dragFrom.pan.y + (event.clientY - dragFrom.pointer.y)\n });\n }\n function onPointerUp(event) {\n if (event !== void 0) {\n pointers.delete(event.pointerId);\n }\n pinch = currentPinch();\n dragFrom = null;\n if (pointers.size < 2) {\n context.panning.value = false;\n }\n }\n function onKeydown(event) {\n if (event.code !== \"Space\" || ownsSpaceKey(event.target)) {\n return;\n }\n event.preventDefault();\n spaceHeld.value = true;\n }\n function onKeyup(event) {\n if (event.code === \"Space\") {\n spaceHeld.value = false;\n }\n }\n onMounted(() => {\n const target = element.value;\n target?.addEventListener(\"wheel\", onWheel, { passive: false });\n target?.addEventListener(\"pointerdown\", onPointerDown, { capture: true });\n target?.addEventListener(\"pointermove\", onPointerMove, { capture: true });\n target?.addEventListener(\"pointerup\", onPointerUp);\n target?.addEventListener(\"pointercancel\", onPointerUp);\n window.addEventListener(\"keydown\", onKeydown);\n window.addEventListener(\"keyup\", onKeyup);\n });\n onBeforeUnmount(() => {\n const target = element.value;\n target?.removeEventListener(\"wheel\", onWheel);\n target?.removeEventListener(\"pointerdown\", onPointerDown, { capture: true });\n target?.removeEventListener(\"pointermove\", onPointerMove, { capture: true });\n target?.removeEventListener(\"pointerup\", onPointerUp);\n target?.removeEventListener(\"pointercancel\", onPointerUp);\n window.removeEventListener(\"keydown\", onKeydown);\n window.removeEventListener(\"keyup\", onKeyup);\n });\n return { panArmed };\n}\nconst DURATION = 0.3;\nfunction prefersReducedMotion() {\n return typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\nfunction pivotOnCenter(target) {\n target.node.offset(target.pivot);\n target.node.position(target.pivot);\n}\nfunction playTransition(kind, deps, context) {\n if (prefersReducedMotion()) {\n return;\n }\n const { scale } = deps;\n const easing = Konva.Easings.EaseInOut;\n const ratio = context.previousScale / scale;\n for (const target of deps.targets) {\n const { node } = target;\n node.setAttrs({ x: 0, y: 0, offsetX: 0, offsetY: 0, rotation: 0, scaleX: 1, scaleY: 1, opacity: 1 });\n switch (kind) {\n case \"load\":\n pivotOnCenter(target);\n node.opacity(0);\n node.scale({ x: 0.96, y: 0.96 });\n node.to({ opacity: 1, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n case \"rotate-cw\":\n case \"rotate-ccw\":\n pivotOnCenter(target);\n node.rotation(kind === \"rotate-cw\" ? -90 : 90);\n node.scale({ x: ratio, y: ratio });\n node.to({ rotation: 0, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n case \"flip-h\":\n pivotOnCenter(target);\n node.scaleX(-1);\n node.to({ scaleX: 1, duration: DURATION, easing });\n break;\n case \"flip-v\":\n pivotOnCenter(target);\n node.scaleY(-1);\n node.to({ scaleY: 1, duration: DURATION, easing });\n break;\n case \"crop\": {\n const { previousScale, previousOffset, previousOrigin } = context;\n node.scale({ x: ratio, y: ratio });\n node.position({\n x: (previousOffset.x - previousOrigin.x * previousScale - (deps.offset.x - deps.origin.x * scale)) * target.unit,\n y: (previousOffset.y - previousOrigin.y * previousScale - (deps.offset.y - deps.origin.y * scale)) * target.unit\n });\n node.to({ x: 0, y: 0, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n }\n }\n }\n}\nfunction clampCropBox(bounds, oldBox, newBox, keepRatio) {\n const right = bounds.x + bounds.width;\n const bottom = bounds.y + bounds.height;\n let { x, y, width, height } = newBox;\n if (x < bounds.x) {\n width -= bounds.x - x;\n x = bounds.x;\n }\n if (y < bounds.y) {\n height -= bounds.y - y;\n y = bounds.y;\n }\n width = Math.min(width, right - x);\n height = Math.min(height, bottom - y);\n if (keepRatio && oldBox.height > 0) {\n const ratio = oldBox.width / oldBox.height;\n if (width / height > ratio) {\n width = height * ratio;\n } else {\n height = width / ratio;\n }\n if (Math.abs(newBox.x - oldBox.x) > 0.01) {\n x = Math.min(newBox.x + newBox.width, right) - width;\n }\n if (Math.abs(newBox.y - oldBox.y) > 0.01) {\n y = Math.min(newBox.y + newBox.height, bottom) - height;\n }\n }\n return {\n ...newBox,\n x,\n y,\n width: Math.max(8, width),\n height: Math.max(8, height)\n };\n}\nfunction attachCropOverlay(deps) {\n const view = { oriented: deps.oriented, scale: deps.scale, offset: deps.offset };\n const toStage = (rect) => ({\n x: view.offset.x + rect.x * view.scale,\n y: view.offset.y + rect.y * view.scale,\n width: rect.width * view.scale,\n height: rect.height * view.scale\n });\n const toScene = (rect) => ({\n x: (rect.x - view.offset.x) / view.scale,\n y: (rect.y - view.offset.y) / view.scale,\n width: rect.width / view.scale,\n height: rect.height / view.scale\n });\n let imageBounds = toStage({ x: 0, y: 0, ...view.oriented });\n const layer = new Konva.Layer({ name: \"crop\" });\n const makeShade = () => new Konva.Rect({\n fill: \"rgba(0, 0, 0, 0.5)\",\n listening: false\n });\n const shadeTop = makeShade();\n const shadeLeft = makeShade();\n const shadeRight = makeShade();\n const shadeBottom = makeShade();\n for (const shade of [shadeTop, shadeLeft, shadeRight, shadeBottom]) {\n layer.add(shade);\n }\n const cropNode = new Konva.Rect({\n // Named so it can be told apart from the four shade rects\n name: \"crop-rect\",\n ...toStage(clampRect(deps.initial ?? { x: 0, y: 0, ...view.oriented }, view.oriented)),\n stroke: \"rgba(255, 255, 255, 0.9)\",\n strokeWidth: 1,\n draggable: true,\n strokeScaleEnabled: false\n });\n layer.add(cropNode);\n const stageRect = () => ({\n x: cropNode.x(),\n y: cropNode.y(),\n width: cropNode.width() * cropNode.scaleX(),\n height: cropNode.height() * cropNode.scaleY()\n });\n const gridLines = Array.from({ length: 4 }, () => new Konva.Line({\n stroke: \"rgba(255, 255, 255, 0.35)\",\n strokeWidth: 1,\n listening: false\n }));\n for (const line of gridLines) {\n layer.add(line);\n }\n const clampToImage = (rect) => {\n const x = Math.min(Math.max(rect.x, imageBounds.x), imageBounds.x + imageBounds.width - rect.width);\n const y = Math.min(Math.max(rect.y, imageBounds.y), imageBounds.y + imageBounds.height - rect.height);\n return { ...rect, x, y };\n };\n const sceneRect = () => {\n const scene = toScene(stageRect());\n return clampRect({\n x: Math.round(scene.x),\n y: Math.round(scene.y),\n width: Math.round(scene.width),\n height: Math.round(scene.height)\n }, view.oriented);\n };\n const updateOverlay = () => {\n const rect = stageRect();\n const { x, y, width, height } = imageBounds;\n shadeTop.setAttrs({ x, y, width, height: rect.y - y });\n shadeLeft.setAttrs({ x, y: rect.y, width: rect.x - x, height: rect.height });\n shadeRight.setAttrs({ x: rect.x + rect.width, y: rect.y, width: x + width - rect.x - rect.width, height: rect.height });\n shadeBottom.setAttrs({ x, y: rect.y + rect.height, width, height: y + height - rect.y - rect.height });\n gridLines[0].points([rect.x + rect.width / 3, rect.y, rect.x + rect.width / 3, rect.y + rect.height]);\n gridLines[1].points([rect.x + rect.width * 2 / 3, rect.y, rect.x + rect.width * 2 / 3, rect.y + rect.height]);\n gridLines[2].points([rect.x, rect.y + rect.height / 3, rect.x + rect.width, rect.y + rect.height / 3]);\n gridLines[3].points([rect.x, rect.y + rect.height * 2 / 3, rect.x + rect.width, rect.y + rect.height * 2 / 3]);\n deps.onChange?.(sceneRect());\n };\n let ratioLocked = false;\n const transformer = new Konva.Transformer({\n nodes: [cropNode],\n rotateEnabled: false,\n flipEnabled: false,\n keepRatio: false,\n // Round corner dots, light with a dark ring: the image behind them\n // is any image, and a dark dot disappears into half of them\n enabledAnchors: [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"],\n anchorSize: 14,\n anchorCornerRadius: 7,\n anchorFill: \"#fff\",\n anchorStroke: \"rgba(0, 0, 0, 0.5)\",\n anchorStrokeWidth: 1,\n borderStroke: \"rgba(255, 255, 255, 0.7)\",\n boundBoxFunc: (oldBox, newBox) => ({ ...newBox, ...clampCropBox(imageBounds, oldBox, newBox, ratioLocked) })\n });\n layer.add(transformer);\n cropNode.dragBoundFunc((position) => clampToImage({\n ...position,\n width: cropNode.width() * cropNode.scaleX(),\n height: cropNode.height() * cropNode.scaleY()\n }));\n cropNode.on(\"dragmove transform\", updateOverlay);\n const setAspect = (aspect) => {\n ratioLocked = aspect !== null;\n transformer.keepRatio(ratioLocked);\n if (aspect === null) {\n return;\n }\n const current = stageRect();\n const width = Math.min(\n Math.max(current.width, current.height * aspect),\n imageBounds.width,\n imageBounds.height * aspect\n );\n const height = width / aspect;\n const center = { x: current.x + current.width / 2, y: current.y + current.height / 2 };\n const position = clampToImage({\n x: center.x - width / 2,\n y: center.y - height / 2,\n width,\n height\n });\n cropNode.setAttrs({ ...position, width, height, scaleX: 1, scaleY: 1 });\n transformer.forceUpdate();\n updateOverlay();\n };\n updateOverlay();\n deps.stage.add(layer);\n return {\n layer,\n setAspect,\n update(next) {\n const scene = toScene(stageRect());\n view.oriented = next.oriented;\n view.scale = next.scale;\n view.offset = next.offset;\n imageBounds = toStage({ x: 0, y: 0, ...view.oriented });\n cropNode.setAttrs({ ...toStage(scene), scaleX: 1, scaleY: 1 });\n transformer.forceUpdate();\n updateOverlay();\n },\n getRect: sceneRect,\n destroy() {\n transformer.destroy();\n layer.destroy();\n }\n };\n}\nfunction coverScale(box, degrees) {\n if (box.width <= 0 || box.height <= 0) {\n throw new RangeError(\"Dimensions must be positive\");\n }\n const radians = degrees * Math.PI / 180;\n const cos = Math.abs(Math.cos(radians));\n const sin = Math.abs(Math.sin(radians));\n return Math.max(\n (box.width * cos + box.height * sin) / box.width,\n (box.width * sin + box.height * cos) / box.height\n );\n}\nfunction fitContain(content, container) {\n if (content.width <= 0 || content.height <= 0 || container.width <= 0 || container.height <= 0) {\n throw new RangeError(\"Dimensions must be positive\");\n }\n const scale = Math.min(\n container.width / content.width,\n container.height / content.height,\n 1\n );\n const width = content.width * scale;\n const height = content.height * scale;\n return {\n scale,\n width,\n height,\n x: (container.width - width) / 2,\n y: (container.height - height) / 2\n };\n}\nfunction snapAngle(from, to, step = Math.PI / 4) {\n const dx = to.x - from.x;\n const dy = to.y - from.y;\n if (dx === 0 && dy === 0) {\n return to;\n }\n const length = Math.hypot(dx, dy);\n const angle = Math.round(Math.atan2(dy, dx) / step) * step;\n const round = (value) => Math.abs(value) < 1e-9 ? 0 : value;\n return {\n x: from.x + length * round(Math.cos(angle)),\n y: from.y + length * round(Math.sin(angle))\n };\n}\nfunction orientImage(image, state) {\n const natural = imageSize(image);\n const full = orientedSize(natural, state.rotation);\n const fit = canvasScaleFor(full);\n const oriented = {\n width: Math.max(1, Math.floor(full.width * fit)),\n height: Math.max(1, Math.floor(full.height * fit))\n };\n const canvas = document.createElement(\"canvas\");\n canvas.width = oriented.width;\n canvas.height = oriented.height;\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n const cover = coverScale(oriented, state.fineRotation) * Math.max(1, state.zoom) * fit;\n context.translate(oriented.width / 2, oriented.height / 2);\n context.rotate(state.fineRotation * Math.PI / 180);\n context.scale(cover, cover);\n context.rotate(state.rotation * Math.PI / 180);\n context.scale(state.flipX ? -1 : 1, state.flipY ? -1 : 1);\n context.drawImage(image, -natural.width / 2, -natural.height / 2);\n return canvas;\n}\nfunction transformPoints(points, node) {\n const radians = node.rotation() * Math.PI / 180;\n const cos = Math.cos(radians);\n const sin = Math.sin(radians);\n const result = [];\n for (let i2 = 0; i2 < points.length; i2 += 2) {\n const x = points[i2] * node.scaleX();\n const y = points[i2 + 1] * node.scaleY();\n result.push(node.x() + x * cos - y * sin, node.y() + x * sin + y * cos);\n }\n return result;\n}\nfunction applyNodeTransform(annotation, node) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = transformPoints(annotation.points, node);\n const scale = (Math.abs(node.scaleX()) + Math.abs(node.scaleY())) / 2;\n const strokeWidth = Math.max(1, annotation.strokeWidth * scale);\n return { ...annotation, points, strokeWidth };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: {\n x: node.x(),\n y: node.y(),\n width: Math.max(1, annotation.rect.width * node.scaleX()),\n height: Math.max(1, annotation.rect.height * node.scaleY())\n }\n };\n case \"rectangle\":\n case \"ellipse\":\n return {\n ...annotation,\n rect: {\n x: node.x(),\n y: node.y(),\n width: Math.max(1, annotation.rect.width * node.scaleX()),\n height: Math.max(1, annotation.rect.height * node.scaleY())\n },\n rotation: node.rotation()\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: node.x(),\n y: node.y(),\n fontSize: Math.max(4, annotation.fontSize * node.scaleY()),\n rotation: node.rotation()\n };\n }\n}\nfunction attachSelection(deps) {\n const accent = primaryColor();\n const transformer = new Konva.Transformer({\n rotateEnabled: true,\n flipEnabled: false,\n ignoreStroke: true,\n // A plain square with four corner handles\n enabledAnchors: [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"],\n anchorSize: 12,\n anchorCornerRadius: 6,\n anchorFill: \"#fff\",\n anchorStroke: accent,\n borderStroke: accent,\n rotateAnchorOffset: 24,\n rotationSnaps: [0, 45, 90, 135, 180, 225, 270, 315],\n rotationSnapTolerance: 6\n });\n const layer = new Konva.Layer({ name: \"selection\" });\n layer.add(transformer);\n deps.stage.add(layer);\n const findAnnotation = (id) => deps.getState().annotations.find((annotation) => annotation.id === id);\n const findNode = (id) => id === null ? null : deps.stage.find(\".annotation\").find((node) => node.id() === id) ?? null;\n const reportRect = () => {\n const node = findNode(deps.getSelectedId());\n deps.onSelectionRect(node ? node.getClientRect() : null);\n };\n const syncTransformer = () => {\n const id = deps.getSelectedId();\n const node = findNode(id);\n if (node === null || node === void 0) {\n transformer.nodes([]);\n deps.onSelectionRect(null);\n return;\n }\n const annotation = findAnnotation(id);\n transformer.rotateEnabled(annotation !== void 0 && annotation.type !== \"redact\");\n transformer.nodes([node]);\n deps.onSelectionRect(node.getClientRect());\n };\n const sync = () => {\n const selected = deps.getSelectedId();\n const dragAny = (deps.dragMode ?? \"any\") === \"any\";\n deps.stage.find(\".annotation\").forEach((node) => node.draggable(dragAny || node.id() === selected));\n syncTransformer();\n };\n sync();\n const onWriteBack = (event) => {\n const node = event.target;\n const annotation = findAnnotation(node.id());\n if (annotation === void 0) {\n return;\n }\n const state = deps.getState();\n deps.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? applyNodeTransform(annotation, node) : entry)\n }, t(\"Move or resize\"));\n };\n const onClick = (event) => {\n if (event.target.hasName(\"annotation\")) {\n deps.select(event.target.id());\n } else if (event.target === deps.stage || event.target instanceof Konva.Image) {\n deps.select(null);\n }\n sync();\n };\n const onDblClick = (event) => {\n const annotation = findAnnotation(event.target.id());\n if (annotation?.type === \"text\") {\n deps.editText(annotation);\n }\n };\n deps.stage.on(\"click.selection tap.selection\", onClick);\n deps.stage.on(\"dblclick.selection dbltap.selection\", onDblClick);\n deps.stage.on(\"dragend.selection transformend.selection\", onWriteBack);\n deps.stage.on(\"dragmove.selection transform.selection\", reportRect);\n return {\n sync,\n detach() {\n deps.stage.off(\".selection\");\n deps.stage.find(\".annotation\").forEach((node) => node.draggable(false));\n deps.onSelectionRect(null);\n transformer.destroy();\n layer.destroy();\n }\n };\n}\nconst TOOL_LABELS = {\n draw: t(\"Draw\"),\n rectangle: t(\"Rectangle\"),\n ellipse: t(\"Ellipse\"),\n arrow: t(\"Arrow\"),\n line: t(\"Line\"),\n sticker: t(\"Sticker\"),\n redact: t(\"Blur\")\n};\nconst DRAG_THRESHOLD = 4;\nfunction movedEnough(from, to) {\n return Math.hypot(to.x - from.x, to.y - from.y) >= DRAG_THRESHOLD;\n}\nfunction attachPointerTools(tool, deps) {\n if (![\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\", \"text\", \"sticker\", \"redact\"].includes(tool)) {\n return () => {\n };\n }\n let active = null;\n let previewNode = null;\n let start = { x: 0, y: 0 };\n let pendingText = null;\n let deferred = null;\n let last = { x: 0, y: 0 };\n let constrained = false;\n let gestureBox = null;\n const imageBounds = () => {\n const canvas = deps.oriented();\n if (canvas === null) {\n return null;\n }\n return visibleRect(deps.getState(), { width: canvas.width, height: canvas.height });\n };\n const clampToImage = (point) => {\n const bounds = imageBounds();\n if (bounds === null) {\n return point;\n }\n return {\n x: Math.min(bounds.x + bounds.width, Math.max(bounds.x, point.x)),\n y: Math.min(bounds.y + bounds.height, Math.max(bounds.y, point.y))\n };\n };\n const onImage = (point) => {\n const bounds = imageBounds();\n return bounds === null || point.x >= bounds.x && point.x <= bounds.x + bounds.width && point.y >= bounds.y && point.y <= bounds.y + bounds.height;\n };\n const reachedImage = () => {\n const bounds = imageBounds();\n if (bounds === null || gestureBox === null) {\n return true;\n }\n return gestureBox.x2 >= bounds.x && gestureBox.x1 <= bounds.x + bounds.width && gestureBox.y2 >= bounds.y && gestureBox.y1 <= bounds.y + bounds.height;\n };\n const scenePointer = () => {\n const pointer = deps.stage.getPointerPosition();\n return pointer === null ? null : deps.toScene(pointer);\n };\n const refreshPreview = () => {\n if (active === null) {\n previewNode?.destroy();\n previewNode = null;\n return;\n }\n if (previewNode !== null && (active.type === \"draw\" || active.type === \"arrow\" || active.type === \"line\")) {\n previewNode.points(active.points);\n return;\n }\n previewNode?.destroy();\n previewNode = null;\n const oriented = deps.oriented();\n const source = oriented === null ? void 0 : { width: oriented.width, height: oriented.height };\n if (active.type === \"redact\" && source === void 0) {\n return;\n }\n previewNode = buildAnnotationNode(active, source);\n deps.contentGroup()?.add(previewNode);\n };\n const discard = () => {\n active = null;\n pendingText = null;\n deferred = null;\n previewNode?.destroy();\n previewNode = null;\n };\n const beginAnnotation = (point) => {\n const options = deps.options();\n start = point;\n last = point;\n switch (tool) {\n case \"draw\":\n active = { id: newId(), type: \"draw\", points: [point.x, point.y], color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"arrow\":\n case \"line\":\n active = { id: newId(), type: tool, points: [point.x, point.y, point.x, point.y], color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"rectangle\":\n case \"ellipse\":\n active = { id: newId(), type: tool, rect: { x: point.x, y: point.y, width: 1, height: 1 }, rotation: 0, color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"redact\":\n active = {\n id: newId(),\n type: \"redact\",\n rect: { x: point.x, y: point.y, width: 1, height: 1 },\n style: options.redactStyle,\n shape: options.redactShape\n };\n break;\n case \"text\":\n pendingText = point;\n return;\n case \"sticker\": {\n const state = deps.getState();\n const sticker = {\n id: newId(),\n type: \"sticker\",\n x: point.x,\n y: point.y,\n text: options.sticker,\n color: options.color,\n fontSize: options.fontSize * 2,\n rotation: 0\n };\n deps.commit({ ...state, annotations: [...state.annotations, sticker] }, TOOL_LABELS.sticker);\n return;\n }\n }\n refreshPreview();\n };\n const onPointerDown = (event) => {\n const point = scenePointer();\n if (point === null || deps.panning()) {\n return;\n }\n if (!onImage(point) && (tool === \"sticker\" || tool === \"text\")) {\n return;\n }\n gestureBox = { x1: point.x, y1: point.y, x2: point.x, y2: point.y };\n constrained = event !== void 0 && (event.evt.shiftKey || event.evt.ctrlKey);\n const target = event?.target;\n if (target?.getLayer()?.name() === \"selection\") {\n return;\n }\n if (target?.hasName(\"annotation\")) {\n if (target.id() === deps.selectedId()) {\n return;\n }\n const pointer = deps.stage.getPointerPosition();\n deferred = pointer === null ? null : { scene: point, stage: pointer };\n if (deferred !== null) {\n return;\n }\n }\n beginAnnotation(clampToImage(point));\n };\n const followLine = () => {\n if (active === null || active.type !== \"arrow\" && active.type !== \"line\") {\n return;\n }\n const end = constrained ? snapAngle(start, last) : last;\n active.points = [start.x, start.y, end.x, end.y];\n };\n const onPointerMove = (event) => {\n if (deferred !== null) {\n const pointer = deps.stage.getPointerPosition();\n if (pointer === null || deps.panning()) {\n return;\n }\n if (!movedEnough(deferred.stage, pointer)) {\n return;\n }\n const from = deferred.scene;\n deferred = null;\n beginAnnotation(clampToImage(from));\n }\n if (active === null) {\n return;\n }\n if (deps.panning()) {\n discard();\n return;\n }\n const raw = scenePointer();\n if (raw === null) {\n return;\n }\n gestureBox = gestureBox === null ? { x1: raw.x, y1: raw.y, x2: raw.x, y2: raw.y } : {\n x1: Math.min(gestureBox.x1, raw.x),\n y1: Math.min(gestureBox.y1, raw.y),\n x2: Math.max(gestureBox.x2, raw.x),\n y2: Math.max(gestureBox.y2, raw.y)\n };\n const point = clampToImage(raw);\n last = point;\n if (event !== void 0) {\n constrained = event.evt.shiftKey || event.evt.ctrlKey;\n }\n switch (active.type) {\n case \"draw\":\n active.points.push(point.x, point.y);\n break;\n case \"arrow\":\n case \"line\":\n followLine();\n break;\n case \"rectangle\":\n case \"ellipse\":\n case \"redact\":\n active = {\n ...active,\n rect: {\n x: Math.min(start.x, point.x),\n y: Math.min(start.y, point.y),\n width: Math.abs(point.x - start.x) || 1,\n height: Math.abs(point.y - start.y) || 1\n }\n };\n break;\n }\n refreshPreview();\n };\n const onPointerUp = () => {\n if (deferred !== null) {\n deferred = null;\n return;\n }\n if (pendingText !== null) {\n deps.startTextEdit(pendingText);\n pendingText = null;\n return;\n }\n if (active === null) {\n return;\n }\n if (!reachedImage()) {\n discard();\n return;\n }\n const state = deps.getState();\n deps.commit({ ...state, annotations: [...state.annotations, active] }, TOOL_LABELS[tool]);\n discard();\n };\n const onModifier = (event) => {\n if (event.key !== \"Shift\" && event.key !== \"Control\") {\n return;\n }\n constrained = event.type === \"keydown\";\n followLine();\n refreshPreview();\n };\n deps.stage.on(\"pointerdown.tool\", onPointerDown);\n deps.stage.on(\"pointermove.tool\", onPointerMove);\n deps.stage.on(\"pointerup.tool\", onPointerUp);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", discard);\n window.addEventListener(\"keydown\", onModifier);\n window.addEventListener(\"keyup\", onModifier);\n return () => {\n deps.stage.off(\".tool\");\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", discard);\n window.removeEventListener(\"keydown\", onModifier);\n window.removeEventListener(\"keyup\", onModifier);\n previewNode?.destroy();\n };\n}\nconst _hoisted_1 = { class: \"image-editor__shell\" };\nconst _hoisted_2 = { class: \"image-editor__frame\" };\nconst _hoisted_3 = { class: \"image-editor__viewport\" };\nconst _hoisted_4 = { class: \"image-editor__stage\" };\nconst _hoisted_5 = [\"aria-label\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"image-editor__error\",\n \"data-test\": \"load-error\"\n};\nconst _hoisted_7 = {\n class: \"hidden-visually\",\n role: \"status\",\n \"aria-live\": \"polite\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ImageEditor\",\n props: {\n src: {},\n label: {},\n exportOptions: {},\n initialState: {},\n saving: { type: Boolean },\n canSaveAs: { type: Boolean }\n },\n emits: [\"save\", \"saveAs\", \"cancel\", \"error\", \"change\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const labels = {\n canvas: t(\"Image editor\"),\n failed: t(\"The image could not be loaded\"),\n retry: t(\"Try again\"),\n tooLarge: t(\"This image is larger than this browser can edit\"),\n tooLargeConfirm: t(\"Continue with a smaller copy\"),\n tooLargeReject: t(\"Close the editor\")\n };\n function confirmDownscale(full, fit) {\n const megapixels = (size) => Math.round(size.width * size.height / 1e5) / 10;\n return showConfirmation({\n name: labels.tooLarge,\n text: t(\n \"{name} is {source} megapixels and this browser can only edit {limit}. Continuing means the saved image is {width} by {height} pixels instead, and the detail beyond that is lost.\",\n {\n name: props.label ?? props.src.toString(),\n source: String(megapixels(full)),\n limit: String(megapixels({ width: full.width * fit, height: full.height * fit })),\n width: String(Math.floor(full.width * fit)),\n height: String(Math.floor(full.height * fit))\n }\n ),\n labelConfirm: labels.tooLargeConfirm,\n labelReject: labels.tooLargeReject,\n severity: \"warning\"\n });\n }\n let loadAttempt = 0;\n const context = createEditorContext();\n const root = useTemplateRef(\"root\");\n const container = useTemplateRef(\"container\");\n const loaded = ref(false);\n const errored = ref(false);\n const containerSize = shallowRef({ width: 0, height: 0 });\n const orientedCanvas = shallowRef(null);\n const sourceImage = shallowRef(null);\n const { backdrop } = useAmbient(sourceImage);\n const { panArmed } = useWheelControls(container, context);\n const announcement = useAnnouncements(context);\n const selectionBox = shallowRef(null);\n let stage = null;\n let scene = null;\n let cropOverlay = null;\n let selection = null;\n let detachTool = null;\n let attached = null;\n let resizeObserver = null;\n let pendingTransition = null;\n let lastView = null;\n const canvasCursor = computed(() => {\n if (context.panning.value) {\n return \"grabbing\";\n }\n if (panArmed.value) {\n return \"grab\";\n }\n const tool = context.activeTool.value;\n if ([\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\", \"text\", \"sticker\", \"redact\"].includes(tool)) {\n return \"crosshair\";\n }\n return \"default\";\n });\n const viewFit = computed(() => {\n const oriented = orientedCanvas.value;\n if (oriented === null || containerSize.value.width === 0 || containerSize.value.height === 0) {\n return null;\n }\n const showCropped = context.activeTool.value !== \"crop\";\n const visible = showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0, width: oriented.width, height: oriented.height };\n const container2 = containerSize.value;\n const fit = fitContain(\n { width: visible.width, height: visible.height },\n {\n width: Math.max(1, container2.width - VIEW_MARGIN * 2),\n height: Math.max(1, container2.height - VIEW_MARGIN * 2)\n }\n );\n return { scale: fit.scale, visible, container: container2, showCropped };\n });\n const viewOptions = computed(() => {\n const fit = viewFit.value;\n if (fit === null) {\n return null;\n }\n const scale = fit.scale * context.viewZoom.value;\n const pan = clampPan(context.viewPan.value, panBounds(fit.visible, scale, fit.container));\n return {\n scale,\n offset: {\n x: (fit.container.width - fit.visible.width * scale) / 2 + pan.x,\n y: (fit.container.height - fit.visible.height * scale) / 2 + pan.y\n },\n showCropped: fit.showCropped,\n fastFilters: context.interacting.value\n };\n });\n const { textEdit, startTextEdit, confirmTextEdit } = useTextEditing({\n context,\n viewOptions: () => viewOptions.value,\n oriented: () => orientedCanvas.value\n });\n const overlaySize = shallowRef({ width: 0, height: 0 });\n const overlay = useTemplateRef(\"overlay\");\n const toolbarBox = computed(() => {\n const edit = textEdit.value;\n if (edit !== null) {\n return { x: edit.screenX, y: edit.screenY, ...overlaySize.value };\n }\n return selectionBox.value;\n });\n const textStyle = useTextStyle(context);\n const { exporting, exportImage, save: onSave } = useExportImage({\n oriented: () => orientedCanvas.value,\n getState: () => context.state.value,\n source: () => props.src instanceof Blob ? props.src : null,\n saveOptions: () => props.exportOptions ?? {},\n onSaved: (result) => emit(\"save\", result),\n onError: (error) => emit(\"error\", error)\n });\n function captureView() {\n return lastView ?? { previousScale: 1, previousOffset: { x: 0, y: 0 }, previousOrigin: { x: 0, y: 0 } };\n }\n function commitWithTransition(kind, next, label) {\n pendingTransition = { kind, context: captureView() };\n context.commit(next, label);\n }\n function renderView() {\n const oriented = orientedCanvas.value;\n const options = viewOptions.value;\n if (stage === null || oriented === null || options === null) {\n return;\n }\n stage.size(containerSize.value);\n scene ??= createScene(stage);\n scene.update(oriented, context.state.value, options);\n const renderedOrigin = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n syncTools(oriented, options);\n if (pendingTransition !== null) {\n const visible = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0, width: oriented.width, height: oriented.height };\n const center = {\n x: visible.x + visible.width / 2,\n y: visible.y + visible.height / 2\n };\n const targets = [{\n node: scene.contentGroup,\n pivot: center,\n unit: 1 / options.scale\n }];\n if (cropOverlay !== null) {\n targets.push({\n node: cropOverlay.layer,\n pivot: {\n x: options.offset.x + (center.x - renderedOrigin.x) * options.scale,\n y: options.offset.y + (center.y - renderedOrigin.y) * options.scale\n },\n unit: 1\n });\n }\n playTransition(pendingTransition.kind, {\n targets,\n scale: options.scale,\n offset: options.offset,\n origin: renderedOrigin\n }, pendingTransition.context);\n pendingTransition = null;\n }\n lastView = {\n previousScale: options.scale,\n previousOffset: options.offset,\n previousOrigin: { x: renderedOrigin.x, y: renderedOrigin.y }\n };\n }\n function syncTools(oriented, options) {\n if (stage === null) {\n return;\n }\n const tool = context.activeTool.value;\n const crop = context.state.value.crop;\n const fresh = attached !== null && attached.tool === tool && attached.oriented === oriented && attached.crop === crop;\n if (fresh) {\n selection?.sync();\n cropOverlay?.update({\n oriented: { width: oriented.width, height: oriented.height },\n scale: options.scale,\n offset: options.offset\n });\n return;\n }\n detachTool?.();\n detachTool = null;\n selection?.detach();\n selection = null;\n cropOverlay?.destroy();\n cropOverlay = null;\n attached = { tool, oriented, crop };\n if (tool !== \"crop\" && tool !== \"adjust\") {\n selection = attachSelection({\n stage,\n getState: () => context.state.value,\n commit: context.commit,\n select: (id) => {\n context.selectedId.value = id;\n },\n getSelectedId: () => context.selectedId.value,\n editText: (annotation) => startTextEdit({ x: annotation.x, y: annotation.y }, annotation),\n onSelectionRect: (rect) => {\n selectionBox.value = rect;\n },\n dragMode: tool === \"select\" ? \"any\" : \"selected\"\n });\n }\n if (tool === \"crop\") {\n cropOverlay = attachCropOverlay({\n stage,\n oriented: { width: oriented.width, height: oriented.height },\n scale: options.scale,\n offset: options.offset,\n initial: crop,\n onChange: (rect) => {\n context.cropChanged.value = !sameRect(rect, visibleRect(context.state.value, currentOriented()));\n }\n });\n applyCropAspect();\n } else if (tool !== \"adjust\" && tool !== \"select\") {\n detachTool = attachPointerTools(tool, {\n stage,\n contentGroup: () => scene?.contentGroup ?? null,\n oriented: () => orientedCanvas.value,\n getState: () => context.state.value,\n commit: context.commit,\n selectedId: () => context.selectedId.value,\n // Read the live view: the tool outlives the transform it was\n // attached under\n toScene: (pointer) => toImageCoords(\n pointer,\n context.state.value,\n { width: oriented.width, height: oriented.height },\n viewOptions.value ?? options\n ),\n panning: () => context.panning.value,\n options: () => ({\n color: context.drawColor.value,\n strokeWidth: context.strokeWidth.value,\n fontSize: context.fontSize.value,\n sticker: context.sticker.value,\n redactStyle: context.redactStyle.value,\n redactShape: context.redactShape.value\n }),\n startTextEdit: (position) => startTextEdit(position)\n });\n }\n }\n function applyCropAspect() {\n if (cropOverlay === null) {\n return;\n }\n const aspect = context.cropAspect.value;\n const oriented = orientedCanvas.value;\n if (aspect === \"original\" && oriented !== null) {\n cropOverlay.setAspect(oriented.width / oriented.height);\n } else {\n cropOverlay.setAspect(typeof aspect === \"number\" ? aspect : null);\n }\n }\n function refreshOrientedCanvas() {\n if (sourceImage.value === null) {\n return;\n }\n const oriented = orientImage(sourceImage.value, context.state.value);\n orientedCanvas.value = oriented;\n prepareLevels(oriented);\n }\n function seedState(seed, image) {\n if (seed.crop === null) {\n return seed;\n }\n const oriented = orientedSize(imageSize(image), seed.rotation);\n return { ...seed, crop: clampRect(seed.crop, oriented) };\n }\n async function load() {\n const attempt = ++loadAttempt;\n loaded.value = false;\n errored.value = false;\n try {\n const image = await decodeImage(props.src);\n if (attempt !== loadAttempt) {\n return;\n }\n const full = imageSize(image);\n const fit = canvasScaleFor(full);\n if (fit < 1 && !await confirmDownscale(full, fit)) {\n emit(\"cancel\");\n return;\n }\n if (attempt !== loadAttempt) {\n return;\n }\n sourceImage.value = image;\n context.reset(props.initialState === void 0 ? void 0 : seedState(props.initialState, image));\n const minDimension = Math.min(full.width, full.height);\n context.fontSize.value = Math.min(128, Math.max(12, Math.round(minDimension / 15)));\n pendingTransition = { kind: \"load\", context: captureView() };\n refreshOrientedCanvas();\n loaded.value = true;\n } catch (error) {\n if (attempt !== loadAttempt) {\n return;\n }\n errored.value = true;\n emit(\"error\", error instanceof Error ? error : new Error(String(error)));\n }\n }\n function currentOriented() {\n const oriented = orientedCanvas.value;\n return { width: oriented.width, height: oriented.height };\n }\n function onRotateCW() {\n commitWithTransition(\"rotate-cw\", rotateCW(context.state.value, currentOriented()), t(\"Rotate right\"));\n }\n function onRotateCCW() {\n let state = context.state.value;\n let oriented = currentOriented();\n for (let i2 = 0; i2 < 3; i2++) {\n state = rotateCW(state, oriented);\n oriented = { width: oriented.height, height: oriented.width };\n }\n commitWithTransition(\"rotate-ccw\", state, t(\"Rotate left\"));\n }\n function onFlipHorizontal() {\n commitWithTransition(\"flip-h\", flipHorizontal(context.state.value, currentOriented()), t(\"Flip horizontal\"));\n }\n function onFlipVertical() {\n commitWithTransition(\"flip-v\", flipVertical(context.state.value, currentOriented()), t(\"Flip vertical\"));\n }\n function onApplyCrop() {\n if (cropOverlay === null) {\n return;\n }\n const crop = cropOverlay.getRect();\n if (sameRect(crop, visibleRect(context.state.value, currentOriented()))) {\n return;\n }\n pendingTransition = { kind: \"crop\", context: captureView() };\n context.commit({ ...context.state.value, crop }, t(\"Crop\"));\n }\n function onDuplicateSelection() {\n const id = context.selectedId.value;\n const state = context.state.value;\n const annotation = state.annotations.find((entry) => entry.id === id);\n if (annotation === void 0) {\n return;\n }\n const copy = duplicateAnnotation(annotation);\n context.commit({ ...state, annotations: [...state.annotations, copy] }, t(\"Duplicate\"));\n context.selectedId.value = copy.id;\n renderView();\n }\n function onRevert() {\n context.commit(createInitialState(), t(\"Revert all changes\"));\n }\n function onResetCrop() {\n context.commit({ ...context.state.value, crop: null }, t(\"Reset crop\"));\n }\n function onDeleteSelection() {\n const id = context.selectedId.value;\n if (id === null) {\n return;\n }\n const state = context.state.value;\n context.selectedId.value = null;\n context.commit({\n ...state,\n annotations: state.annotations.filter((annotation) => annotation.id !== id)\n }, t(\"Delete\"));\n }\n useEditorShortcuts({\n context,\n isTextEditing: () => textEdit.value !== null,\n onDelete: onDeleteSelection,\n onEscape: () => {\n if (context.selectedId.value !== null) {\n context.selectedId.value = null;\n renderView();\n } else if (context.activeMode.value === \"crop\") {\n context.setMode(\"select\");\n } else if (context.activeMode.value === \"annotate\" && context.activeTool.value !== \"select\") {\n context.activeTool.value = \"select\";\n }\n }\n });\n watch(viewFit, (fit) => {\n context.viewFit.value = fit;\n }, { immediate: true });\n provideEditorCommands({\n rotateCW: onRotateCW,\n rotateCCW: onRotateCCW,\n flipHorizontal: onFlipHorizontal,\n flipVertical: onFlipVertical,\n applyCrop: onApplyCrop,\n resetCrop: onResetCrop,\n revert: onRevert\n });\n watch(() => props.src, load);\n watch(\n [\n () => context.state.value.rotation,\n () => context.state.value.flipX,\n () => context.state.value.flipY,\n () => context.state.value.fineRotation,\n () => context.state.value.zoom\n ],\n refreshOrientedCanvas\n );\n watch(\n [context.state, context.activeTool, context.activeMode, context.viewZoom, context.viewPan, context.interacting, orientedCanvas, containerSize],\n renderView\n );\n watch(context.cropAspect, applyCropAspect);\n watch(context.selectedId, (id) => {\n const annotation = context.state.value.annotations.find((entry) => entry.id === id);\n if (annotation !== void 0 && \"color\" in annotation && annotation.type !== \"sticker\") {\n context.drawColor.value = annotation.color;\n }\n });\n watch([context.state, context.interacting], () => {\n if (!context.interacting.value) {\n emit(\"change\", structuredClone(context.state.value));\n }\n });\n onMounted(() => {\n stage = new Konva.Stage({ container: container.value, width: 1, height: 1 });\n resizeObserver = new ResizeObserver(() => {\n const { clientWidth, clientHeight } = container.value;\n containerSize.value = { width: clientWidth, height: clientHeight };\n });\n resizeObserver.observe(container.value);\n load();\n });\n onBeforeUnmount(() => {\n resizeObserver?.disconnect();\n detachTool?.();\n selection?.detach();\n cropOverlay?.destroy();\n scene?.destroy();\n scene = null;\n stage?.destroy();\n stage = null;\n });\n __expose({\n exportImage,\n /**\n * Start over, optionally from a given state.\n *\n * @param state state to reset to, defaulting to a pristine one\n */\n reset: (state) => context.reset(state)\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"root\",\n ref: root,\n class: \"image-editor\",\n style: normalizeStyle({\n \"--editor-backdrop\": unref(backdrop) ? `url(${unref(backdrop)})` : \"none\"\n })\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: \"image-editor__canvas\",\n style: normalizeStyle({ cursor: canvasCursor.value }),\n role: \"img\",\n \"aria-label\": __props.label ?? labels.canvas\n }, null, 12, _hoisted_5),\n unref(textEdit) !== null ? (openBlock(), createBlock(TextOverlay, {\n key: 0,\n ref_key: \"overlay\",\n ref: overlay,\n x: unref(textEdit).screenX,\n y: unref(textEdit).screenY,\n \"font-size\": unref(textEdit).screenFontSize,\n color: unref(context).drawColor.value,\n initial: unref(textEdit).value,\n outline: unref(textStyle).outline.value,\n background: unref(textStyle).background.value,\n font: unref(textStyle).font.value,\n align: unref(textStyle).align.value,\n bold: unref(textStyle).bold.value,\n italic: unref(textStyle).italic.value,\n underline: unref(textStyle).underline.value,\n strikethrough: unref(textStyle).strikethrough.value,\n onResize: _cache[0] || (_cache[0] = ($event) => overlaySize.value = $event),\n onConfirm: unref(confirmTextEdit),\n onCancel: _cache[1] || (_cache[1] = ($event) => textEdit.value = null)\n }, null, 8, [\"x\", \"y\", \"font-size\", \"color\", \"initial\", \"outline\", \"background\", \"font\", \"align\", \"bold\", \"italic\", \"underline\", \"strikethrough\", \"onConfirm\"])) : createCommentVNode(\"\", true),\n toolbarBox.value !== null ? (openBlock(), createBlock(FloatingToolbar, {\n key: 1,\n box: toolbarBox.value,\n typing: unref(textEdit) !== null,\n onRefocus: _cache[2] || (_cache[2] = ($event) => overlay.value?.focus()),\n onDuplicate: onDuplicateSelection,\n onDelete: onDeleteSelection\n }, null, 8, [\"box\", \"typing\"])) : createCommentVNode(\"\", true)\n ]),\n !loaded.value && !errored.value ? (openBlock(), createBlock(unref(NcLoadingIcon), {\n key: 0,\n class: \"image-editor__loading\",\n size: 44\n })) : createCommentVNode(\"\", true),\n errored.value ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n createElementVNode(\"p\", null, toDisplayString(labels.failed), 1),\n createVNode(unref(NcButton), {\n variant: \"secondary\",\n \"data-test\": \"retry\",\n onClick: _cache[3] || (_cache[3] = ($event) => load())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.retry), 1)\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true)\n ]),\n createVNode(EditorTopBar, {\n class: \"image-editor__topbar\",\n loaded: loaded.value,\n popoverContainer: root.value,\n saving: unref(exporting) || __props.saving === true,\n canSaveAs: __props.canSaveAs === true,\n onSave: _cache[4] || (_cache[4] = ($event) => unref(onSave)()),\n onSaveAs: _cache[5] || (_cache[5] = ($event) => unref(onSave)((result) => emit(\"saveAs\", result))),\n onCancel: _cache[6] || (_cache[6] = ($event) => emit(\"cancel\"))\n }, null, 8, [\"loaded\", \"popoverContainer\", \"saving\", \"canSaveAs\"]),\n createVNode(EditorPanel, {\n class: normalizeClass(unref(context).activeMode.value === \"filter\" ? \"image-editor__strip\" : \"image-editor__controls\"),\n loaded: loaded.value,\n oriented: orientedCanvas.value\n }, null, 8, [\"class\", \"loaded\", \"oriented\"]),\n createVNode(EditorSidebar, {\n class: \"image-editor__rail\",\n loaded: loaded.value\n }, null, 8, [\"loaded\"]),\n createElementVNode(\"span\", _hoisted_7, toDisplayString(unref(announcement)), 1)\n ])\n ])\n ], 4);\n };\n }\n});\nconst ImageEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-c8e207c9\"]]);\nexport {\n D as DEFAULT_ORIENTATION,\n ImageEditor,\n createInitialState,\n i as isOrientation,\n isPristine,\n a as readJpegOrientation,\n b as rotateOrientation,\n s as setJpegOrientation,\n useHistory\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/ImageEditor.css';\nimport { defineComponent, ref, computed, openBlock, createBlock, unref } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { showSuccess, showError } from \"@nextcloud/dialogs\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { ImageEditor as ImageEditor$1 } from \"@nextcloud/image-editor\";\nimport { t, l as logger } from \"./index.mjs\";\nimport \"@nextcloud/image-editor/style\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ImageEditor\",\n props: {\n file: {}\n },\n emits: [\"close\", \"saved\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const saving = ref(false);\n const exportOptions = computed(() => {\n if (props.file.mime === \"image/jpeg\" || props.file.mime === \"image/webp\") {\n return { format: props.file.mime, quality: 0.9 };\n }\n return { format: \"image/png\" };\n });\n async function onSave(result) {\n saving.value = true;\n try {\n const known = props.file.attributes.etag;\n const response = await axios.put(props.file.encodedSource, result.blob, {\n headers: known ? { \"If-Match\": `\"${String(known).replace(/"|\"/g, \"\")}\"` } : void 0\n });\n const etag = response.headers?.[\"oc-etag\"] ?? response.headers?.etag;\n if (etag) {\n props.file.attributes.etag = String(etag).replace(/\"/g, \"\");\n }\n emit$1(\"saved\", URL.createObjectURL(result.blob));\n emit(\"files:node:updated\", props.file);\n showSuccess(t(\"Image saved\"));\n emit$1(\"close\");\n } catch (error) {\n logger.error(\"Failed to save the edited image\", { error });\n if (error.response?.status === 412) {\n showError(t(\"The file was changed elsewhere while you were editing it. Reload the page to edit the new version.\"));\n return;\n }\n showError(t(\"Could not save the image\"));\n } finally {\n saving.value = false;\n }\n }\n function onCancel() {\n emit$1(\"close\");\n }\n function onError(error) {\n logger.error(\"Image editor error\", { error });\n showError(t(\"The image could not be edited.\"));\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ImageEditor$1), {\n src: __props.file.encodedSource,\n label: __props.file.displayname,\n exportOptions: exportOptions.value,\n saving: saving.value,\n class: \"viewer__image-editor\",\n onSave,\n onCancel,\n onError\n }, null, 8, [\"src\", \"label\", \"exportOptions\", \"saving\"]);\n };\n }\n});\nconst ImageEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-7d237de6\"]]);\nexport {\n ImageEditor as default\n};\n//# sourceMappingURL=ImageEditor.mjs.map\n"],"names":["spawnDialog","dialog","props","options","container","element","resolve","reject","app","createApp","rest","payload","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_main","defineComponent","__props","shouldShowAlert","computed","iconPath","mdiAlertDecagram","mdiCheckboxMarkedCircle","mdiInformation","mdiAlert","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","isLegacy","renderSlot","createVNode","NcIconSvgWrapper","createElementVNode","toDisplayString","createCommentVNode","NcNoteCard","_export_sfc","GenericDialog_default","__emit","emit","dialogButtons","button","handleUnload","onMounted","onUnmounted","createBlock","NcDialog","$event","withCtx","Dialog","#name","#text","#buttons","#severity","name","text","buttons","severity","showConfirmation","t","promise","PI_OVER_180","detectBrowser","glob","global","Konva","param","angle","_a","_b","_registerNode","NodeClass","NODE_ERROR","ensureBrowser","Transform","m","tr","point","x","y","sx","sy","rad","c","s","m11","m12","m21","m22","matrix","dx","dy","d","m0","m1","m2","m3","m4","m5","a","b","e","f","delta","result","r","Util","OBJECT_ARRAY","OBJECT_NUMBER","OBJECT_STRING","OBJECT_BOOLEAN","PI_OVER_DEG180","DEG180_OVER_PI","HASH","EMPTY_STRING","ZERO","KONVA_WARNING","KONVA_ERROR","COLORS","_isCanvasFarblingActive","defaultWindow","animQueues","requestFrame","win","capitalizeCache","splitColorComponents","str","components","NUMBER_SOURCE","COLOR_COMPONENT_REGEX","parseColorComponent","value","max","match","HEX_COLOR_REGEX","clamp01","HUE_REGEX","HUE_UNITS","obj","val","selector","firstChar","number","callback","target","queue","cb","canvas","el","url","imageObj","g","hex","bigint","randColor","ctx","isFarbling","i","color","rgb","parts","hue","unit","degrees","h","l","t2","t1","t3","r1","r2","retObj","key","arr","deg","radians","cached","out","func","left","right","x1","y1","x2","y2","x3","y3","dist","pd2","u","pt","line","isClosed","pc","p1","p2","proj","px","py","pdist","startArray","endArray","start","end","temp","n","newStart","pr","desc","source","evt","canvases","context","width","height","cornerRadius","xOrigin","yOrigin","topLeft","topRight","bottomLeft","bottomRight","points","sides","radius","prev","curr","next","vec1","vec2","len1","len2","currCornerRadius","normalVec1","normalVec2","simplifyArray","retArr","len","util","COMMA","OPEN_PAREN","CLOSE_PAREN","OPEN_PAREN_BRACKET","CLOSE_BRACKET_PAREN","SEMICOLON","DOUBLE_PAREN","EQUALS","CONTEXT_METHODS","CONTEXT_PROPERTIES","traceArrMax","_cssFiltersSupported","isCSSFiltersSupported","Context","shape","relaxed","rounded","traceArr","trace","method","args","pixelRatio","bounds","lineCap","absOpacity","lineJoin","miterLimit","attr","startAngle","endAngle","counterClockwise","cp1x","cp1y","cp2x","cp2y","x0","y0","image","repetition","r0","sWidth","sHeight","dWidth","dHeight","_context","radiusX","radiusY","rotation","counterclockwise","path","fillRule","maxWidth","sw","sh","radii","imageData","cpx","cpy","segments","path2d","that","origSetter","methodName","origMethod","ret","prop","node","op","SceneContext","willReadFrequently","fill","grd","hasColor","fillPriority","hasPattern","hasLinearGradient","hasRadialGradient","colorStops","dash","strokeScaleEnabled","_c","blur","offset","scale","ratio","scaleX","scaleY","HitContext","hitStrokeWidth","strokeWidth","_pixelRatio","getDevicePixelRatio","devicePixelRatio","backingStoreRatio","Canvas","config","previousRatio","mimeType","quality","err","SceneCanvas","HitCanvas","DD","flag","elem","endDragBefore","drag","nodesToFireEvents","stage","pos","dragDistance","drawNodes","drawNode","_formatValue","RGBComponent","getNumberValidator","getNumberOrArrayOfNumbersValidator","noOfElements","isNumber","isValidArray","getNumberOrAutoValidator","getStringValidator","getStringOrGradientValidator","isString","isGradient","getNumberArrayValidator","TypedArray","item","getBooleanValidator","getComponentValidator","GET","SET","Factory","constructor","def","validator","after","capitalize","getter","setter","component","basicValidator","oldVal","capitalizedAttr","message","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","parseCSSFilters","cssFilter","filterRegex","filterName","filterValue","blurRadius","KonvaFilters","brightness","contrast","konvaContrast","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","CHANGE","CHILDREN","KONVA","LISTENING","MOUSEENTER","MOUSELEAVE","POINTERENTER","POINTERLEAVE","TOUCHENTER","TOUCHLEAVE","SHAPE","SPACE","STAGE","TRANSFORM","UPPER_STAGE","VISIBLE","TRANSFORM_CHANGE_STR","idCounter","Node$1","Node","privateGetter","cache","deps","depsString","dep","scene","filter","hit","conf","rect","drawBorder","hitCanvasPixelRatio","extraPaddingX","extraPaddingY","cachedSceneCanvas","cachedFilterCanvas","sceneContext","bufferCanvas","bufferContext","top","hitCanvas","hitContext","minX","minY","maxX","maxY","trans","transformed","canvasCache","cacheCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","useNativeOnly","finalFilter","evtStr","selectorOrHandler","events","baseEvent","event","type","handler","stopNode","targets","parent","ancestors","relativeTo","skipDragCheck","layer","layerUnderDrag","dragSkip","depth","index","nodes","child","addChildren","children","transform","haveCachedParent","absoluteMatrix","absoluteTransform","origTrans","it","change","changeX","changeY","family","theta","zIndex","newContainer","attrs","defaultValue","nonPlainObject","includeSelf","res","ancestor","selectorArr","sel","eventType","bubble","at","transformsEnabled","offsetX","offsetY","skewX","skewY","allListeners","listener","box","img","blob","size","evtListeners","evtName","newVal","oldName","newName","fullName","names","compareShape","nonBubbling","stopBubble","nodeType","seen","hierarchyEvents","entry","topListeners","selfListeners","list","origLen","liveListeners","pointerId","ap","bubbleEvent","newNodePos","dbf","bounded","draggable","hasDraggingChild","dragElement","isDragging","isReady","margin","screenRect","data","className","no","Class","addGetterSetter","Container","filterFunc","findOne","valid","fn","shouldStop","isAbsTransform","callbacks","can","caching","cachedHitCanvas","drawMethod","clipWidth","clipHeight","clipFunc","hasClip","selfCache","clipArgs","clipX","clipY","hasComposition","skipTransform","selfRect","shapes","hasVisible","Captures","SUPPORT_POINTER_EVENTS","getCapturedShape","createEvent","hasPointerCapture","setPointerCapture","releaseCapture","STRING","PX","MOUSEOUT","MOUSEOVER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","LOSTPOINTERCAPTURE","POINTEROUT","POINTEROVER","CONTEXTMENU","TOUCHSTART","TOUCHEND","TOUCHMOVE","TOUCHCANCEL","WHEEL","MAX_LAYERS_NUMBER","EVENTS","EVENTS_MAP","getEventType","getEventsMap","checkNoClip","NO_POINTERS_MESSAGE","stages","listeningWindows","listenToWindow","Stage","isLayer","isFastLayer","style","id","layers","content","p","layerCanvas","length","PointerEvents.hasPointerCapture","PointerEvents.setPointerCapture","PointerEvents.releaseCapture","evenType","targetShape","eventsEnabled","triggeredOnShape","isTouch","isTouchPointer","processedShapesIds","PointerEvents.getCapturedShape","differentTarget","wasDragged","listenClick","clickStartShape","clickEndShape","skipPointerUpTrigger","fireDblClick","PointerEvents.createEvent","contentPosition","touch","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","dummyContext","getDummyContext","_fillFunc","_strokeFunc","_fillFuncHit","_strokeFuncHit","_clearHasShadowCache","_clearGetShadowRGBACache","_clearFillPatternCache","_clearLinearGradientCache","_clearRadialGradientCache","Shape","attempts","pattern","rgba","bufferHitCanvas","forceFill","hasFill","hasStroke","isTransparent","hasShadow","strokeForShadow","hasCachedParent","fillRect","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","shadowOffsetX","shadowOffsetY","preWidth","preHeight","drawFunc","cachingSelf","bc","o","alphaThreshold","hitWidth","hitHeight","hitImageData","hitData","rgbColorKey","BEFORE_DRAW","DRAW","INTERSECTION_OFFSETS","INTERSECTION_OFFSETS_LEN","Layer","_canvas","listening","spiralSearchDistance","continueSearch","intersectionOffset","p3","colorKey","FastLayer","Group","now","Animation","lays","animations","time","anim","layerHash","layersLen","needRedraw","Anim","blacklist","PAUSED","PLAYING","REVERSING","colorAttrs","colorToRGBA","TweenEngine","propFunc","begin","finish","duration","yoyo","Tween","nodeId","easing","Easings","diff","trueEnd","trueStart","endRGBA","tweenId","startRGBA","thisId","params","onFinish","Global","Arc","clockwise","innerRadius","outerRadius","rawAngle","boundLeftRatio","boundRightRatio","boundTopRatio","boundBottomRatio","boundLeft","boundRight","boundTop","boundBottom","tValues","cValues","binomialCoefficients","getCubicArcLength","xs","ys","sum","correctedT","z","BFunc","getQuadraticArcLength","ax","ay","bx","by","A","B","C","k","uuk","bbk","term","xbase","getDerivative","ybase","combined","derivative","vs","_vs","t2length","totalLength","error","step","numIterations","increasedTLength","increasedTError","decreasedTLength","decreasedTError","quadraticAt","p0","mt","getQuadraticExtremaPoints","extrema","axis","cubicAt","getCubicExtremaPoints","discriminant","q","getControlPoints","d01","d12","dSum","fa","fb","p1x","p1y","p2x","p2y","expandPoints","tension","allPoints","cp","getBezierExtremaPoints","Line","onQuadratic","onCubic","closed","tp","bezier","_x0","_y0","firstControlPoints","lastControlPoints","middle","Path","ca","cx","cy","rx","ry","dTheta","psi","fs","inc","dataArray","pathLength","ii","j","P1x","P1y","P2x","P2y","fromX","fromY","run","rise","ix","iy","pRise","pRun","adjustedRun","adjustedRise","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","coords","re","arcParamIndex","jlen","token","parsedArc","parsed","cmd","startX","startY","prevCmd","ctlPtx","ctlPty","idx","psiDeg","xp","yp","lambda","cxp","cyp","vMag","v","vRatio","vAngle","Arrow","PI2","fromTension","lp","lastLength","previous","isDashEnabled","lineRect","Circle","Ellipse","Image","hasCornerRadius","cropWidth","cropHeight","onError","ATTR_CHANGE_LIST","CHANGE_KONVA","NONE","UP","RIGHT","DOWN","LEFT","attrChangeListLen","Label","tag","pointerDirection","pointerWidth","pointerHeight","Tag","direction","Rect","RegularPolygon","PIx2","Ring","Sprite","updated","ix4","set","offsets","ix2","animation","Star","numPoints","stringToArray","string","acc","char","array","nextChar","AUTO","CENTER","INHERIT","JUSTIFY","CONTEXT_2D","DASH","TEXT","TEXT_UPPER","TOP","BOTTOM","MIDDLE","NORMAL","PX_SPACE","RTL","WORD","CHAR","ELLIPSIS","_shadowOpacityBuggy","hasShadowOpacityBug","normalizeFontFamily","fontFamily","hasSpace","hasQuotes","checkDefaultFill","Text","textArr","textArrLen","padding","fontSize","lineHeightPx","verticalAlign","alignY","align","totalWidth","letterSpacing","charRenderFunc","textDecoration","underlineOffset","shouldUnderline","shouldLineThrough","translateY","baseline","metrics","ascent","descent","fillStyleBefore","strokeStyleBefore","lineTranslateX","lineTranslateY","lastLine","yOffset","lineWidth","gradient","lineThroughStartX","spacesNumber","li","letter","previousGraphemes","charIndex","fillStyleAfter","strokeStyleAfter","_d","_e","_f","_g","_h","_j","_k","_l","scaleFactor","lines","textWidth","fixedWidth","fixedHeight","maxHeightPx","currentHeightPx","wrap","shouldWrap","wrapAtWord","shouldAddEllipsis","additionalWidth","lineArray","low","high","matchWidth","mid","substr","substrWidth","matchArray","nextIsSpaceOrDash","wrapIndex","lastSpaceIndex","lastDashIndex","hasLine","TextPath","glyphInfo","hasUnderline","hasLineThrough","charArr","chars","fullTextWidth","kerningFunc","kerningAdjustment","offsetToGlyph","charStartPoint","glyphWidth","numberOfSpaces","charEndLength","charEndPoint","kern","midpoint","info","EVENTS_NAME","NODES_RECT","ANGLES","TOUCH_DEVICE","getCursor","anchorName","rotateCursor","ANCHORS_NAMES","getCenter","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","center","getSnap","snaps","newRotationRad","tol","snapped","absDiff","activeTransformersCount","Transformer","filteredNodes","onChange","additionalEvents","lastPos","abs","otherNode","otherAbs","rot","relative","absScale","absPos","totalPoints","anchor","self","cursor","back","rotateAnchorAngle","rotateAnchorOffset","dirX","dirY","edgeX","edgeY","sign","endX","endY","hypotenuse","newHypotenuse","anchorNode","pp","oldAbs","newAbs","rotateAnchorAngleRad","newRotation","shiftBehavior","keepProportion","centeredScaling","anchorProjected","comparePoint","reverseX","reverseY","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","newAttrs","prevAutoDraw","oldAttrs","minSize","flipPadding","widthFlip","heightFlip","flip","baseSize","oldTr","newTr","newScaleX","newScaleY","layersToDraw","parentTransform","localTransform","newLocalTransform","enabledAnchors","resizeEnabled","anchorSize","anchors","styleFunc","validateAnchors","Wedge","BlurStack","mul_table","shg_table","filterGaussBlurRGBA","pixels","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","mul_sum","shg_sum","stackEnd","stack","stackIn","stackOut","Blur","Brighten","Brightness","Contrast","adjust","nPixels","red","green","blue","Emboss","w","strength01","whiteLevel01","directionDeg","blend","strength","bias","dirRad","SCALE","src","lum","Gx","Gy","OFF","clamp8","outGray","oTop","oBot","oL","oR","remap","fromValue","fromMin","fromMax","toMin","toMax","fromRange","toRange","toValue","Enhance","nSubPixels","rMin","rMax","gMin","gMax","bMin","bMax","enhanceAmount","rGoalMax","rGoalMin","gGoalMax","gGoalMin","bGoalMax","bGoalMin","rMid","gMid","bMid","Grayscale","HSL","vsu","vsw","rr","rg","rb","gr","gg","gb","br","bg","bb","HSV","Invert","ToPolar","dst","opt","srcPixels","dstPixels","xSize","ySize","xMid","yMid","rSize","tSize","conversion","sin","cos","FromPolar","phaseShift","Kaleidoscope","xoff","srcPos","dstPos","power","tempCanvas","scratchData","minSectionSize","sectionSize","xStart","xEnd","xDelta","pixelAt","idata","rgbDistance","rgbMean","pTab","backgroundMask","threshold","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","mask","applyMask","erodeMask","weights","side","halfSide","maskResult","so","scy","scx","srcOff","wt","dilateMask","smoothEdgeMask","Mask","Noise","amount","half","Pixelate","pixelSize","nBinsX","nBinsY","xBin","yBin","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","pixelsInBin","Posterize","levels","RGB","RGBA","ia","Sepia","Solarize","Threshold","level","Core","module","this","X","J","N","R","$","se","G","Q","Z","D","_","E","S","O","P","M","I","F","L","T","H","U","V","W","K","Y","ee","te","ie","ne","oe","storage","getBuilder","emojiIndex","emojiSearch","query","maxResults","EmojiIndex","currentSkinTone","getCurrentSkinTone","results","frequently","emoji","skinTone","setCurrentSkinTone","NAMESPACE","_JSON","isLocalStorageSupported","setHandlers","handlers","setNamespace","namespace","update","state","get","store","mapping","buildSearch","search","addToSearch","strings","split","deepFreeze","object","propNames","uncompress","DEFAULTS","initialized","defaults","init","add","maxNumber","defaultLength","quantity","frequentlyKeys","sliced","last","frequently$1","SVGs","svgs","_openBlock","_createElementBlock","_Fragment","_renderList","$props","category","_normalizeClass","_normalizeStyle","_createElementVNode","_String","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","codePoint","unifiedToNative","unified","unicodes","codePoints","uniq","intersect","uniqA","uniqB","deepMerge","originalValue","measureScrollbar","scrollbarWidth","SHEET_COLUMNS","COLONS_REGEX","SKINS","emojisToShowFilter","include","exclude","custom","recent","recentLength","allCategories","indexA","indexB","categoryData","emojiId","customEmoji","skin","matches","emojiObject","unicodeEmoji","values","allResults","emojis","currentIndex","scores","sub","subIndex","score","aScore","bScore","emojiData","EmojiData","emoticon","category_id","isIncluded","isExcluded","skinIdx","skinKey","variationData","skinData","sanitize","adjustedColumns","EmojiView","native","fallback","emojiTooltip","emojiSize","cssStyle","hasImage","short_names","skin_tone","skin_variations","emoticons","imageUrl","colons","EmojiProps","PickerProps","$options","_createBlock","_resolveDynamicComponent","_toDisplayString","emojiView","Emoji","_hoisted_6","_hoisted_5","_createVNode","_component_emoji","$data","Skins","_hoisted_4","_hoisted_7","_hoisted_8","_hoisted_9","shortName","_hoisted_10","_component_skins","$input","isWindowAvailable","lastTime","vendors","currTime","timeToCall","PickerView","pickerComponent","scrollElement","scrollTop","activeCategory","scrollToComponent","categoryLength","scrollEl","emojiEl","scrollHeight","categoryIdx","I18N","oldIdx","Anchors","Category","Preview","Search","_component_anchors","_renderSlot","_component_search","_component_category","_vShow","_component_preview","prefix","styleInject","css","ref","insertAt","head","install","componentPrefix","_checkboardCache","script","getCheckboard","renderCheckboard","c1","c2","checkboard","render","$setup","normalizeStyle","css_248z","script$1","rgbStr","skip","containerWidth","xOffset","_component_Checkboard","resolveComponent","bound01","isOnePointZero","isPercent","isPercentage","boundAlpha","convertToPercentage","pad2","rgbToRgb","rgbToHsl","min","hue2rgb","hslToRgb","rgbToHsv","hsvToRgb","mod","rgbToHex","allow3Char","rgbaToHex","allow4Char","convertDecimalToHex","convertHexToDecimal","parseIntFromHex","numberInputToObject","inputToRGB","ok","format","stringInputToObject","isValidCSSUnit","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","named","TinyColor","opts","RsRGB","GsRGB","BsRGB","hsv","hsl","allowShortChar","fmt","rnd","_i","formatSet","formattedString","hasAlpha","needsAlphaFormat","rgb1","rgb2","slices","part","modification","background","fg","increment","tinycolor","_colorChange","oldHue","colorMixin","keysToCheck","checked","passed","palette","withDirectives","vModelText","clamp","containerHeight","pageX","pageY","saturation","bright","percent","script$2","script$3","script$4","script$5","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_component_Saturation","_component_Hue","_component_Alpha","_component_EdIn","vShow","register","mergeModels","currentColor","useModel","open","HEX_REGEX","createElementId","advanced","normalizedPalette","logger","defaultPalette","COLOR_BLACK","COLOR_WHITE","handleConfirm","hideCallback","toggleColor","pickCustomColor","getContrastColor","calculateLuma","hexToRGB","NcPopover","slotProps","normalizeProps","guardReactiveProps","Transition","Chrome","Fragment","renderList","mdiCheck","mdiCloseCircleOutline","NcButton","mdiArrowLeft","mdiDotsHorizontal","createTextVNode","NcColorPicker","_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_sfc_render$1","mergeProps","IconCircle","t5","t17","t40","t46","i18n","skinTonePalette","Color","_sfc_main$2","Picker","useTrapStackControl","tone","isFocusable","current","focusable","originalHandlerName","_sfc_render","_component_NcTextField","_component_IconCircle","_component_NcButton","_component_NcColorPicker","_component_Emoji","_component_Picker","_component_NcPopover","withKeys","withModifiers","createSlots","onSearch","NcEmojiPicker","NcActionSeparator","useHistory","capacity","entries","shallowRef","canUndo","canRedo","push","snapshot","label","kept","jumpTo","undo","redo","clear","newId","byte","createInitialState","normaliseState","repaired","isPristine","orientedSize","natural","clampRect","sameRect","a2","b2","mapPointsCW","mapped","i2","mapRectCW","mapAnnotationCW","annotation","rotateCW","oriented","mapAnnotationFlipX","flipHorizontal","sideways","mapAnnotationFlipY","flipVertical","translateAnnotation","duplicateAnnotation","_sfc_main$13","sfc","GlassSurface","_sfc_main$12","_hoisted_1$10","_hoisted_2$X","_hoisted_3$T","_hoisted_4$S","_sfc_render$O","BoxShadow","_sfc_main$11","_hoisted_1$$","_hoisted_2$W","_hoisted_3$S","_hoisted_4$R","_sfc_render$N","CameraIris","_sfc_main$10","_hoisted_1$_","_hoisted_2$V","_hoisted_3$R","_hoisted_4$Q","_sfc_render$M","CircleOpacity","_sfc_main$$","_hoisted_1$Z","_hoisted_2$U","_hoisted_3$Q","_hoisted_4$P","_sfc_render$L","ContrastCircle","_sfc_main$_","_hoisted_1$Y","_hoisted_2$T","_hoisted_3$P","_hoisted_4$O","_sfc_render$K","ImageFilterCenterFocus","_sfc_main$Z","_hoisted_1$X","_hoisted_2$S","_hoisted_3$O","_hoisted_4$N","_sfc_render$J","InvertColors","_sfc_main$Y","_hoisted_1$W","_hoisted_2$R","_hoisted_3$N","_hoisted_4$M","_sfc_render$I","Spotlight","_sfc_main$X","_hoisted_1$V","_hoisted_2$Q","_hoisted_3$M","_hoisted_4$L","_sfc_render$H","Thermometer","_sfc_main$W","_hoisted_1$U","_hoisted_2$P","_hoisted_3$L","_hoisted_4$K","_sfc_render$G","WhiteBalanceIridescent","_sfc_main$V","_hoisted_1$T","_hoisted_2$O","_hoisted_3$K","_hoisted_4$J","_sfc_render$F","WhiteBalanceSunny","SNAP_RATIO","defaultOrigin","originPosition","origin","snapToOrigin","_hoisted_1$S","_hoisted_2$N","_hoisted_3$J","_sfc_main$U","originOffset","onInput","input","EditorSlider","_hoisted_1$R","_hoisted_2$M","_sfc_main$T","IconTab","gtBuilder","getGettextBuilder","gt","FONT_STACKS","DEFAULT_FONT","fontStack","font","REDACT_SHAPES","DEFAULT_REDACT_SHAPE","redactShape","TEXT_ALIGNS","DEFAULT_ALIGN","textAlign","VIEW_MARGIN","PAN_SLACK","FIT_ZOOM","MIN_ZOOM","MAX_ZOOM","ZOOM_SNAP","PINCH_TOLERANCE","WHEEL_LINE","WHEEL_CLAMP","WHEEL_SENSITIVITY","panBounds","visible","clampPan","pan","clampZoom","zoom","crossed","near","anchoredPan","factor","wheelZoomFactor","deltaY","deltaMode","pageHeight","scaled","MODE_DEFAULT_TOOL","EDITOR_CONTEXT","createEditorContext","history","viewZoom","cropChanged","viewPan","viewFit","boundsAt","fit","activeMode","activeTool","mode","panned","watch","tool","provide","useEditorContext","inject","_hoisted_1$Q","_hoisted_2$L","_sfc_main$S","adjustments","activeAdjustment","display","select","onAdjustInput","onSliderCommit","adjustment","resolveDynamicComponent","AdjustPanel","_sfc_main$R","_hoisted_1$P","_hoisted_2$K","_hoisted_3$I","_hoisted_4$I","_sfc_render$E","ArrowTopRight","_sfc_main$Q","_hoisted_1$O","_hoisted_2$J","_hoisted_3$H","_hoisted_4$H","_sfc_render$D","EllipseOutline","_sfc_main$P","_hoisted_1$N","_hoisted_2$I","_hoisted_3$G","_hoisted_4$G","_sfc_render$C","FormatText","_sfc_main$O","_hoisted_1$M","_hoisted_2$H","_hoisted_3$F","_hoisted_4$F","_sfc_render$B","Pencil","_sfc_main$N","_hoisted_1$L","_hoisted_2$G","_hoisted_3$E","_hoisted_4$E","_sfc_render$A","RectangleOutline","_sfc_main$M","_hoisted_1$K","_hoisted_2$F","_hoisted_3$D","_hoisted_4$D","_sfc_render$z","VectorLine","useAnnotationColor","recolorable","apply","_hoisted_1$J","_hoisted_2$E","_hoisted_3$C","_hoisted_4$C","FONT_SAMPLE","PREVIEW_CAP","_sfc_main$L","labels","subTools","showStrokeOptions","viewScale","strokePreview","fontPreview","AnnotatePanel","_sfc_main$K","_hoisted_1$I","_hoisted_2$D","_hoisted_3$B","_hoisted_4$B","_sfc_render$y","FlipHorizontal","_sfc_main$J","_hoisted_1$H","_hoisted_2$C","_hoisted_3$A","_hoisted_4$A","_sfc_render$x","FlipVertical","_sfc_main$I","_hoisted_1$G","_hoisted_2$B","_hoisted_3$z","_hoisted_4$z","_sfc_render$w","RotateLeft","_sfc_main$H","_hoisted_1$F","_hoisted_2$A","_hoisted_3$y","_hoisted_4$y","_sfc_render$v","RotateRight","EDITOR_COMMANDS","provideEditorCommands","commands","useEditorCommands","_hoisted_1$E","_hoisted_2$z","_hoisted_3$x","_hoisted_4$x","_sfc_main$G","aspectPresets","cropControls","activeCropControl","hasCropActions","onTransformInput","preset","control","CropPanel","FLOOR_AREA","REFINEMENTS","largestGood","smallestBad","paints","area","fits","canvasScaleFor","bad","good","candidate","luma","EXPOSURE_RANGE","TEMPERATURE_RANGE","TINT_RANGE","exposure","temperature","tint","HIGHLIGHTS_RANGE","SHADOWS_RANGE","tonal","highlights","shadows","dark","gain","VIGNETTE_RANGE","VIGNETTE_START","vignette","centreX","centreY","distance","SHARPEN_RANGE","sharpen","stride","centre","channel","neighbours","saturate","gray","warm","cool","fade","luma2","noir","golden","coast","shadow","mist","berry","cinema","balance","luna","jsContent","WorkerWrapper","objURL","worker","createImageWorkerClient","pending","nextId","broken","fail","waiting","one","response","ask","request","transfer","blob2","bitmap","steps","client","imageWorker","halves","PREBUILT_LEVELS","halve","prepareLevels","levelFor","drawn","TEXT_EMPHASES","fontStyle","OUTLINE_RATIO","outlineColor","outlineWidth","visibleRect","context2d","supportsContextFilter","contextFilterSupport","contextFilterAvailable","obfuscateRegion","region","small","cutEllipse","patch","redactStrength","redactSceneFunc","deviceWidth","deviceHeight","deviceStrength","pad","readLeft","readTop","readWidth","readHeight","cut","backgroundPadding","MIN_HIT_AREA","hitAreaWidth","buildAnnotationNode","base","shapeWidth","shapeHeight","applyFilters","presetFilters","cacheFit","thumbnailKey","crop","presetThumbnail","thumb","createScene","viewGroup","contentGroup","imageNode","built","filterKey","imageChanged","nextFilterKey","sourceSize","renderScene","renderToCanvas","maxSize","requested","toImageCoords","pointer","_hoisted_1$D","_sfc_main$F","presets","presetPreviews","setPreset","FilterStrip","_hoisted_1$C","_sfc_main$E","RedactPanel","_hoisted_1$B","_hoisted_2$y","_sfc_main$D","hint","transformHint","selected","SelectPanel","_hoisted_1$A","_sfc_main$C","moreLabel","FALLBACK_STICKERS","frequentStickers","frequent","DEFAULT_STICKERS","stickers","sticker","StickerPanel","_sfc_main$B","EditorPanel","_sfc_main$A","_hoisted_1$z","_hoisted_2$x","_hoisted_3$w","_hoisted_4$w","_sfc_render$u","_sfc_main$z","_hoisted_1$y","_hoisted_2$w","_hoisted_3$v","_hoisted_4$v","_sfc_render$t","Crop","_sfc_main$y","_hoisted_1$x","_hoisted_2$v","_hoisted_3$u","_hoisted_4$u","_sfc_render$s","CursorDefaultOutline","_sfc_main$x","_hoisted_1$w","_hoisted_2$u","_hoisted_3$t","_hoisted_4$t","_sfc_render$r","PaletteOutline","_sfc_main$w","_hoisted_1$v","_hoisted_2$t","_hoisted_3$s","_hoisted_4$s","_sfc_render$q","StickerEmoji","_sfc_main$v","_hoisted_1$u","_hoisted_2$s","_hoisted_3$r","_hoisted_4$r","_sfc_render$p","Tune","_hoisted_1$t","_sfc_main$u","modes","EditorSidebar","_sfc_main$t","_hoisted_1$s","_hoisted_2$r","_hoisted_3$q","_hoisted_4$q","_sfc_render$o","ChevronDown","_sfc_main$s","_hoisted_1$r","_hoisted_2$q","_hoisted_3$p","_hoisted_4$p","_sfc_render$n","Close","_sfc_main$r","_hoisted_1$q","_hoisted_2$p","_hoisted_3$o","_hoisted_4$o","_sfc_render$m","ContentCopy","_sfc_main$q","_hoisted_1$p","_hoisted_2$o","_hoisted_3$n","_hoisted_4$n","_sfc_render$l","History","_sfc_main$p","_hoisted_1$o","_hoisted_2$n","_hoisted_3$m","_hoisted_4$m","_sfc_render$k","MagnifyMinusOutline","_sfc_main$o","_hoisted_1$n","_hoisted_2$m","_hoisted_3$l","_hoisted_4$l","_sfc_render$j","MagnifyPlusOutline","_sfc_main$n","_hoisted_1$m","_hoisted_2$l","_hoisted_3$k","_hoisted_4$k","_sfc_render$i","Redo","_sfc_main$m","_hoisted_1$l","_hoisted_2$k","_hoisted_3$j","_hoisted_4$j","_sfc_render$h","Restore","_sfc_main$l","_hoisted_1$k","_hoisted_2$j","_hoisted_3$i","_hoisted_4$i","_sfc_render$g","Undo","_sfc_main$k","_hoisted_1$j","_hoisted_2$i","_hoisted_3$h","_hoisted_4$h","_sfc_render$f","ArrowExpand","_sfc_main$j","_hoisted_1$i","_hoisted_2$h","_hoisted_3$g","_hoisted_4$g","_sfc_render$e","BorderOutside","_sfc_main$i","_hoisted_1$h","_hoisted_2$g","_hoisted_3$f","_hoisted_4$f","_sfc_render$d","CropFree","_sfc_main$h","_hoisted_1$g","_hoisted_2$f","_hoisted_3$e","_hoisted_4$e","_sfc_render$c","CursorMove","_sfc_main$g","_hoisted_1$f","_hoisted_2$e","_hoisted_3$d","_hoisted_4$d","_sfc_render$b","Delete","_sfc_main$f","_hoisted_1$e","_hoisted_2$d","_hoisted_3$c","_hoisted_4$c","_sfc_render$a","FormatAlignLeft","_sfc_main$e","_hoisted_1$d","_hoisted_2$c","_hoisted_3$b","_hoisted_4$b","_sfc_render$9","FormatBold","_sfc_main$d","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$8","FormatColorHighlight","_sfc_main$c","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$7","FormatFont","_sfc_main$b","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$6","FormatItalic","_sfc_main$a","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$5","FormatStrikethrough","_sfc_main$9","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_sfc_render$4","FormatUnderline","_sfc_main$8","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_render$3","ImageOutline","_sfc_main$7","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_sfc_render$2","Palette","ICONS","historyIcon","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_main$6","historySteps","stepZoom","resetZoom","closing","onClose","onCloseAnswer","answer","onRevert","NcActions","NcActionButton","NcLoadingIcon","EditorTopBar","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","FormatAlignCenter","_sfc_main$4","_hoisted_1$3","_hoisted_2$2","_hoisted_4$1","FormatAlignRight","SWITCH_DEFAULTS","useTextStyle","styleable","toggle","choice","_sfc_main$3","textStyle","META","emphases","_hoisted_1$2","isText","lift","fonts","ALIGN_META","alignments","alignment","FloatingToolbar","__expose","inputLabel","useTemplateRef","autosize","onPointerDown","focus","onBeforeUnmount","onEnter","TextOverlay","imageSize","needsCors","loadImage","sourceBytes","decodeImage","bytes","canvasToBlob","primaryColor","ambientBackdrop","sample","useAmbient","backdrop","useAnnouncements","modeLabels","annotationCount","historyLength","moved","TEXT_ENTRY","ACTIVATABLE","ownsTextEntry","ownsSpaceKey","NUDGE_KEYS","useEditorShortcuts","nudging","nudgeSelection","onKeydown","meta","onKeyup","converts","convertsToSrgb","DEFAULT_QUALITY","MIN_QUALITY","MAX_QUALITY","painted","useExportImage","exporting","ENCODABLE","sourceFormat","jpegSource","qualityFor","estimated","estimateJpegQuality","carryMetadata","readMetadataSegments","carried","withMetadata","exportImage","encode","wanted","save","onSaved","useTextEditing","textEdit","startTextEdit","position","existing","confirmTextEdit","edit","trimmed","useWheelControls","dragFrom","pinch","pointers","spaceHeld","toolFreeDrag","panArmed","anchorAt","currentPinch","onWheel","onPointerMove","onPointerUp","DURATION","prefersReducedMotion","pivotOnCenter","playTransition","kind","previousScale","previousOffset","previousOrigin","clampCropBox","oldBox","newBox","keepRatio","bottom","attachCropOverlay","view","toStage","toScene","imageBounds","makeShade","shadeTop","shadeLeft","shadeRight","shadeBottom","shade","cropNode","stageRect","gridLines","clampToImage","sceneRect","updateOverlay","ratioLocked","transformer","setAspect","aspect","coverScale","fitContain","snapAngle","from","to","round","orientImage","full","cover","transformPoints","applyNodeTransform","attachSelection","accent","findAnnotation","findNode","reportRect","syncTransformer","sync","dragAny","onWriteBack","onClick","onDblClick","TOOL_LABELS","DRAG_THRESHOLD","movedEnough","attachPointerTools","active","previewNode","pendingText","deferred","constrained","gestureBox","onImage","reachedImage","scenePointer","refreshPreview","discard","beginAnnotation","followLine","raw","onModifier","confirmDownscale","megapixels","loadAttempt","root","loaded","errored","containerSize","orientedCanvas","sourceImage","announcement","selectionBox","cropOverlay","selection","detachTool","attached","resizeObserver","pendingTransition","lastView","canvasCursor","showCropped","container2","viewOptions","overlaySize","overlay","toolbarBox","onSave","captureView","commitWithTransition","renderView","renderedOrigin","syncTools","currentOriented","applyCropAspect","refreshOrientedCanvas","seedState","seed","load","attempt","minDimension","onRotateCW","onRotateCCW","onFlipHorizontal","onFlipVertical","onApplyCrop","onDuplicateSelection","copy","onResetCrop","onDeleteSelection","clientWidth","clientHeight","ImageEditor","emit$1","saving","exportOptions","known","axios","etag","showSuccess","showError","onCancel","ImageEditor$1"],"mappings":"quCACA,SAASA,GAAYC,EAAQC,EAAQ,CAAA,EAAIC,EAAU,CAAA,EAAI,CACrD,GAAI,CAAE,UAAAC,CAAS,EAAKD,EAChB,cAAeD,GAAS,OAAOA,EAAM,WAAc,WACrDE,IAAcF,EAAM,WAGtB,MAAMG,GADoB,OAAOD,GAAc,UAAY,SAAS,cAAcA,CAAS,GAAK,SAAS,MACvE,YAAY,SAAS,cAAc,KAAK,CAAC,EAC3E,OAAO,IAAI,QAAQ,CAACE,EAASC,IAAW,CACtC,MAAMC,EAAMC,GAAUR,EAAQ,CAC5B,GAAGC,EAGH,UAAW,KACX,WAAWQ,EAAM,CACf,MAAMC,EAAUD,EAAK,OAAS,EAAIA,EAAOA,EAAK,CAAC,EAC/CF,EAAI,QAAO,EACXH,EAAQ,OAAM,EACdC,EAAQK,CAAO,CACjB,EACA,kBAAmB,IAAM,CACvBH,EAAI,QAAO,EACXH,EAAQ,OAAM,EACdE,EAAO,IAAI,MAAM,0CAA0C,CAAC,CAC9D,CACN,CAAK,EACDC,EAAI,MAAMH,CAAO,CACnB,CAAC,CACH,CCtBA,MAAMO,GAAa,CAAC,MAAM,EACpBC,GAAa,CACjB,IAAK,EACL,MAAO,mBACT,EACMC,GAAa,CAAE,MAAO,gBAAgB,EACtCC,GAA4BC,GAAgB,CAChD,OAAQ,aACR,MAAO,CACL,QAAS,CAAE,QAAS,MAAM,EAC1B,UAAW,CAAE,KAAM,OAAO,EAC1B,KAAM,CAAE,QAAS,MAAM,EACvB,KAAM,CAAE,QAAS,SAAS,CAC9B,EACE,MAAMC,EAAS,CACb,MAAMf,EAAQe,EACRC,EAAkBC,GAAS,IAAMjB,EAAM,WAAaA,EAAM,OAAS,OAAO,EAC1EkB,EAAWD,GAAS,IAAM,CAC9B,OAAQjB,EAAM,KAAI,CAChB,IAAK,QACH,OAAOmB,GACT,IAAK,UACH,OAAOC,GACT,IAAK,OACH,OAAOC,GAET,QACE,OAAOC,EACjB,CACI,CAAC,EACD,MAAO,CAACC,EAAMC,KACLC,EAAS,EAAIC,EAAmB,MAAO,CAC5C,MAAOC,GAAe,CAAC,WAAY,CACjC,CAAC,aAAaZ,EAAQ,IAAI,EAAE,EAAGA,EAAQ,KACvC,mBAAoBa,EAAMC,EAAQ,CAC5C,CAAS,CAAC,EACF,KAAMb,EAAgB,MAAQ,QAAU,MAChD,EAAS,CACDc,GAAWP,EAAK,OAAQ,OAAQ,CAAA,EAAI,IAAM,CACxCQ,EAAYH,EAAMI,EAAgB,EAAG,CACnC,KAAMd,EAAS,MACf,MAAOS,GAAe,CAAC,iBAAkB,CAAE,0BAA2BZ,EAAQ,OAAO,CAAE,CAAC,EACxF,OAAQ,EACpB,EAAa,KAAM,EAAG,CAAC,OAAQ,OAAO,CAAC,CACvC,EAAW,EAAI,EACPkB,EAAmB,MAAO,KAAM,CAC9BlB,EAAQ,SAAWU,EAAS,EAAIC,EAAmB,IAAKf,GAAYuB,EAAgBnB,EAAQ,OAAO,EAAG,CAAC,GAAKoB,EAAmB,GAAI,EAAI,EACvIL,GAAWP,EAAK,OAAQ,UAAW,CAAA,EAAI,IAAM,CAC3CU,EAAmB,IAAKrB,GAAYsB,EAAgBnB,EAAQ,IAAI,EAAG,CAAC,CAChF,EAAa,EAAI,CACjB,CAAS,CACT,EAAS,GAAIL,EAAU,EAErB,CACF,CAAC,EACK0B,GAA6BC,GAAYxB,GAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC,EC8R5F,IAAIH,GAAa,CAAC,aAAa,EAC3BC,GAAa,CAAC,WAAW,EAGzB2B,GAAwCxB,GAAgB,CAC3D,OAAQ,gBACR,MAAO,CACN,KAAM,CAAA,EACN,KAAM,CAAA,EACN,KAAM,CAAA,EACN,QAAS,CAAA,EACT,SAAU,CAAA,CACZ,EACC,MAAO,CAAC,OAAO,EACf,MAAMC,EAAS,CAAE,KAAMwB,CAAM,EAAI,CAChC,MAAMvC,EAAQe,EACRyB,EAAOD,EACPE,EAAgBxB,GAAS,IAAMjB,EAAM,SAAS,IAAK0C,IAAY,CACpE,GAAGA,EACH,UAAW,CACVA,EAAO,SAAQ,EACfF,EAAK,QAAS,EAAI,CACnB,CACH,EAAI,CAAC,EAKGG,EAAe,IAAM,GAAG3C,EAAM,IAAI,KAAKA,EAAM,IAAI,GACvD,OAAA4C,GAAU,IAAM,OAAO,iBAAiB,SAAUD,CAAY,CAAC,EAC/DE,GAAY,IAAM,OAAO,oBAAoB,SAAUF,CAAY,CAAC,EAC7D,CAACpB,EAAMC,KACNC,EAAS,EAAIqB,GAAYlB,EAAMmB,EAAQ,EAAG,CAChD,cAAe,oBACf,QAASN,EAAc,MACvB,KAAM1B,EAAQ,KACd,QAASA,EAAQ,KACjB,gBAAiBS,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKwB,GAAWzB,EAAK,MAAM,QAAS,EAAK,EACpF,EAAM,CACF,QAAS0B,EAAQ,IAAM,CAAClC,EAAQ,UAAYU,EAAS,EAAIqB,GAAYlB,EAAMQ,EAAU,EAAG,CACvF,IAAK,EACL,KAAMrB,EAAQ,QACnB,EAAO,CACF,QAASkC,EAAQ,IAAM,CAAChB,EAAmB,IAAK,CAAE,YAAaC,EAAgBnB,EAAQ,IAAI,CAAC,EAAI,KAAM,EAAGL,EAAU,CAAC,CAAC,EACrH,EAAG,CACR,EAAO,EAAG,CAAC,MAAM,CAAC,GAAKyB,EAAmB,GAAI,EAAI,EAAGpB,EAAQ,MAAQU,EAAS,EAAIC,EAAmB,MAAO,CACvG,IAAK,EACL,UAAWX,EAAQ,IACxB,EAAO,KAAM,EAAGJ,EAAU,GAAKwB,EAAmB,GAAI,EAAI,CAAC,CAAC,EACxD,EAAG,CACP,EAAM,EAAG,CACL,UACA,OACA,SACJ,CAAI,EAEH,CACD,CAAC,EAMGe,GAAS,KAAM,CAClBC,GACAC,GACAC,GACAC,GACA,YAAYC,EAAMC,EAAMC,EAAU,CAAA,EAAIC,EAAU,CAC/C,KAAKP,GAAQI,EACb,KAAKH,GAAQI,EACb,KAAKH,GAAWI,EAChB,KAAKH,GAAYI,CAClB,CAMA,MAAM,MAAO,CACZ,GAAI,CAAC,MAAM5D,GAAYwC,GAAuB,CAC7C,QAAS,KAAKe,GACd,KAAM,KAAKF,GACX,KAAM,KAAKC,GACX,SAAU,KAAKE,EAClB,CAAG,EAAG,MAAM,IAAI,MAAM,eAAe,CACpC,CACD,EAuGA,eAAeK,GAAiB1D,EAAS,CACxCA,EAAU,CACT,aAAc2D,GAAE,SAAS,EACzB,GAAG3D,CACL,EACC,KAAM,CAAE,QAAA4D,EAAS,QAAAzD,GAAY,QAAQ,cAAa,EAC5CqD,EAAU,CAAC,CAChB,MAAOxD,EAAQ,aACf,QAAS,UACT,UAAW,CACVG,EAAQ,EAAI,CACb,CACF,CAAE,EACD,OAAIH,EAAQ,aAAawD,EAAQ,QAAQ,CACxC,MAAOxD,EAAQ,YACf,UAAW,CACVG,EAAQ,EAAK,CACd,CACF,CAAE,EACD,MAAM,IAAI8C,GAAOjD,EAAQ,KAAMA,EAAQ,KAAMwD,EAASxD,EAAQ,QAAQ,EAAE,KAAI,EACrE4D,CACR,CC9iBA,MAAMC,GAAc,KAAK,GAAK,IAC9B,SAASC,IAAgB,CACrB,OAAQ,OAAO,OAAW,MACrB,CAAA,EAAG,SAAS,KAAK,MAAM,IAAM,mBAC1B,CAAA,EAAG,SAAS,KAAK,MAAM,IAAM,kBACzC,CACO,MAAMC,GAAO,OAAOC,GAAW,IAChCA,GACA,OAAO,OAAW,IACd,OACA,OAAO,kBAAsB,IACzB,KACA,CAAA,EACDC,EAAQ,CACjB,QAASF,GACT,QAAS,SACT,UAAWD,GAAa,EACxB,aAAc,QAAQ,KAAK,SAAUI,EAAO,CAAE,EAAE,UAAU,EAC1D,eAAgB,IAChB,SAASC,EAAO,CACZ,OAAOF,EAAM,SAAWE,EAAQN,GAAcM,CAClD,EACA,YAAa,GACb,qBAAsB,GACtB,gBAAiB,GACjB,iBAAkB,GAClB,4BAA6B,GAC7B,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,GACrB,uBAAwB,GACxB,uBAAwB,GACxB,yBAA0B,GAC1B,wBAAyB,KACzB,wBAAyB,KACzB,0BAA2B,KAC3B,eAAgB,MAChB,oBAAqB,GACrB,WAAa,OAAO,OAAW,KAAe,OAAO,kBAAqB,EAC1E,aAAc,EACd,SAAU,GACV,aAAc,GACd,YAAa,CAAC,EAAG,CAAC,EAClB,YAAa,CACT,OAAOF,EAAM,GAAM,UACvB,EACA,gBAAiB,CACb,IAAIG,EAAIC,EACR,OAAQA,GAAMD,EAAKH,EAAM,eAAoB,MAAQG,IAAO,OAAS,OAASA,EAAG,eAAc,KAAQ,MAAQC,IAAO,OAASA,EAAK,EACxI,EACA,aAAc,CACV,MAAO,CAAC,CAACJ,EAAM,GAAM,IACzB,EACA,uBAAwB,GACxB,SAAUF,GAAK,SACf,cAAcE,EAAO,CACb,OAAOF,GAAK,MAAU,KACtB,QAAQ,MAAM,kHAAkH,EAEpIA,GAAK,MAAQE,CACjB,CACJ,EACaK,GAAiBC,GAAc,CACxCN,EAAMM,EAAU,UAAU,aAAY,CAAE,EAAIA,CAChD,EACAN,EAAM,cAAcA,CAAK,EChEzB,MAAMO,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcbC,GAAgB,IAAM,CACxB,GAAI,OAAO,SAAa,IACpB,MAAM,IAAI,MAAMD,EAAU,CAElC,EACO,MAAME,EAAU,CACnB,YAAYC,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAChC,KAAK,MAAQ,GACb,KAAK,EAAKA,GAAKA,EAAE,MAAK,GAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAClD,CACA,OAAQ,CACJ,KAAK,EAAE,CAAC,EAAI,EACZ,KAAK,EAAE,CAAC,EAAI,EACZ,KAAK,EAAE,CAAC,EAAI,EACZ,KAAK,EAAE,CAAC,EAAI,EACZ,KAAK,EAAE,CAAC,EAAI,EACZ,KAAK,EAAE,CAAC,EAAI,CAChB,CACA,MAAO,CACH,OAAO,IAAID,GAAU,KAAK,CAAC,CAC/B,CACA,SAASE,EAAI,CACTA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAClBA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAClBA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAClBA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAClBA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAClBA,EAAG,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,CACtB,CACA,MAAMC,EAAO,CACT,MAAMF,EAAI,KAAK,EACf,MAAO,CACH,EAAGA,EAAE,CAAC,EAAIE,EAAM,EAAIF,EAAE,CAAC,EAAIE,EAAM,EAAIF,EAAE,CAAC,EACxC,EAAGA,EAAE,CAAC,EAAIE,EAAM,EAAIF,EAAE,CAAC,EAAIE,EAAM,EAAIF,EAAE,CAAC,CACpD,CACI,CACA,UAAUG,EAAGC,EAAG,CACZ,YAAK,EAAE,CAAC,GAAK,KAAK,EAAE,CAAC,EAAID,EAAI,KAAK,EAAE,CAAC,EAAIC,EACzC,KAAK,EAAE,CAAC,GAAK,KAAK,EAAE,CAAC,EAAID,EAAI,KAAK,EAAE,CAAC,EAAIC,EAClC,IACX,CACA,MAAMC,EAAIC,EAAI,CACV,OAAA,KAAK,EAAE,CAAC,GAAKD,EACb,KAAK,EAAE,CAAC,GAAKA,EACb,KAAK,EAAE,CAAC,GAAKC,EACb,KAAK,EAAE,CAAC,GAAKA,EACN,IACX,CACA,OAAOC,EAAK,CACR,MAAMC,EAAI,KAAK,IAAID,CAAG,EAChBE,EAAI,KAAK,IAAIF,CAAG,EAChBG,EAAM,KAAK,EAAE,CAAC,EAAIF,EAAI,KAAK,EAAE,CAAC,EAAIC,EAClCE,EAAM,KAAK,EAAE,CAAC,EAAIH,EAAI,KAAK,EAAE,CAAC,EAAIC,EAClCG,EAAM,KAAK,EAAE,CAAC,EAAI,CAACH,EAAI,KAAK,EAAE,CAAC,EAAID,EACnCK,EAAM,KAAK,EAAE,CAAC,EAAI,CAACJ,EAAI,KAAK,EAAE,CAAC,EAAID,EACzC,OAAA,KAAK,EAAE,CAAC,EAAIE,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACL,IACX,CACA,gBAAiB,CACb,MAAO,CACH,EAAG,KAAK,EAAE,CAAC,EACX,EAAG,KAAK,EAAE,CAAC,CACvB,CACI,CACA,KAAKR,EAAIC,EAAI,CACT,MAAMI,EAAM,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIJ,EAC9BK,EAAM,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIL,EAC9BM,EAAM,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIP,EAC9BQ,EAAM,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIR,EACpC,OAAA,KAAK,EAAE,CAAC,EAAIK,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACL,IACX,CACA,SAASC,EAAQ,CACb,MAAMJ,EAAM,KAAK,EAAE,CAAC,EAAII,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EACtDH,EAAM,KAAK,EAAE,CAAC,EAAIG,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EACtDF,EAAM,KAAK,EAAE,CAAC,EAAIE,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EACtDD,EAAM,KAAK,EAAE,CAAC,EAAIC,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EACtDC,EAAK,KAAK,EAAE,CAAC,EAAID,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EACjEE,EAAK,KAAK,EAAE,CAAC,EAAIF,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EACvE,OAAA,KAAK,EAAE,CAAC,EAAIJ,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIE,EACZ,KAAK,EAAE,CAAC,EAAIC,EACL,IACX,CACA,QAAS,CACL,MAAMC,EAAI,GAAK,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,GACrDC,EAAK,KAAK,EAAE,CAAC,EAAID,EACjBE,EAAK,CAAC,KAAK,EAAE,CAAC,EAAIF,EAClBG,EAAK,CAAC,KAAK,EAAE,CAAC,EAAIH,EAClBI,EAAK,KAAK,EAAE,CAAC,EAAIJ,EACjBK,EAAKL,GAAK,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,GACtDM,EAAKN,GAAK,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,GAC5D,OAAA,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACZ,KAAK,EAAE,CAAC,EAAIC,EACL,IACX,CACA,WAAY,CACR,OAAO,KAAK,CAChB,CACA,WAAY,CACR,MAAMC,EAAI,KAAK,EAAE,CAAC,EACZC,EAAI,KAAK,EAAE,CAAC,EACZjB,EAAI,KAAK,EAAE,CAAC,EACZS,EAAI,KAAK,EAAE,CAAC,EACZS,EAAI,KAAK,EAAE,CAAC,EACZC,EAAI,KAAK,EAAE,CAAC,EACZC,EAAQJ,EAAIP,EAAIQ,EAAIjB,EACpBqB,EAAS,CACX,EAAGH,EACH,EAAGC,EACH,SAAU,EACV,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,MAAO,CACnB,EACQ,GAAIH,GAAK,GAAKC,GAAK,EAAG,CAClB,MAAMK,EAAI,KAAK,KAAKN,EAAIA,EAAIC,EAAIA,CAAC,EACjCI,EAAO,SAAWJ,EAAI,EAAI,KAAK,KAAKD,EAAIM,CAAC,EAAI,CAAC,KAAK,KAAKN,EAAIM,CAAC,EAC7DD,EAAO,OAASC,EAChBD,EAAO,OAASD,EAAQE,EACxBD,EAAO,OAASL,EAAIhB,EAAIiB,EAAIR,GAAKW,EACjCC,EAAO,MAAQ,CACnB,SACSrB,GAAK,GAAKS,GAAK,EAAG,CACvB,MAAMR,EAAI,KAAK,KAAKD,EAAIA,EAAIS,EAAIA,CAAC,EACjCY,EAAO,SACH,KAAK,GAAK,GAAKZ,EAAI,EAAI,KAAK,KAAK,CAACT,EAAIC,CAAC,EAAI,CAAC,KAAK,KAAKD,EAAIC,CAAC,GAC/DoB,EAAO,OAASD,EAAQnB,EACxBoB,EAAO,OAASpB,EAChBoB,EAAO,MAAQ,EACfA,EAAO,OAASL,EAAIhB,EAAIiB,EAAIR,GAAKW,CACrC,CAGA,OAAAC,EAAO,SAAWE,EAAK,aAAaF,EAAO,QAAQ,EAC5CA,CACX,CACJ,CACA,MAAMG,GAAe,iBAAkBC,GAAgB,kBAAmBC,GAAgB,kBAAmBC,GAAiB,mBAAoBC,GAAiB,KAAK,GAAK,IAAKC,GAAiB,IAAM,KAAK,GAAIC,GAAO,IAAKC,GAAe,GAAIC,GAAO,IAAKC,GAAgB,kBAAmBC,GAAc,gBAAiBC,GAAS,CACpU,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,aAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,KAAM,CAAC,EAAG,IAAK,GAAG,EAClB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,OAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,MAAO,CAAC,EAAG,EAAG,CAAC,EACf,eAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,KAAM,CAAC,EAAG,EAAG,GAAG,EAChB,WAAY,CAAC,IAAK,GAAI,GAAG,EACzB,MAAO,CAAC,IAAK,GAAI,EAAE,EACnB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAW,CAAC,GAAI,IAAK,GAAG,EACxB,WAAY,CAAC,IAAK,IAAK,CAAC,EACxB,UAAW,CAAC,IAAK,IAAK,EAAE,EACxB,MAAO,CAAC,IAAK,IAAK,EAAE,EACpB,eAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,QAAS,CAAC,IAAK,GAAI,EAAE,EACrB,KAAM,CAAC,EAAG,IAAK,GAAG,EAClB,SAAU,CAAC,EAAG,EAAG,GAAG,EACpB,SAAU,CAAC,EAAG,IAAK,GAAG,EACtB,cAAe,CAAC,IAAK,IAAK,EAAE,EAC5B,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,UAAW,CAAC,EAAG,IAAK,CAAC,EACrB,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,YAAa,CAAC,IAAK,EAAG,GAAG,EACzB,eAAgB,CAAC,GAAI,IAAK,EAAE,EAC5B,WAAY,CAAC,IAAK,IAAK,CAAC,EACxB,WAAY,CAAC,IAAK,GAAI,GAAG,EACzB,QAAS,CAAC,IAAK,EAAG,CAAC,EACnB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,aAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,cAAe,CAAC,GAAI,GAAI,GAAG,EAC3B,cAAe,CAAC,GAAI,GAAI,EAAE,EAC1B,cAAe,CAAC,GAAI,GAAI,EAAE,EAC1B,cAAe,CAAC,EAAG,IAAK,GAAG,EAC3B,WAAY,CAAC,IAAK,EAAG,GAAG,EACxB,SAAU,CAAC,IAAK,GAAI,GAAG,EACvB,YAAa,CAAC,EAAG,IAAK,GAAG,EACzB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,WAAY,CAAC,GAAI,IAAK,GAAG,EACzB,UAAW,CAAC,IAAK,GAAI,EAAE,EACvB,YAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,GAAI,IAAK,EAAE,EACzB,QAAS,CAAC,IAAK,EAAG,GAAG,EACrB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,KAAM,CAAC,IAAK,IAAK,CAAC,EAClB,UAAW,CAAC,IAAK,IAAK,EAAE,EACxB,KAAM,CAAC,IAAK,IAAK,GAAG,EACpB,MAAO,CAAC,EAAG,IAAK,CAAC,EACjB,YAAa,CAAC,IAAK,IAAK,EAAE,EAC1B,KAAM,CAAC,IAAK,IAAK,GAAG,EACpB,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,UAAW,CAAC,IAAK,GAAI,EAAE,EACvB,OAAQ,CAAC,GAAI,EAAG,GAAG,EACnB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,cAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,UAAW,CAAC,IAAK,IAAK,CAAC,EACvB,aAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,qBAAsB,CAAC,IAAK,IAAK,GAAG,EACpC,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,YAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,cAAe,CAAC,GAAI,IAAK,GAAG,EAC5B,aAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,eAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,eAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,eAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,YAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,KAAM,CAAC,EAAG,IAAK,CAAC,EAChB,UAAW,CAAC,GAAI,IAAK,EAAE,EACvB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,QAAS,CAAC,IAAK,EAAG,GAAG,EACrB,OAAQ,CAAC,IAAK,EAAG,CAAC,EAClB,iBAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,WAAY,CAAC,EAAG,EAAG,GAAG,EACtB,aAAc,CAAC,IAAK,GAAI,GAAG,EAC3B,aAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,eAAgB,CAAC,GAAI,IAAK,GAAG,EAC7B,gBAAiB,CAAC,IAAK,IAAK,GAAG,EAC/B,kBAAmB,CAAC,EAAG,IAAK,GAAG,EAC/B,gBAAiB,CAAC,GAAI,IAAK,GAAG,EAC9B,gBAAiB,CAAC,IAAK,GAAI,GAAG,EAC9B,aAAc,CAAC,GAAI,GAAI,GAAG,EAC1B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,YAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,KAAM,CAAC,EAAG,EAAG,GAAG,EAChB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,MAAO,CAAC,IAAK,IAAK,CAAC,EACnB,UAAW,CAAC,IAAK,IAAK,EAAE,EACxB,OAAQ,CAAC,IAAK,IAAK,CAAC,EACpB,UAAW,CAAC,IAAK,GAAI,CAAC,EACtB,OAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,cAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,cAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,cAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,KAAM,CAAC,IAAK,IAAK,EAAE,EACnB,KAAM,CAAC,IAAK,IAAK,GAAG,EACpB,KAAM,CAAC,IAAK,IAAK,GAAG,EACpB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,OAAQ,CAAC,IAAK,EAAG,GAAG,EACpB,cAAe,CAAC,IAAK,GAAI,GAAG,EAC5B,IAAK,CAAC,IAAK,EAAG,CAAC,EACf,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAW,CAAC,GAAI,IAAK,GAAG,EACxB,YAAa,CAAC,IAAK,GAAI,EAAE,EACzB,OAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,WAAY,CAAC,IAAK,IAAK,EAAE,EACzB,SAAU,CAAC,GAAI,IAAK,EAAE,EACtB,SAAU,CAAC,IAAK,IAAK,GAAG,EACxB,OAAQ,CAAC,IAAK,GAAI,EAAE,EACpB,OAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,UAAW,CAAC,IAAK,GAAI,GAAG,EACxB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAW,CAAC,IAAK,IAAK,GAAG,EACzB,KAAM,CAAC,IAAK,IAAK,GAAG,EACpB,YAAa,CAAC,EAAG,IAAK,GAAG,EACzB,UAAW,CAAC,GAAI,IAAK,GAAG,EACxB,IAAK,CAAC,IAAK,IAAK,GAAG,EACnB,KAAM,CAAC,EAAG,IAAK,GAAG,EAClB,QAAS,CAAC,IAAK,IAAK,GAAG,EACvB,YAAa,CAAC,IAAK,IAAK,IAAK,CAAC,EAC9B,OAAQ,CAAC,IAAK,GAAI,EAAE,EACpB,UAAW,CAAC,GAAI,IAAK,GAAG,EACxB,OAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,MAAO,CAAC,IAAK,IAAK,GAAG,EACrB,WAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,OAAQ,CAAC,IAAK,IAAK,CAAC,EACpB,YAAa,CAAC,IAAK,IAAK,EAAE,CAC9B,EACA,IAAIC,GAA0B,KAC9B,MAAMC,GAAgB,OAAO,OAAW,IAAc,OAAS,CAAA,EACzDC,GAAa,IAAI,QACjBC,GAAe,CAACC,EAAKrB,IAAM,CACzB,OAAOqB,EAAI,uBAA0B,WACrCA,EAAI,sBAAsBrB,CAAC,EAEtB,OAAO,sBAA0B,IACtC,sBAAsBA,CAAC,EAGvB,WAAWA,EAAG,EAAE,CAExB,EACMsB,GAAkB,IAAI,IACtBC,GAAwBC,GAAQ,CAClC,MAAMC,EAAaD,EAAI,KAAI,EAC3B,OAAOC,EAAW,QAAQ,GAAG,IAAM,GAC7BA,EAAW,MAAM,cAAc,EAC/BA,EAAW,MAAM,SAAS,CACpC,EACMC,GAAgB,+CAChBC,GAAwB,IAAI,OAAO,KAAKD,EAAa,SAAU,GAAG,EAClEE,GAAsB,CAACC,EAAOC,IAAQ,CACxC,MAAMC,EAAQJ,GAAsB,KAAKE,CAAK,EAC9C,OAAKE,EAGEA,EAAM,CAAC,EAAK,OAAOA,EAAM,CAAC,CAAC,EAAI,IAAOD,EAAM,OAAOC,EAAM,CAAC,CAAC,EAFvD,GAGf,EACMC,GAAkB,gBAClBC,GAAWJ,GAAU,KAAK,IAAI,KAAK,IAAIA,EAAO,CAAC,EAAG,CAAC,EACnDK,GAAY,IAAI,OAAO,KAAKR,EAAa,yBAA0B,GAAG,EACtES,GAAY,CACd,IAAK,EACL,KAAM,GACN,IAAKzB,GACL,KAAM,GACV,EACaN,EAAO,CAChB,WAAWgC,EAAK,CACZ,MAAO,CAAC,EAAEA,GAAOA,EAAI,UAAY,EACrC,EACA,YAAYA,EAAK,CACb,MAAO,CAAC,EAAEA,GAAOA,EAAI,aAAeA,EAAI,MAAQA,EAAI,MACxD,EACA,eAAeA,EAAK,CAChB,MAAO,CAAC,CAACA,GAAOA,EAAI,cAAgB,MACxC,EACA,SAASA,EAAK,CACV,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM/B,EACnD,EACA,UAAU+B,EAAK,CACX,OAAQ,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM9B,IAC5C,CAAC,MAAM8B,CAAG,GACV,SAASA,CAAG,CACpB,EACA,UAAUA,EAAK,CACX,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM7B,EACnD,EACA,WAAW6B,EAAK,CACZ,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM5B,EACnD,EACA,SAAS6B,EAAK,CACV,OAAOA,aAAe,MAC1B,EACA,gBAAgBC,EAAU,CACtB,GAAI,OAAOA,GAAa,SACpB,MAAO,GAEX,MAAMC,EAAYD,EAAS,CAAC,EAC5B,OAAQC,IAAc,KAClBA,IAAc,KACdA,IAAcA,EAAU,YAAW,CAC3C,EACA,MAAMC,EAAQ,CAIV,OAHIA,IAAW,GAGXA,EAAS,EACF,EAGA,EAEf,EACA,iBAAiBC,EAAUpB,EAAK,CAC5B,MAAMqB,EAAUrB,GAAO,CAACA,EAAI,QAAUA,GAAQH,GAC9C,IAAIyB,EAAQxB,GAAW,IAAIuB,CAAM,EAC5BC,IACDA,EAAQ,CAAA,EACRxB,GAAW,IAAIuB,EAAQC,CAAK,EAC5BvB,GAAasB,EAAQ,UAAY,CAC7BvB,GAAW,OAAOuB,CAAM,EACxBC,EAAM,QAAQ,SAAUC,EAAI,CACxBA,EAAE,CACN,CAAC,CACL,CAAC,GAELD,EAAM,KAAKF,CAAQ,CACvB,EACA,qBAAsB,CAClBtE,GAAa,EACb,MAAM0E,EAAS,SAAS,cAAc,QAAQ,EAC9C,GAAI,CACAA,EAAO,MAAQA,EAAO,OAAS,CAAA,CACnC,MACU,CAAE,CACZ,OAAOA,CACX,EACA,oBAAqB,CACjB,OAAA1E,GAAa,EACN,SAAS,cAAc,KAAK,CACvC,EACA,cAAc2E,EAAI,CACd,MAAO,CAAC,CAACA,EAAG,WAChB,EACA,YAAYC,EAAKN,EAAU,CACvB,MAAMO,EAAW5C,EAAK,mBAAkB,EACxC4C,EAAS,OAAS,UAAY,CAC1BP,EAASO,CAAQ,CACrB,EACAA,EAAS,IAAMD,CACnB,EACA,UAAU5C,EAAG8C,EAAGnD,EAAG,CACf,QAAS,GAAK,KAAOK,GAAK,KAAO8C,GAAK,GAAKnD,GAAG,SAAS,EAAE,EAAE,MAAM,CAAC,CACtE,EACA,UAAUoD,EAAK,CACXA,EAAMA,EAAI,QAAQvC,GAAMC,EAAY,EACpC,MAAMuC,EAAS,SAASD,EAAK,EAAE,EAC/B,MAAO,CACH,EAAIC,GAAU,GAAM,IACpB,EAAIA,GAAU,EAAK,IACnB,EAAGA,EAAS,GACxB,CACI,EACA,gBAAiB,CACb,IAAIC,GAAc,KAAK,OAAM,EAAK,UAAa,GAAG,SAAS,EAAE,EAC7D,KAAOA,EAAU,OAAS,GACtBA,EAAYvC,GAAOuC,EAEvB,OAAOzC,GAAOyC,CAClB,EACA,wBAAyB,CACrB,GAAInC,KAA4B,KAC5B,OAAOA,GAEX,GAAI,OAAO,SAAa,IACpB,OAAAA,GAA0B,GACnB,GAEX,MAAMpC,EAAI,KAAK,oBAAmB,EAClCA,EAAE,MAAQ,GACVA,EAAE,OAAS,GACX,MAAMwE,EAAMxE,EAAE,WAAW,KAAM,CAC3B,mBAAoB,EAChC,CAAS,EACDwE,EAAI,UAAU,EAAG,EAAG,GAAI,EAAE,EAC1BA,EAAI,UAAY,UAChBA,EAAI,SAAS,EAAG,EAAG,GAAI,EAAE,EACzB,MAAM/D,EAAI+D,EAAI,aAAa,EAAG,EAAG,GAAI,EAAE,EAAE,KACzC,IAAIC,EAAa,GACjB,QAASC,EAAI,EAAGA,EAAI,IAAKA,IACrB,GAAIjE,EAAEiE,EAAI,CAAC,IAAM,IACbjE,EAAEiE,EAAI,EAAI,CAAC,IAAM,IACjBjE,EAAEiE,EAAI,EAAI,CAAC,IAAM,IACjBjE,EAAEiE,EAAI,EAAI,CAAC,IAAM,IAAK,CACtBD,EAAa,GACb,KACJ,CAEJ,OAAArC,GAA0BqC,EAC1B,KAAK,cAAczE,CAAC,EACboC,EACX,EACA,aAAc,CACV,MAAMuC,EAAQ,KAAK,eAAc,EACjC,OAAO,KAAK,uBAAsB,EAC5B,KAAK,mBAAmBA,CAAK,EAC7BA,CACV,EACA,eAAerD,EAAG8C,EAAGnD,EAAG,CACpB,OAAI,KAAK,2BACLK,EAAI,KAAK,MAAMA,EAAI,CAAC,EAAI,EACxB8C,EAAI,KAAK,MAAMA,EAAI,CAAC,EAAI,EACxBnD,EAAI,KAAK,MAAMA,EAAI,CAAC,EAAI,GAErBa,GAAO,KAAK,UAAUR,EAAG8C,EAAGnD,CAAC,CACxC,EACA,mBAAmBoD,EAAK,CACpB,MAAMO,EAAM,KAAK,UAAUP,CAAG,EAC9B,OAAQvC,GACJ,KAAK,UAAU,KAAK,MAAM8C,EAAI,EAAI,CAAC,EAAI,EAAG,KAAK,MAAMA,EAAI,EAAI,CAAC,EAAI,EAAG,KAAK,MAAMA,EAAI,EAAI,CAAC,EAAI,CAAC,CACtG,EACA,OAAOD,EAAO,CACV,IAAI1F,EACJ,KAAM,CAAE,EAAAqC,EAAI,EAAG,EAAA8C,EAAI,EAAG,EAAAnD,EAAI,IAAOhC,EAAKsC,EAAK,YAAYoD,CAAK,KAAO,MAAQ1F,IAAO,OAASA,EAAK,CAAA,EAChG,MAAO,CAAE,EAAAqC,EAAG,EAAA8C,EAAG,EAAAnD,CAAC,CACpB,EACA,YAAY0B,EAAK,CACbA,GAAOA,GAAO,IAAI,KAAI,GAAM,QAC5B,MAAMgC,EAAQpD,EAAK,iBAAiBoB,CAAG,GACnCpB,EAAK,iBAAiBoB,CAAG,GACzBpB,EAAK,iBAAiBoB,CAAG,GACzBpB,EAAK,iBAAiBoB,CAAG,GACzBpB,EAAK,iBAAiBoB,CAAG,GACzBpB,EAAK,gBAAgBoB,CAAG,GACxBpB,EAAK,gBAAgBoB,CAAG,EAC5B,GAAIgC,GAAS,CAACA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,CAAC,EAAE,MAAMpD,EAAK,SAAS,EAClE,OAAOoD,CAEf,EACA,iBAAiBhC,EAAK,CAClB,MAAM3C,EAAImC,GAAOQ,EAAI,YAAW,CAAE,EAClC,OAAK3C,EAGE,CACH,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,OAAS,EAAIA,EAAE,CAAC,EAAI,CACrC,EAPmB,IAQf,EACA,gBAAgB2C,EAAK,CACjB,MAAMO,EAAQ,sBAAsB,KAAKP,CAAG,EAC5C,GAAI,CAACO,EACD,OAEJ,MAAM2B,EAAQnC,GAAqBQ,EAAM,CAAC,CAAC,EAC3C,GAAI,EAAA2B,EAAM,OAAS,GAAKA,EAAM,OAAS,GAGvC,MAAO,CACH,EAAG9B,GAAoB8B,EAAM,CAAC,EAAG,GAAG,EACpC,EAAG9B,GAAoB8B,EAAM,CAAC,EAAG,GAAG,EACpC,EAAG9B,GAAoB8B,EAAM,CAAC,EAAG,GAAG,EACpC,EAAGA,EAAM,OAAS,EAAI9B,GAAoB8B,EAAM,CAAC,EAAG,CAAC,EAAI,CACrE,CACI,EACA,iBAAiBlC,EAAK,CAClB,GAAIA,EAAI,SAAW,GAAKQ,GAAgB,KAAKR,CAAG,EAC5C,MAAO,CACH,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,GACnD,CAEI,EACA,iBAAiBA,EAAK,CAClB,GAAIA,EAAI,SAAW,GAAKQ,GAAgB,KAAKR,CAAG,EAC5C,MAAO,CACH,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,CACnB,CAEI,EACA,iBAAiBA,EAAK,CAClB,GAAIA,EAAI,SAAW,GAAKQ,GAAgB,KAAKR,CAAG,EAC5C,MAAO,CACH,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAAI,GACnD,CAEI,EACA,iBAAiBA,EAAK,CAClB,GAAIA,EAAI,SAAW,GAAKQ,GAAgB,KAAKR,CAAG,EAC5C,MAAO,CACH,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAG,EAAE,EAC/B,EAAG,CACnB,CAEI,EACA,gBAAgBA,EAAK,CACjB,MAAMO,EAAQ,sBAAsB,KAAKP,CAAG,EAC5C,GAAI,CAACO,EACD,OAEJ,MAAM2B,EAAQnC,GAAqBQ,EAAM,CAAC,CAAC,EAC3C,GAAI2B,EAAM,OAAS,GAAKA,EAAM,OAAS,EACnC,OAEJ,MAAMC,EAAMzB,GAAU,KAAKwB,EAAM,CAAC,CAAC,EACnC,GAAI,CAACC,EACD,OAEJ,MAAMC,EAAOD,EAAI,CAAC,EACZE,EAAU,OAAOF,EAAI,CAAC,CAAC,GAAKC,EAAOzB,GAAUyB,EAAK,YAAW,CAAE,EAAI,GACzE,GAAI,CAAC,SAASC,CAAO,EACjB,OAEJ,MAAMC,GAAOD,EAAU,IAAO,KAAO,IAAO,IACtC,EAAI5B,GAAQL,GAAoB8B,EAAM,CAAC,EAAG,GAAG,EAAI,GAAG,EACpDK,EAAI9B,GAAQL,GAAoB8B,EAAM,CAAC,EAAG,GAAG,EAAI,GAAG,EACpD7D,EAAI6D,EAAM,OAAS,EAAI9B,GAAoB8B,EAAM,CAAC,EAAG,CAAC,EAAI,EAC1DM,EAAKD,EAAI,GAAMA,GAAK,EAAI,GAAKA,EAAI,EAAIA,EAAI,EACzCE,EAAK,EAAIF,EAAIC,EACbP,EAAM,CAAC,EAAG,EAAG,CAAC,EACpB,QAASF,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIW,EAAKJ,EAAK,kBAAS,EAAEP,EAAI,GACzBW,EAAK,GACLA,IAEAA,EAAK,GACLA,IAEJ,IAAI7B,EACA,EAAI6B,EAAK,EACT7B,EAAM4B,GAAMD,EAAKC,GAAM,EAAIC,EAEtB,EAAIA,EAAK,EACd7B,EAAM2B,EAED,EAAIE,EAAK,EACd7B,EAAM4B,GAAMD,EAAKC,IAAO,EAAI,EAAIC,GAAM,EAGtC7B,EAAM4B,EAEVR,EAAIF,CAAC,EAAIlB,EAAM,GACnB,CACA,MAAO,CACH,EAAG,KAAK,MAAMoB,EAAI,CAAC,CAAC,EACpB,EAAG,KAAK,MAAMA,EAAI,CAAC,CAAC,EACpB,EAAG,KAAK,MAAMA,EAAI,CAAC,CAAC,EACpB,EAAA5D,CACZ,CACI,EACA,iBAAiBsE,EAAIC,EAAI,CACrB,MAAO,EAAEA,EAAG,EAAID,EAAG,EAAIA,EAAG,OACtBC,EAAG,EAAIA,EAAG,MAAQD,EAAG,GACrBC,EAAG,EAAID,EAAG,EAAIA,EAAG,QACjBC,EAAG,EAAIA,EAAG,OAASD,EAAG,EAC9B,EACA,YAAY/B,EAAK,CACb,MAAMiC,EAAS,CAAA,EACf,UAAWC,KAAOlC,EACV,KAAK,eAAeA,EAAIkC,CAAG,CAAC,EAC5BD,EAAOC,CAAG,EAAI,KAAK,YAAYlC,EAAIkC,CAAG,CAAC,EAElC,KAAK,SAASlC,EAAIkC,CAAG,CAAC,EAC3BD,EAAOC,CAAG,EAAI,KAAK,WAAWlC,EAAIkC,CAAG,CAAC,EAGtCD,EAAOC,CAAG,EAAIlC,EAAIkC,CAAG,EAG7B,OAAOD,CACX,EACA,WAAWE,EAAK,CACZ,OAAOA,EAAI,MAAM,CAAC,CACtB,EACA,SAASC,EAAK,CACV,OAAOA,EAAM/D,EACjB,EACA,SAAS7B,EAAK,CACV,OAAOA,EAAM8B,EACjB,EACA,UAAU8D,EAAK,CACX,OAAApE,EAAK,KAAK,qEAAqE,EACxEA,EAAK,SAASoE,CAAG,CAC5B,EACA,UAAU5F,EAAK,CACX,OAAAwB,EAAK,KAAK,qEAAqE,EACxEA,EAAK,SAASxB,CAAG,CAC5B,EACA,aAAa6F,EAAS,CAClB,OAAO9G,EAAM,SAAWyC,EAAK,SAASqE,CAAO,EAAIA,CACrD,EACA,YAAYjD,EAAK,CACb,MAAMkD,EAASpD,GAAgB,IAAIE,CAAG,EACtC,GAAIkD,IAAW,OACX,OAAOA,EACX,MAAMC,EAAMnD,EAAI,OAAO,CAAC,EAAE,cAAgBA,EAAI,MAAM,CAAC,EACrD,OAAAF,GAAgB,IAAIE,EAAKmD,CAAG,EACrBA,CACX,EACA,MAAMnD,EAAK,CACP,MAAM,IAAI,MAAMT,GAAcS,CAAG,CACrC,EACA,MAAMA,EAAK,CACP,QAAQ,MAAMT,GAAcS,CAAG,CACnC,EACA,KAAKA,EAAK,CACD7D,EAAM,cAGX,QAAQ,KAAKmD,GAAgBU,CAAG,CACpC,EACA,KAAKY,EAAKwC,EAAM,CACZ,UAAWN,KAAOlC,EACdwC,EAAKN,EAAKlC,EAAIkC,CAAG,CAAC,CAE1B,EACA,SAASjC,EAAKwC,EAAMC,EAAO,CACvB,OAAOD,GAAQxC,GAAOA,EAAMyC,CAChC,EACA,wBAAwBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CAC5C,IAAI5G,EAAGC,EAAG4G,EACV,MAAMC,GAAOP,EAAKE,IAAOF,EAAKE,IAAOD,EAAKE,IAAOF,EAAKE,GACtD,GAAII,GAAO,EACP9G,EAAIuG,EACJtG,EAAIuG,EACJK,GAAQF,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,OAEhD,CACD,MAAMK,IAAMJ,EAAKJ,IAAOE,EAAKF,IAAOK,EAAKJ,IAAOE,EAAKF,IAAOM,EACxDC,EAAI,GACJ/G,EAAIuG,EACJtG,EAAIuG,EACJK,GAAQN,EAAKI,IAAOJ,EAAKI,IAAOH,EAAKI,IAAOJ,EAAKI,IAE5CG,EAAI,GACT/G,EAAIyG,EACJxG,EAAIyG,EACJG,GAAQJ,EAAKE,IAAOF,EAAKE,IAAOD,EAAKE,IAAOF,EAAKE,KAGjD5G,EAAIuG,EAAKQ,GAAKN,EAAKF,GACnBtG,EAAIuG,EAAKO,GAAKL,EAAKF,GACnBK,GAAQ7G,EAAI2G,IAAO3G,EAAI2G,IAAO1G,EAAI2G,IAAO3G,EAAI2G,GAErD,CACA,MAAO,CAAC5G,EAAGC,EAAG4G,CAAI,CACtB,EACA,qBAAqBG,EAAIC,EAAMC,EAAU,CACrC,MAAMC,EAAKvF,EAAK,YAAYoF,CAAE,EAC9B,IAAIH,EAAO,OAAO,UAClB,OAAAI,EAAK,QAAQ,SAAUG,EAAIrC,EAAG,CAC1B,GAAI,CAACmC,GAAYnC,IAAMkC,EAAK,OAAS,EACjC,OAEJ,MAAMI,EAAKJ,GAAMlC,EAAI,GAAKkC,EAAK,MAAM,EAC/BK,EAAO1F,EAAK,wBAAwBwF,EAAG,EAAGA,EAAG,EAAGC,EAAG,EAAGA,EAAG,EAAGL,EAAG,EAAGA,EAAG,CAAC,EACtEO,EAAKD,EAAK,CAAC,EAAGE,EAAKF,EAAK,CAAC,EAAGG,EAAQH,EAAK,CAAC,EAC5CG,EAAQZ,IACRM,EAAG,EAAII,EACPJ,EAAG,EAAIK,EACPX,EAAOY,EAEf,CAAC,EACMN,CACX,EACA,sBAAsBO,EAAYC,EAAUT,EAAU,CAClD,MAAMU,EAAQ,GAAIC,EAAM,CAAA,EACxB,GAAIH,EAAW,OAASC,EAAS,OAAQ,CACrC,MAAMG,EAAOH,EACbA,EAAWD,EACXA,EAAaI,CACjB,CACA,QAASC,EAAI,EAAGA,EAAIL,EAAW,OAAQK,GAAK,EACxCH,EAAM,KAAK,CACP,EAAGF,EAAWK,CAAC,EACf,EAAGL,EAAWK,EAAI,CAAC,CACnC,CAAa,EAEL,QAASA,EAAI,EAAGA,EAAIJ,EAAS,OAAQI,GAAK,EACtCF,EAAI,KAAK,CACL,EAAGF,EAASI,CAAC,EACb,EAAGJ,EAASI,EAAI,CAAC,CACjC,CAAa,EAEL,MAAMC,EAAW,CAAA,EACjB,OAAAH,EAAI,QAAQ,SAAU9H,EAAO,CACzB,MAAMkI,EAAKrG,EAAK,qBAAqB7B,EAAO6H,EAAOV,CAAQ,EAC3Dc,EAAS,KAAKC,EAAG,CAAC,EAClBD,EAAS,KAAKC,EAAG,CAAC,CACtB,CAAC,EACMD,CACX,EACA,oBAAoBpE,EAAK,CACrB,IAAIsE,EACJtE,EAAI,kCAAoC,GACxC,UAAWkC,KAAOlC,EACd,GAAMA,EAAI,eAAekC,CAAG,GAAKlC,EAAIkC,CAAG,GAAK,OAAOlC,EAAIkC,CAAG,GAAK,UAIhE,GADAoC,EAAO,OAAO,yBAAyBtE,EAAKkC,CAAG,EAC3ClC,EAAIkC,CAAG,EAAE,mCACTlE,EAAK,WAAWgC,EAAIkC,CAAG,CAAC,EACxB,GAAIoC,EAAK,aACL,OAAOtE,EAAIkC,CAAG,MAGd,QAAO,aAGNlE,EAAK,oBAAoBgC,EAAIkC,CAAG,CAAC,IAAM,KAC5C,GAAIoC,EAAK,aACL,OAAOtE,EAAIkC,CAAG,MAGd,QAAO,KAInB,OAAA,OAAOlC,EAAI,kCACJA,CACX,EACA,QAAQM,EAAQiE,EAAQ,CACpB,UAAWrC,KAAOqC,EACdjE,EAAO4B,CAAG,EAAIqC,EAAOrC,CAAG,EAE5B,OAAO5B,CACX,EACA,mBAAmBkE,EAAK,CACpB,OAAKA,EAAI,QAIEA,EAAI,eAAe,CAAC,EAAE,WAHtBA,EAAI,WAAa,GAKhC,EACA,iBAAiBC,EAAU,CAClBlJ,EAAM,wBAEXkJ,EAAS,QAAShI,GAAM,CACpBA,EAAE,MAAQ,EACVA,EAAE,OAAS,CACf,CAAC,CACL,EACA,oBAAoBiI,EAASC,EAAOC,EAAQC,EAAc,CACtD,IAAIC,EAAUH,EAAQ,EAAIA,EAAQ,EAC9BI,EAAUH,EAAS,EAAIA,EAAS,EACpCD,EAAQ,KAAK,IAAIA,CAAK,EACtBC,EAAS,KAAK,IAAIA,CAAM,EACxB,IAAII,EAAU,EACVC,EAAW,EACXC,EAAa,EACbC,EAAc,EACd,OAAON,GAAiB,SACxBG,EACIC,EACIC,EACIC,EACI,KAAK,IAAIN,EAAcF,EAAQ,EAAGC,EAAS,CAAC,GAG5DI,EAAU,KAAK,IAAIH,EAAa,CAAC,GAAK,EAAGF,EAAQ,EAAGC,EAAS,CAAC,EAC9DK,EAAW,KAAK,IAAIJ,EAAa,CAAC,GAAK,EAAGF,EAAQ,EAAGC,EAAS,CAAC,EAC/DO,EAAc,KAAK,IAAIN,EAAa,CAAC,GAAK,EAAGF,EAAQ,EAAGC,EAAS,CAAC,EAClEM,EAAa,KAAK,IAAIL,EAAa,CAAC,GAAK,EAAGF,EAAQ,EAAGC,EAAS,CAAC,GAErEF,EAAQ,OAAOI,EAAUE,EAASD,CAAO,EACzCL,EAAQ,OAAOI,EAAUH,EAAQM,EAAUF,CAAO,EAClDL,EAAQ,IAAII,EAAUH,EAAQM,EAAUF,EAAUE,EAAUA,EAAW,KAAK,GAAK,EAAK,EAAG,EAAG,EAAK,EACjGP,EAAQ,OAAOI,EAAUH,EAAOI,EAAUH,EAASO,CAAW,EAC9DT,EAAQ,IAAII,EAAUH,EAAQQ,EAAaJ,EAAUH,EAASO,EAAaA,EAAa,EAAG,KAAK,GAAK,EAAG,EAAK,EAC7GT,EAAQ,OAAOI,EAAUI,EAAYH,EAAUH,CAAM,EACrDF,EAAQ,IAAII,EAAUI,EAAYH,EAAUH,EAASM,EAAYA,EAAY,KAAK,GAAK,EAAG,KAAK,GAAI,EAAK,EACxGR,EAAQ,OAAOI,EAASC,EAAUC,CAAO,EACzCN,EAAQ,IAAII,EAAUE,EAASD,EAAUC,EAASA,EAAS,KAAK,GAAK,KAAK,GAAK,EAAK,EAAG,EAAK,CAChG,EACA,uBAAuBN,EAASU,EAAQC,EAAOC,EAAQT,EAAc,CACjES,EAAS,KAAK,IAAIA,CAAM,EACxB,QAASnE,EAAI,EAAGA,EAAIkE,EAAOlE,IAAK,CAC5B,MAAMoE,EAAOH,GAAQjE,EAAI,EAAIkE,GAASA,CAAK,EACrCG,EAAOJ,EAAOjE,CAAC,EACfsE,EAAOL,GAAQjE,EAAI,GAAKkE,CAAK,EAC7BK,EAAO,CAAE,EAAGF,EAAK,EAAID,EAAK,EAAG,EAAGC,EAAK,EAAID,EAAK,CAAC,EAC/CI,EAAO,CAAE,EAAGF,EAAK,EAAID,EAAK,EAAG,EAAGC,EAAK,EAAID,EAAK,CAAC,EAC/CI,EAAO,KAAK,MAAMF,EAAK,EAAGA,EAAK,CAAC,EAChCG,EAAO,KAAK,MAAMF,EAAK,EAAGA,EAAK,CAAC,EACtC,IAAIG,EACA,OAAOjB,GAAiB,SACxBiB,EAAmBjB,EAGnBiB,EAAmB3E,EAAI0D,EAAa,OAASA,EAAa1D,CAAC,EAAI,EAGnE2E,EADwBR,EAAS,KAAK,IAAI,KAAK,GAAKD,CAAK,EAEnC,KAAK,IAAI,EAAIS,EAAmBR,EAAU,CAAC,EACjE,MAAMS,EAAa,CAAE,EAAGL,EAAK,EAAIE,EAAM,EAAGF,EAAK,EAAIE,CAAI,EACjDI,EAAa,CAAE,EAAGL,EAAK,EAAIE,EAAM,EAAGF,EAAK,EAAIE,CAAI,EACjDrC,EAAK,CACP,EAAGgC,EAAK,EAAIO,EAAW,EAAID,EAC3B,EAAGN,EAAK,EAAIO,EAAW,EAAID,CAC3C,EACkBrC,EAAK,CACP,EAAG+B,EAAK,EAAIQ,EAAW,EAAIF,EAC3B,EAAGN,EAAK,EAAIQ,EAAW,EAAIF,CAC3C,EACgB3E,IAAM,EACNuD,EAAQ,OAAOlB,EAAG,EAAGA,EAAG,CAAC,EAGzBkB,EAAQ,OAAOlB,EAAG,EAAGA,EAAG,CAAC,EAE7BkB,EAAQ,MAAMc,EAAK,EAAGA,EAAK,EAAG/B,EAAG,EAAGA,EAAG,EAAGqC,CAAgB,CAC9D,CACJ,CACJ,ECn5BA,SAASG,GAAc9D,EAAK,CACxB,MAAM+D,EAAS,CAAA,EAAIC,EAAMhE,EAAI,OAAQiE,EAAOpI,EAC5C,QAASmG,EAAI,EAAGA,EAAIgC,EAAKhC,IAAK,CAC1B,IAAIlE,EAAMkC,EAAIgC,CAAC,EACXiC,EAAK,UAAUnG,CAAG,EAClBA,EAAM,KAAK,MAAMA,EAAM,GAAI,EAAI,IAEzBmG,EAAK,UAAUnG,CAAG,IACxBA,EAAMA,EAAM,IAEhBiG,EAAO,KAAKjG,CAAG,CACnB,CACA,OAAOiG,CACX,CACA,MAAMG,GAAQ,IAAKC,GAAa,IAAKC,GAAc,IAAKC,GAAqB,KAAMC,GAAsB,KAAMC,GAAY,IAAKC,GAAe,KAAMC,GAAS,IAAKC,GAAkB,CACjL,MACA,QACA,YACA,gBACA,YACA,OACA,YACA,uBACA,gBACA,uBACA,YACA,UACA,OACA,WACA,eACA,kBACA,SACA,SACA,eACA,mBACA,OACA,YACA,UACA,SACA,OACA,QACA,cACA,eACA,SACA,aACA,YACA,WACJ,EACMC,GAAqB,CACvB,YACA,cACA,cACA,aACA,gBACA,gBACA,gBACA,UACA,iBACA,WACA,YACA,aACA,YACA,OACA,YACA,eACA,cACA,2BACA,wBACA,QACJ,EACMC,GAAc,IACpB,IAAIC,GAAuB,KACpB,SAASC,IAAwB,CACpC,GAAID,KAAyB,KACzB,OAAOA,GAEX,GAAI,CAEA,MAAM/F,EADSjD,EAAK,oBAAmB,EACpB,WAAW,IAAI,EAClC,OAAKiD,EAIE,CAAC,CAACA,GAAO,WAAYA,GAHxB+F,GAAuB,GAChB,GAGf,MACU,CACN,OAAAA,GAAuB,GAChB,EACX,CACJ,CACO,MAAME,EAAQ,CACjB,YAAYzG,EAAQ,CAChB,KAAK,OAASA,EACVlF,EAAM,cACN,KAAK,SAAW,CAAA,EAChB,KAAK,aAAY,EAEzB,CACA,UAAU4L,EAAO,CACTA,EAAM,eACN,KAAK,MAAMA,CAAK,CAExB,CACA,MAAMA,EAAO,CACb,CACA,YAAYA,EAAO,CACXA,EAAM,aACN,KAAK,QAAQA,CAAK,CAE1B,CACA,QAAQA,EAAO,CACf,CACA,gBAAgBA,EAAO,CACfA,EAAM,MAAM,wBACZ,KAAK,YAAYA,CAAK,EACtB,KAAK,UAAUA,CAAK,IAGpB,KAAK,UAAUA,CAAK,EACpB,KAAK,YAAYA,CAAK,EAE9B,CACA,SAASC,EAASC,EAAS,CACvB,IAAIC,EAAW,KAAK,SAAUnB,EAAMmB,EAAS,OAAQlI,EAAM,GAAI+E,EAAGoD,EAAOC,EAAQC,EACjF,IAAKtD,EAAI,EAAGA,EAAIgC,EAAKhC,IACjBoD,EAAQD,EAASnD,CAAC,EAClBqD,EAASD,EAAM,OACXC,GACAC,EAAOF,EAAM,KACbnI,GAAOoI,EACHJ,EACAhI,GAAOuH,GAGH3I,EAAK,SAASyJ,EAAK,CAAC,CAAC,EACrBrI,GAAOoH,GAAqBiB,EAAK,KAAKpB,EAAK,EAAII,IAG3CY,IACAI,EAAOA,EAAK,IAAKhK,GAAM,OAAOA,GAAM,SAAW,KAAK,MAAMA,CAAC,EAAIA,CAAC,GAEpE2B,GAAOkH,GAAamB,EAAK,KAAKpB,EAAK,EAAIE,MAK/CnH,GAAOmI,EAAM,SACRH,IACDhI,GAAOwH,GAASW,EAAM,MAG9BnI,GAAOsH,GAEX,OAAOtH,CACX,CACA,YAAa,CACT,KAAK,SAAW,CAAA,CACpB,CACA,OAAOA,EAAK,CACR,IAAIkI,EAAW,KAAK,SAAUnB,EAC9BmB,EAAS,KAAKlI,CAAG,EACjB+G,EAAMmB,EAAS,OACXnB,GAAOY,IACPO,EAAS,MAAK,CAEtB,CACA,OAAQ,CACJ,MAAMI,EAAa,KAAK,UAAS,EAAG,cAAa,EACjD,KAAK,aAAa,EAAIA,EAAY,EAAG,EAAG,EAAIA,EAAY,EAAG,CAAC,CAChE,CACA,WAAY,CACR,OAAO,KAAK,MAChB,CACA,MAAMC,EAAQ,CACV,MAAMlH,EAAS,KAAK,UAAS,EACzBkH,EACA,KAAK,UAAUA,EAAO,GAAK,EAAGA,EAAO,GAAK,EAAGA,EAAO,OAAS,EAAGA,EAAO,QAAU,CAAC,EAGlF,KAAK,UAAU,EAAG,EAAGlH,EAAO,SAAQ,EAAKA,EAAO,WAAYA,EAAO,UAAS,EAAKA,EAAO,UAAU,CAE1G,CACA,cAAc0G,EAAO,CACjB,MAAMS,EAAUT,EAAM,MAAM,QACxBS,GACA,KAAK,QAAQ,UAAWA,CAAO,CAEvC,CACA,cAAcT,EAAO,CACjB,MAAMU,EAAaV,EAAM,mBAAkB,EACvCU,IAAe,GACf,KAAK,QAAQ,cAAeA,CAAU,CAE9C,CACA,eAAeV,EAAO,CAClB,MAAMW,EAAWX,EAAM,MAAM,SACzBW,GACA,KAAK,QAAQ,WAAYA,CAAQ,CAEzC,CACA,iBAAiBX,EAAO,CACpB,MAAMY,EAAaZ,EAAM,MAAM,WAC3BY,GAAc,MACd,KAAK,QAAQ,aAAcA,CAAU,CAE7C,CACA,QAAQC,EAAM/H,EAAK,CACf,KAAK,SAAS+H,CAAI,EAAI/H,CAC1B,CACA,IAAI7D,EAAGC,EAAGiJ,EAAQ2C,EAAYC,EAAUC,EAAkB,CACtD,KAAK,SAAS,IAAI/L,EAAGC,EAAGiJ,EAAQ2C,EAAYC,EAAUC,CAAgB,CAC1E,CACA,MAAMxF,EAAIC,EAAIC,EAAIC,EAAIwC,EAAQ,CAC1B,KAAK,SAAS,MAAM3C,EAAIC,EAAIC,EAAIC,EAAIwC,CAAM,CAC9C,CACA,WAAY,CACR,KAAK,SAAS,UAAS,CAC3B,CACA,cAAc8C,EAAMC,EAAMC,EAAMC,EAAMnM,EAAGC,EAAG,CACxC,KAAK,SAAS,cAAc+L,EAAMC,EAAMC,EAAMC,EAAMnM,EAAGC,CAAC,CAC5D,CACA,UAAUD,EAAGC,EAAGsI,EAAOC,EAAQ,CAC3B,KAAK,SAAS,UAAUxI,EAAGC,EAAGsI,EAAOC,CAAM,CAC/C,CACA,QAAQ6C,EAAM,CACV,KAAK,SAAS,KAAK,MAAM,KAAK,SAAUA,CAAI,CAChD,CACA,WAAY,CACR,KAAK,SAAS,UAAS,CAC3B,CACA,gBAAgB9C,EAAOC,EAAQ,CAC3B,MAAMnH,EAAI,UACV,GAAIA,EAAE,SAAW,EACb,OAAO,KAAK,SAAS,gBAAgBkH,EAAOC,CAAM,EAEjD,GAAInH,EAAE,SAAW,EAClB,OAAO,KAAK,SAAS,gBAAgBkH,CAAK,CAElD,CACA,qBAAqB6D,EAAIC,EAAI9F,EAAIC,EAAI,CACjC,OAAO,KAAK,SAAS,qBAAqB4F,EAAIC,EAAI9F,EAAIC,CAAE,CAC5D,CACA,cAAc8F,EAAOC,EAAY,CAC7B,OAAO,KAAK,SAAS,cAAcD,EAAOC,CAAU,CACxD,CACA,qBAAqBH,EAAIC,EAAIG,EAAIjG,EAAIC,EAAIb,EAAI,CACzC,OAAO,KAAK,SAAS,qBAAqByG,EAAIC,EAAIG,EAAIjG,EAAIC,EAAIb,CAAE,CACpE,CACA,UAAU2G,EAAOpM,EAAIC,EAAIsM,EAAQC,EAAS9L,EAAIC,EAAI8L,EAAQC,EAAS,CAC/D,MAAMvL,EAAI,UAAWwL,EAAW,KAAK,SACjCxL,EAAE,SAAW,EACbwL,EAAS,UAAUP,EAAOpM,EAAIC,CAAE,EAE3BkB,EAAE,SAAW,EAClBwL,EAAS,UAAUP,EAAOpM,EAAIC,EAAIsM,EAAQC,CAAO,EAE5CrL,EAAE,SAAW,GAClBwL,EAAS,UAAUP,EAAOpM,EAAIC,EAAIsM,EAAQC,EAAS9L,EAAIC,EAAI8L,EAAQC,CAAO,CAElF,CACA,QAAQ5M,EAAGC,EAAG6M,EAASC,EAASC,EAAUnB,EAAYC,EAAUmB,EAAkB,CAC9E,KAAK,SAAS,QAAQjN,EAAGC,EAAG6M,EAASC,EAASC,EAAUnB,EAAYC,EAAUmB,CAAgB,CAClG,CACA,cAAcjN,EAAGC,EAAGiN,EAAMC,EAAU,CAChC,OAAID,EACO,KAAK,SAAS,cAAcA,EAAMlN,EAAGC,EAAGkN,CAAQ,EAEpD,KAAK,SAAS,cAAcnN,EAAGC,EAAGkN,CAAQ,CACrD,CACA,QAAQ9B,EAAM,CACV,KAAK,SAAS,KAAK,MAAM,KAAK,SAAUA,CAAI,CAChD,CACA,SAASrL,EAAGC,EAAGsI,EAAOC,EAAQ,CAC1B,KAAK,SAAS,SAASxI,EAAGC,EAAGsI,EAAOC,CAAM,CAC9C,CACA,WAAWxI,EAAGC,EAAGsI,EAAOC,EAAQ,CAC5B,KAAK,SAAS,WAAWxI,EAAGC,EAAGsI,EAAOC,CAAM,CAChD,CACA,SAAS/J,EAAMuB,EAAGC,EAAGmN,EAAU,CACvBA,EACA,KAAK,SAAS,SAAS3O,EAAMuB,EAAGC,EAAGmN,CAAQ,EAG3C,KAAK,SAAS,SAAS3O,EAAMuB,EAAGC,CAAC,CAEzC,CACA,YAAYxB,EAAM,CACd,OAAO,KAAK,SAAS,YAAYA,CAAI,CACzC,CACA,aAAayB,EAAIC,EAAIkN,EAAIC,EAAI,CACzB,OAAO,KAAK,SAAS,aAAapN,EAAIC,EAAIkN,EAAIC,CAAE,CACpD,CACA,OAAOtN,EAAGC,EAAG,CACT,KAAK,SAAS,OAAOD,EAAGC,CAAC,CAC7B,CACA,OAAOD,EAAGC,EAAG,CACT,KAAK,SAAS,OAAOD,EAAGC,CAAC,CAC7B,CACA,KAAKD,EAAGC,EAAGsI,EAAOC,EAAQ,CACtB,KAAK,SAAS,KAAKxI,EAAGC,EAAGsI,EAAOC,CAAM,CAC1C,CACA,UAAUxI,EAAGC,EAAGsI,EAAOC,EAAQ+E,EAAO,CAClC,KAAK,SAAS,UAAUvN,EAAGC,EAAGsI,EAAOC,EAAQ+E,CAAK,CACtD,CACA,aAAaC,EAAW5M,EAAIC,EAAI,CAC5B,KAAK,SAAS,aAAa2M,EAAW5M,EAAIC,CAAE,CAChD,CACA,iBAAiB4M,EAAKC,EAAK1N,EAAGC,EAAG,CAC7B,KAAK,SAAS,iBAAiBwN,EAAKC,EAAK1N,EAAGC,CAAC,CACjD,CACA,SAAU,CACN,KAAK,SAAS,QAAO,CACzB,CACA,OAAOZ,EAAO,CACV,KAAK,SAAS,OAAOA,CAAK,CAC9B,CACA,MAAO,CACH,KAAK,SAAS,KAAI,CACtB,CACA,MAAMW,EAAGC,EAAG,CACR,KAAK,SAAS,MAAMD,EAAGC,CAAC,CAC5B,CACA,YAAY0N,EAAU,CACd,KAAK,SAAS,YACd,KAAK,SAAS,YAAYA,CAAQ,EAE7B,YAAa,KAAK,SACvB,KAAK,SAAS,QAAaA,EAEtB,mBAAoB,KAAK,WAC9B,KAAK,SAAS,eAAoBA,EAE1C,CACA,aAAc,CACV,OAAO,KAAK,SAAS,YAAW,CACpC,CACA,aAAatM,EAAGC,EAAGjB,EAAGS,EAAGS,EAAGC,EAAG,CAC3B,KAAK,SAAS,aAAaH,EAAGC,EAAGjB,EAAGS,EAAGS,EAAGC,CAAC,CAC/C,CACA,OAAOoM,EAAQ,CACPA,EACA,KAAK,SAAS,OAAOA,CAAM,EAG3B,KAAK,SAAS,OAAM,CAE5B,CACA,WAAWnP,EAAMuB,EAAGC,EAAGmN,EAAU,CAC7B,KAAK,SAAS,WAAW3O,EAAMuB,EAAGC,EAAGmN,CAAQ,CACjD,CACA,UAAU/L,EAAGC,EAAGjB,EAAGS,EAAGS,EAAGC,EAAG,CACxB,KAAK,SAAS,UAAUH,EAAGC,EAAGjB,EAAGS,EAAGS,EAAGC,CAAC,CAC5C,CACA,UAAUxB,EAAGC,EAAG,CACZ,KAAK,SAAS,UAAUD,EAAGC,CAAC,CAChC,CACA,cAAe,CACX,IAAI4N,EAAO,KAAM9D,EAAMU,GAAgB,OAAQqD,EAAa,KAAK,QAAS/F,EAAGsD,EAC7E,MAAMjF,EAAO,SAAU2H,EAAY,CAC/B,IAAIC,EAAaH,EAAKE,CAAU,EAAGE,EACnCJ,EAAKE,CAAU,EAAI,UAAY,CAC3B,OAAA1C,EAAOxB,GAAc,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,CAAC,EAC7DoE,EAAMD,EAAW,MAAMH,EAAM,SAAS,EACtCA,EAAK,OAAO,CACR,OAAQE,EACR,KAAM1C,CAC1B,CAAiB,EACM4C,CACX,CACJ,EACA,IAAKlG,EAAI,EAAGA,EAAIgC,EAAKhC,IACjB3B,EAAKqE,GAAgB1C,CAAC,CAAC,EAE3B8F,EAAK,QAAU,UAAY,CACvBC,EAAW,MAAMD,EAAM,SAAS,EAChC,MAAMK,EAAO,UAAU,CAAC,EACxB,IAAIrK,EAAM,UAAU,CAAC,GACjBqK,IAAS,iBACTA,IAAS,iBACTA,IAAS,gBACTrK,EAAMA,EAAM,KAAK,OAAO,cAAa,GAEzCgK,EAAK,OAAO,CACR,SAAUK,EACV,IAAKrK,CACrB,CAAa,CACL,CACJ,CACA,+BAA+BsK,EAAM,CACjC,MAAMC,EAAKD,EAAK,MAAM,yBACV,CAACC,GAAMA,IAAO,eAEtB,KAAK,QAAQ,2BAA4BA,CAAE,CAEnD,CACJ,CACA1D,GAAmB,QAAQ,SAAUwD,EAAM,CACvC,OAAO,eAAepD,GAAQ,UAAWoD,EAAM,CAC3C,KAAM,CACF,OAAO,KAAK,SAASA,CAAI,CAC7B,EACA,IAAIrK,EAAK,CACL,KAAK,SAASqK,CAAI,EAAIrK,CAC1B,CACR,CAAK,CACL,CAAC,EACM,MAAMwK,WAAqBvD,EAAQ,CACtC,YAAYzG,EAAQ,CAAE,mBAAAiK,EAAqB,EAAK,EAAK,CAAA,EAAI,CACrD,MAAMjK,CAAM,EACZ,KAAK,SAAWA,EAAO,QAAQ,WAAW,KAAM,CAC5C,mBAAAiK,CACZ,CAAS,CACL,CACA,WAAWvD,EAAO,CACd,MAAMwD,EAAOxD,EAAM,KAAI,EACvB,KAAK,QAAQ,YAAawD,CAAI,EAC9BxD,EAAM,UAAU,IAAI,CACxB,CACA,aAAaA,EAAO,CAChB,MAAMzC,EAAU,KAAK,SACjB,mBAAoBA,IACpBA,EAAQ,eAAiBA,EAAQ,sBAC3B,OACA,WAEV,KAAK,QAAQ,YAAayC,EAAM,gBAAe,CAAE,EACjDA,EAAM,UAAU,IAAI,CACxB,CACA,oBAAoBA,EAAO,CACvB,MAAMyD,EAAMzD,EAAM,mBAAkB,EAChCyD,IACA,KAAK,QAAQ,YAAaA,CAAG,EAC7BzD,EAAM,UAAU,IAAI,EAE5B,CACA,oBAAoBA,EAAO,CACvB,MAAMyD,EAAMzD,EAAM,mBAAkB,EAChCyD,IACA,KAAK,QAAQ,YAAaA,CAAG,EAC7BzD,EAAM,UAAU,IAAI,EAE5B,CACA,MAAMA,EAAO,CACT,MAAM0D,EAAW1D,EAAM,KAAI,EAAI2D,EAAe3D,EAAM,gBAAe,EACnE,GAAI0D,GAAYC,IAAiB,QAAS,CACtC,KAAK,WAAW3D,CAAK,EACrB,MACJ,CACA,MAAM4D,EAAa5D,EAAM,oBAAmB,EAC5C,GAAI4D,GAAcD,IAAiB,UAAW,CAC1C,KAAK,aAAa3D,CAAK,EACvB,MACJ,CACA,MAAM6D,EAAoB7D,EAAM,gCAA+B,EAC/D,GAAI6D,GAAqBF,IAAiB,kBAAmB,CACzD,KAAK,oBAAoB3D,CAAK,EAC9B,MACJ,CACA,MAAM8D,EAAoB9D,EAAM,gCAA+B,EAC/D,GAAI8D,GAAqBH,IAAiB,kBAAmB,CACzD,KAAK,oBAAoB3D,CAAK,EAC9B,MACJ,CACI0D,EACA,KAAK,WAAW1D,CAAK,EAEhB4D,EACL,KAAK,aAAa5D,CAAK,EAElB6D,EACL,KAAK,oBAAoB7D,CAAK,EAEzB8D,GACL,KAAK,oBAAoB9D,CAAK,CAEtC,CACA,sBAAsBA,EAAO,CACzB,MAAMnD,EAAQmD,EAAM,oCAAqClD,EAAMkD,EAAM,gCAA+B,EAAI+D,EAAa/D,EAAM,kCAAiC,EAAIyD,EAAM,KAAK,qBAAqB5G,EAAM,EAAGA,EAAM,EAAGC,EAAI,EAAGA,EAAI,CAAC,EAC9N,GAAIiH,EAAY,CACZ,QAAS/G,EAAI,EAAGA,EAAI+G,EAAW,OAAQ/G,GAAK,EACxCyG,EAAI,aAAaM,EAAW/G,CAAC,EAAG+G,EAAW/G,EAAI,CAAC,CAAC,EAErD,KAAK,QAAQ,cAAeyG,CAAG,CACnC,CACJ,CACA,QAAQzD,EAAO,CACX,MAAMgE,EAAOhE,EAAM,KAAI,EAAIiE,EAAqBjE,EAAM,sBAAqB,EAC3E,GAAIA,EAAM,YAAa,CACnB,GAAI,CAACiE,EAAoB,CACrB,KAAK,KAAI,EACT,MAAM1D,EAAa,KAAK,UAAS,EAAG,cAAa,EACjD,KAAK,aAAaA,EAAY,EAAG,EAAGA,EAAY,EAAG,CAAC,CACxD,CACA,KAAK,cAAcP,CAAK,EACpBgE,GAAQhE,EAAM,gBACd,KAAK,YAAYgE,CAAI,EACrB,KAAK,QAAQ,iBAAkBhE,EAAM,WAAU,CAAE,GAErD,KAAK,QAAQ,YAAaA,EAAM,YAAW,CAAE,EACxCA,EAAM,6BACP,KAAK,QAAQ,cAAe,eAAe,EAErBA,EAAM,kCAAiC,EAE7D,KAAK,sBAAsBA,CAAK,EAGhC,KAAK,QAAQ,cAAeA,EAAM,OAAM,CAAE,EAE9CA,EAAM,YAAY,IAAI,EACjBiE,GACD,KAAK,QAAO,CAEpB,CACJ,CACA,aAAajE,EAAO,CAChB,IAAIzL,EAAIC,EAAI0P,EACZ,MAAMjK,GAAS1F,EAAKyL,EAAM,cAAa,KAAQ,MAAQzL,IAAO,OAASA,EAAK,QAAS4P,GAAQ3P,EAAKwL,EAAM,mBAAqB,MAAQxL,IAAO,OAASA,EAAK,EAAG4P,GAAUF,EAAKlE,EAAM,gBAAe,KAAQ,MAAQkE,IAAO,OAASA,EAAK,CAClO,EAAG,EACH,EAAG,CACf,EAAWG,EAAQrE,EAAM,iBAAgB,EAAIsE,EAAQ,KAAK,OAAO,cAAa,EAAIC,EAASF,EAAM,EAAIC,EAAOE,EAASH,EAAM,EAAIC,EACvH,KAAK,QAAQ,cAAerK,CAAK,EACjC,KAAK,QAAQ,aAAckK,EAAO,KAAK,IAAI,KAAK,IAAII,CAAM,EAAG,KAAK,IAAIC,CAAM,CAAC,CAAC,EAC9E,KAAK,QAAQ,gBAAiBJ,EAAO,EAAIG,CAAM,EAC/C,KAAK,QAAQ,gBAAiBH,EAAO,EAAII,CAAM,CACnD,CACJ,CACO,MAAMC,WAAmB1E,EAAQ,CACpC,YAAYzG,EAAQ,CAChB,MAAMA,CAAM,EACZ,KAAK,SAAWA,EAAO,QAAQ,WAAW,KAAM,CAC5C,mBAAoB,EAChC,CAAS,CACL,CACA,MAAM0G,EAAO,CACT,KAAK,KAAI,EACT,KAAK,QAAQ,YAAaA,EAAM,QAAQ,EACxCA,EAAM,aAAa,IAAI,EACvB,KAAK,QAAO,CAChB,CACA,YAAYA,EAAO,CACXA,EAAM,gBACN,KAAK,QAAQA,CAAK,CAE1B,CACA,QAAQA,EAAO,CACX,GAAIA,EAAM,eAAgB,CACtB,MAAMiE,EAAqBjE,EAAM,sBAAqB,EACtD,GAAI,CAACiE,EAAoB,CACrB,KAAK,KAAI,EACT,MAAM1D,EAAa,KAAK,UAAS,EAAG,cAAa,EACjD,KAAK,aAAaA,EAAY,EAAG,EAAGA,EAAY,EAAG,CAAC,CACxD,CACA,KAAK,cAAcP,CAAK,EACxB,MAAM0E,EAAiB1E,EAAM,eAAc,EACrC2E,EAAcD,IAAmB,OAAS1E,EAAM,YAAW,EAAK0E,EACtE,KAAK,QAAQ,YAAaC,CAAW,EACrC,KAAK,QAAQ,cAAe3E,EAAM,QAAQ,EAC1CA,EAAM,eAAe,IAAI,EACpBiE,GACD,KAAK,QAAO,CAEpB,CACJ,CACJ,CCnjBA,IAAIW,GACJ,SAASC,IAAsB,CAC3B,GAAID,GACA,OAAOA,GAEX,MAAMtL,EAASzC,EAAK,oBAAmB,EACjC0G,EAAUjE,EAAO,WAAW,IAAI,EACtC,OAAAsL,IAAe,UAAY,CACvB,MAAME,EAAmB1Q,EAAM,QAAQ,kBAAoB,EAAG2Q,EAAoBxH,EAAQ,8BACtFA,EAAQ,2BACRA,EAAQ,0BACRA,EAAQ,yBACRA,EAAQ,wBACR,EACJ,OAAOuH,EAAmBC,CAC9B,GAAC,EACDlO,EAAK,cAAcyC,CAAM,EAClBsL,EACX,CACO,MAAMI,EAAO,CAChB,YAAYC,EAAQ,CAChB,KAAK,WAAa,EAClB,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,QAAU,GAEf,MAAM1E,GADO0E,GAAU,CAAA,GACC,YAAc7Q,EAAM,YAAcyQ,GAAmB,EAC7E,KAAK,WAAatE,EAClB,KAAK,QAAU1J,EAAK,oBAAmB,EACvC,KAAK,QAAQ,MAAM,QAAU,IAC7B,KAAK,QAAQ,MAAM,OAAS,IAC5B,KAAK,QAAQ,MAAM,OAAS,IAC5B,KAAK,QAAQ,MAAM,WAAa,cAChC,KAAK,QAAQ,MAAM,SAAW,WAC9B,KAAK,QAAQ,MAAM,IAAM,IACzB,KAAK,QAAQ,MAAM,KAAO,GAC9B,CACA,YAAa,CACT,OAAO,KAAK,OAChB,CACA,eAAgB,CACZ,OAAO,KAAK,UAChB,CACA,cAAc0J,EAAY,CACtB,MAAM2E,EAAgB,KAAK,WAC3B,KAAK,WAAa3E,EAClB,KAAK,QAAQ,KAAK,SAAQ,EAAK2E,EAAe,KAAK,UAAS,EAAKA,CAAa,CAClF,CACA,SAAS1H,EAAO,CACZ,KAAK,MAAQ,KAAK,QAAQ,MAAQA,EAAQ,KAAK,WAC/C,KAAK,QAAQ,MAAM,MAAQA,EAAQ,KACnC,MAAM+C,EAAa,KAAK,WAAuB,KAAK,WAAU,EAAG,SACxD,MAAMA,EAAYA,CAAU,CACzC,CACA,UAAU9C,EAAQ,CACd,KAAK,OAAS,KAAK,QAAQ,OAASA,EAAS,KAAK,WAClD,KAAK,QAAQ,MAAM,OAASA,EAAS,KACrC,MAAM8C,EAAa,KAAK,WAAuB,KAAK,WAAU,EAAG,SACxD,MAAMA,EAAYA,CAAU,CACzC,CACA,UAAW,CACP,OAAO,KAAK,KAChB,CACA,WAAY,CACR,OAAO,KAAK,MAChB,CACA,QAAQ/C,EAAOC,EAAQ,CACnB,KAAK,SAASD,GAAS,CAAC,EACxB,KAAK,UAAUC,GAAU,CAAC,CAC9B,CACA,iBAAiBD,EAAOC,EAAQ,EACxB,KAAK,QAAUD,EAAQ,KAAK,YAC5B,KAAK,SAAWC,EAAS,KAAK,aAC9B,KAAK,QAAQD,EAAOC,CAAM,CAElC,CACA,UAAU0H,EAAUC,EAAS,CACzB,GAAI,CACA,OAAO,KAAK,QAAQ,UAAUD,EAAUC,CAAO,CACnD,MACU,CACN,GAAI,CACA,OAAO,KAAK,QAAQ,UAAS,CACjC,OACOC,EAAK,CACR,OAAAxO,EAAK,MAAM,2BACPwO,EAAI,QACJ,yEAAyE,EACtE,EACX,CACJ,CACJ,CACJ,CACO,MAAMC,WAAoBN,EAAO,CACpC,YAAYC,EAAS,CAAE,MAAO,EAAG,OAAQ,EAAG,mBAAoB,IAAS,CACrE,MAAMA,CAAM,EACZ,KAAK,QAAU,IAAI3B,GAAa,KAAM,CAClC,mBAAoB2B,EAAO,kBACvC,CAAS,EACD,KAAK,QAAQA,EAAO,MAAOA,EAAO,MAAM,CAC5C,CACJ,CACO,MAAMM,WAAkBP,EAAO,CAClC,YAAYC,EAAS,CAAE,MAAO,EAAG,OAAQ,GAAK,CAC1C,MAAMA,CAAM,EACZ,KAAK,UAAY,GACjB,KAAK,QAAU,IAAIR,GAAW,IAAI,EAClC,KAAK,QAAQQ,EAAO,MAAOA,EAAO,MAAM,CAC5C,CACJ,CC9GO,MAAMO,GAAK,CACd,IAAI,YAAa,CACb,IAAIC,EAAO,GACX,OAAAD,GAAG,cAAc,QAASE,GAAS,CAC3BA,EAAK,aAAe,aACpBD,EAAO,GAEf,CAAC,EACMA,CACX,EACA,YAAa,GACb,IAAI,MAAO,CACP,IAAIrC,EACJ,OAAAoC,GAAG,cAAc,QAASE,GAAS,CAC/BtC,EAAOsC,EAAK,IAChB,CAAC,EACMtC,CACX,EACA,cAAe,IAAI,IACnB,gBAAgBtL,EAAK,CACjB,MAAM6N,EAAiBtI,GAAQmI,GAAG,eAAenI,EAAKvF,CAAG,EACnD8N,EAAQvI,GAAQmI,GAAG,MAAMnI,EAAKvF,CAAG,EACvCA,EAAI,iBAAiB,UAAW6N,EAAe,EAAI,EACnD7N,EAAI,iBAAiB,WAAY6N,EAAe,EAAI,EACpD7N,EAAI,iBAAiB,cAAe6N,EAAe,EAAI,EACvD7N,EAAI,iBAAiB,YAAa8N,CAAI,EACtC9N,EAAI,iBAAiB,YAAa8N,CAAI,EACtC9N,EAAI,iBAAiB,UAAW0N,GAAG,cAAe,EAAK,EACvD1N,EAAI,iBAAiB,WAAY0N,GAAG,cAAe,EAAK,EACxD1N,EAAI,iBAAiB,cAAe0N,GAAG,cAAe,EAAK,CAC/D,EACA,MAAMnI,EAAKvF,EAAK,CACZ,MAAM+N,EAAoB,CAAA,EAC1BL,GAAG,cAAc,QAAQ,CAACE,EAAM3K,IAAQ,CACpC,KAAM,CAAE,KAAAqI,CAAI,EAAKsC,EACXI,EAAQ1C,EAAK,SAAQ,EAC3B,GAAItL,GAAOgO,EAAM,gBAAe,IAAOhO,EACnC,OAEJgO,EAAM,qBAAqBzI,CAAG,EAC1BqI,EAAK,YAAc,SACnBA,EAAK,UAAY7O,EAAK,mBAAmBwG,CAAG,GAEhD,MAAM0I,EAAMD,EAAM,yBAAyB,KAAMC,GAAQA,EAAI,KAAOL,EAAK,SAAS,EAClF,GAAKK,EAGL,CAAA,GAAIL,EAAK,aAAe,WAAY,CAChC,MAAMM,EAAe5C,EAAK,aAAY,EAMtC,GALiB,KAAK,IAAI,KAAK,IAAI2C,EAAI,EAAIL,EAAK,gBAAgB,CAAC,EAAG,KAAK,IAAIK,EAAI,EAAIL,EAAK,gBAAgB,CAAC,CAAC,EAC7FM,IAGf5C,EAAK,UAAU,CAAE,IAAA/F,EAAK,EAClB,CAAC+F,EAAK,cACN,MAER,CACAA,EAAK,iBAAiB/F,EAAKqI,CAAI,EAC/BG,EAAkB,KAAKzC,CAAI,EAC/B,CAAC,EACDyC,EAAkB,QAASzC,GAAS,CAC3BA,EAAK,YAGVA,EAAK,KAAK,WAAY,CAClB,KAAM,WACN,OAAQA,EACR,IAAK/F,CACrB,EAAe,EAAI,CACX,CAAC,CACL,EACA,eAAeA,EAAKvF,EAAK,CACrB,MAAMmO,EAAY,CAAA,EAClBT,GAAG,cAAc,QAASE,GAAS,CAC/B,KAAM,CAAE,KAAAtC,CAAI,EAAKsC,EACXI,EAAQ1C,EAAK,SAAQ,EAK3B,GAJI/F,IAAQ,CAACvF,GAAOgO,EAAM,gBAAe,IAAOhO,IAC5CgO,EAAM,qBAAqBzI,CAAG,EAG9B,CADQyI,EAAM,yBAAyB,KAAMC,GAAQA,EAAI,KAAOL,EAAK,SAAS,EAE9E,QAEAA,EAAK,aAAe,YAAcA,EAAK,aAAe,aACtDF,GAAG,YAAc,GACjBpR,EAAM,kBAAoB,GAC1BA,EAAM,kBAAoB,GAC1BA,EAAM,oBAAsB,GAC5BsR,EAAK,WAAa,WAEtB,MAAMQ,EAAWR,EAAK,KAAK,SAAQ,GAC9BA,EAAK,gBAAgBtR,EAAM,OAAYsR,EAAK,KAC7CQ,GAAYD,EAAU,QAAQC,CAAQ,IAAM,IAC5CD,EAAU,KAAKC,CAAQ,CAE/B,CAAC,EACDD,EAAU,QAASC,GAAa,CAC5BA,EAAS,KAAI,CACjB,CAAC,CACL,EACA,cAAc7I,EAAK,CACfmI,GAAG,cAAc,QAAQ,CAACE,EAAM3K,IAAQ,CAChC2K,EAAK,aAAe,WACpBA,EAAK,KAAK,KAAK,UAAW,CACtB,KAAM,UACN,OAAQA,EAAK,KACb,IAAKrI,CACzB,EAAmB,EAAI,EAEPqI,EAAK,aAAe,YACpBF,GAAG,cAAc,OAAOzK,CAAG,CAEnC,CAAC,CACL,CACJ,ECnHA,SAASoL,GAAarN,EAAK,CACvB,OAAIjC,EAAK,UAAUiC,CAAG,EACX,IAAMA,EAAM,IAEnB,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,mBAGxCjC,EAAK,WAAWiC,CAAG,EACZA,EAEJ,OAAO,UAAU,SAAS,KAAKA,CAAG,CAC7C,CACO,SAASsN,GAAatN,EAAK,CAC9B,OAAIA,EAAM,IACC,IAEFA,EAAM,EACJ,EAEJ,KAAK,MAAMA,CAAG,CACzB,CAUO,SAASuN,GAAqB,CACjC,GAAIjS,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,OAAKhK,EAAK,UAAUiC,CAAG,GACnBjC,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,4CAA4C,EAE7C/H,CACX,CAER,CACO,SAASwN,GAAmCC,EAAc,CAC7D,GAAInS,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,IAAI2F,EAAW3P,EAAK,UAAUiC,CAAG,EAC7B2N,EAAe5P,EAAK,SAASiC,CAAG,GAAKA,EAAI,QAAUyN,EACvD,MAAI,CAACC,GAAY,CAACC,GACd5P,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,8DACA0F,EACA,GAAG,EAEJzN,CACX,CAER,CACO,SAAS4N,IAA2B,CACvC,GAAItS,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CAGxB,OAFiBhK,EAAK,UAAUiC,CAAG,GACpBA,IAAQ,QAEnBjC,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,sDAAsD,EAEvD/H,CACX,CAER,CACO,SAAS6N,IAAqB,CACjC,GAAIvS,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,OAAKhK,EAAK,UAAUiC,CAAG,GACnBjC,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,4CAA4C,EAE7C/H,CACX,CAER,CACO,SAAS8N,IAA+B,CAC3C,GAAIxS,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,MAAMgG,EAAWhQ,EAAK,UAAUiC,CAAG,EAC7BgO,EAAa,OAAO,UAAU,SAAS,KAAKhO,CAAG,IAAM,2BACtDA,GAAOA,EAAI,aAChB,OAAM+N,GAAYC,GACdjQ,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,iEAAiE,EAElE/H,CACX,CAER,CAcO,SAASiO,IAA0B,CACtC,GAAI3S,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,MAAMmG,EAAa,UAAY,OAAO,eAAe,SAAS,EAAI,KAClE,OAAIA,GAAclO,aAAekO,IAG5BnQ,EAAK,SAASiC,CAAG,EAOlBA,EAAI,QAAQ,SAAUmO,EAAM,CACnBpQ,EAAK,UAAUoQ,CAAI,GACpBpQ,EAAK,KAAK,IACNgK,EACA,uCACAoG,EACA,4CAA4C,CAExD,CAAC,EAdDpQ,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,sDAAsD,GAavD/H,CACX,CAER,CACO,SAASoO,IAAsB,CAClC,GAAI9S,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CAExB,OADe/H,IAAQ,IAAQA,IAAQ,IAEnCjC,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,6CAA6C,EAE9C/H,CACX,CAER,CACO,SAASqO,GAAsBjP,EAAY,CAC9C,GAAI9D,EAAM,aACN,OAAO,SAAU0E,EAAK+H,EAAM,CACxB,OAAyB/H,GAAQ,MAG5BjC,EAAK,SAASiC,CAAG,GAClBjC,EAAK,KAAKsP,GAAarN,CAAG,EACtB,8BACA+H,EACA,8DACA3I,CAAU,EAEXY,CACX,CAER,CC/KA,MAAMsO,GAAM,MACNC,GAAM,MACCC,EAAU,CACnB,gBAAgBC,EAAa1G,EAAM2G,EAAKC,EAAWC,EAAO,CACtDJ,EAAQ,UAAUC,EAAa1G,EAAM2G,CAAG,EACxCF,EAAQ,UAAUC,EAAa1G,EAAM4G,EAAWC,CAAK,EACrDJ,EAAQ,0BAA0BC,EAAa1G,CAAI,CACvD,EACA,UAAU0G,EAAa1G,EAAM2G,EAAK,CAC9B,MAAMnH,EAAS+G,GAAMvQ,EAAK,YAAYgK,CAAI,EAC1C0G,EAAY,UAAUlH,CAAM,EACxBkH,EAAY,UAAUlH,CAAM,GACxB,UAAY,CACR,MAAMvH,EAAM,KAAK,MAAM+H,CAAI,EAC3B,OAAO/H,IAAQ,OAAY0O,EAAM1O,CACrC,CACZ,EACA,UAAUyO,EAAa1G,EAAM4G,EAAWC,EAAO,CAC3C,MAAMrH,EAASgH,GAAMxQ,EAAK,YAAYgK,CAAI,EACrC0G,EAAY,UAAUlH,CAAM,GAC7BiH,EAAQ,gBAAgBC,EAAa1G,EAAM4G,EAAWC,CAAK,CAEnE,EACA,gBAAgBH,EAAa1G,EAAM4G,EAAWC,EAAO,CACjD,MAAMrH,EAASgH,GAAMxQ,EAAK,YAAYgK,CAAI,EAC1C0G,EAAY,UAAUlH,CAAM,EAAI,SAAUvH,EAAK,CAC3C,OAAI2O,GAAa3O,IAAQ,QAAaA,IAAQ,OAC1CA,EAAM2O,EAAU,KAAK,KAAM3O,EAAK+H,CAAI,GAExC,KAAK,SAASA,EAAM/H,CAAG,EACnB4O,GACAA,EAAM,KAAK,IAAI,EAEZ,IACX,CACJ,EACA,0BAA0BH,EAAa1G,EAAM3I,EAAYuP,EAAWC,EAAO,CACvE,MAAM1I,EAAM9G,EAAW,OAAQyP,EAAa9Q,EAAK,YAAa+Q,EAASR,GAAMO,EAAW9G,CAAI,EAAGgH,EAASR,GAAMM,EAAW9G,CAAI,EAC7H0G,EAAY,UAAUK,CAAM,EAAI,UAAY,CACxC,MAAM1E,EAAM,CAAA,EACZ,QAASlG,EAAI,EAAGA,EAAIgC,EAAKhC,IAAK,CAC1B,MAAM8K,EAAY5P,EAAW8E,CAAC,EAC9BkG,EAAI4E,CAAS,EAAI,KAAK,QAAQjH,EAAO8G,EAAWG,CAAS,CAAC,CAC9D,CACA,OAAO5E,CACX,EACA,MAAM6E,EAAiBZ,GAAsBjP,CAAU,EACvDqP,EAAY,UAAUM,CAAM,EAAI,SAAU/O,EAAK,CAC3C,MAAMkP,EAAS,KAAK,MAAMnH,CAAI,EAC1B4G,IACA3O,EAAM2O,EAAU,KAAK,KAAM3O,EAAK+H,CAAI,GAEpCkH,GACAA,EAAe,KAAK,KAAMjP,EAAK+H,CAAI,EAEvC,UAAW9F,KAAOjC,EACTA,EAAI,eAAeiC,CAAG,GAG3B,KAAK,SAAS8F,EAAO8G,EAAW5M,CAAG,EAAGjC,EAAIiC,CAAG,CAAC,EAElD,OAAKjC,GACDZ,EAAW,QAAS4P,GAAc,CAC9B,KAAK,SAASjH,EAAO8G,EAAWG,CAAS,EAAG,MAAS,CACzD,CAAC,EAEL,KAAK,iBAAiBjH,EAAMmH,EAAQlP,CAAG,EACnC4O,GACAA,EAAM,KAAK,IAAI,EAEZ,IACX,EACAJ,EAAQ,0BAA0BC,EAAa1G,CAAI,CACvD,EACA,0BAA0B0G,EAAa1G,EAAM,CACzC,MAAMoH,EAAkBpR,EAAK,YAAYgK,CAAI,EAAGgH,EAASR,GAAMY,EAAiBL,EAASR,GAAMa,EAC/FV,EAAY,UAAU1G,CAAI,EAAI,UAAY,CACtC,OAAI,UAAU,QACV,KAAKgH,CAAM,EAAE,UAAU,CAAC,CAAC,EAClB,MAEJ,KAAKD,CAAM,EAAC,CACvB,CACJ,EACA,0BAA0BL,EAAa1G,EAAM2G,EAAKC,EAAW,CACzD5Q,EAAK,MAAM,qBAAuBgK,CAAI,EACtC,MAAMR,EAAS+G,GAAMvQ,EAAK,YAAYgK,CAAI,EACpCqH,EAAUrH,EACZ,mGACJ0G,EAAY,UAAUlH,CAAM,EAAI,UAAY,CACxCxJ,EAAK,MAAMqR,CAAO,EAClB,MAAMpP,EAAM,KAAK,MAAM+H,CAAI,EAC3B,OAAO/H,IAAQ,OAAY0O,EAAM1O,CACrC,EACAwO,EAAQ,UAAUC,EAAa1G,EAAM4G,EAAW,UAAY,CACxD5Q,EAAK,MAAMqR,CAAO,CACtB,CAAC,EACDZ,EAAQ,0BAA0BC,EAAa1G,CAAI,CACvD,EACA,WAAW0G,EAAaY,EAAS,CAC7BtR,EAAK,KAAKsR,EAAS,SAAUC,EAAeC,EAAe,CACvD,MAAMhI,EAASkH,EAAY,UAAUc,CAAa,EAC5CC,EAAYlB,GAAMvQ,EAAK,YAAYuR,CAAa,EAChDG,EAAYlB,GAAMxQ,EAAK,YAAYuR,CAAa,EACtD,SAASI,GAAa,CAClBnI,EAAO,MAAM,KAAM,SAAS,EAC5BxJ,EAAK,MAAM,IACPuR,EACA,0DACAC,EACA,YAAY,CACpB,CACAd,EAAY,UAAUa,CAAa,EAAII,EACvCjB,EAAY,UAAUe,CAAS,EAAIE,EACnCjB,EAAY,UAAUgB,CAAS,EAAIC,CACvC,CAAC,CACL,EACA,gBAAiB,CACb,KAAK,gBAAkB,EAC3B,CACJ,ECnHA,SAASC,GAAgBC,EAAW,CAChC,MAAMC,EAAc,oBACpB,IAAInQ,EACJ,MAAQA,EAAQmQ,EAAY,KAAKD,CAAS,KAAO,MAAM,CACnD,KAAM,CAAA,CAAGE,EAAYC,CAAW,EAAIrQ,EACpC,OAAQoQ,EAAU,CACd,IAAK,OAAQ,CACT,MAAME,EAAa,WAAWD,EAAY,QAAQ,KAAM,EAAE,CAAC,EAC3D,OAAO,SAAUpG,EAAW,CACxB,KAAK,WAAWqG,EAAa,EAAG,EAChC,MAAMC,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,MAC7BA,EAAa,KAAK,KAAK,KAAMtG,CAAS,CAE9C,CACJ,CACA,IAAK,aAAc,CACf,MAAMuG,EAAaH,EAAY,SAAS,GAAG,EACrC,WAAWA,CAAW,EAAI,IAC1B,WAAWA,CAAW,EAC5B,OAAO,SAAUpG,EAAW,CACxB,KAAK,WAAWuG,CAAU,EAC1B,MAAMD,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,YAC7BA,EAAa,WAAW,KAAK,KAAMtG,CAAS,CAEpD,CACJ,CACA,IAAK,WAAY,CACb,MAAMwG,EAAW,WAAWJ,CAAW,EACvC,OAAO,SAAUpG,EAAW,CACxB,MAAMyG,EAAgB,KAAO,KAAK,KAAKD,CAAQ,EAAI,GACnD,KAAK,SAASC,CAAa,EAC3B,MAAMH,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,UAC7BA,EAAa,SAAS,KAAK,KAAMtG,CAAS,CAElD,CACJ,CACA,IAAK,YACD,OAAO,SAAUA,EAAW,CACxB,MAAMsG,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,WAC7BA,EAAa,UAAU,KAAK,KAAMtG,CAAS,CAEnD,EAEJ,IAAK,QACD,OAAO,SAAUA,EAAW,CACxB,MAAMsG,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,OAC7BA,EAAa,MAAM,KAAK,KAAMtG,CAAS,CAE/C,EAEJ,IAAK,SACD,OAAO,SAAUA,EAAW,CACxB,MAAMsG,EAAe3U,EAAM,QACvB2U,GAAgBA,EAAa,QAC7BA,EAAa,OAAO,KAAK,KAAMtG,CAAS,CAEhD,EAEJ,QACI5L,EAAK,KAAK,eAAe+R,CAAU,gGAAgG,EACnI,KAChB,CACI,CACA,MAAO,IAAM,CAAE,CACnB,CACK,MAACO,GAAmB,kBAAmBC,GAAgB,oBAAqBC,GAAqB,oBAAqBC,GAAiB,gBAAiBC,GAAS,SAAUC,GAAS,SAAUC,GAAW,WAAYC,GAAQ,QAASC,GAAY,YAAaC,GAAa,aAAcC,GAAa,aAAcC,GAAe,eAAgBC,GAAe,eAAgBC,GAAa,aAAcC,GAAa,aAA6B5C,GAAM,MAAO6C,GAAQ,QAASC,GAAQ,IAAKC,GAAQ,QAASC,GAAY,YAAaC,GAAc,QAASC,GAAU,UAAWC,GAAuB,CACjlB,gBACA,gBACA,qBACA,qBACA,oBACA,oBACA,uBACA,sBACA,sBACA,+BACJ,EAAE,KAAKL,EAAK,EACZ,IAAIM,GAAY,EACTC,EAAA,MAAMC,EAAK,CACd,YAAY1F,EAAQ,CAChB,KAAK,IAAMwF,KACX,KAAK,eAAiB,CAAA,EACtB,KAAK,MAAQ,CAAA,EACb,KAAK,MAAQ,EACb,KAAK,mBAAqB,KAC1B,KAAK,OAAS,KACd,KAAK,OAAS,IAAI,IAClB,KAAK,uBAAyB,IAAI,IAClC,KAAK,SAAW,KAChB,KAAK,yBAA2B,GAChC,KAAK,yBAA2B,GAChC,KAAK,gBAAkB,GACvB,KAAK,cAAgB,GACrB,KAAK,aAAe,KACpB,KAAK,wBAA0B,GAC/B,KAAK,SAASxF,CAAM,EACpB,KAAK,wBAA0B,EACnC,CACA,aAAc,CACV,MAAO,EACX,CACA,YAAYpE,EAAM,EACTA,IAASwJ,IAAaxJ,IAASwI,KAChC,KAAK,OAAO,IAAIxI,CAAI,EACpB,KAAK,OAAO,IAAIA,CAAI,EAAE,MAAQ,GAEzBA,EACL,KAAK,OAAO,OAAOA,CAAI,EAGvB,KAAK,OAAO,MAAK,CAEzB,CACA,UAAUA,EAAM+J,EAAe,CAC3B,IAAIC,EAAQ,KAAK,OAAO,IAAIhK,CAAI,EAGhC,OADgBgK,IAAU,SADNhK,IAASwJ,IAAaxJ,IAASwI,KACIwB,EAAM,QAAU,MAEnEA,EAAQD,EAAc,KAAK,IAAI,EAC/B,KAAK,OAAO,IAAI/J,EAAMgK,CAAK,GAExBA,CACX,CACA,WAAWpX,EAAMqX,EAAMlD,EAAQ,CAC3B,GAAI,CAAC,KAAK,uBAAuB,IAAInU,CAAI,EAAG,CACxC,MAAMsX,EAAaD,EAAK,IAAKE,GAAQA,EAAM,cAAc,EAAE,KAAKb,EAAK,EACrE,KAAK,GAAGY,EAAY,IAAM,CACtB,KAAK,YAAYtX,CAAI,CACzB,CAAC,EACD,KAAK,uBAAuB,IAAIA,EAAM,EAAI,CAC9C,CACA,OAAO,KAAK,UAAUA,EAAMmU,CAAM,CACtC,CACA,iBAAkB,CACd,OAAO,KAAK,OAAO,IAAI2B,EAAM,CACjC,CACA,6BAA6B1I,EAAM,CAC/B,KAAK,YAAYA,CAAI,EACjBA,IAASwI,IACT,KAAK,KAAK,yBAAyB,CAE3C,CACA,OAAO,6BAA6BhQ,EAAI,CAChCsR,GAAK,0BAA4B,EACjCA,GAAK,qBAAqB,KAAKtR,CAAE,EAGjCA,EAAE,CAEV,CACA,YAAa,CACT,GAAI,KAAK,OAAO,IAAIkQ,EAAM,EAAG,CACzB,KAAM,CAAE,MAAA0B,EAAO,OAAAC,EAAQ,IAAAC,CAAG,EAAK,KAAK,OAAO,IAAI5B,EAAM,EACrD1S,EAAK,cAAcoU,EAAM,QAASC,EAAO,QAAS,GAAIC,EAAM,CAACA,EAAI,OAAO,EAAI,CAAA,CAAG,EAC/E,KAAK,OAAO,OAAO5B,EAAM,CAC7B,CACA,OAAA,KAAK,6BAA4B,EACjC,KAAK,aAAY,EACV,IACX,CACA,MAAMtE,EAAQ,CACV,MAAMmG,EAAOnG,GAAU,CAAA,EACvB,IAAIoG,EAAO,CAAA,GACPD,EAAK,IAAM,QACXA,EAAK,IAAM,QACXA,EAAK,QAAU,QACfA,EAAK,SAAW,UAChBC,EAAO,KAAK,cAAc,CACtB,cAAe,GACf,WAAY,KAAK,UAAS,GAAM,MAChD,CAAa,GAEL,IAAI7N,EAAQ,KAAK,KAAK4N,EAAK,OAASC,EAAK,KAAK,EAAG5N,EAAS,KAAK,KAAK2N,EAAK,QAAUC,EAAK,MAAM,EAAG9K,EAAa6K,EAAK,WAAYnW,EAAImW,EAAK,IAAM,OAAY,KAAK,MAAMC,EAAK,CAAC,EAAID,EAAK,EAAGlW,EAAIkW,EAAK,IAAM,OAAY,KAAK,MAAMC,EAAK,CAAC,EAAID,EAAK,EAAGhH,EAASgH,EAAK,QAAU,EAAGE,EAAaF,EAAK,YAAc,GAAOG,EAAsBH,EAAK,qBAAuB,EACnW,GAAI,CAAC5N,GAAS,CAACC,EAAQ,CACnB5G,EAAK,MAAM,mFAAmF,EAC9F,MACJ,CACA,MAAM2U,EAAgB,KAAK,IAAI,KAAK,MAAMH,EAAK,CAAC,EAAIpW,CAAC,EAAI,GAAM,EAAI,EAC7DwW,EAAgB,KAAK,IAAI,KAAK,MAAMJ,EAAK,CAAC,EAAInW,CAAC,EAAI,GAAM,EAAI,EACnEsI,GAAS4G,EAAS,EAAIoH,EACtB/N,GAAU2G,EAAS,EAAIqH,EACvBxW,GAAKmP,EACLlP,GAAKkP,EACL,MAAMsH,EAAoB,IAAIpG,GAAY,CACtC,WAAY/E,EACZ,MAAO/C,EACP,OAAQC,CACpB,CAAS,EAAGkO,EAAqB,IAAIrG,GAAY,CACrC,WAAY/E,EACZ,MAAO,EACP,OAAQ,EACR,mBAAoB,EAChC,CAAS,EAAGqL,EAAeF,EAAkB,WAAU,EACzCG,EAAe,IAAIvG,GAAY,CACjC,MAAOoG,EAAkB,MAAQA,EAAkB,WAAa,KAAK,IAAIzW,CAAC,EAC1E,OAAQyW,EAAkB,OAASA,EAAkB,WAAa,KAAK,IAAIxW,CAAC,EAC5E,WAAYwW,EAAkB,UAC1C,CAAS,EAAGI,EAAgBD,EAAa,WAAU,EAC3C,OAAAH,EAAkB,QAAU,GAC5B,KAAK,OAAO,OAAOnC,EAAM,EACzB,KAAK,gBAAkB,GACnB6B,EAAK,wBAA0B,KAC/BM,EAAkB,WAAU,EAAG,SAAS,sBAAwB,GAChEC,EAAmB,WAAU,EAAG,SAAS,sBAAwB,IAErEC,EAAa,KAAI,EACjBE,EAAc,KAAI,EAClBF,EAAa,UAAU,CAAC3W,EAAG,CAACC,CAAC,EAC7B4W,EAAc,UAAU,CAAC7W,EAAG,CAACC,CAAC,EAC9B2W,EAAa,EAAI5W,EACjB4W,EAAa,EAAI3W,EACjB,KAAK,cAAgB,GACrB,KAAK,6BAA6BiU,EAAgB,EAClD,KAAK,6BAA6BG,EAAc,EAChD,KAAK,UAAUoC,EAAmB,KAAMG,CAAY,EACpD,KAAK,cAAgB,GACrBD,EAAa,QAAO,EAChBN,IACAM,EAAa,KAAI,EACjBA,EAAa,UAAS,EACtBA,EAAa,KAAK,EAAG,EAAGpO,EAAOC,CAAM,EACrCmO,EAAa,UAAS,EACtBA,EAAa,QAAQ,cAAe,KAAK,EACzCA,EAAa,QAAQ,YAAa,CAAC,EACnCA,EAAa,OAAM,EACnBA,EAAa,QAAO,GAExB/U,EAAK,cAAcgV,EAAa,OAAO,EACvC,KAAK,OAAO,IAAItC,GAAQ,CACpB,MAAOmC,EACP,OAAQC,EACR,IAAK,KACL,UAAW,CACP,WAAYJ,EACZ,MAAO/N,EACP,OAAQC,CACxB,EACY,EAAGxI,EACH,EAAGC,CACf,CAAS,EACD,KAAK,aAAY,EACV,IACX,CACA,oBAAoB6W,EAAK,CACrB,GAAIA,IAAQ,KACR,OAAO,KAEX,MAAMlB,EAAQ,KAAK,gBAAe,EAClC,GAAI,CAACA,EACD,OAAO,KAEX,GAAIA,EAAM,IACN,OAAOA,EAAM,IAEjB,MAAMmB,EAAY,IAAIzG,GAAUsF,EAAM,SAAS,EAC/CmB,EAAU,QAAU,GACpB,MAAMC,EAAaD,EAAU,WAAU,EACvC,OAAAC,EAAW,KAAI,EACfA,EAAW,UAAU,CAACpB,EAAM,EAAG,CAACA,EAAM,CAAC,EACvC,KAAK,QAAQmB,EAAW,IAAI,EAC5BC,EAAW,QAAO,EAClBpB,EAAM,IAAMmB,EACLA,CACX,CACA,UAAW,CACP,OAAO,KAAK,OAAO,IAAIzC,EAAM,CACjC,CACA,cAActE,EAAQ,CAClB,MAAM,IAAI,MAAM,sCAAsC,CAC1D,CACA,iBAAiBoG,EAAMU,EAAK,CACxB,MAAM9N,EAAS,CACX,CAAE,EAAGoN,EAAK,EAAG,EAAGA,EAAK,CAAC,EACtB,CAAE,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,CAAC,EACnC,CAAE,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAM,EACjD,CAAE,EAAGA,EAAK,EAAG,EAAGA,EAAK,EAAIA,EAAK,MAAM,CAChD,EACQ,IAAIa,EAAO,IAAUC,EAAO,IAAUC,EAAO,KAAWC,EAAO,KAC/D,MAAMC,EAAQ,KAAK,qBAAqBP,CAAG,EAC3C,OAAA9N,EAAO,QAAQ,SAAUjJ,EAAO,CAC5B,MAAMuX,EAAcD,EAAM,MAAMtX,CAAK,EACjCkX,IAAS,SACTA,EAAOE,EAAOG,EAAY,EAC1BJ,EAAOE,EAAOE,EAAY,GAE9BL,EAAO,KAAK,IAAIA,EAAMK,EAAY,CAAC,EACnCJ,EAAO,KAAK,IAAIA,EAAMI,EAAY,CAAC,EACnCH,EAAO,KAAK,IAAIA,EAAMG,EAAY,CAAC,EACnCF,EAAO,KAAK,IAAIA,EAAME,EAAY,CAAC,CACvC,CAAC,EACM,CACH,EAAGL,EACH,EAAGC,EACH,MAAOC,EAAOF,EACd,OAAQG,EAAOF,CAC3B,CACI,CACA,uBAAuB5O,EAAS,CAC5BA,EAAQ,KAAI,EACZA,EAAQ,cAAc,IAAI,EAC1BA,EAAQ,+BAA+B,IAAI,EAC3C,MAAMiP,EAAc,KAAK,gBAAe,EACxCjP,EAAQ,UAAUiP,EAAY,EAAGA,EAAY,CAAC,EAC9C,MAAMC,EAAc,KAAK,sBAAqB,EACxCnI,EAAQmI,EAAY,WAC1BlP,EAAQ,UAAUkP,EAAY,QAAS,EAAG,EAAGA,EAAY,MAAQnI,EAAOmI,EAAY,OAASnI,CAAK,EAClG/G,EAAQ,QAAO,CACnB,CACA,qBAAqBA,EAASyO,EAAW,CACrC,MAAMQ,EAAc,KAAK,gBAAe,EACxCjP,EAAQ,KAAI,EACZA,EAAQ,UAAUiP,EAAY,EAAGA,EAAY,CAAC,EAC9CjP,EAAQ,UAAUyO,EAAU,QAAS,EAAG,EAAGA,EAAU,MAAQA,EAAU,WAAYA,EAAU,OAASA,EAAU,UAAU,EAC1HzO,EAAQ,QAAO,CACnB,CACA,uBAAwB,CACpB,IAAImP,EAAU,KAAK,UAAWC,EAAe,KAAK,gBAAe,EAAIC,EAAcD,EAAa,MAAOE,EAAeF,EAAa,OAAQG,EAAgBD,EAAa,WAAU,EAAI7N,EAAKyD,EAAWzF,EAAGkO,EACzM,GAAI,CAACwB,GAAWA,EAAQ,SAAW,EAC/B,OAAOE,EAEX,GAAI,KAAK,gBACL,OAAOC,EAEX,IAAIE,EAAgB,GACpB,QAAS/S,EAAI,EAAGA,EAAI0S,EAAQ,OAAQ1S,IAIhC,GAHyB,OAAO0S,EAAQ1S,CAAC,GAAM,UAAa8F,GAAqB,EAG7E,OAAO4M,EAAQ1S,CAAC,GAAM,UAAY,CAAC8F,GAAqB,EAAI,CAC5DiN,EAAgB,GAChB,KACJ,CAEJ,MAAMzI,EAAQsI,EAAY,WAE1B,GADAC,EAAa,QAAQD,EAAY,MAAQA,EAAY,WAAYA,EAAY,OAASA,EAAY,UAAU,EACxGG,EAAe,CACf,MAAMC,EAAcN,EAAQ,KAAK,GAAG,EACpC,OAAAI,EAAc,KAAI,EAClBA,EAAc,QAAQ,SAAUE,CAAW,EAC3CF,EAAc,UAAUF,EAAY,QAAS,EAAG,EAAGA,EAAY,SAAQ,EAAKtI,EAAOsI,EAAY,UAAS,EAAKtI,CAAK,EAClHwI,EAAc,QAAO,EACrB,KAAK,gBAAkB,GAChBD,CACX,CACA,GAAI,CAKA,IAJA7N,EAAM0N,EAAQ,OACdI,EAAc,MAAK,EACnBA,EAAc,UAAUF,EAAY,QAAS,EAAG,EAAGA,EAAY,SAAQ,EAAKtI,EAAOsI,EAAY,UAAS,EAAKtI,CAAK,EAClH7B,EAAYqK,EAAc,aAAa,EAAG,EAAGD,EAAa,SAAQ,EAAIA,EAAa,WAAW,EACzF7P,EAAI,EAAGA,EAAIgC,EAAKhC,IACjBkO,EAASwB,EAAQ1P,CAAC,EACd,OAAOkO,GAAW,WAClBA,EAASzC,GAAgByC,CAAM,GAEnCA,EAAO,KAAK,KAAMzI,CAAS,EAC3BqK,EAAc,aAAarK,EAAW,EAAG,CAAC,CAElD,OACOjM,EAAG,CACNK,EAAK,MAAM,2BACPL,EAAE,QACF,4EAA4E,CACpF,CACA,OAAA,KAAK,gBAAkB,GAChBqW,CACX,CACA,MAAMvM,EAAM,CACR,MAAM2M,EAAS3M,EAAK,CAAC,EACf4M,EAAoB5M,EAAK,CAAC,EAKhC,GAJgBA,EAAK,CAAC,EAClB,KAAK,QACL,KAAK,OAAO,OAAO8I,EAAa,EAEhC9I,EAAK,SAAW,EAChB,OAAO,KAAK,UAAU,MAAM,KAAMA,CAAI,EAE1C,MAAM6M,EAASF,EAAO,MAAM9C,EAAK,EACjC,QAAS,EAAI,EAAG,EAAIgD,EAAO,OAAQ,IAAK,CAEpC,MAAMhT,EADQgT,EAAO,CAAC,EACF,MAAM,GAAG,EACvBC,EAAYjT,EAAM,CAAC,EACnB1G,EAAO0G,EAAM,CAAC,GAAK,GACpB,KAAK,eAAeiT,CAAS,IAC9B,KAAK,eAAeA,CAAS,EAAI,CAAA,GAErC,KAAK,eAAeA,CAAS,EAAE,KAAK,CAAE,KAAA3Z,EAAM,QAASyZ,EAAmB,CAC5E,CACA,OAAO,IACX,CACA,IAAID,EAAQ/T,EAAU,CAClB,IAAIiU,GAAUF,GAAU,IAAI,MAAM9C,EAAK,EAAGnL,EAAMmO,EAAO,OAAQ,EAAGrZ,EAAGuZ,EAAOlT,EAAOiT,EAAW3Z,EAE9F,GADA,KAAK,QAAU,KAAK,OAAO,OAAO2V,EAAa,EAC3C,CAAC6D,EACD,IAAKnZ,KAAK,KAAK,eACX,KAAK,KAAKA,CAAC,EAGnB,IAAK,EAAI,EAAG,EAAIkL,EAAK,IAKjB,GAJAqO,EAAQF,EAAO,CAAC,EAChBhT,EAAQkT,EAAM,MAAM,GAAG,EACvBD,EAAYjT,EAAM,CAAC,EACnB1G,EAAO0G,EAAM,CAAC,EACViT,EACI,KAAK,eAAeA,CAAS,GAC7B,KAAK,KAAKA,EAAW3Z,EAAMyF,CAAQ,MAIvC,KAAKpF,KAAK,KAAK,eACX,KAAK,KAAKA,EAAGL,EAAMyF,CAAQ,EAIvC,OAAO,IACX,CACA,cAAcmE,EAAK,CACf,MAAM7G,EAAI,CACN,OAAQ,KACR,KAAM6G,EAAI,KACV,IAAKA,CACjB,EACQ,OAAA,KAAK,KAAKA,EAAI,KAAM7G,CAAC,EACd,IACX,CACA,iBAAiB8W,EAAMC,EAAS,CAC5B,OAAA,KAAK,GAAGD,EAAM,SAAUjQ,EAAK,CACzBkQ,EAAQ,KAAK,KAAMlQ,EAAI,GAAG,CAC9B,CAAC,EACM,IACX,CACA,oBAAoBiQ,EAAM,CACtB,OAAA,KAAK,IAAIA,CAAI,EACN,IACX,CACA,UAAUD,EAAOtU,EAAUwU,EAAS,CAChC,MAAMC,EAAW,KACjB,OAAA,KAAK,GAAGH,EAAO,SAAUhQ,EAAK,CAC1B,MAAMoQ,EAAUpQ,EAAI,OAAO,cAActE,EAAU,GAAMyU,CAAQ,EACjE,QAASxT,EAAI,EAAGA,EAAIyT,EAAQ,OAAQzT,IAChCqD,EAAMxG,EAAK,YAAYwG,CAAG,EAC1BA,EAAI,cAAgBoQ,EAAQzT,CAAC,EAC7BuT,EAAQ,KAAKE,EAAQzT,CAAC,EAAGqD,CAAG,CAEpC,CAAC,EACM,IACX,CACA,QAAS,CACL,OAAI,KAAK,cACL,KAAK,SAAQ,EAEjBmI,GAAG,cAAc,OAAO,KAAK,GAAG,EAChCA,GAAG,cAAc,QAAQ,CAACE,EAAM3K,IAAQ,CAChC,KAAK,aAAa2K,EAAK,IAAI,GAC3BF,GAAG,cAAc,OAAOzK,CAAG,CAEnC,CAAC,EACD,KAAK,QAAO,EACL,IACX,CACA,cAAe,CACX,KAAK,6BAA6BsO,EAAkB,EACpD,KAAK,6BAA6BF,EAAgB,EAClD,KAAK,6BAA6BG,EAAc,EAChD,KAAK,6BAA6Bc,EAAK,EACvC,KAAK,6BAA6BG,EAAO,EACzC,KAAK,6BAA6BZ,EAAS,CAC/C,CACA,SAAU,CACN,KAAK,aAAY,EACjB,MAAM+D,EAAS,KAAK,UAAS,EACzBA,GAAUA,EAAO,WACjBA,EAAO,SAAS,OAAO,KAAK,MAAO,CAAC,EACpCA,EAAO,oBAAmB,EAC1B,KAAK,OAAS,KAEtB,CACA,SAAU,CACN,OAAA,KAAK,OAAM,EACX,KAAK,WAAU,EACR,IACX,CACA,QAAQ7M,EAAM,CACV,MAAMR,EAAS,MAAQxJ,EAAK,YAAYgK,CAAI,EAC5C,OAAIhK,EAAK,YAAY,KAAKwJ,CAAM,CAAC,EACtB,KAAKA,CAAM,EAAC,EAEhB,KAAK,MAAMQ,CAAI,CAC1B,CACA,cAAe,CACX,IAAI6M,EAAS,KAAK,UAAS,EAAIC,EAAY,CAAA,EAC3C,KAAOD,GACHC,EAAU,KAAKD,CAAM,EACrBA,EAASA,EAAO,UAAS,EAE7B,OAAOC,CACX,CACA,UAAW,CACP,OAAO,KAAK,OAAS,CAAA,CACzB,CACA,SAAS1I,EAAQ,CACb,YAAK,uBAAuB,IAAM,CAC9B,IAAIlK,EAAKsF,EACT,GAAI,CAAC4E,EACD,OAAO,KAEX,IAAKlK,KAAOkK,EACJlK,IAAQ0O,KAGZpJ,EAASgH,GAAMxQ,EAAK,YAAYkE,CAAG,EAC/BlE,EAAK,YAAY,KAAKwJ,CAAM,CAAC,EAC7B,KAAKA,CAAM,EAAE4E,EAAOlK,CAAG,CAAC,EAGxB,KAAK,SAASA,EAAKkK,EAAOlK,CAAG,CAAC,EAG1C,CAAC,EACM,IACX,CACA,aAAc,CACV,OAAO,KAAK,UAAU4O,GAAW,KAAK,YAAY,CACtD,CACA,aAAaiE,EAAY,CAErB,GAAI,CADc,KAAK,UAAS,EAE5B,MAAO,GAEX,MAAMF,EAAS,KAAK,UAAS,EAC7B,OAAIA,GAAUA,IAAWE,GAAc,OAASA,EACrCF,EAAO,aAAaE,CAAU,EAG9B,EAEf,CACA,WAAY,CACR,OAAO,KAAK,UAAUrD,GAAS,KAAK,UAAU,CAClD,CACA,WAAWqD,EAAY,CAEnB,GAAI,CADY,KAAK,QAAO,EAExB,MAAO,GAEX,MAAMF,EAAS,KAAK,UAAS,EAC7B,OAAIA,GAAUA,IAAWE,GAAc,OAASA,EACrCF,EAAO,WAAWE,CAAU,EAG5B,EAEf,CACA,cAAc7B,EAAK8B,EAAgB,GAAO,CACtC,GAAI9B,EACA,OAAO,KAAK,WAAWA,CAAG,GAAK,KAAK,aAAaA,CAAG,EAExD,MAAM+B,EAAQ,KAAK,SAAQ,EAC3B,IAAIC,EAAiB,GACrBvI,GAAG,cAAc,QAASE,GAAS,CAC3BA,EAAK,aAAe,aAGfA,EAAK,KAAK,WAAa,SAGvBA,EAAK,KAAK,SAAQ,IAAOoI,KAC9BC,EAAiB,GAEzB,CAAC,EACD,MAAMC,EAAW,CAACH,GACd,CAACzZ,EAAM,mBACN2Z,GAAkB3Z,EAAM,kBAC7B,OAAO,KAAK,YAAW,GAAM,KAAK,UAAS,GAAM,CAAC4Z,CACtD,CACA,MAAO,CACH,OAAA,KAAK,QAAQ,EAAI,EACV,IACX,CACA,MAAO,CACH,OAAA,KAAK,QAAQ,EAAK,EACX,IACX,CACA,WAAY,CACR,OAAO,KAAK,OAAS,CACzB,CACA,mBAAoB,CAChB,IAAIC,EAAQ,KAAK,SAAQ,EAAInL,EAAO,KAAMoL,EAAQ,EAAGC,EAAOnP,EAAKhC,EAAGoR,EACpE,SAASC,EAAYC,EAAU,CAG3B,IAFAH,EAAQ,CAAA,EACRnP,EAAMsP,EAAS,OACVtR,EAAI,EAAGA,EAAIgC,EAAKhC,IACjBoR,EAAQE,EAAStR,CAAC,EAClBkR,IACIE,EAAM,WAAalE,KACnBiE,EAAQA,EAAM,OAAOC,EAAM,YAAW,EAAG,OAAO,GAEhDA,EAAM,MAAQtL,EAAK,MACnB9F,EAAIgC,GAGRmP,EAAM,OAAS,GAAKA,EAAM,CAAC,EAAE,SAAQ,GAAMF,GAC3CI,EAAYF,CAAK,CAEzB,CACA,MAAMrI,EAAQ,KAAK,SAAQ,EAC3B,OAAIhD,EAAK,WAAawH,IAAexE,GACjCuI,EAAYvI,EAAM,aAAa,EAE5BoI,CACX,CACA,UAAW,CACP,IAAID,EAAQ,EAAGP,EAAS,KAAK,OAC7B,KAAOA,GACHO,IACAP,EAASA,EAAO,OAEpB,OAAOO,CACX,CACA,uBAAuB5S,EAAM,CACzB,KAAK,yBAA2B,GAChCA,EAAI,EACJ,KAAK,yBAA2B,GAC5B,KAAK,2BACL,KAAK,YAAYgP,EAAS,EAC1B,KAAK,6BAA6BhB,EAAkB,GAExD,KAAK,yBAA2B,EACpC,CACA,YAAYtD,EAAK,CACb,OAAA,KAAK,uBAAuB,IAAM,CAC9B,KAAK,EAAEA,EAAI,CAAC,EACZ,KAAK,EAAEA,EAAI,CAAC,CAChB,CAAC,EACM,IACX,CACA,aAAc,CACV,MAAO,CACH,EAAG,KAAK,EAAC,EACT,EAAG,KAAK,EAAC,CACrB,CACI,CACA,4BAA6B,CACzB,MAAMD,EAAQ,KAAK,SAAQ,EAC3B,GAAI,CAACA,EACD,OAAO,KAEX,MAAMC,EAAMD,EAAM,mBAAkB,EACpC,GAAI,CAACC,EACD,OAAO,KAEX,MAAMwI,EAAY,KAAK,qBAAoB,EAAG,KAAI,EAClD,OAAAA,EAAU,OAAM,EACTA,EAAU,MAAMxI,CAAG,CAC9B,CACA,oBAAoBgG,EAAK,CACrB,IAAIyC,EAAmB,GACnBd,EAAS,KAAK,OAClB,KAAOA,GAAQ,CACX,GAAIA,EAAO,WAAY,CACnBc,EAAmB,GACnB,KACJ,CACAd,EAASA,EAAO,MACpB,CACIc,GAAoB,CAACzC,IACrBA,EAAM,IAEV,MAAM0C,EAAiB,KAAK,qBAAqB1C,CAAG,EAAE,UAAS,EAAI2C,EAAoB,IAAI7Z,GAAauP,EAAS,KAAK,OAAM,EAC5H,OAAAsK,EAAkB,EAAID,EAAe,MAAK,EAC1CC,EAAkB,UAAUtK,EAAO,EAAGA,EAAO,CAAC,EACvCsK,EAAkB,eAAc,CAC3C,CACA,oBAAoB3I,EAAK,CACrB,KAAM,CAAE,EAAA9Q,EAAG,EAAAC,EAAG,GAAGyZ,CAAS,EAAK,KAAK,gBAAe,EACnD,KAAK,MAAM,EAAI1Z,EACf,KAAK,MAAM,EAAIC,EACf,KAAK,YAAYmV,EAAS,EAC1B,MAAMuE,EAAK,KAAK,sBAAqB,EAAG,KAAI,EAC5C,OAAAA,EAAG,OAAM,EACTA,EAAG,UAAU7I,EAAI,EAAGA,EAAI,CAAC,EACzBA,EAAM,CACF,EAAG,KAAK,MAAM,EAAI6I,EAAG,eAAc,EAAG,EACtC,EAAG,KAAK,MAAM,EAAIA,EAAG,eAAc,EAAG,CAClD,EACQ,KAAK,cAAcD,CAAS,EAC5B,KAAK,YAAY,CAAE,EAAG5I,EAAI,EAAG,EAAGA,EAAI,EAAG,EACvC,KAAK,YAAYsE,EAAS,EAC1B,KAAK,6BAA6BhB,EAAkB,EAC7C,IACX,CACA,cAAciD,EAAO,CACjB,IAAIvR,EACJ,IAAKA,KAAOuR,EACR,KAAK,MAAMvR,CAAG,EAAIuR,EAAMvR,CAAG,CAEnC,CACA,iBAAkB,CACd,MAAMuR,EAAQ,CACV,EAAG,KAAK,EAAC,EACT,EAAG,KAAK,EAAC,EACT,SAAU,KAAK,SAAQ,EACvB,OAAQ,KAAK,OAAM,EACnB,OAAQ,KAAK,OAAM,EACnB,QAAS,KAAK,QAAO,EACrB,QAAS,KAAK,QAAO,EACrB,MAAO,KAAK,MAAK,EACjB,MAAO,KAAK,MAAK,CAC7B,EACQ,OAAA,KAAK,MAAM,EAAI,EACf,KAAK,MAAM,EAAI,EACf,KAAK,MAAM,SAAW,EACtB,KAAK,MAAM,OAAS,EACpB,KAAK,MAAM,OAAS,EACpB,KAAK,MAAM,QAAU,EACrB,KAAK,MAAM,QAAU,EACrB,KAAK,MAAM,MAAQ,EACnB,KAAK,MAAM,MAAQ,EACZA,CACX,CACA,KAAKuC,EAAQ,CACT,IAAIC,EAAUD,EAAO,EAAGE,EAAUF,EAAO,EAAG5Z,EAAI,KAAK,EAAC,EAAIC,EAAI,KAAK,EAAC,EACpE,OAAI4Z,IAAY,SACZ7Z,GAAK6Z,GAELC,IAAY,SACZ7Z,GAAK6Z,GAET,KAAK,YAAY,CAAE,EAAG9Z,EAAG,EAAGC,EAAG,EACxB,IACX,CACA,qBAAqBmG,EAAM0Q,EAAK,CAC5B,IAAIiD,EAAS,CAAA,EAAItB,EAAS,KAAK,UAAS,EAAI1O,EAAKhC,EACjD,GAAI,EAAA+O,GAAOA,EAAI,MAAQ,KAAK,KAI5B,CAAA,IADAiD,EAAO,QAAQ,IAAI,EACZtB,IAAW,CAAC3B,GAAO2B,EAAO,MAAQ3B,EAAI,MACzCiD,EAAO,QAAQtB,CAAM,EACrBA,EAASA,EAAO,OAGpB,IADA1O,EAAMgQ,EAAO,OACRhS,EAAI,EAAGA,EAAIgC,EAAKhC,IACjB3B,EAAK2T,EAAOhS,CAAC,CAAC,CAAA,CAEtB,CACA,OAAOiS,EAAO,CACV,OAAA,KAAK,SAAS,KAAK,SAAQ,EAAKA,CAAK,EAC9B,IACX,CACA,WAAY,CACR,GAAI,CAAC,KAAK,OACN,OAAApY,EAAK,KAAK,oDAAoD,EACvD,GAEX,MAAMqX,EAAQ,KAAK,MAAOlP,EAAM,KAAK,OAAO,YAAW,EAAG,OAC1D,OAAIkP,EAAQlP,EAAM,GACd,KAAK,OAAO,SAAS,OAAOkP,EAAO,CAAC,EACpC,KAAK,OAAO,SAAS,KAAK,IAAI,EAC9B,KAAK,OAAO,oBAAmB,EACxB,IAEJ,EACX,CACA,QAAS,CACL,GAAI,CAAC,KAAK,OACN,OAAArX,EAAK,KAAK,iDAAiD,EACpD,GAEX,MAAMqX,EAAQ,KAAK,MAAOlP,EAAM,KAAK,OAAO,YAAW,EAAG,OAC1D,OAAIkP,EAAQlP,EAAM,GACd,KAAK,OAAO,SAAS,OAAOkP,EAAO,CAAC,EACpC,KAAK,OAAO,SAAS,OAAOA,EAAQ,EAAG,EAAG,IAAI,EAC9C,KAAK,OAAO,oBAAmB,EACxB,IAEJ,EACX,CACA,UAAW,CACP,GAAI,CAAC,KAAK,OACN,OAAArX,EAAK,KAAK,mDAAmD,EACtD,GAEX,MAAMqX,EAAQ,KAAK,MACnB,OAAIA,EAAQ,GACR,KAAK,OAAO,SAAS,OAAOA,EAAO,CAAC,EACpC,KAAK,OAAO,SAAS,OAAOA,EAAQ,EAAG,EAAG,IAAI,EAC9C,KAAK,OAAO,oBAAmB,EACxB,IAEJ,EACX,CACA,cAAe,CACX,GAAI,CAAC,KAAK,OACN,OAAArX,EAAK,KAAK,uDAAuD,EAC1D,GAEX,MAAMqX,EAAQ,KAAK,MACnB,OAAIA,EAAQ,GACR,KAAK,OAAO,SAAS,OAAOA,EAAO,CAAC,EACpC,KAAK,OAAO,SAAS,QAAQ,IAAI,EACjC,KAAK,OAAO,oBAAmB,EACxB,IAEJ,EACX,CACA,UAAUgB,EAAQ,CACd,GAAI,CAAC,KAAK,OACN,OAAArY,EAAK,KAAK,kDAAkD,EACrD,MAEPqY,EAAS,GAAKA,GAAU,KAAK,OAAO,SAAS,SAC7CrY,EAAK,KAAK,oBACNqY,EACA,gHACC,KAAK,OAAO,SAAS,OAAS,GAC/B,GAAG,EAEX,MAAMhB,EAAQ,KAAK,MACnB,OAAA,KAAK,OAAO,SAAS,OAAOA,EAAO,CAAC,EACpC,KAAK,OAAO,SAAS,OAAOgB,EAAQ,EAAG,IAAI,EAC3C,KAAK,OAAO,oBAAmB,EACxB,IACX,CACA,oBAAqB,CACjB,OAAO,KAAK,UAAU/F,GAAkB,KAAK,mBAAmB,CACpE,CACA,qBAAsB,CAClB,IAAIzI,EAAa,KAAK,QAAO,EAC7B,MAAMgN,EAAS,KAAK,UAAS,EAC7B,OAAIA,GAAU,CAACA,EAAO,gBAClBhN,GAAcgN,EAAO,mBAAkB,GAEpChN,CACX,CACA,OAAOyO,EAAc,CACjB,OAAI,KAAK,UAAS,IAAOA,IACrB,KAAK,QAAO,EACZA,EAAa,IAAI,IAAI,GAElB,IACX,CACA,UAAW,CACP,IAAIC,EAAQ,KAAK,SAAQ,EAAIrU,EAAKjC,EAAK8O,EAAQyH,EAAcC,EAC7D,MAAMzW,EAAM,CACR,MAAO,CAAA,EACP,UAAW,KAAK,aAAY,CACxC,EACQ,IAAKkC,KAAOqU,EACRtW,EAAMsW,EAAMrU,CAAG,EACfuU,EACIzY,EAAK,SAASiC,CAAG,GAAK,CAACjC,EAAK,eAAeiC,CAAG,GAAK,CAACjC,EAAK,SAASiC,CAAG,EACrE,CAAAwW,IAGJ1H,EAAS,OAAO,KAAK7M,CAAG,GAAM,YAAc,KAAKA,CAAG,EACpD,OAAOqU,EAAMrU,CAAG,EAChBsU,EAAezH,EAASA,EAAO,KAAK,IAAI,EAAI,KAC5CwH,EAAMrU,CAAG,EAAIjC,EACTuW,IAAiBvW,IACjBD,EAAI,MAAMkC,CAAG,EAAIjC,IAGzB,OAAOjC,EAAK,oBAAoBgC,CAAG,CACvC,CACA,QAAS,CACL,OAAO,KAAK,UAAU,KAAK,SAAQ,CAAE,CACzC,CACA,WAAY,CACR,OAAO,KAAK,MAChB,CACA,cAAcE,EAAUwW,EAAa/B,EAAU,CAC3C,MAAMgC,EAAM,CAAA,EACRD,GAAe,KAAK,SAASxW,CAAQ,GACrCyW,EAAI,KAAK,IAAI,EAEjB,IAAIC,EAAW,KAAK,OACpB,KAAOA,GAAU,CACb,GAAIA,IAAajC,EACb,OAAOgC,EAEPC,EAAS,SAAS1W,CAAQ,GAC1ByW,EAAI,KAAKC,CAAQ,EAErBA,EAAWA,EAAS,MACxB,CACA,OAAOD,CACX,CACA,aAAapM,EAAM,CACf,MAAO,EACX,CACA,aAAarK,EAAUwW,EAAa/B,EAAU,CAC1C,OAAO,KAAK,cAAczU,EAAUwW,EAAa/B,CAAQ,EAAE,CAAC,CAChE,CACA,SAASzU,EAAU,CACf,GAAI,CAACA,EACD,MAAO,GAEX,GAAI,OAAOA,GAAa,WACpB,OAAOA,EAAS,IAAI,EAExB,IAAI2W,EAAc3W,EAAS,QAAQ,KAAM,EAAE,EAAE,MAAM,GAAG,EAAGiG,EAAM0Q,EAAY,OAAQ1S,EAAG2S,EACtF,IAAK3S,EAAI,EAAGA,EAAIgC,EAAKhC,IASjB,GARA2S,EAAMD,EAAY1S,CAAC,EACdnG,EAAK,gBAAgB8Y,CAAG,IACzB9Y,EAAK,KAAK,aACN8Y,EACA,yEAAyE,EAC7E9Y,EAAK,KAAK,8GAA8G,EACxHA,EAAK,KAAK,0BAA0B,GAEpC8Y,EAAI,OAAO,CAAC,IAAM,KAClB,GAAI,KAAK,GAAE,IAAOA,EAAI,MAAM,CAAC,EACzB,MAAO,WAGNA,EAAI,OAAO,CAAC,IAAM,KACvB,GAAI,KAAK,QAAQA,EAAI,MAAM,CAAC,CAAC,EACzB,MAAO,WAGN,KAAK,YAAcA,GAAO,KAAK,WAAaA,EACjD,MAAO,GAGf,MAAO,EACX,CACA,UAAW,CACP,MAAMjC,EAAS,KAAK,UAAS,EAC7B,OAAOA,EAASA,EAAO,SAAQ,EAAK,IACxC,CACA,UAAW,CACP,OAAO,KAAK,UAAUtD,GAAO,KAAK,SAAS,CAC/C,CACA,WAAY,CACR,MAAMsD,EAAS,KAAK,UAAS,EAC7B,OAAIA,EACOA,EAAO,SAAQ,EAGf,IAEf,CACA,KAAKkC,EAAWvS,EAAM,CAAA,EAAIwS,EAAQ,CAC9B,OAAAxS,EAAI,OAASA,EAAI,QAAU,KACvBwS,EACA,KAAK,eAAeD,EAAWvS,CAAG,EAGlC,KAAK,MAAMuS,EAAWvS,CAAG,EAEtB,IACX,CACA,qBAAqB0O,EAAK,CACtB,OAAIA,EACO,KAAK,sBAAsBA,CAAG,EAG9B,KAAK,UAAU1C,GAAoB,KAAK,qBAAqB,CAE5E,CACA,sBAAsB0C,EAAK,CACvB,IAAI+D,EACJ,GAAI/D,EACA,OAAA+D,EAAK,IAAIjb,GACT,KAAK,qBAAqB,SAAUuO,EAAM,CACtC,MAAM2M,EAAoB3M,EAAK,kBAAiB,EAC5C2M,IAAsB,MACtBD,EAAG,SAAS1M,EAAK,cAAc,EAE1B2M,IAAsB,YAC3BD,EAAG,UAAU1M,EAAK,EAAC,EAAKA,EAAK,QAAO,EAAIA,EAAK,EAAC,EAAKA,EAAK,QAAO,CAAE,CAEzE,EAAG2I,CAAG,EACC+D,EAEN,CACDA,EAAK,KAAK,OAAO,IAAIzG,EAAkB,GAAK,IAAIxU,GAC5C,KAAK,OACL,KAAK,OAAO,uBAAuB,SAASib,CAAE,EAG9CA,EAAG,MAAK,EAEZ,MAAMC,EAAoB,KAAK,kBAAiB,EAChD,GAAIA,IAAsB,MACtBD,EAAG,SAAS,KAAK,cAAc,UAE1BC,IAAsB,WAAY,CACvC,MAAM9a,EAAI,KAAK,MAAM,GAAK,EACpBC,EAAI,KAAK,MAAM,GAAK,EACpB8a,EAAU,KAAK,MAAM,SAAW,EAChCC,EAAU,KAAK,MAAM,SAAW,EACtCH,EAAG,UAAU7a,EAAI+a,EAAS9a,EAAI+a,CAAO,CACzC,CACA,OAAAH,EAAG,MAAQ,GACJA,CACX,CACJ,CACA,iBAAiB/D,EAAK,CAClB,IAAI2B,EAAS,KACb,KAAOA,GACCA,EAAO,gBACP3B,EAAM2B,GAEVA,EAASA,EAAO,UAAS,EAG7B,MAAM0B,EADY,KAAK,qBAAqBrD,CAAG,EACvB,UAAS,EACjC,MAAO,CACH,EAAGqD,EAAM,OACT,EAAGA,EAAM,MACrB,CACI,CACA,qBAAsB,CAClB,OAAO,KAAK,uBAAuB,UAAS,EAAG,QACnD,CACA,cAAe,CACX,OAAO,KAAK,UAAU/E,GAAW,KAAK,aAAa,CACvD,CACA,eAAgB,CACZ,IAAI9V,EAAIC,EACR,MAAMM,EAAI,KAAK,OAAO,IAAIuV,EAAS,GAAK,IAAIxV,GAC5CC,EAAE,MAAK,EACP,MAAMG,EAAI,KAAK,EAAC,EAAIC,EAAI,KAAK,EAAC,EAAI+M,EAAW7N,EAAM,SAAS,KAAK,SAAQ,CAAE,EAAGmQ,GAAUhQ,EAAK,KAAK,MAAM,UAAY,MAAQA,IAAO,OAASA,EAAK,EAAGiQ,GAAUhQ,EAAK,KAAK,MAAM,UAAY,MAAQA,IAAO,OAASA,EAAK,EAAG0b,EAAQ,KAAK,MAAM,OAAS,EAAGC,EAAQ,KAAK,MAAM,OAAS,EAAGH,EAAU,KAAK,MAAM,SAAW,EAAGC,EAAU,KAAK,MAAM,SAAW,EAC3V,OAAIhb,IAAM,GAAKC,IAAM,IACjBJ,EAAE,UAAUG,EAAGC,CAAC,EAEhB+M,IAAa,GACbnN,EAAE,OAAOmN,CAAQ,GAEjBiO,IAAU,GAAKC,IAAU,IACzBrb,EAAE,KAAKob,EAAOC,CAAK,GAEnB5L,IAAW,GAAKC,IAAW,IAC3B1P,EAAE,MAAMyP,EAAQC,CAAM,GAEtBwL,IAAY,GAAKC,IAAY,IAC7Bnb,EAAE,UAAU,GAAKkb,EAAS,GAAKC,CAAO,EAE1Cnb,EAAE,MAAQ,GACHA,CACX,CACA,MAAM+D,EAAK,CACP,IAAIuW,EAAQvY,EAAK,YAAY,KAAK,KAAK,EAAGkE,EAAKqV,EAAcpR,EAAKhC,EAAGqT,EACrE,IAAKtV,KAAOlC,EACRuW,EAAMrU,CAAG,EAAIlC,EAAIkC,CAAG,EAExB,MAAMqI,EAAO,IAAI,KAAK,YAAYgM,CAAK,EACvC,IAAKrU,KAAO,KAAK,eAGb,IAFAqV,EAAe,KAAK,eAAerV,CAAG,EACtCiE,EAAMoR,EAAa,OACdpT,EAAI,EAAGA,EAAIgC,EAAKhC,IACjBqT,EAAWD,EAAapT,CAAC,EACrBqT,EAAS,KAAK,QAAQ3G,EAAK,EAAI,IAC1BtG,EAAK,eAAerI,CAAG,IACxBqI,EAAK,eAAerI,CAAG,EAAI,CAAA,GAE/BqI,EAAK,eAAerI,CAAG,EAAE,KAAKsV,CAAQ,GAIlD,OAAOjN,CACX,CACA,eAAe6B,EAAQ,CACnBA,EAASA,GAAU,CAAA,EACnB,MAAMqL,EAAM,KAAK,cAAa,EACxBxK,EAAQ,KAAK,SAAQ,EAAI7Q,EAAIgQ,EAAO,IAAM,OAAYA,EAAO,EAAI,KAAK,MAAMqL,EAAI,CAAC,EAAGpb,EAAI+P,EAAO,IAAM,OAAYA,EAAO,EAAI,KAAK,MAAMqL,EAAI,CAAC,EAAG/P,EAAa0E,EAAO,YAAc,EAAG3L,EAAS,IAAIgM,GAAY,CAC/M,MAAOL,EAAO,OAAS,KAAK,KAAKqL,EAAI,KAAK,IAAMxK,EAAQA,EAAM,MAAK,EAAK,GACxE,OAAQb,EAAO,QACX,KAAK,KAAKqL,EAAI,MAAM,IACnBxK,EAAQA,EAAM,OAAM,EAAK,GAC9B,WAAYvF,CACxB,CAAS,EAAGhD,EAAUjE,EAAO,WAAU,EACzBuS,EAAe,IAAIvG,GAAY,CACjC,MAAOhM,EAAO,MAAQA,EAAO,WAAa,KAAK,IAAIrE,CAAC,EACpD,OAAQqE,EAAO,OAASA,EAAO,WAAa,KAAK,IAAIpE,CAAC,EACtD,WAAYoE,EAAO,UAC/B,CAAS,EACD,OAAI2L,EAAO,wBAA0B,KACjC1H,EAAQ,SAAS,sBAAwB,IAE7CA,EAAQ,KAAI,GACRtI,GAAKC,IACLqI,EAAQ,UAAU,GAAKtI,EAAG,GAAKC,CAAC,EAEpC,KAAK,UAAUoE,EAAQ,OAAWuS,CAAY,EAC9CtO,EAAQ,QAAO,EACRjE,CACX,CACA,SAAS2L,EAAQ,CACb,OAAO,KAAK,eAAeA,CAAM,EAAE,OACvC,CACA,UAAUA,EAAQ,CACdA,EAASA,GAAU,CAAA,EACnB,MAAME,EAAWF,EAAO,UAAY,KAAMG,EAAUH,EAAO,SAAW,KAChEzL,EAAM,KAAK,eAAeyL,CAAM,EAAE,UAAUE,EAAUC,CAAO,EACnE,OAAIH,EAAO,UACPA,EAAO,SAASzL,CAAG,EAEhBA,CACX,CACA,QAAQyL,EAAQ,CACZ,OAAO,IAAI,QAAQ,CAAC3U,EAASC,IAAW,CACpC,GAAI,CACA,MAAM2I,EAA2D+L,GAAO,SACpE/L,GACA,OAAO+L,EAAO,SAClBpO,EAAK,YAAY,KAAK,UAAUoO,CAAM,EAAG,SAAUsL,EAAK,CACpDjgB,EAAQigB,CAAG,EACyCrX,IAASqX,CAAG,CACpE,CAAC,CACL,OACOlL,EAAK,CACR9U,EAAO8U,CAAG,CACd,CACJ,CAAC,CACL,CACA,OAAOJ,EAAQ,CACX,OAAO,IAAI,QAAQ,CAAC3U,EAASC,IAAW,CACpC,GAAI,CACA,MAAM2I,EAA2D+L,GAAO,SACpE/L,GACA,OAAO+L,EAAO,SAClB,KAAK,SAASA,CAAM,EAAE,OAAQuL,GAAS,CACnClgB,EAAQkgB,CAAI,EACwCtX,IAASsX,CAAI,CACrE,EAAmDvL,GAAO,SAA0DA,GAAO,OAAO,CACtI,OACOI,EAAK,CACR9U,EAAO8U,CAAG,CACd,CACJ,CAAC,CACL,CACA,QAAQoL,EAAM,CACV,OAAA,KAAK,MAAMA,EAAK,KAAK,EACrB,KAAK,OAAOA,EAAK,MAAM,EAChB,IACX,CACA,SAAU,CACN,MAAO,CACH,MAAO,KAAK,MAAK,EACjB,OAAQ,KAAK,OAAM,CAC/B,CACI,CACA,cAAe,CACX,OAAO,KAAK,WAAa,KAAK,QAClC,CACA,SAAU,CACN,OAAO,KAAK,QAChB,CACA,iBAAkB,CACd,OAAI,KAAK,MAAM,eAAiB,OACrB,KAAK,MAAM,aAEb,KAAK,OACH,KAAK,OAAO,gBAAe,EAG3Brc,EAAM,YAErB,CACA,KAAKkZ,EAAM7Z,EAAMyF,EAAU,CACvB,IAAIwX,EAAe,KAAK,eAAepD,CAAI,EAAGtT,EAAG2W,EAASpD,EAC1D,IAAKvT,EAAI,EAAGA,EAAI0W,EAAa,OAAQ1W,IAGjC,GAFA2W,EAAUD,EAAa1W,CAAC,EAAE,KAC1BuT,EAAUmD,EAAa1W,CAAC,EAAE,SACrB2W,IAAY,SAAWld,IAAS,WAChC,CAACA,GAAQkd,IAAYld,KACrB,CAACyF,GAAYA,IAAaqU,GAAU,CAErC,GADAmD,EAAa,OAAO1W,EAAG,CAAC,EACpB0W,EAAa,SAAW,EAAG,CAC3B,OAAO,KAAK,eAAepD,CAAI,EAC/B,KACJ,CACAtT,GACJ,CAER,CACA,iBAAiB6G,EAAMmH,EAAQ4I,EAAQ,CACnC,KAAK,MAAM/P,EAAO2I,GAAQ,CACtB,OAAQxB,EACR,OAAQ4I,CACpB,CAAS,CACL,CACA,QAAQnd,EAAM,CACV,GAAI,CAAC,KAAK,QAAQA,CAAI,EAAG,CACrB,MAAMod,EAAU,KAAK,KAAI,EACnBC,EAAUD,EAAUA,EAAU,IAAMpd,EAAOA,EACjD,KAAK,KAAKqd,CAAO,CACrB,CACA,OAAO,IACX,CACA,QAAQrd,EAAM,CACV,GAAI,CAACA,EACD,MAAO,GAEX,MAAMsd,EAAW,KAAK,KAAI,EAC1B,OAAKA,GAGUA,GAAY,IAAI,MAAM,KAAK,EAC7B,QAAQtd,CAAI,IAAM,GAHpB,EAIf,CACA,WAAWA,EAAM,CACb,MAAMud,GAAS,KAAK,KAAI,GAAM,IAAI,MAAM,KAAK,EACvC9C,EAAQ8C,EAAM,QAAQvd,CAAI,EAChC,OAAIya,IAAU,KACV8C,EAAM,OAAO9C,EAAO,CAAC,EACrB,KAAK,KAAK8C,EAAM,KAAK,GAAG,CAAC,GAEtB,IACX,CACA,QAAQnQ,EAAM/H,EAAK,CACf,MAAMuC,EAAO,KAAKgM,GAAMxQ,EAAK,YAAYgK,CAAI,CAAC,EAC9C,OAAIhK,EAAK,YAAYwE,CAAI,EACrBA,EAAK,KAAK,KAAMvC,CAAG,EAGnB,KAAK,SAAS+H,EAAM/H,CAAG,EAEpB,IACX,CACA,cAAe,CACP1E,EAAM,kBACW,KAAK,SAAQ,GAAM,KAAK,SAAQ,IACY,UAAS,CAE9E,CACA,SAAS2G,EAAKjC,EAAK,CACf,MAAMkP,EAAS,KAAK,MAAMjN,CAAG,EACzBiN,IAAWlP,GAAO,CAACjC,EAAK,SAASiC,CAAG,IAGfA,GAAQ,KAC7B,OAAO,KAAK,MAAMiC,CAAG,EAGrB,KAAK,MAAMA,CAAG,EAAIjC,EAElB,KAAK,yBACL,KAAK,iBAAiBiC,EAAKiN,EAAQlP,CAAG,EAE1C,KAAK,aAAY,EACrB,CACA,kBAAkBiC,EAAK+M,EAAWhP,EAAK,CACnC,IAAIkP,EACAlP,IAAQ,SACRkP,EAAS,KAAK,MAAMjN,CAAG,EAClBiN,IACD,KAAK,MAAMjN,CAAG,EAAI,KAAK,QAAQA,CAAG,GAEtC,KAAK,MAAMA,CAAG,EAAE+M,CAAS,EAAIhP,EAC7B,KAAK,iBAAiBiC,EAAKiN,EAAQlP,CAAG,EAE9C,CACA,eAAe8W,EAAWvS,EAAK4T,EAAc,CACrC5T,GAAO,KAAK,WAAa6M,KACzB7M,EAAI,OAAS,MAEjB,MAAM6T,EAAc,CAChBtH,GACAC,GACAC,GACAC,GACAC,GACAC,EACZ,EAMQ,GAAI,EALeiH,EAAY,QAAQtB,CAAS,IAAM,KAChDqB,IACG,OAASA,GACL,KAAK,cAAgB,KAAK,aAAaA,CAAY,IACvD,KAAK,WAAa,SAAW,CAACA,IACtB,CACb,KAAK,MAAMrB,EAAWvS,CAAG,EACzB,MAAM8T,EAAaD,EAAY,QAAQtB,CAAS,IAAM,IAClDqB,GACAA,EAAa,cACbA,EAAa,aAAa,IAAI,GAC9B,CAACA,EAAa,aAAa,KAAK,MAAM,GACpC5T,GAAO,CAACA,EAAI,cAAiB,CAACA,IAChC,KAAK,QACL,KAAK,OAAO,YAAW,GACvB,CAAC8T,IACGF,GAAgBA,EAAa,OAC7B,KAAK,eAAe,KAAK,KAAK,OAAQrB,EAAWvS,EAAK4T,CAAY,EAGlE,KAAK,eAAe,KAAK,KAAK,OAAQrB,EAAWvS,CAAG,EAGhE,CACJ,CACA,mBAAmBuS,EAAW,CAC1B,IAAIrb,EAAIC,EACR,KAAM,CAAE,SAAA4c,CAAQ,EAAK,KACfhB,EAAezF,GAAK,iBAAiB,IAAIyG,CAAQ,GAAK,CAAA,EAC5D,IAAIjE,EAAqEiD,IAAaR,CAAS,EAC/F,GAAIzC,IAAW,OAAW,CACtBA,EAAS,CAAA,EACT,MAAMkE,EAAO,IAAI,IACjB,IAAIxY,EAAM,OAAO,eAAe,IAAI,EACpC,KAAOA,GAAK,CACR,MAAMyY,GAAmB9c,GAAMD,EAAKsE,EAAI,kBAAoB,MAAQtE,IAAO,OAAS,OAASA,EAAGqb,CAAS,KAAO,MAAQpb,IAAO,OAASA,EAAK,CAAA,EAC7I,QAASwF,EAAI,EAAGA,EAAIsX,EAAgB,OAAQtX,IAAK,CAC7C,MAAMuX,EAAQD,EAAgBtX,CAAC,EAC1BqX,EAAK,IAAIE,CAAK,IACfF,EAAK,IAAIE,CAAK,EACdpE,EAAO,KAAKoE,CAAK,EAEzB,CACA1Y,EAAM,OAAO,eAAeA,CAAG,CACnC,CACAuX,EAAaR,CAAS,EAAIzC,EAC1BxC,GAAK,iBAAiB,IAAIyG,EAAUhB,CAAY,CACpD,CACA,OAAOjD,CACX,CACA,MAAMyC,EAAWvS,EAAK,CAClBA,EAAMA,GAAO,CAAA,EACbA,EAAI,cAAgB,KACpBA,EAAI,KAAOuS,EACX,MAAM4B,EAAe,KAAK,mBAAmB5B,CAAS,EACtD,GAAI4B,EACA,QAASxX,EAAI,EAAGA,EAAIwX,EAAa,OAAQxX,IACrCwX,EAAaxX,CAAC,EAAE,QAAQ,KAAK,KAAMqD,CAAG,EAG9C,MAAMoU,EAAgB,KAAK,eAAe7B,CAAS,EACnD,GAAI6B,EAAe,CACf,MAAMC,EAAOD,EAAc,MAAK,EAC1BE,EAAUD,EAAK,OACrB,QAAS1X,EAAI,EAAGA,EAAI0X,EAAK,OAAQ1X,IAC7B0X,EAAK1X,CAAC,EAAE,QAAQ,KAAK,KAAMqD,CAAG,EAElC,MAAMuU,EAAgB,KAAK,eAAehC,CAAS,EACnD,GAAIgC,EACA,QAAS5X,EAAI2X,EAAS3X,EAAI4X,EAAc,OAAQ5X,IAC5C4X,EAAc5X,CAAC,EAAE,QAAQ,KAAK,KAAMqD,CAAG,CAGnD,CACJ,CACA,MAAO,CACH,OAAA,KAAK,UAAS,EACd,KAAK,QAAO,EACL,IACX,CACA,mBAAmBA,EAAK,CACpB,MAAMwU,EAAYxU,EAAMA,EAAI,UAAY,OAClCyI,EAAQ,KAAK,SAAQ,EACrBgM,EAAK,KAAK,oBAAmB,EACnC,GAAI,CAAChM,EACD,OAEJ,MAAMC,EAAMD,EAAM,gBAAgB+L,CAAS,GACvC/L,EAAM,yBAAyB,CAAC,GAChCgM,EACJtM,GAAG,cAAc,IAAI,KAAK,IAAK,CAC3B,KAAM,KACN,gBAAiBO,EACjB,OAAQ,CACJ,EAAGA,EAAI,EAAI+L,EAAG,EACd,EAAG/L,EAAI,EAAI+L,EAAG,CAC9B,EACY,WAAY,QACZ,UAAAD,EACA,WAAYxU,CACxB,CAAS,CACL,CACA,UAAUA,EAAK0U,EAAc,GAAM,CAC1BvM,GAAG,cAAc,IAAI,KAAK,GAAG,GAC9B,KAAK,mBAAmBnI,CAAG,EAE/B,MAAMqI,EAAOF,GAAG,cAAc,IAAI,KAAK,GAAG,EAC1CE,EAAK,WAAa,WAClB,KAAK,KAAK,YAAa,CACnB,KAAM,YACN,OAAQ,KACR,IAAMA,EAAK,YAAcA,EAAK,WAAW,KAASrI,GAAOA,EAAI,GACzE,EAAW0U,CAAW,CAClB,CACA,iBAAiB1U,EAAKqI,EAAM,CACxB,MAAMK,EAAM,KAAK,SAAQ,EAAG,gBAAgBL,EAAK,SAAS,EAC1D,GAAI,CAACK,EACD,OAEJ,IAAIiM,EAAa,CACb,EAAGjM,EAAI,EAAIL,EAAK,OAAO,EACvB,EAAGK,EAAI,EAAIL,EAAK,OAAO,CACnC,EACQ,MAAMuM,EAAM,KAAK,cAAa,EAC9B,GAAIA,IAAQ,OAAW,CACnB,MAAMC,EAAUD,EAAI,KAAK,KAAMD,EAAY3U,CAAG,EACzC6U,EAIDF,EAAaE,EAHbrb,EAAK,KAAK,gIAAgI,CAKlJ,EACI,CAAC,KAAK,UACN,KAAK,SAAS,IAAMmb,EAAW,GAC/B,KAAK,SAAS,IAAMA,EAAW,KAC/B,KAAK,oBAAoBA,CAAU,EACnC,KAAK,aAAY,GAErB,KAAK,SAAWA,CACpB,CACA,SAAS3U,EAAK,CACV,MAAMqI,EAAOF,GAAG,cAAc,IAAI,KAAK,GAAG,EACtCE,IACAA,EAAK,WAAa,WAEtBF,GAAG,eAAenI,CAAG,EACrBmI,GAAG,cAAcnI,CAAG,CACxB,CACA,aAAa8U,EAAW,CACpB,KAAK,SAAS,YAAaA,CAAS,EACpC,KAAK,YAAW,CACpB,CACA,YAAa,CACT,MAAMzM,EAAOF,GAAG,cAAc,IAAI,KAAK,GAAG,EAC1C,OAAOE,EAAOA,EAAK,aAAe,WAAa,EACnD,CACA,aAAc,CACV,KAAK,aAAY,EACjB,KAAK,GAAG,mCAAoC,SAAUrI,EAAK,CAMvD,GAHI,EAFsBA,EAAI,IAAI,SAAc,QACVjJ,EAAM,YAAY,QAAQiJ,EAAI,IAAI,MAAS,GAAK,IAIlF,KAAK,aACL,OAEJ,IAAI+U,EAAmB,GACvB5M,GAAG,cAAc,QAASE,GAAS,CAC3B,KAAK,aAAaA,EAAK,IAAI,IAC3B0M,EAAmB,GAE3B,CAAC,EACIA,GACD,KAAK,mBAAmB/U,CAAG,CAEnC,CAAC,CACL,CACA,aAAc,CACV,GAAI,KAAK,MAAM,UACX,KAAK,YAAW,MAEf,CAGD,GAFA,KAAK,aAAY,EAEb,CADU,KAAK,SAAQ,EAEvB,OAEJ,MAAMgV,EAAc7M,GAAG,cAAc,IAAI,KAAK,GAAG,EAC3C8M,EAAaD,GAAeA,EAAY,aAAe,WACvDE,EAAUF,GAAeA,EAAY,aAAe,QACtDC,EACA,KAAK,SAAQ,EAERC,GACL/M,GAAG,cAAc,OAAO,KAAK,GAAG,CAExC,CACJ,CACA,cAAe,CACX,KAAK,IAAI,iBAAiB,EAC1B,KAAK,IAAI,kBAAkB,CAC/B,CACA,qBAAqBgN,EAAS,CAAE,EAAG,EAAG,EAAG,GAAK,CAC1C,MAAM1M,EAAQ,KAAK,SAAQ,EAC3B,GAAI,CAACA,EACD,MAAO,GAEX,MAAM2M,EAAa,CACf,EAAG,CAACD,EAAO,EACX,EAAG,CAACA,EAAO,EACX,MAAO1M,EAAM,MAAK,EAAK,EAAI0M,EAAO,EAClC,OAAQ1M,EAAM,OAAM,EAAK,EAAI0M,EAAO,CAChD,EACQ,OAAO3b,EAAK,iBAAiB4b,EAAY,KAAK,cAAa,CAAE,CACjE,CACA,OAAO,OAAOC,EAAMtiB,EAAW,CAC3B,OAAIyG,EAAK,UAAU6b,CAAI,IACnBA,EAAO,KAAK,MAAMA,CAAI,GAEnB,KAAK,YAAYA,EAAMtiB,CAAS,CAC3C,CACA,OAAO,YAAYyI,EAAKzI,EAAW,CAC/B,IAAIuiB,EAAYhI,GAAK,UAAU,aAAa,KAAK9R,CAAG,EAAGyV,EAAWzV,EAAI,SAAU+Z,EAAI5T,EAAKhC,EACrF5M,IACAyI,EAAI,MAAM,UAAYzI,GAErBgE,EAAMue,CAAS,IAChB9b,EAAK,KAAK,wCACN8b,EACA,yBAAyB,EAC7BA,EAAY,SAEhB,MAAME,EAAQze,EAAMue,CAAS,EAE7B,GADAC,EAAK,IAAIC,EAAMha,EAAI,KAAK,EACpByV,EAEA,IADAtP,EAAMsP,EAAS,OACVtR,EAAI,EAAGA,EAAIgC,EAAKhC,IACjB4V,EAAG,IAAIjI,GAAK,YAAY2D,EAAStR,CAAC,CAAC,CAAC,EAG5C,OAAO4V,CACX,CACJ,EACAjI,EAAK,0BAA4B,EACjCA,EAAK,qBAAuB,CAAA,EAC5BA,EAAK,iBAAmB,IAAI,IAC5BA,EAAK,UAAU,SAAW,OAC1BA,EAAK,UAAU,oBAAsB,CAAA,EACrCA,EAAK,UAAU,eAAiB,CAAA,EAChCA,EAAK,UAAU,GAAGH,GAAsB,UAAY,CAChD,GAAI,KAAK,yBAA0B,CAC/B,KAAK,yBAA2B,GAChC,MACJ,CACA,KAAK,YAAYH,EAAS,EAC1B,KAAK,6BAA6BhB,EAAkB,CACxD,CAAC,EACDsB,EAAK,UAAU,GAAG,sBAAuB,UAAY,CACjD,KAAK,6BAA6BJ,EAAO,CAC7C,CAAC,EACDI,EAAK,UAAU,GAAG,wBAAyB,UAAY,CACnD,KAAK,6BAA6BhB,EAAS,CAC/C,CAAC,EACDgB,EAAK,UAAU,GAAG,sBAAuB,UAAY,CACjD,KAAK,6BAA6BxB,EAAgB,CACtD,CAAC,EACD,MAAM2J,GAAkBxL,EAAQ,gBAChCwL,GAAgBnI,EAAM,QAAQ,EAC9BmI,GAAgBnI,EAAM,kBAAkB,EACxCmI,GAAgBnI,EAAM,UAAU,EAChCmI,GAAgBnI,EAAM,IAAK,EAAGtE,EAAkB,CAAE,EAClDyM,GAAgBnI,EAAM,IAAK,EAAGtE,EAAkB,CAAE,EAClDyM,GAAgBnI,EAAM,2BAA4B,cAAehE,GAAkB,CAAE,EACrFmM,GAAgBnI,EAAM,UAAW,EAAGtE,EAAkB,CAAE,EACxDyM,GAAgBnI,EAAM,OAAQ,GAAIhE,GAAkB,CAAE,EACtDmM,GAAgBnI,EAAM,KAAM,GAAIhE,GAAkB,CAAE,EACpDmM,GAAgBnI,EAAM,WAAY,EAAGtE,EAAkB,CAAE,EACzDiB,EAAQ,0BAA0BqD,EAAM,QAAS,CAAC,IAAK,GAAG,CAAC,EAC3DmI,GAAgBnI,EAAM,SAAU,EAAGtE,EAAkB,CAAE,EACvDyM,GAAgBnI,EAAM,SAAU,EAAGtE,EAAkB,CAAE,EACvDiB,EAAQ,0BAA0BqD,EAAM,OAAQ,CAAC,IAAK,GAAG,CAAC,EAC1DmI,GAAgBnI,EAAM,QAAS,EAAGtE,EAAkB,CAAE,EACtDyM,GAAgBnI,EAAM,QAAS,EAAGtE,EAAkB,CAAE,EACtDiB,EAAQ,0BAA0BqD,EAAM,SAAU,CAAC,IAAK,GAAG,CAAC,EAC5DmI,GAAgBnI,EAAM,UAAW,EAAGtE,EAAkB,CAAE,EACxDyM,GAAgBnI,EAAM,UAAW,EAAGtE,EAAkB,CAAE,EACxDyM,GAAgBnI,EAAM,eAAgB,OAAWtE,EAAkB,CAAE,EACrEyM,GAAgBnI,EAAM,QAAS,EAAGtE,EAAkB,CAAE,EACtDyM,GAAgBnI,EAAM,SAAU,EAAGtE,EAAkB,CAAE,EACvDyM,GAAgBnI,EAAM,YAAa,GAAMzD,GAAmB,CAAE,EAC9D4L,GAAgBnI,EAAM,iBAAkB,GAAMzD,GAAmB,CAAE,EACnE4L,GAAgBnI,EAAM,UAAW,OAAW,SAAU7R,EAAK,CACvD,OAAA,KAAK,gBAAkB,GAChBA,CACX,CAAC,EACDga,GAAgBnI,EAAM,UAAW,GAAMzD,GAAmB,CAAE,EAC5D4L,GAAgBnI,EAAM,oBAAqB,MAAOhE,GAAkB,CAAE,EACtEmM,GAAgBnI,EAAM,MAAM,EAC5BmI,GAAgBnI,EAAM,eAAe,EACrCmI,GAAgBnI,EAAM,YAAa,GAAOzD,GAAmB,CAAE,EAC/DI,EAAQ,WAAWqD,EAAM,CACrB,UAAW,SACX,eAAgB,cAChB,eAAgB,aACpB,CAAC,EC9iDM,MAAMoI,WAAkBpI,CAAK,CAChC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,SAAW,CAAA,CACpB,CACA,YAAYqI,EAAY,CACpB,MAAM1E,EAAW,KAAK,UAAY,CAAA,EAClC,OAAI0E,EACO1E,EAAS,OAAO0E,CAAU,EAE9B1E,CACX,CACA,aAAc,CACV,OAAO,KAAK,cAAc,OAAS,CACvC,CACA,gBAAiB,CACb,OAAA,KAAK,YAAW,EAAG,QAASF,GAAU,CAClCA,EAAM,OAAS,KACfA,EAAM,MAAQ,EACdA,EAAM,OAAM,CAChB,CAAC,EACD,KAAK,SAAW,CAAA,EAChB,KAAK,aAAY,EACV,IACX,CACA,iBAAkB,CACd,OAAA,KAAK,YAAW,EAAG,QAASA,GAAU,CAClCA,EAAM,OAAS,KACfA,EAAM,MAAQ,EACdA,EAAM,QAAO,CACjB,CAAC,EACD,KAAK,SAAW,CAAA,EAChB,KAAK,aAAY,EACV,IACX,CACA,OAAOE,EAAU,CACb,GAAIA,EAAS,SAAW,EACpB,OAAO,KAEX,GAAIA,EAAS,OAAS,EAAG,CACrB,QAAS,EAAI,EAAG,EAAIA,EAAS,OAAQ,IACjC,KAAK,IAAIA,EAAS,CAAC,CAAC,EAExB,OAAO,IACX,CACA,MAAMF,EAAQE,EAAS,CAAC,EACxB,OAAIF,EAAM,aACNA,EAAM,OAAO,IAAI,EACV,OAEX,KAAK,aAAaA,CAAK,EACvBA,EAAM,MAAQ,KAAK,YAAW,EAAG,OACjCA,EAAM,OAAS,KACfA,EAAM,aAAY,EAClB,KAAK,YAAW,EAAG,KAAKA,CAAK,EAC7B,KAAK,MAAM,MAAO,CACd,MAAOA,CACnB,CAAS,EACD,KAAK,aAAY,EACV,KACX,CACA,SAAU,CACN,OAAI,KAAK,eACL,KAAK,gBAAe,EAExB,MAAM,QAAO,EACN,IACX,CACA,KAAKrV,EAAU,CACX,OAAO,KAAK,aAAaA,EAAU,EAAK,CAC5C,CACA,QAAQA,EAAU,CACd,MAAMpC,EAAS,KAAK,aAAaoC,EAAU,EAAI,EAC/C,OAAOpC,EAAO,OAAS,EAAIA,EAAO,CAAC,EAAI,MAC3C,CACA,aAAaoC,EAAUka,EAAS,CAC5B,MAAMlU,EAAS,CAAA,EACf,OAAA,KAAK,aAAcqE,GAAS,CACxB,MAAM8P,EAAQ9P,EAAK,SAASrK,CAAQ,EAIpC,OAHIma,GACAnU,EAAO,KAAKqE,CAAI,EAEhB,CAAA,EAAA8P,GAASD,EAIjB,CAAC,EACMlU,CACX,CACA,aAAaoU,EAAI,CACb,IAAIC,EAAa,GACjB,MAAM9E,EAAW,KAAK,YAAW,EACjC,UAAWF,KAASE,EAKhB,GAJA8E,EAAaD,EAAG/E,CAAK,EACjBgF,GAGChF,EAAM,gBAGXgF,EAAahF,EAAM,aAAa+E,CAAE,EAC9BC,GACA,MAAO,GAGf,MAAO,EACX,CACA,UAAW,CACP,MAAMva,EAAM8R,EAAK,UAAU,SAAS,KAAK,IAAI,EAC7C,OAAA9R,EAAI,SAAW,CAAA,EACf,KAAK,YAAW,EAAG,QAASuV,GAAU,CAClCvV,EAAI,SAAS,KAAKuV,EAAM,SAAQ,CAAE,CACtC,CAAC,EACMvV,CACX,CACA,aAAauK,EAAM,CACf,IAAIsK,EAAStK,EAAK,UAAS,EAC3B,KAAOsK,GAAQ,CACX,GAAIA,EAAO,MAAQ,KAAK,IACpB,MAAO,GAEXA,EAASA,EAAO,UAAS,CAC7B,CACA,MAAO,EACX,CACA,MAAM7U,EAAK,CACP,MAAMuK,EAAOuH,EAAK,UAAU,MAAM,KAAK,KAAM9R,CAAG,EAChD,OAAA,KAAK,YAAW,EAAG,QAAQ,SAAU+Z,EAAI,CACrCxP,EAAK,IAAIwP,EAAG,OAAO,CACvB,CAAC,EACMxP,CACX,CACA,oBAAoB2C,EAAK,CACrB,MAAM/K,EAAM,CAAA,EACZ,OAAA,KAAK,KAAK,OAAO,EAAE,QAASgF,GAAU,CAC9BA,EAAM,UAAS,GAAMA,EAAM,WAAW+F,CAAG,GACzC/K,EAAI,KAAKgF,CAAK,CAEtB,CAAC,EACMhF,CACX,CACA,6BAA6B6F,EAAM,CAC/B,IAAItM,EACJ,MAAM8e,EAAiBxS,IAAS,oBAC5BwS,GACA1I,EAAK,4BACT,GAAI,CAEA,GADA,MAAM,6BAA6B9J,CAAI,EACnC,KAAK,SAAQ,EACb,QACHtM,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,QAAQ,SAAU6O,EAAM,CACjFA,EAAK,6BAA6BvC,CAAI,CAC1C,CAAC,CACL,QAAA,CAEI,GAAIwS,GAAkB,EAAE1I,EAAK,4BAA8B,EAAG,CAC1D,MAAM2I,EAAY3I,EAAK,qBACvB,GAAI2I,EAAU,OAAQ,CAClB3I,EAAK,qBAAuB,CAAA,EAC5B,QAAS3Q,EAAI,EAAGA,EAAIsZ,EAAU,OAAQtZ,IAClCsZ,EAAUtZ,CAAC,EAAC,CACpB,CACJ,CACJ,CACJ,CACA,qBAAsB,CAClB,IAAIzF,GACHA,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,QAAQ,SAAU6Z,EAAOpR,EAAG,CACrFoR,EAAM,MAAQpR,CAClB,CAAC,EACD,KAAK,aAAY,CACrB,CACA,UAAUuW,EAAKxH,EAAKF,EAAc,CAC9B,MAAMiC,EAAQ,KAAK,WAAYxU,EAASia,GAAQzF,GAASA,EAAM,UAAS,EAAKvQ,EAAUjE,GAAUA,EAAO,WAAU,EAAIqT,EAAe,KAAK,gBAAe,EAAIjB,EAAoBiB,GAAgBA,EAAa,MACxM6G,EAAUla,GAAUA,EAAO,QACjC,GAAI,CAAC,KAAK,UAAS,GAAM,CAACka,EACtB,OAAO,KAEX,GAAI9H,EAAmB,CACnBnO,EAAQ,KAAI,EACZ,MAAMzI,EAAI,KAAK,qBAAqBiX,CAAG,EAAE,UAAS,EAClDxO,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpD,KAAK,uBAAuByI,CAAO,EACnCA,EAAQ,QAAO,CACnB,MAEI,KAAK,cAAc,YAAajE,EAAQyS,EAAKF,CAAY,EAE7D,OAAO,IACX,CACA,QAAQ0H,EAAKxH,EAAK,CACd,GAAI,CAAC,KAAK,cAAcA,CAAG,EACvB,OAAO,KAEX,MAAM+B,EAAQ,KAAK,SAAQ,EAAIxU,EAASia,GAAQzF,GAASA,EAAM,UAAYvQ,EAAUjE,GAAUA,EAAO,WAAU,EAAIma,EAAkB,KAAK,oBAAoB1H,CAAG,EAClK,GAAI0H,EAAiB,CACjBlW,EAAQ,KAAI,EACZ,MAAMzI,EAAI,KAAK,qBAAqBiX,CAAG,EAAE,UAAS,EAClDxO,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpD,KAAK,qBAAqByI,EAASkW,CAAe,EAClDlW,EAAQ,QAAO,CACnB,MAEI,KAAK,cAAc,UAAWjE,EAAQyS,CAAG,EAE7C,OAAO,IACX,CACA,cAAc2H,EAAYpa,EAAQyS,EAAKF,EAAc,CACjD,IAAItX,EACJ,MAAMgJ,EAAUjE,GAAUA,EAAO,WAAU,EAAIqa,EAAY,KAAK,YAAaC,EAAa,KAAK,WAAU,EAAIC,EAAW,KAAK,WAAYC,EAAW,OAAOH,GAAc,UAAY,OAAOC,GAAe,UACvMC,EACEE,EAAYhI,IAAQ,KAC1B,GAAI+H,EAAS,CACTvW,EAAQ,KAAI,EACZ,MAAMgR,EAAY,KAAK,qBAAqBxC,CAAG,EAC/C,IAAIjX,EAAIyZ,EAAU,UAAS,EAC3BhR,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpDyI,EAAQ,UAAS,EACjB,IAAIyW,EACJ,GAAIH,EACAG,EAAWH,EAAS,KAAK,KAAMtW,EAAS,IAAI,MAE3C,CACD,MAAM0W,EAAQ,KAAK,MAAK,EAClBC,EAAQ,KAAK,MAAK,EACxB3W,EAAQ,KAAK0W,GAAS,EAAGC,GAAS,EAAGP,EAAWC,CAAU,CAC9D,CACArW,EAAQ,KAAK,MAAMA,EAASyW,CAAQ,EACpClf,EAAIyZ,EAAU,KAAI,EAAG,OAAM,EAAG,UAAS,EACvChR,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACxD,CACA,MAAMqf,EAAiB,CAACJ,GACpB,KAAK,yBAAwB,IAAO,eACpCL,IAAe,YACfS,IACA5W,EAAQ,KAAI,EACZA,EAAQ,+BAA+B,IAAI,IAE9ChJ,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,QAAQ,SAAU6Z,EAAO,CAClFA,EAAMsF,CAAU,EAAEpa,EAAQyS,EAAKF,CAAY,CAC/C,CAAC,EACGsI,GACA5W,EAAQ,QAAO,EAEfuW,GACAvW,EAAQ,QAAO,CAEvB,CACA,cAAc0H,EAAS,GAAI,CACvB,IAAI1Q,EACJ,MAAM6f,EAAgBnP,EAAO,cACvB2I,EAAa3I,EAAO,WAC1B,IAAIiH,EAAMC,EAAMC,EAAMC,EAClBgI,EAAW,CACX,EAAG,IACH,EAAG,IACH,MAAO,EACP,OAAQ,CACpB,EACQ,MAAMvR,EAAO,MACZvO,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,QAAQ,SAAU6Z,EAAO,CAClF,GAAI,CAACA,EAAM,UACP,OAEJ,MAAM/C,EAAO+C,EAAM,cAAc,CAC7B,WAAYtL,EACZ,WAAYmC,EAAO,WACnB,WAAYA,EAAO,UACnC,CAAa,EACGoG,EAAK,QAAU,GAAKA,EAAK,SAAW,IAGpCa,IAAS,QACTA,EAAOb,EAAK,EACZc,EAAOd,EAAK,EACZe,EAAOf,EAAK,EAAIA,EAAK,MACrBgB,EAAOhB,EAAK,EAAIA,EAAK,SAGrBa,EAAO,KAAK,IAAIA,EAAMb,EAAK,CAAC,EAC5Bc,EAAO,KAAK,IAAIA,EAAMd,EAAK,CAAC,EAC5Be,EAAO,KAAK,IAAIA,EAAMf,EAAK,EAAIA,EAAK,KAAK,EACzCgB,EAAO,KAAK,IAAIA,EAAMhB,EAAK,EAAIA,EAAK,MAAM,GAElD,CAAC,EACD,MAAMiJ,EAAS,KAAK,KAAK,OAAO,EAChC,IAAIC,EAAa,GACjB,QAASva,EAAI,EAAGA,EAAIsa,EAAO,OAAQta,IAE/B,GADcsa,EAAOta,CAAC,EACZ,WAAW,IAAI,EAAG,CACxBua,EAAa,GACb,KACJ,CAkBJ,OAhBIA,GAAcrI,IAAS,OACvBmI,EAAW,CACP,EAAGnI,EACH,EAAGC,EACH,MAAOC,EAAOF,EACd,OAAQG,EAAOF,CAC/B,EAGYkI,EAAW,CACP,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CACxB,EAEaD,EAGEC,EAFI,KAAK,iBAAiBA,EAAUzG,CAAU,CAGzD,CACJ,CACAtG,EAAQ,0BAA0ByL,GAAW,OAAQ,CACjD,IACA,IACA,QACA,QACJ,CAAC,EACDzL,EAAQ,gBAAgByL,GAAW,QAAS,OAAW1M,EAAkB,CAAE,EAC3EiB,EAAQ,gBAAgByL,GAAW,QAAS,OAAW1M,EAAkB,CAAE,EAC3EiB,EAAQ,gBAAgByL,GAAW,YAAa,OAAW1M,EAAkB,CAAE,EAC/EiB,EAAQ,gBAAgByL,GAAW,aAAc,OAAW1M,EAAkB,CAAE,EAChFiB,EAAQ,gBAAgByL,GAAW,UAAU,ECxU7C,MAAMyB,GAAW,IAAI,IACfC,GAAyBrgB,EAAM,QAAQ,eAAoB,OAC1D,SAASsgB,GAAiB7C,EAAW,CACxC,OAAO2C,GAAS,IAAI3C,CAAS,CACjC,CACO,SAAS8C,GAAYtX,EAAK,CAC7B,MAAO,CACH,IAAAA,EACA,UAAWA,EAAI,SACvB,CACA,CACO,SAASuX,GAAkB/C,EAAW7R,EAAO,CAChD,OAAOwU,GAAS,IAAI3C,CAAS,IAAM7R,CACvC,CACO,SAAS6U,GAAkBhD,EAAW7R,EAAO,CAChD,IAAIzL,EACJugB,GAAejD,CAAS,EACxB,MAAM/L,EAAQ9F,EAAM,SAAQ,EAC5B,GAAK8F,IAEL0O,GAAS,IAAI3C,EAAW7R,CAAK,EACzByU,IAAwB,CACxB,GAAI,EACClgB,EAAKuR,EAAM,WAAa,MAAQvR,IAAO,QAAkBA,EAAG,kBAAkBsd,CAAS,CAC5F,MACU,CACV,CACA7R,EAAM,MAAM,oBAAqB2U,GAAY,IAAI,aAAa,mBAAmB,CAAC,CAAC,CACvF,CACJ,CACO,SAASG,GAAejD,EAAW1Y,EAAQ,CAC9C,IAAI5E,EACJ,MAAMyL,EAAQwU,GAAS,IAAI3C,CAAS,EACpC,GAAI,CAAC7R,EACD,OACJ,MAAM8F,EAAQ9F,EAAM,SAAQ,EAE5B,GADAwU,GAAS,OAAO3C,CAAS,EACrB4C,GAAwB,CACxB,GAAI,EACClgB,EAAmDuR,GAAM,WAAa,MAAQvR,IAAO,QAAkBA,EAAG,sBAAsBsd,CAAS,CAC9I,MACU,CACV,CACA7R,EAAM,MAAM,qBAAsB2U,GAAY,IAAI,aAAa,oBAAoB,CAAC,CAAC,CACzF,CACJ,CCtCA,MAAMvK,GAAQ,QAAS2K,GAAS,SAAUC,GAAK,KAAMC,GAAW,WAAYpL,GAAa,aAAcqL,GAAY,YAAatL,GAAa,aAAcuL,GAAY,YAAaC,GAAY,YAAaC,GAAU,UAAWC,GAAc,cAAeC,GAAc,cAAeC,GAAY,YAAaC,GAAgB,gBAAiBC,GAAqB,qBAAsBC,GAAa,aAAc5L,GAAe,eAAgB6L,GAAc,cAAe9L,GAAe,eAAgB+L,GAAc,cAAeC,GAAa,aAAcC,GAAW,WAAYC,GAAY,YAAaC,GAAc,cAAeC,GAAQ,QAASC,GAAoB,EAAGC,GAAS,CACzqB,CAACxM,GAAY,eAAe,EAC5B,CAACwL,GAAW,cAAc,EAC1B,CAACD,GAAW,cAAc,EAC1B,CAACE,GAAS,YAAY,EACtB,CAACxL,GAAY,eAAe,EAC5B,CAACiM,GAAY,cAAc,EAC3B,CAACE,GAAW,cAAc,EAC1B,CAACD,GAAU,YAAY,EACvB,CAACE,GAAa,gBAAgB,EAC9B,CAACf,GAAW,cAAc,EAC1B,CAACgB,GAAO,QAAQ,EAChB,CAACL,GAAa,cAAc,EAC5B,CAACN,GAAa,cAAc,EAC5B,CAACD,GAAa,cAAc,EAC5B,CAACE,GAAW,YAAY,EACxB,CAACC,GAAe,gBAAgB,EAChC,CAAC1L,GAAc,eAAe,EAC9B,CAAC2L,GAAoB,qBAAqB,CAC9C,EACMW,GAAa,CACf,MAAO,CACH,CAACV,EAAU,EAAGV,GACd,CAAClL,EAAY,EAAGF,GAChB,CAAC+L,EAAW,EAAGV,GACf,CAACpL,EAAY,EAAGF,GAChB,CAAC0L,EAAW,EAAGH,GACf,CAACI,EAAW,EAAGH,GACf,CAACI,EAAS,EAAGH,GACb,CAACI,EAAa,EAAG,cACjB,aAAc,QACd,gBAAiB,UACzB,EACI,MAAO,CACH,CAACE,EAAU,EAAG,WACd,CAAC5L,EAAY,EAAG,aAChB,CAAC6L,EAAW,EAAG,YACf,CAAC9L,EAAY,EAAG,aAChB,CAACwL,EAAW,EAAGU,GACf,CAACT,EAAW,EAAGO,GACf,CAACN,EAAS,EAAGO,GACb,CAACN,EAAa,EAAGQ,GACjB,aAAc,MACd,gBAAiB,QACzB,EACI,QAAS,CACL,CAACN,EAAU,EAAGA,GACd,CAAC5L,EAAY,EAAGA,GAChB,CAAC6L,EAAW,EAAGA,GACf,CAAC9L,EAAY,EAAGA,GAChB,CAACwL,EAAW,EAAGA,GACf,CAACC,EAAW,EAAGA,GACf,CAACC,EAAS,EAAGA,GACb,CAACC,EAAa,EAAGA,GACjB,aAAc,eACd,gBAAiB,iBACzB,CACA,EACMa,GAAgBhJ,GACdA,EAAK,QAAQ,SAAS,GAAK,EACpB,UAEPA,EAAK,QAAQ,OAAO,GAAK,EAClB,QAEJ,QAELiJ,GAAgB3G,GAAc,CAChC,MAAMtC,EAAOgJ,GAAa1G,CAAS,EACnC,GAAItC,IAAS,UACT,OAAOlZ,EAAM,sBAAwBiiB,GAAW,QAEpD,GAAI/I,IAAS,QACT,OAAO+I,GAAW,MAEtB,GAAI/I,IAAS,QACT,OAAO+I,GAAW,KAE1B,EACA,SAASG,GAAYpH,EAAQ,GAAI,CAC7B,OAAIA,EAAM,UAAYA,EAAM,WAAaA,EAAM,aAC3CvY,EAAK,KAAK,wEAAwE,EAE/EuY,CACX,CACA,MAAMqH,GAAsB,uLACfC,GAAS,CAAA,EAChBC,GAAmB,IAAI,QACvBC,GAAkB9e,GAAQ,CACxB,CAACA,GAAO6e,GAAiB,IAAI7e,CAAG,IAGpC6e,GAAiB,IAAI7e,CAAG,EACxB0N,GAAG,gBAAgB1N,CAAG,EACtBA,EAAI,SAAS,iBAAiB,mBAAoB,IAAM,CACpD4e,GAAO,QAAS5Q,GAAU,CACtBA,EAAM,UAAS,CACnB,CAAC,CACL,CAAC,EACL,EACO,MAAM+Q,WAAc9D,EAAU,CACjC,YAAY9N,EAAQ,CAChB,MAAMuR,GAAYvR,CAAM,CAAC,EACzB,KAAK,kBAAoB,CAAA,EACzB,KAAK,yBAA2B,CAAA,EAChC,KAAK,UAAS,EACd,KAAK,mBAAkB,EACvByR,GAAO,KAAK,IAAI,EAChB,KAAK,GAAG,uCAAwC,KAAK,UAAU,EAC/D,KAAK,GAAG,sBAAuB,KAAK,gBAAgB,EACpD,KAAK,GAAG,oEAAqE,IAAM,CAC/EF,GAAY,KAAK,KAAK,CAC1B,CAAC,EACD,KAAK,iBAAgB,CACzB,CACA,aAAapI,EAAO,CAChB,MAAM0I,EAAU1I,EAAM,QAAO,IAAO,QAC9B2I,EAAc3I,EAAM,QAAO,IAAO,YAC1B0I,GAAWC,GAErBlgB,EAAK,MAAM,uCAAuC,CAE1D,CACA,kBAAmB,CACf,GAAI,CAAC,KAAK,QACN,OAEJ,MAAMmgB,EAAQ,KAAK,QAAO,EAAK,GAAK,OACpC,KAAK,QAAQ,MAAM,QAAUA,CACjC,CACA,iBAAkB,CACd,IAAIziB,EAEJ,QAAUA,GADM,KAAK,SAAW,KAAK,UAAS,IAC2B,iBAAmB,MAAQA,IAAO,OAAS,OAASA,EAAG,eAAiBH,EAAM,UAAY,OAAS,KAChL,CACA,aAAahE,EAAW,CACpB,GAAI,OAAOA,IAAc2kB,GAAQ,CAC7B,IAAIkC,EACJ,GAAI7mB,EAAU,OAAO,CAAC,IAAM,IAAK,CAC7B,MAAMuiB,EAAYviB,EAAU,MAAM,CAAC,EACnCA,EAAY,SAAS,uBAAuBuiB,CAAS,EAAE,CAAC,CAC5D,MAEQviB,EAAU,OAAO,CAAC,IAAM,IACxB6mB,EAAK7mB,EAGL6mB,EAAK7mB,EAAU,MAAM,CAAC,EAE1BA,EAAY,SAAS,eAAe6mB,CAAE,EAE1C,GAAI,CAAC7mB,EACD,KAAM,8CAAgD6mB,CAE9D,CACA,OAAA,KAAK,SAAS,YAAa7mB,CAAS,EAChC,KAAK,UACD,KAAK,QAAQ,eACb,KAAK,QAAQ,cAAc,YAAY,KAAK,OAAO,EAEvDA,EAAU,YAAY,KAAK,OAAO,EAClCwmB,GAAe,KAAK,iBAAiB,GAElC,IACX,CACA,eAAgB,CACZ,MAAO,EACX,CACA,OAAQ,CACJ,MAAMM,EAAS,KAAK,SAAUlY,EAAMkY,EAAO,OAC3C,QAASla,EAAI,EAAGA,EAAIgC,EAAKhC,IACrBka,EAAOla,CAAC,EAAE,MAAK,EAEnB,OAAO,IACX,CACA,MAAMnE,EAAK,CACP,OAAKA,IACDA,EAAM,CAAA,GAEVA,EAAI,UACA,OAAO,SAAa,KAAe,SAAS,cAAc,KAAK,EAC5Dka,GAAU,UAAU,MAAM,KAAK,KAAMla,CAAG,CACnD,CACA,SAAU,CACN,MAAM,QAAO,EACb,MAAMse,EAAU,KAAK,QACjBA,GAAWtgB,EAAK,cAAcsgB,CAAO,GACrC,KAAK,UAAS,EAAG,YAAYA,CAAO,EAExC,MAAMjJ,EAAQwI,GAAO,QAAQ,IAAI,EACjC,OAAIxI,EAAQ,IACRwI,GAAO,OAAOxI,EAAO,CAAC,EAE1BrX,EAAK,cAAc,KAAK,aAAa,QAAS,KAAK,gBAAgB,OAAO,EACnE,IACX,CACA,oBAAqB,CACjB,MAAMkP,EAAM,KAAK,kBAAkB,CAAC,GAAK,KAAK,yBAAyB,CAAC,EACxE,OAAKA,EAIE,CACH,EAAGA,EAAI,EACP,EAAGA,EAAI,CACnB,GANYlP,EAAK,KAAK4f,EAAmB,EACtB,KAMf,CACA,gBAAgBQ,EAAI,CAChB,OAAO,KAAK,kBAAkB,KAAMG,GAAMA,EAAE,KAAOH,CAAE,CACzD,CACA,sBAAuB,CACnB,OAAO,KAAK,iBAChB,CACA,UAAW,CACP,OAAO,IACX,CACA,YAAa,CACT,OAAO,KAAK,OAChB,CACA,eAAehS,EAAQ,CACnBA,EAAS,CAAE,GAAGA,CAAM,EACpBA,EAAO,EAAIA,EAAO,GAAK,EACvBA,EAAO,EAAIA,EAAO,GAAK,EACvBA,EAAO,MAAQA,EAAO,OAAS,KAAK,MAAK,EACzCA,EAAO,OAASA,EAAO,QAAU,KAAK,OAAM,EAC5C,MAAM3L,EAAS,IAAIgM,GAAY,CAC3B,MAAOL,EAAO,MACd,OAAQA,EAAO,OACf,WAAYA,EAAO,YAAc,CAC7C,CAAS,EACKnD,EAAWxI,EAAO,WAAU,EAAG,SAC/B4d,EAAS,KAAK,SACpB,OAAIjS,EAAO,GAAKA,EAAO,IACnBnD,EAAS,UAAU,GAAKmD,EAAO,EAAG,GAAKA,EAAO,CAAC,EAEnDiS,EAAO,QAAQ,SAAUpJ,EAAO,CAC5B,GAAI,CAACA,EAAM,YACP,OAEJ,MAAMuJ,EAAcvJ,EAAM,eAAe7I,CAAM,EAC/CnD,EAAS,UAAUuV,EAAY,QAASpS,EAAO,EAAGA,EAAO,EAAGoS,EAAY,WAAaA,EAAY,gBAAiBA,EAAY,YAAcA,EAAY,eAAe,CAC3K,CAAC,EACM/d,CACX,CACA,gBAAgByM,EAAK,CACjB,GAAI,CAACA,EACD,OAAO,KAEX,MAAMmR,EAAS,KAAK,SAAUlY,EAAMkY,EAAO,OAAQpa,EAAMkC,EAAM,EAC/D,QAAS,EAAIlC,EAAK,GAAK,EAAG,IAAK,CAC3B,MAAMkD,EAAQkX,EAAO,CAAC,EAAE,gBAAgBnR,CAAG,EAC3C,GAAI/F,EACA,OAAOA,CAEf,CACA,OAAO,IACX,CACA,YAAa,CACT,MAAMxC,EAAQ,KAAK,MAAK,EAClBC,EAAS,KAAK,OAAM,EACtB,KAAK,UACL,KAAK,QAAQ,MAAM,MAAQD,EAAQwX,GACnC,KAAK,QAAQ,MAAM,OAASvX,EAASuX,IAEzC,KAAK,SAAS,QAASlH,GAAU,CAC7BA,EAAM,QAAQ,CAAE,MAAAtQ,EAAO,OAAAC,CAAM,CAAE,EAC/BqQ,EAAM,KAAI,CACd,CAAC,CACL,CACA,gBAAgBxU,EAAQ,CACpB,OAAAA,EAAO,iBAAiB,KAAK,MAAK,EAAI,KAAK,QAAQ,EAC5CA,CACX,CACA,IAAIwU,KAAUpd,EAAM,CAChB,GAAI,UAAU,OAAS,EAAG,CACtB,QAASsJ,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAClC,KAAK,IAAI,UAAUA,CAAC,CAAC,EAEzB,OAAO,IACX,CACA,MAAM,IAAI8T,CAAK,EACf,MAAMwJ,EAAS,KAAK,SAAS,OAC7B,OAAIA,EAASnB,IACTtf,EAAK,KAAK,iBACNygB,EACA,yKAAyK,EAEjLxJ,EAAM,QAAQ,CAAE,MAAO,KAAK,MAAK,EAAI,OAAQ,KAAK,OAAM,EAAI,EAC5DA,EAAM,KAAI,EACN1Z,EAAM,WACN,KAAK,QAAQ,YAAY0Z,EAAM,OAAO,OAAO,EAE1C,IACX,CACA,WAAY,CACR,OAAO,IACX,CACA,UAAW,CACP,OAAO,IACX,CACA,kBAAkB+D,EAAW,CACzB,OAAO0F,GAAgC1F,EAAW,IAAI,CAC1D,CACA,kBAAkBA,EAAW,CACzB2F,GAAgC3F,EAAW,IAAI,CACnD,CACA,eAAeA,EAAW,CACtB4F,GAA6B5F,CAAe,CAChD,CACA,WAAY,CACR,OAAO,KAAK,QAChB,CACA,oBAAqB,CACZzd,EAAM,WAGXgiB,GAAO,QAAQ,CAAC,CAAC/I,EAAOrK,CAAU,IAAM,CACpC,KAAK,QAAQ,iBAAiBqK,EAAQhQ,GAAQ,CAC1C,KAAK2F,CAAU,EAAE3F,CAAG,CACxB,EAAG,CAAE,QAAS,GAAO,CACzB,CAAC,CACL,CACA,cAAcA,EAAK,CACf,KAAK,qBAAqBA,CAAG,EAC7B,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAChC8P,GACA,KAAK,MAAMA,EAAO,aAAc,CAC5B,IAAK9P,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,CAET,CACA,aAAaA,EAAK,CACd,KAAK,qBAAqBA,CAAG,EAC7B,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAChC8P,GACA,KAAK,MAAMA,EAAO,YAAa,CAC3B,IAAK9P,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,CAET,CACA,gBAAgBqa,EAAU,CACtB,IAAI1X,EAAQ,KAAK0X,EAAW,aAAa,EACzC,OAAI1X,GAAS,CAACA,EAAM,aAChBA,EAAQ,MAELA,CACX,CACA,cAAc3C,EAAK,CACf,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAC9BuS,EAAY0G,GAAajZ,EAAI,IAAI,EACvC,GAAI,CAAC8P,EACD,OAEJ,KAAK,qBAAqB9P,CAAG,EAC7B,MAAMsa,EAAc,KAAK,gBAAgB/H,CAAS,EAC5CgI,EAAgB,EAAExjB,EAAM,WAAU,GAAMA,EAAM,eAAc,IAAOA,EAAM,iBAC3EujB,GAAeC,GACfD,EAAY,eAAexK,EAAO,WAAY,CAAE,IAAK9P,EAAK,EAC1Dsa,EAAY,eAAexK,EAAO,aAAc,CAAE,IAAK9P,EAAK,EAC5D,KAAK,MAAM8P,EAAO,aAAc,CAC5B,IAAK9P,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,EACD,KAAKuS,EAAY,aAAa,EAAI,MAE7BgI,IACL,KAAK,MAAMzK,EAAO,aAAc,CAC5B,IAAK9P,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,EACD,KAAK,MAAM8P,EAAO,WAAY,CAC1B,IAAK9P,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,GAEL,KAAK,WAAa,KAClB,KAAK,kBAAoB,CAAA,CAC7B,CACA,aAAaA,EAAK,CACd,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAC9BuS,EAAY0G,GAAajZ,EAAI,IAAI,EACvC,GAAI,CAAC8P,EACD,OAEJ,KAAK,qBAAqB9P,CAAG,EAC7B,IAAIwa,EAAmB,GACvB,KAAK,yBAAyB,QAAS9R,GAAQ,CAC3C,MAAM/F,EAAQ,KAAK,gBAAgB+F,CAAG,EAGtC,GAFAP,GAAG,YAAc,GACjBpR,EAAM,IAAMwb,EAAY,aAAa,EAAI,GACrC,CAAC5P,GAAS,CAACA,EAAM,YAAW,EAAI,CAChC,KAAK4P,EAAY,iBAAiB,EAAI,OACtC,MACJ,CACIxb,EAAM,6BACN4L,EAAM,kBAAkB+F,EAAI,EAAE,EAElC,KAAK6J,EAAY,iBAAiB,EAAI5P,EACtCA,EAAM,eAAemN,EAAO,YAAa,CACrC,IAAK9P,EACL,UAAW0I,EAAI,EAC/B,CAAa,EACD8R,EAAmB,GACnB,MAAMC,EAAUza,EAAI,KAAK,QAAQ,OAAO,GAAK,EACzC2C,EAAM,eAAc,GAAM3C,EAAI,YAAcya,GAC5Cza,EAAI,eAAc,CAE1B,CAAC,EACIwa,GACD,KAAK,MAAM1K,EAAO,YAAa,CAC3B,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAW,KAAK,kBAAkB,CAAC,EAAE,EACrD,CAAa,CAET,CACA,aAAaA,EAAK,CACd,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAC9BuS,EAAY0G,GAAajZ,EAAI,IAAI,EACvC,GAAI,CAAC8P,EACD,OAEJ,MAAM4K,EAAiB1a,EAAI,KAAK,QAAQ,OAAO,GAAK,GAChDA,EAAI,cAAgB,QASxB,GARIjJ,EAAM,WAAU,GAChBoR,GAAG,KAAK,eAAc,GACtBnI,EAAI,YACJ0a,GACA1a,EAAI,eAAc,EAEtB,KAAK,qBAAqBA,CAAG,EAEzB,EADkB,EAAEjJ,EAAM,WAAU,GAAMA,EAAM,eAAc,IAAOA,EAAM,kBAE3E,OAEJ,MAAM4jB,EAAqB,CAAA,EAC3B,IAAIH,EAAmB,GACvB,MAAMF,EAAc,KAAK,gBAAgB/H,CAAS,EAClD,KAAK,yBAAyB,QAAS7J,GAAQ,CAC3C,MAAM/F,EAASiY,GAA+BlS,EAAI,EAAE,GAChD,KAAK,gBAAgBA,CAAG,EACtB8L,EAAY9L,EAAI,GAChBsH,EAAQ,CAAE,IAAKhQ,EAAK,UAAAwU,CAAS,EAC7BqG,EAAkBP,IAAgB3X,EAKxC,GAJIkY,GAAmBP,IACnBA,EAAY,eAAexK,EAAO,WAAY,CAAE,GAAGE,CAAK,EAAIrN,CAAK,EACjE2X,EAAY,eAAexK,EAAO,aAAc,CAAE,GAAGE,CAAK,EAAIrN,CAAK,GAEnEA,EAAO,CACP,GAAIgY,EAAmBhY,EAAM,GAAG,EAC5B,OAEJgY,EAAmBhY,EAAM,GAAG,EAAI,EACpC,CACIA,GAASA,EAAM,eACf6X,EAAmB,GACfK,IACAlY,EAAM,eAAemN,EAAO,YAAa,CAAE,GAAGE,CAAK,EAAIsK,CAAW,EAClE3X,EAAM,eAAemN,EAAO,aAAc,CAAE,GAAGE,CAAK,EAAIsK,CAAW,EACnE,KAAK/H,EAAY,aAAa,EAAI5P,GAEtCA,EAAM,eAAemN,EAAO,YAAa,CAAE,GAAGE,CAAK,CAAE,GAGjDsK,IACA,KAAK,MAAMxK,EAAO,YAAa,CAC3B,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAAwU,CACxB,CAAqB,EACD,KAAKjC,EAAY,aAAa,EAAI,KAG9C,CAAC,EACIiI,GACD,KAAK,MAAM1K,EAAO,YAAa,CAC3B,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAW,KAAK,yBAAyB,CAAC,EAAE,EAC5D,CAAa,CAET,CACA,WAAWA,EAAK,CACZ,MAAM8P,EAASoJ,GAAalZ,EAAI,IAAI,EAC9BuS,EAAY0G,GAAajZ,EAAI,IAAI,EACvC,GAAI,CAAC8P,EACD,OAEJ,KAAK,qBAAqB9P,CAAG,EAC7B,MAAM8a,EAAa3S,GAAG,aAAgBoK,IAAc,WAAaxb,EAAM,aACjEgkB,EAAchkB,EAAM,IAAMwb,EAAY,aAAa,GAAK,CAACuI,EACzDE,EAAkB,KAAKzI,EAAY,iBAAiB,EACpD0I,EAAgB,KAAK1I,EAAY,eAAe,EAChDoI,EAAqB,CAAA,EAC3B,IAAIO,EAAuB,GAC3B,KAAK,yBAAyB,QAASxS,GAAQ,CAC3C,MAAM/F,EAASiY,GAA+BlS,EAAI,EAAE,GAChD,KAAK,gBAAgBA,CAAG,EAC5B,GAAI/F,EAAO,CAEP,GADAA,EAAM,eAAe+F,EAAI,EAAE,EACvBiS,EAAmBhY,EAAM,GAAG,EAC5B,OAEJgY,EAAmBhY,EAAM,GAAG,EAAI,EACpC,CACA,MAAM6R,EAAY9L,EAAI,GAChBsH,EAAQ,CAAE,IAAKhQ,EAAK,UAAAwU,CAAS,EACnC,IAAI2G,EAAe,GACfpkB,EAAM,IAAMwb,EAAY,kBAAkB,GAC1C4I,EAAe,GACf,aAAa,KAAK5I,EAAY,YAAY,CAAC,GAErCuI,IACN/jB,EAAM,IAAMwb,EAAY,kBAAkB,EAAI,GAC9C,aAAa,KAAKA,EAAY,YAAY,CAAC,GAE/C,KAAKA,EAAY,YAAY,EAAI,WAAW,UAAY,CACpDxb,EAAM,IAAMwb,EAAY,kBAAkB,EAAI,EAClD,EAAGxb,EAAM,cAAc,EACnB4L,GAASA,EAAM,eACfuY,EAAuB,GACvB,KAAK3I,EAAY,eAAe,EAAI5P,EACpCA,EAAM,eAAemN,EAAO,UAAW,CAAE,GAAGE,CAAK,CAAE,EAC/C+K,GAAeC,IAAoBrY,IACnCA,EAAM,eAAemN,EAAO,aAAc,CAAE,GAAGE,CAAK,CAAE,EAClDmL,GAAgBF,GAAiBA,IAAkBtY,GACnDA,EAAM,eAAemN,EAAO,gBAAiB,CAAE,GAAGE,CAAK,CAAE,KAKjE,KAAKuC,EAAY,eAAe,EAAI,KAC/B2I,IACD,KAAK,MAAMpL,EAAO,UAAW,CACzB,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAW,KAAK,yBAAyB,CAAC,EAAE,EACpE,CAAqB,EACDkb,EAAuB,IAEvBH,GACA,KAAK,MAAMjL,EAAO,aAAc,CAC5B,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAAwU,CACxB,CAAqB,EAED2G,GACA,KAAK,MAAMrL,EAAO,gBAAiB,CAC/B,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAAwU,CACxB,CAAqB,EAGb,CAAC,EACI0G,GACD,KAAK,MAAMpL,EAAO,UAAW,CACzB,IAAK9P,EACL,OAAQ,KACR,cAAe,KACf,UAAW,KAAK,yBAAyB,CAAC,EAAE,EAC5D,CAAa,EAELjJ,EAAM,IAAMwb,EAAY,aAAa,EAAI,GACrCvS,EAAI,YAAcuS,IAAc,SAAWA,IAAc,WACzDvS,EAAI,eAAc,CAE1B,CACA,aAAaA,EAAK,CACd,KAAK,qBAAqBA,CAAG,EAC7B,MAAM2C,EAAQ,KAAK,gBAAgB,KAAK,mBAAkB,CAAE,EACxDA,GAASA,EAAM,cACfA,EAAM,eAAe6V,GAAa,CAAE,IAAKxY,CAAG,CAAE,EAG9C,KAAK,MAAMwY,GAAa,CACpB,IAAKxY,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,CAET,CACA,OAAOA,EAAK,CACR,KAAK,qBAAqBA,CAAG,EAC7B,MAAM2C,EAAQ,KAAK,gBAAgB,KAAK,mBAAkB,CAAE,EACxDA,GAASA,EAAM,cACfA,EAAM,eAAekW,GAAO,CAAE,IAAK7Y,CAAG,CAAE,EAGxC,KAAK,MAAM6Y,GAAO,CACd,IAAK7Y,EACL,OAAQ,KACR,cAAe,IAC/B,CAAa,CAET,CACA,eAAeA,EAAK,CAChB,KAAK,qBAAqBA,CAAG,EAC7B,MAAM2C,EAAQiY,GAA+B5a,EAAI,SAAS,GACtD,KAAK,gBAAgB,KAAK,oBAAoB,EAC9C2C,GACAA,EAAM,eAAewV,GAAWiD,GAA0Bpb,CAAG,CAAC,EAElEoa,GAA6Bpa,EAAI,SAAS,CAC9C,CACA,oBAAoBA,EAAK,CACrBoa,GAA6Bpa,EAAI,SAAS,CAC9C,CACA,qBAAqBA,EAAK,CACtB,MAAMqb,EAAkB,KAAK,oBAAmB,EAChD,IAAIzjB,EAAI,KAAMC,EAAI,KAClBmI,EAAMA,GAAY,OAAO,MACrBA,EAAI,UAAY,QAChB,KAAK,kBAAoB,CAAA,EACzB,KAAK,yBAA2B,CAAA,EAChC,MAAM,UAAU,QAAQ,KAAKA,EAAI,QAAUsb,GAAU,CACjD,KAAK,kBAAkB,KAAK,CACxB,GAAIA,EAAM,WACV,GAAIA,EAAM,QAAUD,EAAgB,MAAQA,EAAgB,OAC5D,GAAIC,EAAM,QAAUD,EAAgB,KAAOA,EAAgB,MAC/E,CAAiB,CACL,CAAC,EACD,MAAM,UAAU,QAAQ,KAAKrb,EAAI,gBAAkBA,EAAI,QAAUsb,GAAU,CACvE,KAAK,yBAAyB,KAAK,CAC/B,GAAIA,EAAM,WACV,GAAIA,EAAM,QAAUD,EAAgB,MAAQA,EAAgB,OAC5D,GAAIC,EAAM,QAAUD,EAAgB,KAAOA,EAAgB,MAC/E,CAAiB,CACL,CAAC,IAGDzjB,GAAKoI,EAAI,QAAUqb,EAAgB,MAAQA,EAAgB,OAC3DxjB,GAAKmI,EAAI,QAAUqb,EAAgB,KAAOA,EAAgB,OAC1D,KAAK,WAAa,CACd,EAAGzjB,EACH,EAAGC,CACnB,EACY,KAAK,kBAAoB,CAAC,CAAE,EAAAD,EAAG,EAAAC,EAAG,GAAI2B,EAAK,mBAAmBwG,CAAG,EAAG,EACpE,KAAK,yBAA2B,CAC5B,CAAE,EAAApI,EAAG,EAAAC,EAAG,GAAI2B,EAAK,mBAAmBwG,CAAG,CAAC,CACxD,EAEI,CACA,oBAAoBA,EAAK,CACrBxG,EAAK,KAAK,4FAA4F,EACtG,KAAK,qBAAqBwG,CAAG,CACjC,CACA,qBAAsB,CAClB,GAAI,CAAC,KAAK,SAAW,CAAC,KAAK,QAAQ,sBAC/B,MAAO,CACH,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,CACxB,EAEQ,MAAMgO,EAAO,KAAK,QAAQ,sBAAqB,EAC/C,MAAO,CACH,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,OAAQA,EAAK,MAAQ,KAAK,QAAQ,aAAe,EACjD,OAAQA,EAAK,OAAS,KAAK,QAAQ,cAAgB,CAC/D,CACI,CACA,WAAY,CAUR,GATA,KAAK,aAAe,IAAI/F,GAAY,CAChC,MAAO,EACP,OAAQ,CACpB,CAAS,EACD,KAAK,gBAAkB,IAAIC,GAAU,CACjC,WAAY,EACZ,MAAO,EACP,OAAQ,CACpB,CAAS,EACG,CAACnR,EAAM,UACP,OAEJ,MAAMhE,EAAY,KAAK,UAAS,EAChC,GAAI,CAACA,EACD,KAAM,mDAEVA,EAAU,UAAY,GACtB,KAAK,QAAUA,EAAU,cAAc,cAAc,KAAK,EAC1D,KAAK,QAAQ,MAAM,SAAW,WAC9B,KAAK,QAAQ,MAAM,WAAa,OAChC,KAAK,QAAQ,UAAY,kBACzB,KAAK,QAAQ,aAAa,OAAQ,cAAc,EAChDA,EAAU,YAAY,KAAK,OAAO,EAClCwmB,GAAe,KAAK,iBAAiB,EACrC,KAAK,WAAU,CACnB,CACA,OAAQ,CACJ,OAAA/f,EAAK,KAAK,gGAAgG,EACnG,IACX,CACA,YAAa,CACT,OAAO,IACX,CACA,WAAY,CACR,OAAA,KAAK,YAAW,EAAG,QAAQ,SAAUiX,EAAO,CACxCA,EAAM,UAAS,CACnB,CAAC,EACM,IACX,CACJ,CACA+I,GAAM,UAAU,SAAWzM,GAC3B3V,GAAcoiB,EAAK,EACnBvP,EAAQ,gBAAgBuP,GAAO,WAAW,ECltB1C,MAAM+B,GAAa,YACbC,GAAc,aACdC,GAAe,eACfC,GAAiB,iBACjBC,GAAiB,iBACvB,IAAIC,GACJ,SAASC,IAAkB,CACvB,OAAID,KAGJA,GAAepiB,EAAK,sBAAsB,WAAW,IAAI,EAClDoiB,GACX,CACO,MAAM3E,GAAS,CAAA,EACtB,SAAS6E,GAAU5b,EAAS,CACxB,MAAM6E,EAAW,KAAK,MAAM,SACxBA,EACA7E,EAAQ,KAAK6E,CAAQ,EAGrB7E,EAAQ,KAAI,CAEpB,CACA,SAAS6b,GAAY7b,EAAS,CAC1BA,EAAQ,OAAM,CAClB,CACA,SAAS8b,GAAa9b,EAAS,CAC3B,MAAM6E,EAAW,KAAK,MAAM,SACxBA,EACA7E,EAAQ,KAAK6E,CAAQ,EAGrB7E,EAAQ,KAAI,CAEpB,CACA,SAAS+b,GAAe/b,EAAS,CAC7BA,EAAQ,OAAM,CAClB,CACA,SAASgc,IAAuB,CAC5B,KAAK,YAAYX,EAAU,CAC/B,CACA,SAASY,IAA2B,CAChC,KAAK,YAAYX,EAAW,CAChC,CACA,SAASY,IAAyB,CAC9B,KAAK,YAAYX,EAAY,CACjC,CACA,SAASY,IAA4B,CACjC,KAAK,YAAYX,EAAc,CACnC,CACA,SAASY,IAA4B,CACjC,KAAK,YAAYX,EAAc,CACnC,CACO,MAAMY,UAAcjP,CAAK,CAC5B,YAAY1F,EAAQ,CAChB,MAAMA,CAAM,EACZ,IAAIlK,EACA8e,EAAW,EACf,KACI9e,EAAMlE,EAAK,YAAW,EAClB,EAAAkE,GAAO,EAAEA,KAAOuZ,MAIpB,GADAuF,IACIA,GAAY,IAAO,CACnBhjB,EAAK,KAAK,sJAAsJ,EAChKkE,EAAMlE,EAAK,eAAc,EACzB,KACJ,CAEJ,KAAK,SAAWkE,EAChBuZ,GAAOvZ,CAAG,EAAI,IAClB,CACA,YAAa,CACT,OAAAlE,EAAK,KAAK,gEAAgE,EACnE,KAAK,SAAQ,EAAG,WAAU,CACrC,CACA,WAAY,CACR,OAAAA,EAAK,KAAK,+DAA+D,EAClE,KAAK,SAAQ,EAAG,UAAS,CACpC,CACA,cAAe,CACX,OAAO,KAAK,MAAM,WAAa,KAAK,UACxC,CACA,YAAa,CACT,OAAO,KAAK,MAAM,SAAW,KAAK,QACtC,CACA,WAAY,CACR,OAAO,KAAK,UAAU+hB,GAAY,KAAK,UAAU,CACrD,CACA,YAAa,CACT,OAAQ,KAAK,cAAa,GACtB,KAAK,cAAa,IAAO,GACzB,CAAC,EAAE,KAAK,YAAW,GACf,KAAK,WAAU,GACf,KAAK,cAAa,GAClB,KAAK,cAAa,EAC9B,CACA,iBAAkB,CACd,OAAO,KAAK,UAAUE,GAAc,KAAK,gBAAgB,CAC7D,CACA,kBAAmB,CACf,GAAI,KAAK,mBAAoB,CAEzB,MAAMgB,EADMZ,GAAe,EACP,cAAc,KAAK,iBAAgB,EAAI,KAAK,kBAAiB,GAAM,QAAQ,EAC/F,GAAIY,GAAWA,EAAQ,aAAc,CACjC,MAAM/kB,EAAK,IAAIF,GACfE,EAAG,UAAU,KAAK,aAAY,EAAI,KAAK,cAAc,EACrDA,EAAG,OAAOX,EAAM,SAAS,KAAK,oBAAmB,CAAE,CAAC,EACpDW,EAAG,MAAM,KAAK,kBAAiB,EAAI,KAAK,mBAAmB,EAC3DA,EAAG,UAAU,GAAK,KAAK,mBAAkB,EAAI,GAAK,KAAK,oBAAoB,EAC3E,MAAMD,EAAIC,EAAG,UAAS,EAChBa,EAAS,OAAO,UAAc,IAC9B,CACE,EAAGd,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,CAC9B,EACsB,IAAI,UAAUA,CAAC,EACrBglB,EAAQ,aAAalkB,CAAM,CAC/B,CACA,OAAOkkB,CACX,CACJ,CACA,oBAAqB,CACjB,OAAO,KAAK,UAAUf,GAAgB,KAAK,mBAAmB,CAClE,CACA,qBAAsB,CAClB,MAAMhV,EAAa,KAAK,6BAA4B,EACpD,GAAIA,EAAY,CACZ,MAAMjK,EAAMof,GAAe,EACrBrc,EAAQ,KAAK,6BAA4B,EACzCC,EAAM,KAAK,2BAA0B,EACrC2G,EAAM3J,EAAI,qBAAqB+C,EAAM,EAAGA,EAAM,EAAGC,EAAI,EAAGA,EAAI,CAAC,EACnE,QAASE,EAAI,EAAGA,EAAI+G,EAAW,OAAQ/G,GAAK,EACxCyG,EAAI,aAAaM,EAAW/G,CAAC,EAAG+G,EAAW/G,EAAI,CAAC,CAAC,EAErD,OAAOyG,CACX,CACJ,CACA,oBAAqB,CACjB,OAAO,KAAK,UAAUuV,GAAgB,KAAK,mBAAmB,CAClE,CACA,qBAAsB,CAClB,MAAMjV,EAAa,KAAK,6BAA4B,EACpD,GAAIA,EAAY,CACZ,MAAMjK,EAAMof,GAAe,EACrBrc,EAAQ,KAAK,6BAA4B,EACzCC,EAAM,KAAK,2BAA0B,EACrC2G,EAAM3J,EAAI,qBAAqB+C,EAAM,EAAGA,EAAM,EAAG,KAAK,8BAA6B,EAAIC,EAAI,EAAGA,EAAI,EAAG,KAAK,6BAA6B,EAC7I,QAASE,EAAI,EAAGA,EAAI+G,EAAW,OAAQ/G,GAAK,EACxCyG,EAAI,aAAaM,EAAW/G,CAAC,EAAG+G,EAAW/G,EAAI,CAAC,CAAC,EAErD,OAAOyG,CACX,CACJ,CACA,eAAgB,CACZ,OAAO,KAAK,UAAUoV,GAAa,KAAK,cAAc,CAC1D,CACA,gBAAiB,CACb,GAAI,CAAC,KAAK,YACN,OAEJ,MAAMkB,EAAOljB,EAAK,YAAY,KAAK,YAAW,CAAE,EAChD,GAAIkjB,EACA,MAAQ,QACJA,EAAK,EACL,IACAA,EAAK,EACL,IACAA,EAAK,EACL,IACAA,EAAK,GAAK,KAAK,cAAa,GAAM,GAClC,GAEZ,CACA,SAAU,CACN,OAAO,KAAK,WAAW,UAAW,CAC9B,cACA,OACA,mBACA,+BACA,8BACZ,EAAW,IACS,KAAK,YAAW,GACpB,CAAC,EAAE,KAAK,KAAI,GACR,KAAK,iBAAgB,GACrB,KAAK,6BAA4B,GACjC,KAAK,6BAA4B,EAC5C,CACL,CACA,WAAY,CACR,OAAO,KAAK,WAAW,YAAa,CAChC,gBACA,cACA,SACA,gCACZ,EAAW,IACS,KAAK,cAAa,GACtB,KAAK,YAAW,GAChB,CAAC,EAAE,KAAK,OAAM,GAAM,KAAK,+BAA8B,EAC9D,CACL,CACA,cAAe,CACX,MAAMvc,EAAQ,KAAK,eAAc,EACjC,OAAIA,IAAU,OACH,KAAK,UAAS,EAElB,KAAK,iBAAmB,CAAC,CAACA,CACrC,CACA,WAAWxI,EAAO,CACd,MAAM8Q,EAAQ,KAAK,SAAQ,EAC3B,GAAI,CAACA,EACD,MAAO,GAEX,MAAMkU,EAAkBlU,EAAM,gBAAgBA,EAAM,eAAe,EACnE,OAAAkU,EAAgB,WAAU,EAAG,MAAK,EAClC,KAAK,QAAQA,EAAiB,OAAW,EAAI,EACnCA,EAAgB,QAAQ,aAAa,KAAK,MAAMhlB,EAAM,CAAC,EAAG,KAAK,MAAMA,EAAM,CAAC,EAAG,EAAG,CAAC,EAAE,KACtF,CAAC,EAAI,CAClB,CACA,SAAU,CACN2V,OAAAA,EAAK,UAAU,QAAQ,KAAK,IAAI,EAChC,OAAO2J,GAAO,KAAK,QAAQ,EAC3B,OAAO,KAAK,SACL,IACX,CACA,iBAAiB2F,EAAW,CACxB,IAAI1lB,EAEJ,GAAI,EADwBA,KAAK,KAAK,MAAM,sBAAwB,MAAQA,IAAO,SAASA,GAExF,MAAO,GAEX,MAAM2lB,EAAUD,GAAa,KAAK,QAAO,EACnCE,EAAY,KAAK,UAAS,EAC1BC,EAAgB,KAAK,mBAAkB,IAAO,EACpD,GAAIF,GAAWC,GAAaC,EACxB,MAAO,GAEX,MAAMC,EAAY,KAAK,UAAS,EAC1BC,EAAkB,KAAK,uBAAsB,EACnD,MAAI,CAAA,EAAAJ,GAAWC,GAAaE,GAAaC,EAI7C,CACA,oBAAoBxhB,EAAK,CACrBjC,EAAK,KAAK,6EAA6E,EACnFiC,EACA,KAAK,eAAe,MAAM,EAG1B,KAAK,eAAe,CAAC,CAE7B,CACA,qBAAsB,CAClB,OAAI,KAAK,eAAc,IAAO,CAMlC,CACA,aAAc,CACV,MAAM2X,EAAO,KAAK,KAAI,EACtB,MAAO,CACH,EAAG,KAAK,UAAY,CAACA,EAAK,MAAQ,EAAI,EACtC,EAAG,KAAK,UAAY,CAACA,EAAK,OAAS,EAAI,EACvC,MAAOA,EAAK,MACZ,OAAQA,EAAK,MACzB,CACI,CACA,cAAcxL,EAAS,GAAI,CACvB,IAAIsV,EAAkB,GAClB7M,EAAS,KAAK,UAAS,EAC3B,KAAOA,GAAQ,CACX,GAAIA,EAAO,WAAY,CACnB6M,EAAkB,GAClB,KACJ,CACA7M,EAASA,EAAO,UAAS,CAC7B,CACA,MAAM0G,EAAgBnP,EAAO,cACvB2I,EAAa3I,EAAO,YAAesV,GAAmB,KAAK,SAAQ,GAAO,OAC1EC,EAAW,KAAK,YAAW,EAE3B7V,EADc,CAACM,EAAO,YAAc,KAAK,UAAS,GACpB,KAAK,YAAW,GAAO,EACrDwV,EAAqBD,EAAS,MAAQ7V,EACtC+V,EAAsBF,EAAS,OAAS7V,EACxCgW,EAAc,CAAC1V,EAAO,YAAc,KAAK,UAAS,EAClD2V,EAAgBD,EAAc,KAAK,cAAa,EAAK,EACrDE,EAAgBF,EAAc,KAAK,cAAa,EAAK,EACrDG,EAAWL,EAAqB,KAAK,IAAIG,CAAa,EACtDG,EAAYL,EAAsB,KAAK,IAAIG,CAAa,EACxD/R,EAAc6R,GAAe,KAAK,WAAU,GAAO,EACnDnd,EAAQsd,EAAWhS,EAAa,EAChCrL,EAASsd,EAAYjS,EAAa,EAClCuC,EAAO,CACT,MAAO7N,EACP,OAAQC,EACR,EAAG,EAAEkH,EAAc,EAAImE,GACnB,KAAK,IAAI8R,EAAe,CAAC,EACzBJ,EAAS,EACb,EAAG,EAAE7V,EAAc,EAAImE,GACnB,KAAK,IAAI+R,EAAe,CAAC,EACzBL,EAAS,CACzB,EACQ,OAAKpG,EAGE/I,EAFI,KAAK,iBAAiBA,EAAMuC,CAAU,CAGrD,CACA,UAAU2F,EAAKxH,EAAKF,EAAc,CAC9B,MAAMiC,EAAQ,KAAK,SAAQ,EACrBxU,EAASia,GAAOzF,EAAM,UAAS,EAAIvQ,EAAUjE,EAAO,aAAcqT,EAAe,KAAK,gBAAe,EAAIqO,EAAW,KAAK,aAAY,EAAIX,EAAY,KAAK,UAAS,EACzK,IAAIvU,EAEJ,MAAMmV,EAAclP,IAAQ,KAC5B,GAAI,CAAC,KAAK,UAAS,GAAM,CAACkP,EACtB,OAAO,KAEX,GAAItO,EAAc,CACdpP,EAAQ,KAAI,EACZ,MAAMzI,EAAI,KAAK,qBAAqBiX,CAAG,EAAE,UAAS,EAClD,OAAAxO,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpD,KAAK,uBAAuByI,CAAO,EACnCA,EAAQ,QAAO,EACR,IACX,CACA,GAAI,CAACyd,EACD,OAAO,KAGX,GADAzd,EAAQ,KAAI,EACR,KAAK,iBAAgB,EAAmB,CACxCuI,EAAQ,KAAK,SAAQ,EACrB,MAAMoV,EAAKrP,GAAgB/F,EAAM,gBAAgBA,EAAM,YAAY,EAC7DgG,EAAgBoP,EAAG,WAAU,EAC/BrP,GACAC,EAAc,KAAI,EAClBA,EAAc,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3CA,EAAc,UAAU,EAAG,EAAGoP,EAAG,MAAOA,EAAG,MAAM,EACjDpP,EAAc,QAAO,GAGrBA,EAAc,MAAK,EAEvBA,EAAc,KAAI,EAClBA,EAAc,sBAAwBvO,EAAQ,sBAC9CuO,EAAc,eAAe,IAAI,EACjCA,EAAc,iBAAiB,IAAI,EACnC,MAAMqP,EAAI,KAAK,qBAAqBpP,CAAG,EAAE,UAAS,EAClDD,EAAc,UAAUqP,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAC1DH,EAAS,KAAK,KAAMlP,EAAe,IAAI,EACvCA,EAAc,QAAO,EACrB,MAAMxH,EAAQ4W,EAAG,WACbb,GACA9c,EAAQ,aAAa,IAAI,EAExB0d,IACD1d,EAAQ,cAAc,IAAI,EAC1BA,EAAQ,+BAA+B,IAAI,GAE/CA,EAAQ,UAAU2d,EAAG,QAASA,EAAG,GAAK,EAAGA,EAAG,GAAK,EAAGA,EAAG,MAAQ5W,EAAO4W,EAAG,OAAS5W,CAAK,CAC3F,KACK,CAGD,GAFA/G,EAAQ,eAAe,IAAI,EAC3BA,EAAQ,iBAAiB,IAAI,EACzB,CAAC0d,EAAa,CACd,MAAME,EAAI,KAAK,qBAAqBpP,CAAG,EAAE,UAAS,EAClDxO,EAAQ,UAAU4d,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpD5d,EAAQ,cAAc,IAAI,EAC1BA,EAAQ,+BAA+B,IAAI,CAC/C,CACI8c,GACA9c,EAAQ,aAAa,IAAI,EAE7Byd,EAAS,KAAK,KAAMzd,EAAS,IAAI,CACrC,CACA,OAAAA,EAAQ,QAAO,EACR,IACX,CACA,QAAQgW,EAAKxH,EAAK8B,EAAgB,GAAO,CACrC,GAAI,CAAC,KAAK,cAAc9B,EAAK8B,CAAa,EACtC,OAAO,KAEX,MAAMC,EAAQ,KAAK,SAAQ,EAAIxU,EAASia,GAAOzF,EAAM,UAAWvQ,EAAUjE,GAAUA,EAAO,WAAU,EAAI0hB,EAAW,KAAK,QAAO,GAAM,KAAK,UAAS,EAAIvH,EAAkB,KAAK,oBAAoB1H,CAAG,EAItM,GAHK,KAAK,UACNlV,EAAK,KAAK,yKAAyK,EAEnL4c,EAAiB,CACjBlW,EAAQ,KAAI,EACZ,MAAMzI,EAAI,KAAK,qBAAqBiX,CAAG,EAAE,UAAS,EAClD,OAAAxO,EAAQ,UAAUzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACpD,KAAK,qBAAqByI,EAASkW,CAAe,EAClDlW,EAAQ,QAAO,EACR,IACX,CACA,GAAI,CAACyd,EACD,OAAO,KAMX,GAJAzd,EAAQ,KAAI,EACZA,EAAQ,eAAe,IAAI,EAC3BA,EAAQ,iBAAiB,IAAI,EACX,OAASwO,EACX,CACZ,MAAMoP,EAAI,KAAK,qBAAqBpP,CAAG,EAAE,UAAS,EAClDxO,EAAQ,UAAU4d,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACxD,CACA,OAAAH,EAAS,KAAK,KAAMzd,EAAS,IAAI,EACjCA,EAAQ,QAAO,EACR,IACX,CACA,iBAAiB6d,EAAiB,EAAG,CACjC,MAAMxO,EAAc,KAAK,sBAAqB,EAAIZ,EAAY,KAAK,oBAAmB,EAAIC,EAAaD,EAAU,WAAU,EAAIqP,EAAWrP,EAAU,SAAQ,EAAIsP,EAAYtP,EAAU,UAAS,EAC/LC,EAAW,MAAK,EAChBA,EAAW,UAAUW,EAAY,QAAS,EAAG,EAAGyO,EAAUC,CAAS,EACnE,GAAI,CACA,MAAMC,EAAetP,EAAW,aAAa,EAAG,EAAGoP,EAAUC,CAAS,EAChEE,EAAUD,EAAa,KACvBvc,EAAMwc,EAAQ,OACdC,EAAc5kB,EAAK,UAAU,KAAK,QAAQ,EAChD,QAASmD,EAAI,EAAGA,EAAIgF,EAAKhF,GAAK,EACZwhB,EAAQxhB,EAAI,CAAC,EACfohB,GACRI,EAAQxhB,CAAC,EAAIyhB,EAAY,EACzBD,EAAQxhB,EAAI,CAAC,EAAIyhB,EAAY,EAC7BD,EAAQxhB,EAAI,CAAC,EAAIyhB,EAAY,EAC7BD,EAAQxhB,EAAI,CAAC,EAAI,KAGjBwhB,EAAQxhB,EAAI,CAAC,EAAI,EAGzBiS,EAAW,aAAasP,EAAc,EAAG,CAAC,CAC9C,OACO/kB,EAAG,CACNK,EAAK,MAAM,sDAAwDL,EAAE,OAAO,CAChF,CACA,OAAO,IACX,CACA,kBAAkBqb,EAAW,CACzB,OAAO0F,GAAgC1F,EAAW,IAAI,CAC1D,CACA,kBAAkBA,EAAW,CACzB2F,GAAgC3F,EAAW,IAAI,CACnD,CACA,eAAeA,EAAW,CACtB4F,GAA6B5F,CAAe,CAChD,CACJ,CACA+H,EAAM,UAAU,UAAYT,GAC5BS,EAAM,UAAU,YAAcR,GAC9BQ,EAAM,UAAU,aAAeP,GAC/BO,EAAM,UAAU,eAAiBN,GACjCM,EAAM,UAAU,UAAY,GAC5BA,EAAM,UAAU,SAAW,QAC3BnlB,GAAcmlB,CAAK,EACnBA,EAAM,UAAU,eAAiB,CAAA,EACjCA,EAAM,UAAU,GAAG,8HAA+HL,EAAoB,EACtKK,EAAM,UAAU,GAAG,8EAA+EJ,EAAwB,EAC1HI,EAAM,UAAU,GAAG,kSAAmSH,EAAsB,EAC5UG,EAAM,UAAU,GAAG,wOAAyOF,EAAyB,EACrRE,EAAM,UAAU,GAAG,0TAA2TD,EAAyB,EACvWrS,EAAQ,gBAAgBsS,EAAO,SAAU,OAAWhT,GAA4B,CAAE,EAClFU,EAAQ,gBAAgBsS,EAAO,cAAe,EAAGvT,EAAkB,CAAE,EACrEiB,EAAQ,gBAAgBsS,EAAO,yBAA0B,EAAK,EAC9DtS,EAAQ,gBAAgBsS,EAAO,iBAAkB,OAAQlT,GAAwB,CAAE,EACnFY,EAAQ,gBAAgBsS,EAAO,mBAAoB,GAAM1S,GAAmB,CAAE,EAC9EI,EAAQ,gBAAgBsS,EAAO,qBAAsB,GAAM1S,GAAmB,CAAE,EAChFI,EAAQ,gBAAgBsS,EAAO,yBAA0B,GAAM1S,GAAmB,CAAE,EACpFI,EAAQ,gBAAgBsS,EAAO,UAAU,EACzCtS,EAAQ,gBAAgBsS,EAAO,SAAS,EACxCtS,EAAQ,gBAAgBsS,EAAO,YAAY,EAC3CtS,EAAQ,gBAAgBsS,EAAO,WAAW,EAC1CtS,EAAQ,gBAAgBsS,EAAO,SAAS,EACxCtS,EAAQ,gBAAgBsS,EAAO,MAAM,EACrCtS,EAAQ,gBAAgBsS,EAAO,aAAc,EAAGvT,EAAkB,CAAE,EACpEiB,EAAQ,gBAAgBsS,EAAO,cAAe,OAAWjT,GAAkB,CAAE,EAC7EW,EAAQ,gBAAgBsS,EAAO,aAAc,EAAGvT,EAAkB,CAAE,EACpEiB,EAAQ,gBAAgBsS,EAAO,gBAAiB,EAAGvT,EAAkB,CAAE,EACvEiB,EAAQ,0BAA0BsS,EAAO,eAAgB,CAAC,IAAK,GAAG,CAAC,EACnEtS,EAAQ,gBAAgBsS,EAAO,gBAAiB,EAAGvT,EAAkB,CAAE,EACvEiB,EAAQ,gBAAgBsS,EAAO,gBAAiB,EAAGvT,EAAkB,CAAE,EACvEiB,EAAQ,gBAAgBsS,EAAO,kBAAkB,EACjDtS,EAAQ,gBAAgBsS,EAAO,OAAQ,OAAWhT,GAA4B,CAAE,EAChFU,EAAQ,gBAAgBsS,EAAO,eAAgB,EAAGvT,EAAkB,CAAE,EACtEiB,EAAQ,gBAAgBsS,EAAO,eAAgB,EAAGvT,EAAkB,CAAE,EACtEiB,EAAQ,gBAAgBsS,EAAO,8BAA8B,EAC7DtS,EAAQ,gBAAgBsS,EAAO,gCAAgC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,gBAAgBsS,EAAO,8BAA+B,CAAC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,8BAA8B,EAC7DtS,EAAQ,gBAAgBsS,EAAO,oBAAqB,QAAQ,EAC5DtS,EAAQ,gBAAgBsS,EAAO,cAAe,EAAI,EAClDtS,EAAQ,gBAAgBsS,EAAO,gBAAiB,EAAI,EACpDtS,EAAQ,gBAAgBsS,EAAO,gBAAiB,EAAI,EACpDtS,EAAQ,gBAAgBsS,EAAO,cAAe,EAAI,EAClDtS,EAAQ,gBAAgBsS,EAAO,qBAAsB,EAAI,EACzDtS,EAAQ,gBAAgBsS,EAAO,eAAgB,OAAO,EACtDtS,EAAQ,0BAA0BsS,EAAO,oBAAqB,CAAC,IAAK,GAAG,CAAC,EACxEtS,EAAQ,gBAAgBsS,EAAO,qBAAsB,EAAGvT,EAAkB,CAAE,EAC5EiB,EAAQ,gBAAgBsS,EAAO,qBAAsB,EAAGvT,EAAkB,CAAE,EAC5EiB,EAAQ,0BAA0BsS,EAAO,mBAAoB,CAAC,IAAK,GAAG,CAAC,EACvEtS,EAAQ,gBAAgBsS,EAAO,oBAAqB,EAAGvT,EAAkB,CAAE,EAC3EiB,EAAQ,gBAAgBsS,EAAO,oBAAqB,EAAGvT,EAAkB,CAAE,EAC3EiB,EAAQ,0BAA0BsS,EAAO,+BAAgC,CACrE,IACA,GACJ,CAAC,EACDtS,EAAQ,0BAA0BsS,EAAO,iCAAkC,CACvE,IACA,GACJ,CAAC,EACDtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,gBAAgBsS,EAAO,kCAAmC,CAAC,EACnEtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,gBAAgBsS,EAAO,kCAAmC,CAAC,EACnEtS,EAAQ,0BAA0BsS,EAAO,6BAA8B,CACnE,IACA,GACJ,CAAC,EACDtS,EAAQ,0BAA0BsS,EAAO,+BAAgC,CACrE,IACA,GACJ,CAAC,EACDtS,EAAQ,gBAAgBsS,EAAO,8BAA+B,CAAC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,gBAAgBsS,EAAO,8BAA+B,CAAC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,0BAA0BsS,EAAO,+BAAgC,CACrE,IACA,GACJ,CAAC,EACDtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,gBAAgBsS,EAAO,gCAAiC,CAAC,EACjEtS,EAAQ,0BAA0BsS,EAAO,6BAA8B,CACnE,IACA,GACJ,CAAC,EACDtS,EAAQ,gBAAgBsS,EAAO,8BAA+B,CAAC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,8BAA+B,CAAC,EAC/DtS,EAAQ,gBAAgBsS,EAAO,sBAAuB,CAAC,EACvDtS,EAAQ,gBAAgBsS,EAAO,WAAY,OAAWjT,GAAkB,CAAE,EAC1EW,EAAQ,WAAWsS,EAAO,CACtB,UAAW,OACX,aAAc,UACd,aAAc,UACd,SAAU,YACV,YAAa,eACb,YAAa,eACb,YAAa,UACb,eAAgB,aAChB,eAAgB,YACpB,CAAC,EC3iBD,MAAM8B,GAAc,aAAcC,GAAO,OAAQC,GAAuB,CACpE,CAAE,EAAG,EAAG,EAAG,CAAC,EACZ,CAAE,EAAG,GAAI,EAAG,EAAE,EACd,CAAE,EAAG,EAAG,EAAG,EAAE,EACb,CAAE,EAAG,EAAG,EAAG,CAAC,EACZ,CAAE,EAAG,GAAI,EAAG,CAAC,CACjB,EAAGC,GAA2BD,GAAqB,OAC5C,MAAME,WAAc/I,EAAU,CACjC,YAAY9N,EAAQ,CAChB,MAAMA,CAAM,EACZ,KAAK,OAAS,IAAIK,GAClB,KAAK,UAAY,IAAIC,GAAU,CAC3B,WAAY,CACxB,CAAS,EACD,KAAK,gBAAkB,GACvB,KAAK,GAAG,sBAAuB,KAAK,gBAAgB,EACpD,KAAK,iBAAgB,EACrB,KAAK,GAAG,oCAAqC,KAAK,iBAAiB,EACnE,KAAK,kBAAiB,CAC1B,CACA,iBAAkB,CAEd,OADU,KAAK,OAAO,QACb,gBAAe,CAC5B,CACA,WAAY,CACR,OAAO,KAAK,MAChB,CACA,wBAAyB,CACrB,OAAO,KAAK,OAAO,OACvB,CACA,cAAe,CACX,OAAO,KAAK,SAChB,CACA,YAAa,CACT,OAAO,KAAK,UAAS,EAAG,WAAU,CACtC,CACA,MAAM/E,EAAQ,CACV,OAAA,KAAK,WAAU,EAAG,MAAMA,CAAM,EAC9B,KAAK,aAAY,EAAG,WAAU,EAAG,MAAMA,CAAM,EACtC,IACX,CACA,UAAU0N,EAAO,CACb,MAAM,UAAUA,CAAK,EACrB,MAAMpI,EAAQ,KAAK,SAAQ,EAC3B,OAAIA,GAASA,EAAM,UACfA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EACnDoI,EAAQpI,EAAM,SAAS,OAAS,EAChCA,EAAM,QAAQ,aAAa,KAAK,uBAAsB,EAAIA,EAAM,SAASoI,EAAQ,CAAC,EAAE,UAAS,EAAG,OAAO,EAGvGpI,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,GAGxD,IACX,CACA,WAAY,CACR6E,EAAK,UAAU,UAAU,KAAK,IAAI,EAClC,MAAM7E,EAAQ,KAAK,SAAQ,EAC3B,OAAIA,GAASA,EAAM,UACfA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EACvDA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,GAEpD,EACX,CACA,QAAS,CAEL,GAAI,CADU6E,EAAK,UAAU,OAAO,KAAK,IAAI,EAEzC,MAAO,GAEX,MAAM7E,EAAQ,KAAK,SAAQ,EAC3B,MAAI,CAACA,GAAS,CAACA,EAAM,QACV,IAEXA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EACnD,KAAK,MAAQA,EAAM,SAAS,OAAS,EACrCA,EAAM,QAAQ,aAAa,KAAK,uBAAsB,EAAIA,EAAM,SAAS,KAAK,MAAQ,CAAC,EAAE,UAAS,EAAG,OAAO,EAG5GA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EAEpD,GACX,CACA,UAAW,CACP,GAAI6E,EAAK,UAAU,SAAS,KAAK,IAAI,EAAG,CACpC,MAAM7E,EAAQ,KAAK,SAAQ,EAC3B,GAAIA,EAAO,CACP,MAAMwI,EAAWxI,EAAM,SACnBA,EAAM,UACNA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EACvDA,EAAM,QAAQ,aAAa,KAAK,uBAAsB,EAAIwI,EAAS,KAAK,MAAQ,CAAC,EAAE,UAAS,EAAG,OAAO,EAE9G,CACA,MAAO,EACX,CACA,MAAO,EACX,CACA,cAAe,CACX,GAAI3D,EAAK,UAAU,aAAa,KAAK,IAAI,EAAG,CACxC,MAAM7E,EAAQ,KAAK,SAAQ,EAC3B,GAAIA,EAAO,CACP,MAAMwI,EAAWxI,EAAM,SACnBA,EAAM,UACNA,EAAM,QAAQ,YAAY,KAAK,uBAAsB,CAAE,EACvDA,EAAM,QAAQ,aAAa,KAAK,uBAAsB,EAAIwI,EAAS,CAAC,EAAE,UAAS,EAAG,OAAO,EAEjG,CACA,MAAO,EACX,CACA,MAAO,EACX,CACA,UAAW,CACP,OAAO,IACX,CACA,QAAS,CACL,MAAMyN,EAAU,KAAK,uBAAsB,EAC3CpR,OAAAA,EAAK,UAAU,OAAO,KAAK,IAAI,EAC3BoR,GAAWA,EAAQ,YAAcllB,EAAK,cAAcklB,CAAO,GAC3DA,EAAQ,WAAW,YAAYA,CAAO,EAEnC,IACX,CACA,UAAW,CACP,OAAO,KAAK,MAChB,CACA,QAAQ,CAAE,MAAAve,EAAO,OAAAC,GAAU,CACvB,OAAA,KAAK,OAAO,QAAQD,EAAOC,CAAM,EACjC,KAAK,mBAAkB,EACvB,KAAK,kBAAiB,EACf,IACX,CACA,oBAAqB,CACjB,MAAMue,EAAY,KAAK,YAAW,EAClC,KAAK,UAAU,kBAAkBA,EAAY,KAAK,SAAQ,EAAK,IAAM,GAAIA,EAAY,KAAK,UAAS,EAAK,IAAM,CAAC,CACnH,CACA,aAAa5N,EAAO,CAChB,MAAMd,EAAOc,EAAM,QAAO,EACtBd,IAAS,SAAWA,IAAS,SAC7BzW,EAAK,MAAM,gDAAgD,CAEnE,CACA,eAAeoO,EAAQ,CACnB,OAAAA,EAAS,CAAE,GAAGA,CAAM,EACpBA,EAAO,MAAQA,EAAO,OAAS,KAAK,SAAQ,EAC5CA,EAAO,OAASA,EAAO,QAAU,KAAK,UAAS,EAC/CA,EAAO,EAAIA,EAAO,IAAM,OAAYA,EAAO,EAAI,KAAK,EAAC,EACrDA,EAAO,EAAIA,EAAO,IAAM,OAAYA,EAAO,EAAI,KAAK,EAAC,EAC9C0F,EAAK,UAAU,eAAe,KAAK,KAAM1F,CAAM,CAC1D,CACA,kBAAmB,CACC,KAAK,QAAO,EAExB,KAAK,OAAO,QAAQ,MAAM,QAAU,QAGpC,KAAK,OAAO,QAAQ,MAAM,QAAU,MAE5C,CACA,mBAAoB,CAChB,KAAK,aAAa,SAAS,sBACvB,KAAK,sBAAqB,CAClC,CACA,UAAW,CACP,GAAI,KAAK,OACL,OAAO,KAAK,OAAO,MAAK,CAEhC,CACA,UAAW,CACPpO,EAAK,KAAK,2EAA2E,CACzF,CACA,WAAY,CACR,GAAI,KAAK,OACL,OAAO,KAAK,OAAO,OAAM,CAEjC,CACA,WAAY,CACRA,EAAK,KAAK,6EAA6E,CAC3F,CACA,WAAY,CACR,IAAItC,EACJ,OAAK,KAAK,kBACN,KAAK,gBAAkB,GACvBsC,EAAK,iBAAiB,IAAM,CACxB,KAAK,KAAI,EACT,KAAK,gBAAkB,EAC3B,GAAItC,EAAK,KAAK,SAAQ,KAAQ,MAAQA,IAAO,OAAS,OAASA,EAAG,gBAAe,CAAE,GAEhF,IACX,CACA,gBAAgBwR,EAAK,CACjB,GAAI,CAAC,KAAK,YAAW,GAAM,CAAC,KAAK,UAAS,EACtC,OAAO,KAEX,IAAIkW,EAAuB,EACvBC,EAAiB,GACrB,OAAa,CACT,QAASliB,EAAI,EAAGA,EAAI6hB,GAA0B7hB,IAAK,CAC/C,MAAMmiB,EAAqBP,GAAqB5hB,CAAC,EAC3CnB,EAAM,KAAK,iBAAiB,CAC9B,EAAGkN,EAAI,EAAIoW,EAAmB,EAAIF,EAClC,EAAGlW,EAAI,EAAIoW,EAAmB,EAAIF,CACtD,CAAiB,EACKjc,EAAQnH,EAAI,MAClB,GAAImH,EACA,OAAOA,EAGX,GADAkc,EAAiB,CAAC,CAACrjB,EAAI,YACnB,CAACA,EAAI,YACL,KAER,CACA,GAAIqjB,EACAD,GAAwB,MAGxB,QAAO,IAEf,CACJ,CACA,iBAAiBlW,EAAK,CAClB,GAAI,CAAC,KAAK,UAAU,OAAS,CAAC,KAAK,UAAU,OACzC,MAAO,CAAA,EAEX,MAAMzB,EAAQ,KAAK,UAAU,WACvB8S,EAAI,KAAK,UAAU,QAAQ,aAAa,KAAK,MAAMrR,EAAI,EAAIzB,CAAK,EAAG,KAAK,MAAMyB,EAAI,EAAIzB,CAAK,EAAG,EAAG,CAAC,EAAE,KACpG8X,EAAKhF,EAAE,CAAC,EACd,GAAIgF,IAAO,IAAK,CACZ,MAAMC,EAAWxlB,EAAK,eAAeugB,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAC/CpX,EAAQsU,GAAO+H,CAAQ,EAC7B,OAAIrc,EACO,CACH,MAAOA,CAC3B,EAEmB,CACH,YAAa,EAC7B,CACQ,SACSoc,EAAK,EACV,MAAO,CACH,YAAa,EAC7B,EAEQ,MAAO,CAAA,CACX,CACA,UAAU7I,EAAKxH,EAAKF,EAAc,CAC9B,MAAMiC,EAAQ,KAAK,WAAYxU,EAASia,GAAQzF,GAASA,EAAM,YAC/D,OAAA,KAAK,MAAM4N,GAAa,CACpB,KAAM,IAClB,CAAS,EACG,KAAK,mBACLpiB,EAAO,WAAU,EAAG,MAAK,EAE7ByZ,GAAU,UAAU,UAAU,KAAK,KAAMzZ,EAAQyS,EAAKF,CAAY,EAClE,KAAK,MAAM8P,GAAM,CACb,KAAM,IAClB,CAAS,EACM,IACX,CACA,QAAQpI,EAAKxH,EAAK,CACd,MAAM+B,EAAQ,KAAK,SAAQ,EAAIxU,EAASia,GAAQzF,GAASA,EAAM,UAC/D,MAAI,CAACyF,GAAOzF,IACRA,EAAM,mBAAkB,EACpBA,EAAM,mBACNA,EAAM,aAAY,EAAG,WAAU,EAAG,MAAK,GAG/CiF,GAAU,UAAU,QAAQ,KAAK,KAAMzZ,EAAQyS,CAAG,EAC3C,IACX,CACA,gBAAiB,CACb,OAAA,KAAK,gBAAgB,EAAI,EAClB,IACX,CACA,iBAAkB,CACd,OAAA,KAAK,gBAAgB,EAAK,EACnB,IACX,CACA,mBAAmBjT,EAAK,CACpBjC,EAAK,KAAK,6EAA6E,EACvF,KAAK,UAAUiC,CAAG,CACtB,CACA,mBAAmBA,EAAK,CACpB,OAAAjC,EAAK,KAAK,6EAA6E,EAChF,KAAK,UAAS,CACzB,CACA,iBAAkB,CACd,GAAI,CAAC,KAAK,QAAU,CAAC,KAAK,OAAO,QAC7B,OAEJ,MAAM6W,EAAS,KAAK,OACJ,KAAK,UAAU,QAAQ,WAEnCA,EAAO,QAAQ,YAAY,KAAK,UAAU,OAAO,EAGjDA,EAAO,QAAQ,YAAY,KAAK,UAAU,OAAO,CAEzD,CACA,SAAU,CACN,OAAA7W,EAAK,cAAc,KAAK,uBAAsB,EAAI,KAAK,aAAY,EAAG,OAAO,EACtE,MAAM,QAAO,CACxB,CACJ,CACAilB,GAAM,UAAU,SAAW,QAC3BrnB,GAAcqnB,EAAK,EACnBxU,EAAQ,gBAAgBwU,GAAO,wBAAyB,EAAI,EAC5DxU,EAAQ,gBAAgBwU,GAAO,kBAAmB,EAAI,EACtDxU,EAAQ,gBAAgBwU,GAAO,kBAAmB,GAAM5U,GAAmB,CAAE,ECxTtE,MAAMoV,WAAkBR,EAAM,CACjC,YAAY1M,EAAO,CACf,MAAMA,CAAK,EACX,KAAK,UAAU,EAAK,EACpBvY,EAAK,KAAK,6FAA6F,CAC3G,CACJ,CACAylB,GAAU,UAAU,SAAW,YAC/B7nB,GAAc6nB,EAAS,ECRhB,MAAMC,WAAcxJ,EAAU,CACjC,aAAa3E,EAAO,CAChB,MAAMd,EAAOc,EAAM,QAAO,EACtBd,IAAS,SAAWA,IAAS,SAC7BzW,EAAK,MAAM,+CAA+C,CAElE,CACJ,CACA0lB,GAAM,UAAU,SAAW,QAC3B9nB,GAAc8nB,EAAK,ECVnB,MAAMC,IAAO,UAAY,CACrB,OAAItoB,GAAK,aAAeA,GAAK,YAAY,IAC9B,UAAY,CACf,OAAOA,GAAK,YAAY,IAAG,CAC/B,EAEG,UAAY,CACf,OAAO,IAAI,KAAI,EAAG,QAAO,CAC7B,CACJ,GAAC,EACM,MAAMuoB,EAAU,CACnB,YAAYphB,EAAM6b,EAAQ,CACtB,KAAK,GAAKuF,GAAU,gBACpB,KAAK,MAAQ,CACT,KAAM,EACN,SAAU,EACV,SAAUD,GAAG,EACb,UAAW,CACvB,EACQ,KAAK,KAAOnhB,EACZ,KAAK,UAAU6b,CAAM,CACzB,CACA,UAAUA,EAAQ,CACd,IAAIwF,EAAO,CAAA,EACX,OAAIxF,IACAwF,EAAO,MAAM,QAAQxF,CAAM,EAAIA,EAAS,CAACA,CAAM,GAEnD,KAAK,OAASwF,EACP,IACX,CACA,WAAY,CACR,OAAO,KAAK,MAChB,CACA,SAAS5O,EAAO,CACZ,MAAMoJ,EAAS,KAAK,OACdlY,EAAMkY,EAAO,OACnB,QAASla,EAAI,EAAGA,EAAIgC,EAAKhC,IACrB,GAAIka,EAAOla,CAAC,EAAE,MAAQ8Q,EAAM,IACxB,MAAO,GAGf,OAAA,KAAK,OAAO,KAAKA,CAAK,EACf,EACX,CACA,WAAY,CAER,MAAM6O,EADIF,GACW,WACfzd,EAAM2d,EAAW,OACvB,QAAS3f,EAAI,EAAGA,EAAIgC,EAAKhC,IACrB,GAAI2f,EAAW3f,CAAC,EAAE,KAAO,KAAK,GAC1B,MAAO,GAGf,MAAO,EACX,CACA,OAAQ,CACJ,OAAA,KAAK,KAAI,EACT,KAAK,MAAM,SAAW,EACtB,KAAK,MAAM,SAAWwf,GAAG,EACzBC,GAAU,cAAc,IAAI,EACrB,IACX,CACA,MAAO,CACH,OAAAA,GAAU,iBAAiB,IAAI,EACxB,IACX,CACA,mBAAmBG,EAAM,CACrB,KAAK,MAAM,SAAWA,EAAO,KAAK,MAAM,SACxC,KAAK,MAAM,SAAWA,EACtB,KAAK,MAAM,MAAQ,KAAK,MAAM,SAC9B,KAAK,MAAM,UAAY,IAAO,KAAK,MAAM,QAC7C,CACA,OAAO,cAAcC,EAAM,CACvB,KAAK,WAAW,KAAKA,CAAI,EACzB,KAAK,iBAAgB,CACzB,CACA,OAAO,iBAAiBA,EAAM,CAC1B,MAAM5F,EAAK4F,EAAK,GACVF,EAAa,KAAK,WAClB3d,EAAM2d,EAAW,OACvB,QAAS,EAAI,EAAG,EAAI3d,EAAK,IACrB,GAAI2d,EAAW,CAAC,EAAE,KAAO1F,EAAI,CACzB,KAAK,WAAW,OAAO,EAAG,CAAC,EAC3B,KACJ,CAER,CACA,OAAO,YAAa,CAChB,MAAM6F,EAAY,CAAA,EACZH,EAAa,KAAK,WACxB,QAAS3f,EAAI,EAAGA,EAAI2f,EAAW,OAAQ3f,IAAK,CACxC,MAAM6f,EAAOF,EAAW3f,CAAC,EACnBka,EAAS2F,EAAK,OACdxhB,EAAOwhB,EAAK,KAClBA,EAAK,mBAAmBL,IAAK,EAC7B,MAAMO,EAAY7F,EAAO,OACzB,IAAI8F,EAOJ,GANI3hB,EACA2hB,EAAa3hB,EAAK,KAAKwhB,EAAMA,EAAK,KAAK,IAAM,GAG7CG,EAAa,GAEb,CAAA,CAACA,EAGL,QAAShjB,EAAI,EAAGA,EAAI+iB,EAAW/iB,IAAK,CAChC,MAAM8T,EAAQoJ,EAAOld,CAAC,EAClB8T,EAAM,MAAQ,SACdgP,EAAUhP,EAAM,GAAG,EAAIA,EAE/B,CACJ,CACA,UAAW/S,KAAO+hB,EACTA,EAAU,eAAe/hB,CAAG,GAGjC+hB,EAAU/hB,CAAG,EAAE,UAAS,CAEhC,CACA,OAAO,gBAAiB,CACpB,MAAMkiB,EAAOR,GACTQ,EAAK,WAAW,QAChBA,EAAK,WAAU,EACfpmB,EAAK,iBAAiBomB,EAAK,cAAc,GAGzCA,EAAK,YAAc,EAE3B,CACA,OAAO,kBAAmB,CACjB,KAAK,cACN,KAAK,YAAc,GACnBpmB,EAAK,iBAAiB,KAAK,cAAc,EAEjD,CACJ,CACA4lB,GAAU,WAAa,CAAA,EACvBA,GAAU,cAAgB,EAC1BA,GAAU,YAAc,GCzIxB,MAAMS,GAAY,CACd,KAAM,EACN,SAAU,EACV,OAAQ,EACR,SAAU,EACV,KAAM,CACV,EAAGC,GAAS,EAAGC,GAAU,EAAGC,GAAY,EAAGC,GAAa,CAAC,OAAQ,SAAU,aAAa,EACxF,IAAI7S,GAAY,EAChB,SAAS8S,GAAYtjB,EAAO,CACxB,OAAQpD,EAAK,YAAYoD,CAAK,GAC1BpD,EAAK,MAAM,4BACPoD,EACA,qCAAqC,CACjD,CACA,MAAMujB,EAAY,CACd,YAAYra,EAAMsa,EAAUpiB,EAAMqiB,EAAOC,EAAQC,EAAUC,EAAM,CAC7D,KAAK,KAAO1a,EACZ,KAAK,SAAWsa,EAChB,KAAK,MAAQC,EACb,KAAK,KAAOA,EACZ,KAAK,SAAWE,EAChB,KAAK,QAAU,EACf,KAAK,QAAU,EACf,KAAK,KAAOC,EACZ,KAAK,MAAQ,EACb,KAAK,UAAY,EACjB,KAAK,WAAa,EAClB,KAAK,QAAU,EACf,KAAK,KAAOxiB,EACZ,KAAK,QAAUsiB,EAAS,KAAK,MAC7B,KAAK,MAAK,CACd,CACA,KAAK1lB,EAAK,CACN,MAAMsV,EAAU,KAAKtV,CAAG,EACpBsV,GACAA,EAAO,CAEf,CACA,QAAQzZ,EAAG,CACHA,EAAI,KAAK,SACL,KAAK,MACL,KAAK,MAAQ,KAAK,SAClB,KAAK,QAAO,GAGZ,KAAK,OAAM,EAGVA,EAAI,EACL,KAAK,MACL,KAAK,MAAQ,EACb,KAAK,KAAI,GAGT,KAAK,MAAK,GAId,KAAK,MAAQA,EACb,KAAK,OAAM,EAEnB,CACA,SAAU,CACN,OAAO,KAAK,KAChB,CACA,YAAYsjB,EAAG,CACX,KAAK,QAAU,KAAK,KACpB,KAAK,SAASA,CAAC,EACf,KAAK,KAAOA,CAChB,CACA,YAAYtjB,EAAG,CACX,OAAIA,IAAM,SACNA,EAAI,KAAK,OAEN,KAAK,KAAKA,EAAG,KAAK,MAAO,KAAK,QAAS,KAAK,QAAQ,CAC/D,CACA,MAAO,CACH,KAAK,MAAQspB,GACb,KAAK,WAAa,KAAK,SAAQ,EAAK,KAAK,MACzC,KAAK,aAAY,EACjB,KAAK,KAAK,QAAQ,CACtB,CACA,SAAU,CACN,KAAK,MAAQC,GACb,KAAK,MAAQ,KAAK,SAAW,KAAK,MAClC,KAAK,WAAa,KAAK,SAAQ,EAAK,KAAK,MACzC,KAAK,aAAY,EACjB,KAAK,KAAK,WAAW,CACzB,CACA,KAAKvpB,EAAG,CACJ,KAAK,MAAK,EACV,KAAK,MAAQA,EACb,KAAK,OAAM,EACX,KAAK,KAAK,QAAQ,CACtB,CACA,OAAQ,CACJ,KAAK,MAAK,EACV,KAAK,MAAQ,EACb,KAAK,OAAM,EACX,KAAK,KAAK,SAAS,CACvB,CACA,QAAS,CACL,KAAK,MAAK,EACV,KAAK,MAAQ,KAAK,SAClB,KAAK,OAAM,EACX,KAAK,KAAK,UAAU,CACxB,CACA,QAAS,CACL,KAAK,YAAY,KAAK,YAAY,KAAK,KAAK,CAAC,EAC7C,KAAK,KAAK,UAAU,CACxB,CACA,cAAe,CACX,MAAMA,EAAI,KAAK,SAAQ,EAAK,KAAK,WAC7B,KAAK,QAAUspB,GACf,KAAK,QAAQtpB,CAAC,EAET,KAAK,QAAUupB,IACpB,KAAK,QAAQ,KAAK,SAAWvpB,CAAC,CAEtC,CACA,OAAQ,CACJ,KAAK,MAAQqpB,GACb,KAAK,KAAK,SAAS,CACvB,CACA,UAAW,CACP,OAAO,IAAI,KAAI,EAAG,QAAO,CAC7B,CACJ,CACO,MAAMW,EAAM,CACf,YAAY7Y,EAAQ,CAChB,MAAMnC,EAAO,KAAMM,EAAO6B,EAAO,KAAM8Y,EAAS3a,EAAK,IAAK4a,EAAS/Y,EAAO,QAAUgZ,GAAQ,OAAQJ,EAAO,CAAC,CAAC5Y,EAAO,KACpH,IAAI2Y,EAAU7iB,EACV,OAAOkK,EAAO,SAAa,IAC3B2Y,EAAW,GAEN3Y,EAAO,WAAa,EACzB2Y,EAAW,KAGXA,EAAW3Y,EAAO,SAEtB,KAAK,KAAO7B,EACZ,KAAK,IAAMqH,KACX,MAAMyM,EAAS9T,EAAK,SAAQ,IACvBA,aAAgBhP,EAAM,MAAWgP,EAAK,UAAS,EAAK,MACpD8T,GACDrgB,EAAK,MAAM,yFAAyF,EAExG,KAAK,KAAO,IAAI4lB,GAAU,UAAY,CAClC3Z,EAAK,MAAM,aAAY,CAC3B,EAAGoU,CAAM,EACT,KAAK,MAAQ,IAAIsG,GAAYziB,EAAK,SAAUf,EAAG,CAC3C8I,EAAK,WAAW9I,CAAC,CACrB,EAAGgkB,EAAQ,EAAG,EAAGJ,EAAW,IAAMC,CAAI,EACtC,KAAK,cAAa,EACbC,GAAM,MAAMC,CAAM,IACnBD,GAAM,MAAMC,CAAM,EAAI,CAAA,GAErBD,GAAM,MAAMC,CAAM,EAAE,KAAK,GAAG,IAC7BD,GAAM,MAAMC,CAAM,EAAE,KAAK,GAAG,EAAI,CAAA,GAE/BD,GAAM,OAAOC,CAAM,IACpBD,GAAM,OAAOC,CAAM,EAAI,CAAA,GAE3B,IAAKhjB,KAAOkK,EACJiY,GAAUniB,CAAG,IAAM,QACnB,KAAK,SAASA,EAAKkK,EAAOlK,CAAG,CAAC,EAGtC,KAAK,MAAK,EACV,KAAK,SAAWkK,EAAO,SACvB,KAAK,QAAUA,EAAO,QACtB,KAAK,SAAWA,EAAO,QAC3B,CACA,SAASlK,EAAK+B,EAAK,CACf,MAAMsG,EAAO,KAAK,KAAM2a,EAAS3a,EAAK,IACtC,IAAI8a,EAAMlf,EAAKmf,EAASC,EAAWC,EACnC,MAAMC,EAAUR,GAAM,OAAOC,CAAM,EAAEhjB,CAAG,EACpCujB,GACA,OAAOR,GAAM,MAAMC,CAAM,EAAEO,CAAO,EAAEvjB,CAAG,EAE3C,IAAI8B,EAAQuG,EAAK,QAAQrI,CAAG,EAC5B,GAAIlE,EAAK,SAASiG,CAAG,EAajB,GAZAohB,EAAO,CAAA,EACPlf,EAAM,KAAK,IAAIlC,EAAI,OAAQD,EAAM,MAAM,EACnC9B,IAAQ,UAAY+B,EAAI,SAAWD,EAAM,SACrCC,EAAI,OAASD,EAAM,QACnBuhB,EAAYvhB,EACZA,EAAQhG,EAAK,sBAAsBgG,EAAOC,EAAKsG,EAAK,QAAQ,IAG5D+a,EAAUrhB,EACVA,EAAMjG,EAAK,sBAAsBiG,EAAKD,EAAOuG,EAAK,QAAQ,IAG9DrI,EAAI,QAAQ,MAAM,IAAM,EACxB,QAASiC,EAAI,EAAGA,EAAIgC,EAAKhC,IACrB,GAAIA,EAAI,IAAM,EACVkhB,EAAK,KAAKphB,EAAIE,CAAC,EAAIH,EAAMG,CAAC,CAAC,MAE1B,CACD,MAAMuhB,EAAYhB,GAAY1gB,EAAMG,CAAC,CAAC,EACtCqhB,EAAUd,GAAYzgB,EAAIE,CAAC,CAAC,EAC5BH,EAAMG,CAAC,EAAIuhB,EACXL,EAAK,KAAK,CACN,EAAGG,EAAQ,EAAIE,EAAU,EACzB,EAAGF,EAAQ,EAAIE,EAAU,EACzB,EAAGF,EAAQ,EAAIE,EAAU,EACzB,EAAGF,EAAQ,EAAIE,EAAU,CACrD,CAAyB,CACL,KAIJ,SAASvhB,EAAI,EAAGA,EAAIgC,EAAKhC,IACrBkhB,EAAK,KAAKphB,EAAIE,CAAC,EAAIH,EAAMG,CAAC,CAAC,OAI9BsgB,GAAW,QAAQviB,CAAG,IAAM,IACjC8B,EAAQ0gB,GAAY1gB,CAAK,EACzBwhB,EAAUd,GAAYzgB,CAAG,EACzBohB,EAAO,CACH,EAAGG,EAAQ,EAAIxhB,EAAM,EACrB,EAAGwhB,EAAQ,EAAIxhB,EAAM,EACrB,EAAGwhB,EAAQ,EAAIxhB,EAAM,EACrB,EAAGwhB,EAAQ,EAAIxhB,EAAM,CACrC,GAGYqhB,EAAOphB,EAAMD,EAEjBihB,GAAM,MAAMC,CAAM,EAAE,KAAK,GAAG,EAAEhjB,CAAG,EAAI,CACjC,MAAO8B,EACP,KAAMqhB,EACN,IAAKphB,EACL,QAASqhB,EACT,UAAWC,CACvB,EACQN,GAAM,OAAOC,CAAM,EAAEhjB,CAAG,EAAI,KAAK,GACrC,CACA,WAAWf,EAAG,CACV,MAAMoJ,EAAO,KAAK,KAAMgM,EAAQ0O,GAAM,MAAM1a,EAAK,GAAG,EAAE,KAAK,GAAG,EAC9D,IAAIrI,EAAK8F,EAAMhE,EAAOqhB,EAAMtN,EAAQ5T,EAAGgC,EAAKlC,EAC5C,IAAK/B,KAAOqU,EAAO,CAKf,GAJAvO,EAAOuO,EAAMrU,CAAG,EAChB8B,EAAQgE,EAAK,MACbqd,EAAOrd,EAAK,KACZ/D,EAAM+D,EAAK,IACPhK,EAAK,SAASgG,CAAK,EAGnB,GAFA+T,EAAS,CAAA,EACT5R,EAAM,KAAK,IAAInC,EAAM,OAAQC,EAAI,MAAM,EACnC/B,EAAI,QAAQ,MAAM,IAAM,EACxB,IAAKiC,EAAI,EAAGA,EAAIgC,EAAKhC,IACbA,EAAI,IAAM,EACV4T,EAAO,MAAM/T,EAAMG,CAAC,GAAK,GAAKkhB,EAAKlhB,CAAC,EAAIhD,CAAC,EAGzC4W,EAAO,KAAK,QACR,KAAK,MAAM/T,EAAMG,CAAC,EAAE,EAAIkhB,EAAKlhB,CAAC,EAAE,EAAIhD,CAAC,EACrC,IACA,KAAK,MAAM6C,EAAMG,CAAC,EAAE,EAAIkhB,EAAKlhB,CAAC,EAAE,EAAIhD,CAAC,EACrC,IACA,KAAK,MAAM6C,EAAMG,CAAC,EAAE,EAAIkhB,EAAKlhB,CAAC,EAAE,EAAIhD,CAAC,EACrC,KACC6C,EAAMG,CAAC,EAAE,EAAIkhB,EAAKlhB,CAAC,EAAE,EAAIhD,GAC1B,GAAG,MAKf,KAAKgD,EAAI,EAAGA,EAAIgC,EAAKhC,IACjB4T,EAAO,MAAM/T,EAAMG,CAAC,GAAK,GAAKkhB,EAAKlhB,CAAC,EAAIhD,CAAC,OAI5CsjB,GAAW,QAAQviB,CAAG,IAAM,GACjC6V,EACI,QACI,KAAK,MAAM/T,EAAM,EAAIqhB,EAAK,EAAIlkB,CAAC,EAC/B,IACA,KAAK,MAAM6C,EAAM,EAAIqhB,EAAK,EAAIlkB,CAAC,EAC/B,IACA,KAAK,MAAM6C,EAAM,EAAIqhB,EAAK,EAAIlkB,CAAC,EAC/B,KACC6C,EAAM,EAAIqhB,EAAK,EAAIlkB,GACpB,IAGR4W,EAAS/T,EAAQqhB,EAAOlkB,EAE5BoJ,EAAK,QAAQrI,EAAK6V,CAAM,CAC5B,CACJ,CACA,eAAgB,CACZ,KAAK,MAAM,OAAS,IAAM,CACtB,KAAK,KAAK,MAAK,CACnB,EACA,KAAK,MAAM,UAAY,IAAM,CACzB,KAAK,KAAK,MAAK,CACnB,EACA,KAAK,MAAM,QAAU,IAAM,CACvB,KAAK,KAAK,KAAI,CAClB,EACA,KAAK,MAAM,SAAW,IAAM,CACxB,MAAMxN,EAAO,KAAK,KACZgM,EAAQ0O,GAAM,MAAM1a,EAAK,GAAG,EAAE,KAAK,GAAG,EACxCgM,EAAM,QAAUA,EAAM,OAAO,SAC7BhM,EAAK,QAAQ,SAAUgM,EAAM,OAAO,OAAO,EAE3C,KAAK,UACL,KAAK,SAAS,KAAK,IAAI,CAE/B,EACA,KAAK,MAAM,QAAU,IAAM,CACvB,MAAMhM,EAAO,KAAK,KACZgM,EAAQ0O,GAAM,MAAM1a,EAAK,GAAG,EAAE,KAAK,GAAG,EACxCgM,EAAM,QAAUA,EAAM,OAAO,WAC7BhM,EAAK,OAAOgM,EAAM,OAAO,SAAS,EAElC,KAAK,SACL,KAAK,QAAO,CAEpB,EACA,KAAK,MAAM,SAAW,IAAM,CACpB,KAAK,UACL,KAAK,SAAS,KAAK,IAAI,CAE/B,CACJ,CACA,MAAO,CACH,OAAA,KAAK,MAAM,KAAI,EACR,IACX,CACA,SAAU,CACN,OAAA,KAAK,MAAM,QAAO,EACX,IACX,CACA,OAAQ,CACJ,OAAA,KAAK,MAAM,MAAK,EACT,IACX,CACA,KAAKtb,EAAG,CACJ,OAAA,KAAK,MAAM,KAAKA,EAAI,GAAI,EACjB,IACX,CACA,OAAQ,CACJ,OAAA,KAAK,MAAM,MAAK,EACT,IACX,CACA,QAAS,CACL,OAAA,KAAK,MAAM,OAAM,EACV,IACX,CACA,SAAU,CACN,MAAMiqB,EAAS,KAAK,KAAK,IAAKS,EAAS,KAAK,IAAKpP,EAAQ0O,GAAM,OAAOC,CAAM,EAC5E,KAAK,MAAK,EACN,KAAK,MACL,KAAK,KAAK,KAAI,EAElB,UAAWhjB,KAAOqU,EACd,OAAO0O,GAAM,OAAOC,CAAM,EAAEhjB,CAAG,EAEnC,OAAO+iB,GAAM,MAAMC,CAAM,EAAES,CAAM,EAC7BV,GAAM,OAAOC,CAAM,IACf,OAAO,KAAKD,GAAM,OAAOC,CAAM,CAAC,EAAE,SAAW,GAC7C,OAAOD,GAAM,OAAOC,CAAM,EAE1B,OAAO,KAAKD,GAAM,MAAMC,CAAM,CAAC,EAAE,SAAW,GAC5C,OAAOD,GAAM,MAAMC,CAAM,EAGrC,CACJ,CACAD,GAAM,MAAQ,CAAA,EACdA,GAAM,OAAS,CAAA,EACfnT,EAAK,UAAU,GAAK,SAAU8T,EAAQ,CAClC,MAAMC,EAAWD,EAAO,SACxBA,EAAO,KAAO,KACdA,EAAO,SAAW,UAAY,CAC1B,KAAK,QAAO,EACRC,GACAA,EAAQ,CAEhB,EACc,IAAIZ,GAAMW,CAAM,EACxB,KAAI,CACd,EACO,MAAMR,GAAU,CACnB,WAAWnqB,EAAGyC,EAAGjB,EAAGS,EAAG,CAEnB,OAAOT,GAAKxB,GAAKiC,GAAKjC,IAAM,QAAI,GAAKA,EAAI,SAAKyC,CAClD,EACA,YAAYzC,EAAGyC,EAAGjB,EAAGS,EAAG,CAEpB,OAAOT,IAAMxB,EAAIA,EAAIiC,EAAI,GAAKjC,IAAM,QAAI,GAAKA,EAAI,SAAK,GAAKyC,CAC/D,EACA,cAAczC,EAAGyC,EAAGjB,EAAGS,EAAG,CACtB,IAAIR,EAAI,QACR,OAAKzB,GAAKiC,EAAI,GAAK,EACPT,EAAI,GAAMxB,EAAIA,KAAOyB,GAAK,OAAS,GAAKzB,EAAIyB,IAAMgB,EAEtDjB,EAAI,IAAOxB,GAAK,GAAKA,KAAOyB,GAAK,OAAS,GAAKzB,EAAIyB,GAAK,GAAKgB,CACzE,EACA,cAAczC,EAAGyC,EAAGjB,EAAGS,EAAGO,EAAG8gB,EAAG,CAC5B,IAAI7hB,EAAI,EACR,OAAIzB,IAAM,EACCyC,GAENzC,GAAKiC,KAAO,EACNQ,EAAIjB,GAEV8hB,IACDA,EAAIrhB,EAAI,IAER,CAACO,GAAKA,EAAI,KAAK,IAAIhB,CAAC,GACpBgB,EAAIhB,EACJC,EAAI6hB,EAAI,GAGR7hB,EAAK6hB,GAAK,EAAI,KAAK,IAAO,KAAK,KAAK9hB,EAAIgB,CAAC,EAErC,EAAEA,EACN,KAAK,IAAI,EAAG,IAAMxC,GAAK,EAAE,EACzB,KAAK,KAAMA,EAAIiC,EAAIR,IAAM,EAAI,KAAK,IAAO6hB,CAAC,GAAK7gB,EACvD,EACA,eAAezC,EAAGyC,EAAGjB,EAAGS,EAAGO,EAAG8gB,EAAG,CAC7B,IAAI7hB,EAAI,EACR,OAAIzB,IAAM,EACCyC,GAENzC,GAAKiC,KAAO,EACNQ,EAAIjB,GAEV8hB,IACDA,EAAIrhB,EAAI,IAER,CAACO,GAAKA,EAAI,KAAK,IAAIhB,CAAC,GACpBgB,EAAIhB,EACJC,EAAI6hB,EAAI,GAGR7hB,EAAK6hB,GAAK,EAAI,KAAK,IAAO,KAAK,KAAK9hB,EAAIgB,CAAC,EAErCA,EAAI,KAAK,IAAI,EAAG,IAAMxC,CAAC,EAAI,KAAK,KAAMA,EAAIiC,EAAIR,IAAM,EAAI,KAAK,IAAO6hB,CAAC,EACzE9hB,EACAiB,EACR,EACA,iBAAiBzC,EAAGyC,EAAGjB,EAAGS,EAAGO,EAAG8gB,EAAG,CAC/B,IAAI7hB,EAAI,EACR,OAAIzB,IAAM,EACCyC,GAENzC,GAAKiC,EAAI,KAAO,EACVQ,EAAIjB,GAEV8hB,IACDA,EAAIrhB,GAAK,GAAM,MAEf,CAACO,GAAKA,EAAI,KAAK,IAAIhB,CAAC,GACpBgB,EAAIhB,EACJC,EAAI6hB,EAAI,GAGR7hB,EAAK6hB,GAAK,EAAI,KAAK,IAAO,KAAK,KAAK9hB,EAAIgB,CAAC,EAEzCxC,EAAI,EACI,KACHwC,EACG,KAAK,IAAI,EAAG,IAAMxC,GAAK,EAAE,EACzB,KAAK,KAAMA,EAAIiC,EAAIR,IAAM,EAAI,KAAK,IAAO6hB,CAAC,GAC9C7gB,EAEAD,EACJ,KAAK,IAAI,EAAG,KAAOxC,GAAK,EAAE,EAC1B,KAAK,KAAMA,EAAIiC,EAAIR,IAAM,EAAI,KAAK,IAAO6hB,CAAC,EAC1C,GACA9hB,EACAiB,EACR,EACA,cAAczC,EAAGyC,EAAGjB,EAAGS,EAAG,CACtB,OAAKjC,GAAKiC,GAAK,EAAI,KACRT,GAAK,OAASxB,EAAIA,GAAKyC,EAEzBzC,EAAI,EAAI,KACNwB,GAAK,QAAUxB,GAAK,IAAM,MAAQA,EAAI,KAAQyC,EAEhDzC,EAAI,IAAM,KACRwB,GAAK,QAAUxB,GAAK,KAAO,MAAQA,EAAI,OAAUyC,EAGjDjB,GAAK,QAAUxB,GAAK,MAAQ,MAAQA,EAAI,SAAYyC,CAEnE,EACA,aAAazC,EAAGyC,EAAGjB,EAAGS,EAAG,CACrB,OAAOT,EAAI2oB,GAAQ,cAAcloB,EAAIjC,EAAG,EAAGwB,EAAGS,CAAC,EAAIQ,CACvD,EACA,gBAAgBzC,EAAGyC,EAAGjB,EAAGS,EAAG,CACxB,OAAIjC,EAAIiC,EAAI,EACDkoB,GAAQ,aAAanqB,EAAI,EAAG,EAAGwB,EAAGS,CAAC,EAAI,GAAMQ,EAG7C0nB,GAAQ,cAAcnqB,EAAI,EAAIiC,EAAG,EAAGT,EAAGS,CAAC,EAAI,GAAMT,EAAI,GAAMiB,CAE3E,EACA,OAAOzC,EAAGyC,EAAGjB,EAAGS,EAAG,CACf,OAAOT,GAAKxB,GAAKiC,GAAKjC,EAAIyC,CAC9B,EACA,QAAQzC,EAAGyC,EAAGjB,EAAGS,EAAG,CAChB,MAAO,CAACT,GAAKxB,GAAKiC,IAAMjC,EAAI,GAAKyC,CACrC,EACA,UAAUzC,EAAGyC,EAAGjB,EAAGS,EAAG,CAClB,OAAKjC,GAAKiC,EAAI,GAAK,EACPT,EAAI,EAAKxB,EAAIA,EAAIyC,EAErB,CAACjB,EAAI,GAAM,EAAExB,GAAKA,EAAI,GAAK,GAAKyC,CAC5C,EACA,aAAazC,EAAGyC,EAAGjB,EAAGS,EAAG,CACrB,OAAOT,GAAKxB,GAAKiC,GAAKjC,EAAIA,EAAIA,EAAIA,EAAIyC,CAC1C,EACA,cAAczC,EAAGyC,EAAGjB,EAAGS,EAAG,CACtB,OAAOT,IAAMxB,EAAIA,EAAIiC,EAAI,GAAKjC,EAAIA,EAAIA,EAAIA,EAAI,GAAKyC,CACvD,EACA,gBAAgBzC,EAAGyC,EAAGjB,EAAGS,EAAG,CACxB,OAAKjC,GAAKiC,EAAI,GAAK,EACPT,EAAI,EAAKxB,EAAIA,EAAIA,EAAIA,EAAIA,EAAIyC,EAEjCjB,EAAI,IAAOxB,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAAKyC,CACtD,EACA,OAAOzC,EAAGyC,EAAGjB,EAAGS,EAAG,CACf,OAAQT,EAAIxB,EAAKiC,EAAIQ,CACzB,CACJ,EC1gBanC,GAAQyC,EAAK,QAAQ8nB,EAAQ,CACtC,KAAA9nB,EACA,UAAAhC,GACJ,KAAI8V,EACA,UAAAoI,GACA,MAAA8D,GACA,OAAAH,GACA,MAAAoF,GACA,UAAAQ,GACA,MAAAC,GACA,GAAA/W,GACA,MAAAoU,EACA,OAAAtF,GACA,UAAAmI,GACA,MAAAqB,GACA,QAAAG,GACA,QAAAle,GACA,OAAAiF,EACJ,CAAC,EC3BM,MAAM4Z,WAAYhF,CAAM,CAC3B,WAAWrc,EAAS,CAChB,MAAMjJ,EAAQF,EAAM,SAAS,KAAK,MAAK,CAAE,EAAGyqB,EAAY,KAAK,UAAS,EACtEthB,EAAQ,UAAS,EACjBA,EAAQ,IAAI,EAAG,EAAG,KAAK,cAAe,EAAGjJ,EAAOuqB,CAAS,EACzDthB,EAAQ,IAAI,EAAG,EAAG,KAAK,YAAW,EAAIjJ,EAAO,EAAG,CAACuqB,CAAS,EAC1DthB,EAAQ,UAAS,EACjBA,EAAQ,gBAAgB,IAAI,CAChC,CACA,UAAW,CACP,OAAO,KAAK,YAAW,EAAK,CAChC,CACA,WAAY,CACR,OAAO,KAAK,YAAW,EAAK,CAChC,CACA,SAASC,EAAO,CACZ,KAAK,YAAYA,EAAQ,CAAC,CAC9B,CACA,UAAUC,EAAQ,CACd,KAAK,YAAYA,EAAS,CAAC,CAC/B,CACA,aAAc,CACV,MAAMqhB,EAAc,KAAK,YAAW,EAC9BC,EAAc,KAAK,YAAW,EAC9BF,EAAY,KAAK,UAAS,EAC1BG,EAAW5qB,EAAM,SAAS,KAAK,MAAK,CAAE,EAC5C,GAAI4qB,GAAY,KAAK,GAAK,KAAO,EAC7B,OAAOA,IAAa,EACd,CACE,EAAG,CAACD,EACJ,EAAG,CAACA,EACJ,MAAOA,EAAc,EACrB,OAAQA,EAAc,CAC1C,EACkB,CAAE,EAAGD,EAAa,EAAG,EAAG,MAAOC,EAAcD,EAAa,OAAQ,CAAC,EAE7E,MAAMxqB,EAAQF,EAAM,SAASyqB,EAAY,IAAM,KAAK,MAAK,EAAK,KAAK,OAAO,EACpEI,EAAiB,KAAK,IAAI,KAAK,IAAI3qB,EAAO,KAAK,EAAE,CAAC,EAClD4qB,EAAkB,EAClBC,EAAgB,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,GAAI7qB,CAAK,EAAI,EAAI,KAAK,GAAM,CAAC,CAAC,EAC9E8qB,EAAmB,KAAK,IAAI,KAAK,IAAI9qB,EAAO,KAAK,GAAK,CAAC,CAAC,EACxD+qB,EAAYJ,GAAkBA,EAAiB,EAAIH,EAAcC,GACjEO,EAAaJ,EAAyCH,EACtDQ,EAAWJ,GAAiBA,EAAgB,EAAIL,EAAcC,GAC9DS,EAAcJ,GAAoBA,EAAmB,EAAIL,EAAcD,GAC7E,MAAO,CACH,EAAGO,EACH,EAAGR,EAAY,GAAKW,EAAcD,EAClC,MAAOD,EAAaD,EACpB,OAAQG,EAAcD,CAClC,CACI,CACJ,CACAX,GAAI,UAAU,UAAY,GAC1BA,GAAI,UAAU,UAAY,MAC1BA,GAAI,UAAU,oBAAsB,CAChC,cACA,cACA,QACA,WACJ,EACAnqB,GAAcmqB,EAAG,EACjBtX,EAAQ,gBAAgBsX,GAAK,cAAe,EAAGvY,EAAkB,CAAE,EACnEiB,EAAQ,gBAAgBsX,GAAK,cAAe,EAAGvY,EAAkB,CAAE,EACnEiB,EAAQ,gBAAgBsX,GAAK,QAAS,EAAGvY,EAAkB,CAAE,EAC7DiB,EAAQ,gBAAgBsX,GAAK,YAAa,GAAO1X,GAAmB,CAAE,ECtE/D,MAAMuY,GAAU,CACnB,CAAA,EACA,CAAA,EACA,CACI,mBACA,iBACR,EACI,CACI,EAAG,mBACH,iBACR,EACI,CACI,oBACA,mBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,kBACA,gBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,gBACR,EACI,CACI,EAAG,kBACH,mBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,gBACR,EACI,CACI,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,mBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,oBACA,mBACA,oBACA,mBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,iBACA,gBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,oBACA,mBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,CACA,EACaC,GAAU,CACnB,CAAA,EACA,CAAA,EACA,CAAC,EAAK,CAAG,EACT,CACI,kBACA,kBACA,iBACR,EACI,CACI,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,iBACR,EACI,CACI,iBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,gBACA,gBACA,mBACA,mBACA,kBACA,kBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,iBACR,EACI,CACI,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,kBACA,iBACR,CACA,EACaC,GAAuB,CAAC,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5DC,GAAoB,CAACC,EAAIC,EAAI,IAAM,CAC5C,IAAIC,EACAC,EAEJ,MAAMC,EAAI,EAAI,EACdF,EAAM,EACN,QAAS/lB,EAAI,EAAGA,EAAI,GAAGA,IACnBgmB,EAAaC,EAAIR,GAAQ,EAAC,EAAEzlB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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]}
\ No newline at end of file
diff --git a/js/ImageEditor-CC5NAjCj.chunk.mjs.map.license b/js/ImageEditor-CC5NAjCj.chunk.mjs.map.license
new file mode 120000
index 00000000..d3c1b840
--- /dev/null
+++ b/js/ImageEditor-CC5NAjCj.chunk.mjs.map.license
@@ -0,0 +1 @@
+ImageEditor-CC5NAjCj.chunk.mjs.license
\ No newline at end of file
diff --git a/js/Images-D15tD-uO.chunk.mjs b/js/Images-D15tD-uO.chunk.mjs
new file mode 100644
index 00000000..ce04f67e
--- /dev/null
+++ b/js/Images-D15tD-uO.chunk.mjs
@@ -0,0 +1,3 @@
+(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".image-differences[data-v-c9b762ef]{position:relative;margin:0;max-width:100%;max-height:100%}.image-differences__image[data-v-c9b762ef]{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.image-differences__label[data-v-c9b762ef]{position:absolute;transition:opacity var(--animation-quick, .1s);top:calc(2 * var(--default-grid-baseline));padding:calc(1.5 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline));border-radius:var(--border-radius-element, var(--border-radius-large));background-color:#000000bf;color:#fff;font-size:var(--default-font-size, 15px);font-weight:700;line-height:1.3;pointer-events:none;box-sizing:border-box;max-width:calc(50% - 3 * var(--default-grid-baseline))}.image-differences__label--base[data-v-c9b762ef]{inset-inline-start:calc(2 * var(--default-grid-baseline))}.image-differences__label--other[data-v-c9b762ef]{inset-inline-end:calc(2 * var(--default-grid-baseline))}.image-differences--touched .image-differences__label[data-v-c9b762ef]{opacity:0}@media(hover:hover){.image-differences:hover .image-differences__label[data-v-c9b762ef]{opacity:0}}.image-differences__divider[data-v-c9b762ef]{position:absolute;top:0;bottom:0;width:2px;margin-inline-start:-1px;background-color:#fff;box-shadow:0 0 4px #0009;pointer-events:none}.image-differences__slider[data-v-c9b762ef]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}.image-differences__slider:focus-visible+.image-differences__divider[data-v-c9b762ef]{width:4px;margin-inline-start:-2px;outline:2px solid var(--color-primary-element)}.image_container[data-v-7d63f0cd]{display:flex;align-items:center;height:100%;justify-content:center}img[data-v-7d63f0cd],video[data-v-7d63f0cd]{align-self:center;justify-self:center;background-color:#000;transition:none!important;touch-action:none}img[data-v-7d63f0cd]:hover,video[data-v-7d63f0cd]:hover{background-image:linear-gradient(45deg,#efefef 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#efefef 75%),linear-gradient(45deg,transparent 75%,#efefef 75%),linear-gradient(45deg,#efefef 25%,#fff 25%);background-size:16px 16px;background-position:0 0,0 0,-8px -8px,8px 8px}img.loaded[data-v-7d63f0cd],video.loaded[data-v-7d63f0cd]{background-color:#fff}img.zoomed[data-v-7d63f0cd],video.zoomed[data-v-7d63f0cd]{z-index:10010;cursor:move}img.dragging[data-v-7d63f0cd],video.dragging[data-v-7d63f0cd]{transition:none!important;cursor:move}.live-photo_play_button[data-v-7d63f0cd]{position:absolute;top:0;margin:16px!important;display:flex;align-items:center;border:none;gap:4px;border-radius:var(--border-radius);padding:4px 8px;background-color:var(--color-main-background-blur)}")),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
+import{d as Oe,f as r,p as ze,w as H,l as Y,h as E,n as ea,o as aa,j as la,_ as ta,k as h,m as fe,q as x,F as Ae,s as f,u as V,v as me,x as N,y as Xe,z as na,A as C,B as Q,N as ua,C as ia,D as ee,E as v,G as oa,H as ra,I as va,J as sa}from"./store-DT5_o2He.chunk.mjs";import{_ as ge}from"./_plugin-vue_export-helper-D8VWKLTF.chunk.mjs";import{g as pe,a as da}from"./previewUtils-a7UGvJa0.chunk.mjs";import{u as ca,p as fa,a as De,b as ha}from"./useViewerProps-BgGfCZKj.chunk.mjs";import{c as he}from"./canDownload-C1jVjD_-.chunk.mjs";import{f as ma}from"./livePhotoUtils-C4mNnUu-.chunk.mjs";const pa={name:"PlayCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ga=["aria-hidden","aria-label"],ya=["fill","width","height"],wa={d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z"},xa={key:0};function ba(p,R,a,d,L,m){return h(),x("span",sa(p.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon play-circle-outline-icon",role:"img",onClick:R[0]||(R[0]=g=>p.$emit("click",g))}),[(h(),x("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[C("path",wa,[a.title?(h(),x("title",xa,ee(a.title),1)):N("",!0)])],8,ya))],16,ga)}const _a=ge(pa,[["render",ba]]),ka=["alt","src"],Ma=["alt","src"],Sa={class:"image-differences__label image-differences__label--base"},Ca={class:"image-differences__label image-differences__label--other"},La=["aria-label"],Wa=Oe({__name:"ImageDifferences",props:{files:{},maxWidth:{},maxHeight:{},shown:{type:Boolean}},emits:["loaded","errored","update:canSwipe","update:editing","update:playing"],setup(p,{emit:R}){const a=p,d=R,L=oa("slider");H(()=>a.shown,u=>{u&&L.value?.focus({preventScroll:!0})});const m=v(()=>a.files[0]),g=v(()=>a.files[1]),y=v(()=>({width:a.maxWidth,height:a.maxHeight})),w=v(()=>pe(m.value,y.value)),W=v(()=>pe(g.value,y.value)),b=r(),U=v(()=>{if(b.value===void 0)return{width:a.maxWidth,height:a.maxHeight};const{width:u,height:i}=b.value,c=Math.min(1,a.maxWidth/u,a.maxHeight/i);return{width:Math.round(u*c),height:Math.round(i*c)}}),I=r(50),P=r(!1);ra(()=>d("update:canSwipe",!1));let s=0,_=!1;function k(u){const{naturalWidth:i,naturalHeight:c}=u.target;b.value===void 0&&i>0&&c>0&&(b.value={width:i,height:c}),s++,s===2&&d("loaded")}function $(){_||(_=!0,d("errored",new Error(E("Failed to load image."))))}return(u,i)=>(h(),x("figure",{class:me(["image-differences",{"image-differences--touched":P.value}]),style:V({width:`${U.value.width}px`,height:`${U.value.height}px`})},[C("img",{class:"image-differences__image",alt:m.value.displayname,src:w.value,onLoad:k,onError:$},null,40,ka),C("img",{class:"image-differences__image",alt:g.value.displayname,src:W.value,style:V({clipPath:`inset(0 0 0 ${I.value}%)`}),onLoad:k,onError:$},null,44,Ma),C("span",Sa,ee(m.value.displayname),1),C("span",Ca,ee(g.value.displayname),1),Xe(C("input",{ref_key:"slider",ref:L,"onUpdate:modelValue":i[0]||(i[0]=c=>I.value=c),class:"image-differences__slider",type:"range",min:"0",max:"100","aria-label":Q(E)("Slide to compare {base} with {other}",{base:m.value.displayname,other:g.value.displayname}),onPointerdown:i[1]||(i[1]=c=>P.value=!0),onPointerup:i[2]||(i[2]=c=>P.value=!1),onPointercancel:i[3]||(i[3]=c=>P.value=!1)},null,40,La),[[va,I.value,void 0,{number:!0}]]),C("span",{class:"image-differences__divider",style:V({insetInlineStart:`${I.value}%`})},null,4)],6))}}),Ia=ge(Wa,[["__scopeId","data-v-c9b762ef"]]),Pa={key:1,class:"image_container"},$a=["alt","src"],Ha=["poster","src"],Ea=["disabled","aria-label"],Fe=5,Ra=4,Ua=Oe({name:"ViewerImages",__name:"Images",props:{file:{},files:{},maxHeight:{},maxWidth:{},editing:{type:Boolean,default:!1},isSidebarShown:{type:Boolean},shown:{type:Boolean},turns:{},localSource:{},comparison:{},embedded:{type:Boolean}},emits:["loaded","errored","update:canSwipe","update:editing","update:playing"],setup(p,{emit:R}){const a=p,d=R,L=a.comparison==="differences",{filename:m,src:g}=ca(a),y=r(),w=r(),W=r(!1),b=r(0),U=r(0),I=r(0),P=r(1),s=r([]),_=r(0),k=r(0),$=r(!1),u=r(1),i=r(null),c=r(!1),B=r(!1),z=r(!1),T=r(0),M=r(0),q=r(!1),A=r(ze(a.file)?.width??0);let G=null,ae=!1,J=null;const ye=v(()=>M.value>0?Math.max(Fe,Ra*A.value/M.value):Fe),le=v(()=>a.file.mime),te=v(()=>a.file.attributes?.hasPreview??!1),ne=v(()=>a.file.attributes?.previewUrl),we=v(()=>a.file.attributes?.["metadata-files-live-photo"]),xe=v(()=>pe(a.file,{width:a.maxWidth,height:a.maxHeight})),Z=v(()=>Number(a.turns??0)%4),D=v(()=>Z.value%2===1),F=v(()=>D.value?T.value:M.value),O=v(()=>D.value?M.value:T.value),ue=v(()=>Math.round(T.value*u.value)),ie=v(()=>Math.round(M.value*u.value)),Ye=v(()=>a.file.displayname),be=v(()=>{const e=Z.value===0?void 0:`rotate(${-90*Z.value}deg)`,l=D.value?(ue.value-ie.value)/2:0,t=D.value?(ie.value-ue.value)/2:0,n=u.value===1?{x:0,y:0}:{x:_.value*2,y:k.value*2};return{marginTop:Math.round(n.y+t)+"px",marginBottom:Math.round(t)+"px",marginLeft:Math.round(n.x+l)+"px",marginRight:Math.round(l)+"px",height:ue.value+"px",width:ie.value+"px",transform:e}}),_e=v(()=>{if(we.value!==void 0)return ma(we.value,a.files)}),Ve=v(()=>_e.value?.encodedSource??null);let j=null,X=null;function ke(e){X!==null&&URL.revokeObjectURL(X),X=e,i.value=e}H(()=>a.file.source,()=>{L||(Ne(),Me())}),H(i,e=>{e!==null&&e===G||(z.value=!1,je())}),H(()=>a.localSource,e=>{e&&(i.value=e)}),L||Me();function Me(){Se().catch(e=>{Y.error(`Loading of file ${m.value} failed`,{error:e}),d("errored",new Error(E("Failed to load image.")))})}async function Se(){j!==null&&j.source!==a.file.source&&j.controller.abort();const e=new AbortController;j={controller:e,source:a.file.source};const{signal:l}=e;if(q.value=!1,a.localSource){i.value=a.localSource;return}if(le.value==="image/svg+xml"){i.value=await Te(l);return}if(c.value){const t=he(a.file);ke(t?await fa(a.file,l):await De(xe.value,l)),q.value=!t&&te.value&&!ne.value;return}if(le.value==="image/gif"){i.value=g.value;return}if(a.file.source&&!te.value&&!ne.value){i.value=g.value;return}i.value=xe.value,q.value=te.value&&!ne.value}async function je(){await ea();const e=y.value;e?.complete&&e.naturalWidth>0&&!z.value&&oe()}function oe(){z.value=!0,A.value=Math.max(A.value,y.value?.naturalWidth??0),!(i.value!==null&&i.value===G)&&K()}async function Ce(){if(ae||!q.value)return;const e=da(a.file);if(e===void 0)return;ae=!0;const l=new AbortController;J=l;const{signal:t}=l;let n=null;try{const o=he(a.file)?e:await De(e,t);n=o===e?null:o;const S=await ha(o,t);if(t.aborted||(A.value=Math.max(A.value,S),S<=(y.value?.naturalWidth??0)))return;G=o,n===null?i.value=o:(ke(o),n=null)}catch(o){t.aborted||Y.debug(`Could not fetch a sharper preview of ${m.value}`,{error:o})}finally{n!==null&&URL.revokeObjectURL(n)}}function Ne(){J?.abort(),J=null,G=null,ae=!1,A.value=ze(a.file)?.width??0}H(z,e=>{e&&d("loaded")},{flush:"post"});function K(){const e=y.value?.naturalWidth||w.value?.videoWidth,l=y.value?.naturalHeight||w.value?.videoHeight;if(!e||!l)return;const t=D.value?l:e,n=D.value?e:l,o=Math.min(a.maxHeight/n,a.maxWidth/t);M.value=Math.floor(e*o),T.value=Math.floor(l*o)}H([()=>a.maxWidth,()=>a.maxHeight],K),H(Z,()=>{re(),K()}),aa(()=>{j?.controller.abort(),J?.abort(),X!==null&&(URL.revokeObjectURL(X),X=null)});async function Te(e){const l=await la.get(g.value,{signal:e}),{default:t}=await ta(async()=>{const{default:o}=await import("./store-DT5_o2He.chunk.mjs").then(S=>S.bA);return{default:o}},[],import.meta.url),n=t.sanitize(l.data);return`data:${le.value};base64,${btoa(unescape(encodeURIComponent(n)))}`}function Le(e,l,t){const n=F.value*t-F.value,o=O.value*t-O.value;_.value=Math.min(Math.max(e,-n/2),n/2),k.value=Math.min(Math.max(l,-o/2),o/2)}function We(e,l,t){const n=y.value??w.value;if(!n)return;const o=e-n.getBoundingClientRect().x-F.value*u.value/2,S=l-n.getBoundingClientRect().y-O.value*u.value/2,ce=o/(F.value*u.value),Ge=S/(O.value*u.value),Je=F.value*t-F.value*u.value,Ze=O.value*t-O.value*u.value,Ke=_.value-ce*Je,Qe=k.value-Ge*Ze;Le(Ke,Qe,t),u.value=t,t>1&&Ce()}function Ie(){const e=s.value[0],l=s.value[1];if(!e||!l)return 0;const t=l.x-e.x,n=l.y-e.y;return Math.sqrt(t*t+n*n)}function Pe(e){const l=e.deltaY<0?Math.min(u.value*1.1,ye.value):Math.max(u.value/1.1,1);if(l===1)return re();d("update:canSwipe",!1),We(e.clientX,e.clientY,l)}function re(){d("update:canSwipe",!0),u.value=1,_.value=0,k.value=0}function $e(e){s.value.push({pointerId:e.pointerId,x:e.clientX,y:e.clientY}),s.value.length===1&&(b.value=e.clientX,U.value=e.clientY,W.value=!0),s.value.length===2&&(I.value=Ie(),P.value=u.value,$.value=!0,d("update:canSwipe",!1))}function ve(e){const l=s.value.findIndex(t=>t.pointerId===e.pointerId);l!==-1&&(s.value.splice(l,1),W.value=!1,$.value=!1)}function He(e){ve(e),s.value.length===0&&u.value===1&&d("update:canSwipe",!0)}function Ee(e){if(s.value.length>0){const l=s.value.findIndex(n=>n.pointerId===e.pointerId),t=l>=0?s.value[l]:void 0;t&&(t.x=e.clientX,t.y=e.clientY)}if(s.value.length===1&&W.value&&!$.value&&u.value>1){const{clientX:l,clientY:t}=e,n=_.value+(l-b.value),o=k.value+(t-U.value);Le(n,o,u.value),b.value=l,U.value=t}if(s.value.length===2&&$.value){const l=Ie(),t=Math.min(Math.max(P.value*(l/I.value),1),ye.value),n=s.value[0],o=s.value[1];if(!n||!o)return;const S=(n.x+o.x)/2,ce=(n.y+o.y)/2;We(S,ce,t)}}function Re(){u.value>1?re():(u.value=1.3,Ce())}function Ue(){return he(a.file)?E("Failed to load image."):E("No preview available, download is disabled.")}async function Be(){if(c.value){Y.error(`Loading of file ${m.value} failed even after fallback`),d("errored",new Error(Ue()));return}Y.error(`Loading of file ${m.value} failed, falling back to fetching it by hand`),c.value=!0;try{await Se()}catch(e){Y.error(`Fallback fetch of ${m.value} failed`,{error:e}),d("errored",new Error(Ue()))}}function qe(){B.value=!0,oe()}function se(){!B.value||!w.value||w.value.play().catch(e=>{Y.debug("The browser refused to play the live photo",{error:e})})}function de(){w.value&&w.value.load()}return(e,l)=>L?(h(),fe(Ia,{key:0,files:p.files,maxWidth:p.maxWidth,maxHeight:p.maxHeight,shown:p.shown,onLoaded:l[0]||(l[0]=t=>d("loaded")),onErrored:l[1]||(l[1]=t=>d("errored",t)),"onUpdate:canSwipe":l[2]||(l[2]=t=>d("update:canSwipe",t))},null,8,["files","maxWidth","maxHeight","shown"])):(h(),x("div",Pa,[i.value!==null?(h(),x(Ae,{key:0},[B.value?N("",!0):(h(),x("img",{key:0,ref_key:"image",ref:y,alt:Ye.value,class:me({dragging:W.value,loaded:z.value,zoomed:u.value>1}),src:i.value,style:V(be.value),onErrorCapture:f(Be,["prevent","stop"]),onLoad:oe,onWheel:f(Pe,["stop","prevent"]),onDblclick:f(Re,["prevent"]),onPointerdown:f($e,["prevent"]),onPointerup:f(ve,["prevent"]),onPointercancel:f(He,["prevent"]),onPointermove:f(Ee,["prevent"])},null,46,$a)),_e.value?(h(),x(Ae,{key:1},[Xe(C("video",{ref_key:"video",ref:w,class:me({dragging:W.value,loaded:z.value,zoomed:u.value>1}),style:V(be.value),playsinline:!0,muted:"",poster:i.value??void 0,src:Ve.value??void 0,preload:"metadata",onCanplaythrough:qe,onLoadedmetadata:K,onWheel:f(Pe,["stop","prevent"]),onErrorCaptureOnce:f(Be,["prevent","stop"]),onDblclick:f(Re,["prevent"]),onPointerdown:f($e,["prevent"]),onPointerup:f(ve,["prevent"]),onPointercancel:f(He,["prevent"]),onPointermove:f(Ee,["prevent"]),onEnded:de},null,46,Ha),[[na,B.value]]),M.value!==0?(h(),x("button",{key:0,class:"live-photo_play_button",style:V({left:`calc(50% - ${M.value/2}px)`}),disabled:!B.value,"aria-label":Q(E)("Play the live photo"),onClick:se,onPointerenter:se,onFocus:se,onPointerleave:de,onBlur:de},[B.value?(h(),fe(_a,{key:0})):(h(),fe(Q(ua),{key:1})),ia(" "+ee(Q(E)("LIVE")),1)],44,Ea)):N("",!0)],64)):N("",!0)],64)):N("",!0)]))}}),Xa=ge(Ua,[["__scopeId","data-v-7d63f0cd"]]);export{Xa as default};
+//# sourceMappingURL=Images-D15tD-uO.chunk.mjs.map
diff --git a/js/Images-D15tD-uO.chunk.mjs.license b/js/Images-D15tD-uO.chunk.mjs.license
new file mode 100644
index 00000000..61d3f05d
--- /dev/null
+++ b/js/Images-D15tD-uO.chunk.mjs.license
@@ -0,0 +1,7 @@
+SPDX-License-Identifier: AGPL-3.0-or-later
+SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
+
+This file is generated from multiple sources. Included packages:
+- @nextcloud/viewer
+ - version: 2.0.0-beta.19
+ - license: AGPL-3.0-or-later
diff --git a/js/Images-D15tD-uO.chunk.mjs.map b/js/Images-D15tD-uO.chunk.mjs.map
new file mode 100644
index 00000000..007aaf4d
--- /dev/null
+++ b/js/Images-D15tD-uO.chunk.mjs.map
@@ -0,0 +1 @@
+{"version":3,"mappings":"klBAWA,GAAMA,IACJ,KAAM,2BACN,GAAO,MAAC,OACR,IACE,SACE,OAAM,QAER,MAAW,CACT,OAAM,OACN,MAAS,cACf,KACI,EAAM,QACE,MACN,UAEN,CACA,IACMC,CAAe,GAAC,eAAe,WAC/BC,MAAgB,OAAQ,SAAS,OACjCC,GAAe,CAAE,QAAG,kMACpBC,CAAe,CAAE,OACvB,mBAA2CC,CAAQC,MACjD,MAAOC,EAAS,QAAuB,OAAmBC,CAAK,OAAQ,GACrE,aAAeC,CAAO,SAAQ,KAAO,SACrC,SAAcA,CAAO,WACrB,CAAO,kDACP,SACA,SAASC,CAAO,KAAOA,MAAaC,EAAWH,MAAK,YAAqB,CAC7E,KACKD,EAAS,KAAuB,mBAClB,KACb,WAAO,wCAEP,KAAe,WACf,CAAS,kBAEU,KAAQJ,QAClB,QAAkB,CAAIS,GAAmB,OAASR,OAA8BK,CAAO,KAAK,EAAG,GAAC,CAAKI,UAEpH,MAAsB,EACtB,GAAK,IAAgB,CACrB,MACA,CAAMC,GAAoCC,IAAYf,EAAa,IAAE,QAAUgB,CAAW,MACpFC,CAAe,IAAC,OAAO,CAAK,mBAE5BC,KAAiB,WAAO,mDAAyD,MAChE,UAAO,4DACV,4BAEV,uBACR,IACE,OAAO,CACP,YACA,aACA,UAAS,IAAM,QAEjB,QAAQ,QAAU,kBAAW,gBAAmB,cAAkB,aAAgB,MAClF,OAAiB,IAAY,EAAI,OACzBC,QAEAC,OAAwB,SAC9BC,CAAM,UAAY,EAAQC,KACpBA,KACK,WAAO,CAAM,CAAE,iBAAqB,CAE/C,OACA,KAAaC,CAAS,MAAY,WAC5BC,CAAQD,KAAS,CAAMJ,IAAM,WACrBI,CAAS,KAAO,SAAe,aAAU,KAAc,SAAS,EAAG,SACrD,CAAME,MAAqB,MAAOC,CAAM,KAAK,CAAC,SAC7C,CAAMD,MAAsB,WAAa,CAAK,KAC3DE,OACJJ,CAAS,QACfK,MAAQ,QAAU,GACpB,aAAgBT,GAAM,SAAU,SAAc,kBAExC,IAAAU,EAAO,OAAAC,EAAM,CAAKF,EAAQ,MAC5BG,SAAa,MAAa,YAAkBZ,CAAM,WAAkB,GAC1E,SAAS,SAAY,MAAMU,CAAQE,CAAK,MAAG,GAAQ,MAAK,KAAMD,WAE/CH,CAAI,IACfK,KAAc,CAAK,IACzBC,CAAU,UAAW,cAAmB,EAAK,CAAC,EAC9C,IAAIC,IACAC,IAAS,CACb,cACE,KAAM,CAAE,iBAAc,YAAAC,CAAa,EAAKC,QAAM,CAC1CT,WAAkB,OAAUU,IAAe,CAAKF,GAAgB,OAC1D,KAAU,WAAqB,OAAqB,CAE9DF,MACIA,KACFK,EAAK,SAET,CACA,SAASC,KACFL,OACM,CACTI,IAAK,aAAe,KAAME,EAAE,yBAAyB,KAGzD,WAAc/B,CACLH,WAAgC,KACrC,UAAuB,oCAAuB,gBAAsC,UACpF,SAAwB,KAAO,QAAO,KAAM,UAAW,QAAWmC,KAAI,MAAM,MAAM,CAAI,MAEtFC,CAAmB,MAAO,CACxB,QAAO,yBACP,MAAU,OAAM,aAChB,IAAgB,WAChB,MACA,MAAAH,CACV,KAAW,KAAUvB,WACM,CAAO,IACxB,GAAO,4BACP,GAAKO,EAAM,MAAM,gBACZoB,EAAY,WACjB,CAAOC,GAAiB,SAAU,eAAeC","names":["_sfc_main$2","_hoisted_1$2","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","$setup","$data","openBlock","_ctx","$props","_cache","$event","createElementBlock","createCommentVNode","PlayCircleOutline","_export_sfc","_sfc_render","_hoisted_1$1","_hoisted_3$1","props","slider","watch","shown","computed","other","getPreviewIfAny","space","ref","natural","width","height","scale","touched","onMounted","loadedImages","failed","naturalHeight","event","naturalWidth","emit","onError","t","box","createElementVNode","otherSource","normalizeStyle","position"],"ignoreList":[0],"sources":["../node_modules/@nextcloud/viewer/dist/chunks/Images.mjs"],"sourcesContent":["import '../assets/Images.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, watch, computed, ref, onMounted, normalizeStyle, normalizeClass, withDirectives, unref, vModelText, nextTick, onUnmounted, createBlock, Fragment, withModifiers, vShow, createTextVNode } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport NcLoadingIcon from \"@nextcloud/vue/components/NcLoadingIcon\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { t, p as photoSize, l as logger } from \"./index.mjs\";\nimport { a as getPreviewIfAny, b as getLargestPreview } from \"./previewUtils.mjs\";\nimport { u as useViewerProps } from \"./useViewerProps.mjs\";\nimport { a as preloadMedia, b as preloadPreview, c as preloadImage } from \"./mediaPreloader.mjs\";\nimport { c as canDownload } from \"./canDownload.mjs\";\nimport { f as findLivePhotoPeerFromFileId } from \"./livePhotoUtils.mjs\";\nconst _sfc_main$2 = {\n name: \"PlayCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon play-circle-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst PlayCircleOutline = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nconst _hoisted_1$1 = [\"alt\", \"src\"];\nconst _hoisted_2$1 = [\"alt\", \"src\"];\nconst _hoisted_3$1 = { class: \"image-differences__label image-differences__label--base\" };\nconst _hoisted_4$1 = { class: \"image-differences__label image-differences__label--other\" };\nconst _hoisted_5 = [\"aria-label\"];\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"ImageDifferences\",\n props: {\n files: {},\n maxWidth: {},\n maxHeight: {},\n shown: { type: Boolean }\n },\n emits: [\"loaded\", \"errored\", \"update:canSwipe\", \"update:editing\", \"update:playing\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const slider = useTemplateRef(\"slider\");\n watch(() => props.shown, (shown) => {\n if (shown) {\n slider.value?.focus({ preventScroll: true });\n }\n });\n const base = computed(() => props.files[0]);\n const other = computed(() => props.files[1]);\n const space = computed(() => ({ width: props.maxWidth, height: props.maxHeight }));\n const baseSource = computed(() => getPreviewIfAny(base.value, space.value));\n const otherSource = computed(() => getPreviewIfAny(other.value, space.value));\n const natural = ref();\n const box = computed(() => {\n if (natural.value === void 0) {\n return { width: props.maxWidth, height: props.maxHeight };\n }\n const { width, height } = natural.value;\n const scale = Math.min(1, props.maxWidth / width, props.maxHeight / height);\n return { width: Math.round(width * scale), height: Math.round(height * scale) };\n });\n const position = ref(50);\n const touched = ref(false);\n onMounted(() => emit(\"update:canSwipe\", false));\n let loadedImages = 0;\n let failed = false;\n function onLoad(event) {\n const { naturalWidth, naturalHeight } = event.target;\n if (natural.value === void 0 && naturalWidth > 0 && naturalHeight > 0) {\n natural.value = { width: naturalWidth, height: naturalHeight };\n }\n loadedImages++;\n if (loadedImages === 2) {\n emit(\"loaded\");\n }\n }\n function onError() {\n if (!failed) {\n failed = true;\n emit(\"errored\", new Error(t(\"Failed to load image.\")));\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"figure\", {\n class: normalizeClass([\"image-differences\", { \"image-differences--touched\": touched.value }]),\n style: normalizeStyle({ width: `${box.value.width}px`, height: `${box.value.height}px` })\n }, [\n createElementVNode(\"img\", {\n class: \"image-differences__image\",\n alt: base.value.displayname,\n src: baseSource.value,\n onLoad,\n onError\n }, null, 40, _hoisted_1$1),\n createElementVNode(\"img\", {\n class: \"image-differences__image\",\n alt: other.value.displayname,\n src: otherSource.value,\n style: normalizeStyle({ clipPath: `inset(0 0 0 ${position.value}%)` }),\n onLoad,\n onError\n }, null, 44, _hoisted_2$1),\n createElementVNode(\"span\", _hoisted_3$1, toDisplayString(base.value.displayname), 1),\n createElementVNode(\"span\", _hoisted_4$1, toDisplayString(other.value.displayname), 1),\n withDirectives(createElementVNode(\"input\", {\n ref_key: \"slider\",\n ref: slider,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => position.value = $event),\n class: \"image-differences__slider\",\n type: \"range\",\n min: \"0\",\n max: \"100\",\n \"aria-label\": unref(t)(\"Slide to compare {base} with {other}\", { base: base.value.displayname, other: other.value.displayname }),\n onPointerdown: _cache[1] || (_cache[1] = ($event) => touched.value = true),\n onPointerup: _cache[2] || (_cache[2] = ($event) => touched.value = false),\n onPointercancel: _cache[3] || (_cache[3] = ($event) => touched.value = false)\n }, null, 40, _hoisted_5), [\n [\n vModelText,\n position.value,\n void 0,\n { number: true }\n ]\n ]),\n createElementVNode(\"span\", {\n class: \"image-differences__divider\",\n style: normalizeStyle({ insetInlineStart: `${position.value}%` })\n }, null, 4)\n ], 6);\n };\n }\n});\nconst ImageDifferences = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-c9b762ef\"]]);\nconst _hoisted_1 = {\n key: 1,\n class: \"image_container\"\n};\nconst _hoisted_2 = [\"alt\", \"src\"];\nconst _hoisted_3 = [\"poster\", \"src\"];\nconst _hoisted_4 = [\"disabled\", \"aria-label\"];\nconst MIN_ZOOM_LIMIT = 5;\nconst PIXEL_ZOOM_LIMIT = 4;\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n name: \"ViewerImages\"\n },\n __name: \"Images\",\n props: {\n file: {},\n files: {},\n maxHeight: {},\n maxWidth: {},\n editing: { type: Boolean, default: false },\n isSidebarShown: { type: Boolean },\n shown: { type: Boolean },\n turns: {},\n localSource: {},\n comparison: {},\n embedded: { type: Boolean }\n },\n emits: [\"loaded\", \"errored\", \"update:canSwipe\", \"update:editing\", \"update:playing\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const showsDifferences = props.comparison === \"differences\";\n const { filename, src } = useViewerProps(props);\n const image = ref();\n const video = ref();\n const dragging = ref(false);\n const dragX = ref(0);\n const dragY = ref(0);\n const pinchDistance = ref(0);\n const pinchStartZoomRatio = ref(1);\n const pointerCache = ref([]);\n const shiftX = ref(0);\n const shiftY = ref(0);\n const zooming = ref(false);\n const zoomRatio = ref(1);\n const data = ref(null);\n const fallback = ref(false);\n const livePhotoCanBePlayed = ref(false);\n const loaded = ref(false);\n const height = ref(0);\n const width = ref(0);\n const shownFromPreview = ref(false);\n const nativeWidth = ref(photoSize(props.file)?.width ?? 0);\n let detailSource = null;\n let detailRequested = false;\n let detailController = null;\n const zoomLimit = computed(() => width.value > 0 ? Math.max(MIN_ZOOM_LIMIT, PIXEL_ZOOM_LIMIT * nativeWidth.value / width.value) : MIN_ZOOM_LIMIT);\n const mime = computed(() => props.file.mime);\n const hasPreview = computed(() => props.file.attributes?.hasPreview ?? false);\n const previewUrl = computed(() => props.file.attributes?.previewUrl);\n const metadataFilesLivePhoto = computed(() => props.file.attributes?.[\"metadata-files-live-photo\"]);\n const previewPath = computed(() => getPreviewIfAny(props.file, { width: props.maxWidth, height: props.maxHeight }));\n const turns = computed(() => Number(props.turns ?? 0) % 4);\n const quarterTurned = computed(() => turns.value % 2 === 1);\n const screenWidth = computed(() => quarterTurned.value ? height.value : width.value);\n const screenHeight = computed(() => quarterTurned.value ? width.value : height.value);\n const zoomHeight = computed(() => Math.round(height.value * zoomRatio.value));\n const zoomWidth = computed(() => Math.round(width.value * zoomRatio.value));\n const alt = computed(() => props.file.displayname);\n const imgStyle = computed(() => {\n const transform = turns.value === 0 ? void 0 : `rotate(${-90 * turns.value}deg)`;\n const inline = quarterTurned.value ? (zoomHeight.value - zoomWidth.value) / 2 : 0;\n const block = quarterTurned.value ? (zoomWidth.value - zoomHeight.value) / 2 : 0;\n const shift = zoomRatio.value === 1 ? { x: 0, y: 0 } : { x: shiftX.value * 2, y: shiftY.value * 2 };\n return {\n marginTop: Math.round(shift.y + block) + \"px\",\n marginBottom: Math.round(block) + \"px\",\n marginLeft: Math.round(shift.x + inline) + \"px\",\n marginRight: Math.round(inline) + \"px\",\n height: zoomHeight.value + \"px\",\n width: zoomWidth.value + \"px\",\n transform\n };\n });\n const livePhoto = computed(() => {\n if (metadataFilesLivePhoto.value === void 0) {\n return void 0;\n }\n return findLivePhotoPeerFromFileId(metadataFilesLivePhoto.value, props.files);\n });\n const livePhotoSrc = computed(() => livePhoto.value?.encodedSource ?? null);\n let inFlight = null;\n let ownedUrl = null;\n function showOwnedUrl(url) {\n if (ownedUrl !== null) {\n URL.revokeObjectURL(ownedUrl);\n }\n ownedUrl = url;\n data.value = url;\n }\n watch(() => props.file.source, () => {\n if (showsDifferences) {\n return;\n }\n forgetDetail();\n load();\n });\n watch(data, (source) => {\n if (source !== null && source === detailSource) {\n return;\n }\n loaded.value = false;\n catchUpIfLoaded();\n });\n watch(() => props.localSource, (source) => {\n if (source) {\n data.value = source;\n }\n });\n if (!showsDifferences) {\n load();\n }\n function load() {\n loadData().catch((error) => {\n logger.error(`Loading of file ${filename.value} failed`, { error });\n emit(\"errored\", new Error(t(\"Failed to load image.\")));\n });\n }\n async function loadData() {\n if (inFlight !== null && inFlight.source !== props.file.source) {\n inFlight.controller.abort();\n }\n const controller = new AbortController();\n inFlight = { controller, source: props.file.source };\n const { signal } = controller;\n shownFromPreview.value = false;\n if (props.localSource) {\n data.value = props.localSource;\n return;\n }\n if (mime.value === \"image/svg+xml\") {\n data.value = await getBase64FromImage(signal);\n return;\n }\n if (fallback.value) {\n const allowed = canDownload(props.file);\n showOwnedUrl(allowed ? await preloadMedia(props.file, signal) : await preloadPreview(previewPath.value, signal));\n shownFromPreview.value = !allowed && hasPreview.value && !previewUrl.value;\n return;\n }\n if (mime.value === \"image/gif\") {\n data.value = src.value;\n return;\n }\n if (props.file.source && !hasPreview.value && !previewUrl.value) {\n data.value = src.value;\n return;\n }\n data.value = previewPath.value;\n shownFromPreview.value = hasPreview.value && !previewUrl.value;\n }\n async function catchUpIfLoaded() {\n await nextTick();\n const element = image.value;\n if (element?.complete && element.naturalWidth > 0 && !loaded.value) {\n onDoneLoading();\n }\n }\n function onDoneLoading() {\n loaded.value = true;\n nativeWidth.value = Math.max(nativeWidth.value, image.value?.naturalWidth ?? 0);\n if (data.value !== null && data.value === detailSource) {\n return;\n }\n updateImageSize();\n }\n async function fetchDetail() {\n if (detailRequested || !shownFromPreview.value) {\n return;\n }\n const url = getLargestPreview(props.file);\n if (url === void 0) {\n return;\n }\n detailRequested = true;\n const controller = new AbortController();\n detailController = controller;\n const { signal } = controller;\n let unshown = null;\n try {\n const source = canDownload(props.file) ? url : await preloadPreview(url, signal);\n unshown = source === url ? null : source;\n const detailWidth = await preloadImage(source, signal);\n if (signal.aborted) {\n return;\n }\n nativeWidth.value = Math.max(nativeWidth.value, detailWidth);\n if (detailWidth <= (image.value?.naturalWidth ?? 0)) {\n return;\n }\n detailSource = source;\n if (unshown === null) {\n data.value = source;\n } else {\n showOwnedUrl(source);\n unshown = null;\n }\n } catch (error) {\n if (!signal.aborted) {\n logger.debug(`Could not fetch a sharper preview of ${filename.value}`, { error });\n }\n } finally {\n if (unshown !== null) {\n URL.revokeObjectURL(unshown);\n }\n }\n }\n function forgetDetail() {\n detailController?.abort();\n detailController = null;\n detailSource = null;\n detailRequested = false;\n nativeWidth.value = photoSize(props.file)?.width ?? 0;\n }\n watch(loaded, (isLoaded) => {\n if (isLoaded) {\n emit(\"loaded\");\n }\n }, { flush: \"post\" });\n function updateImageSize() {\n const mediaWidth = image.value?.naturalWidth || video.value?.videoWidth;\n const mediaHeight = image.value?.naturalHeight || video.value?.videoHeight;\n if (!mediaWidth || !mediaHeight) {\n return;\n }\n const boxWidth = quarterTurned.value ? mediaHeight : mediaWidth;\n const boxHeight = quarterTurned.value ? mediaWidth : mediaHeight;\n const ratio = Math.min(props.maxHeight / boxHeight, props.maxWidth / boxWidth);\n width.value = Math.floor(mediaWidth * ratio);\n height.value = Math.floor(mediaHeight * ratio);\n }\n watch([() => props.maxWidth, () => props.maxHeight], updateImageSize);\n watch(turns, () => {\n resetZoom();\n updateImageSize();\n });\n onUnmounted(() => {\n inFlight?.controller.abort();\n detailController?.abort();\n if (ownedUrl !== null) {\n URL.revokeObjectURL(ownedUrl);\n ownedUrl = null;\n }\n });\n async function getBase64FromImage(signal) {\n const file = await axios.get(src.value, { signal });\n const { default: DOMPurify } = await import(\"dompurify\");\n const sanitized = DOMPurify.sanitize(file.data);\n return `data:${mime.value};base64,${btoa(unescape(encodeURIComponent(sanitized)))}`;\n }\n function updateShift(newShiftX, newShiftY, newZoomRatio) {\n const maxShiftX = screenWidth.value * newZoomRatio - screenWidth.value;\n const maxShiftY = screenHeight.value * newZoomRatio - screenHeight.value;\n shiftX.value = Math.min(Math.max(newShiftX, -maxShiftX / 2), maxShiftX / 2);\n shiftY.value = Math.min(Math.max(newShiftY, -maxShiftY / 2), maxShiftY / 2);\n }\n function updateZoomAndShift(stableX, stableY, newZoomRatio) {\n const element = image.value ?? video.value;\n if (!element) {\n return;\n }\n const scrollX = stableX - element.getBoundingClientRect().x - screenWidth.value * zoomRatio.value / 2;\n const scrollY = stableY - element.getBoundingClientRect().y - screenHeight.value * zoomRatio.value / 2;\n const scrollPercX = scrollX / (screenWidth.value * zoomRatio.value);\n const scrollPercY = scrollY / (screenHeight.value * zoomRatio.value);\n const growX = screenWidth.value * newZoomRatio - screenWidth.value * zoomRatio.value;\n const growY = screenHeight.value * newZoomRatio - screenHeight.value * zoomRatio.value;\n const newShiftX = shiftX.value - scrollPercX * growX;\n const newShiftY = shiftY.value - scrollPercY * growY;\n updateShift(newShiftX, newShiftY, newZoomRatio);\n zoomRatio.value = newZoomRatio;\n if (newZoomRatio > 1) {\n fetchDetail();\n }\n }\n function distanceBetweenTouches() {\n const t0 = pointerCache.value[0];\n const t1 = pointerCache.value[1];\n if (!t0 || !t1) {\n return 0;\n }\n const diffX = t1.x - t0.x;\n const diffY = t1.y - t0.y;\n return Math.sqrt(diffX * diffX + diffY * diffY);\n }\n function updateZoom(event) {\n const isZoomIn = event.deltaY < 0;\n const newZoomRatio = isZoomIn ? Math.min(zoomRatio.value * 1.1, zoomLimit.value) : Math.max(zoomRatio.value / 1.1, 1);\n if (newZoomRatio === 1) {\n return resetZoom();\n }\n emit(\"update:canSwipe\", false);\n updateZoomAndShift(event.clientX, event.clientY, newZoomRatio);\n }\n function resetZoom() {\n emit(\"update:canSwipe\", true);\n zoomRatio.value = 1;\n shiftX.value = 0;\n shiftY.value = 0;\n }\n function pointerDown(event) {\n pointerCache.value.push({ pointerId: event.pointerId, x: event.clientX, y: event.clientY });\n if (pointerCache.value.length === 1) {\n dragX.value = event.clientX;\n dragY.value = event.clientY;\n dragging.value = true;\n }\n if (pointerCache.value.length === 2) {\n pinchDistance.value = distanceBetweenTouches();\n pinchStartZoomRatio.value = zoomRatio.value;\n zooming.value = true;\n emit(\"update:canSwipe\", false);\n }\n }\n function pointerUp(event) {\n const index = pointerCache.value.findIndex((cachedEv) => cachedEv.pointerId === event.pointerId);\n if (index === -1) {\n return;\n }\n pointerCache.value.splice(index, 1);\n dragging.value = false;\n zooming.value = false;\n }\n function pointerCancel(event) {\n pointerUp(event);\n if (pointerCache.value.length === 0 && zoomRatio.value === 1) {\n emit(\"update:canSwipe\", true);\n }\n }\n function pointerMove(event) {\n if (pointerCache.value.length > 0) {\n const index = pointerCache.value.findIndex((cachedEv) => cachedEv.pointerId === event.pointerId);\n const cached = index >= 0 ? pointerCache.value[index] : void 0;\n if (cached) {\n cached.x = event.clientX;\n cached.y = event.clientY;\n }\n }\n if (pointerCache.value.length === 1 && dragging.value && !zooming.value && zoomRatio.value > 1) {\n const { clientX, clientY } = event;\n const newShiftX = shiftX.value + (clientX - dragX.value);\n const newShiftY = shiftY.value + (clientY - dragY.value);\n updateShift(newShiftX, newShiftY, zoomRatio.value);\n dragX.value = clientX;\n dragY.value = clientY;\n }\n if (pointerCache.value.length === 2 && zooming.value) {\n const newDistance = distanceBetweenTouches();\n const newZoomRatio = Math.min(Math.max(pinchStartZoomRatio.value * (newDistance / pinchDistance.value), 1), zoomLimit.value);\n const t0 = pointerCache.value[0];\n const t1 = pointerCache.value[1];\n if (!t0 || !t1) {\n return;\n }\n const stableX = (t0.x + t1.x) / 2;\n const stableY = (t0.y + t1.y) / 2;\n updateZoomAndShift(stableX, stableY, newZoomRatio);\n }\n }\n function onDblclick() {\n if (zoomRatio.value > 1) {\n resetZoom();\n } else {\n zoomRatio.value = 1.3;\n fetchDetail();\n }\n }\n function failureMessage() {\n return canDownload(props.file) ? t(\"Failed to load image.\") : t(\"No preview available, download is disabled.\");\n }\n async function onFail() {\n if (fallback.value) {\n logger.error(`Loading of file ${filename.value} failed even after fallback`);\n emit(\"errored\", new Error(failureMessage()));\n return;\n }\n logger.error(`Loading of file ${filename.value} failed, falling back to fetching it by hand`);\n fallback.value = true;\n try {\n await loadData();\n } catch (error) {\n logger.error(`Fallback fetch of ${filename.value} failed`, { error });\n emit(\"errored\", new Error(failureMessage()));\n }\n }\n function doneLoadingLivePhoto() {\n livePhotoCanBePlayed.value = true;\n onDoneLoading();\n }\n function playLivePhoto() {\n if (!livePhotoCanBePlayed.value || !video.value) {\n return;\n }\n video.value.play().catch((error) => {\n logger.debug(\"The browser refused to play the live photo\", { error });\n });\n }\n function stopLivePhoto() {\n if (!video.value) {\n return;\n }\n video.value.load();\n }\n return (_ctx, _cache) => {\n return showsDifferences ? (openBlock(), createBlock(ImageDifferences, {\n key: 0,\n files: __props.files,\n maxWidth: __props.maxWidth,\n maxHeight: __props.maxHeight,\n shown: __props.shown,\n onLoaded: _cache[0] || (_cache[0] = ($event) => emit(\"loaded\")),\n onErrored: _cache[1] || (_cache[1] = (error) => emit(\"errored\", error)),\n \"onUpdate:canSwipe\": _cache[2] || (_cache[2] = (canSwipe) => emit(\"update:canSwipe\", canSwipe))\n }, null, 8, [\"files\", \"maxWidth\", \"maxHeight\", \"shown\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n data.value !== null ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !livePhotoCanBePlayed.value ? (openBlock(), createElementBlock(\"img\", {\n key: 0,\n ref_key: \"image\",\n ref: image,\n alt: alt.value,\n class: normalizeClass({\n dragging: dragging.value,\n loaded: loaded.value,\n zoomed: zoomRatio.value > 1\n }),\n src: data.value,\n style: normalizeStyle(imgStyle.value),\n onErrorCapture: withModifiers(onFail, [\"prevent\", \"stop\"]),\n onLoad: onDoneLoading,\n onWheel: withModifiers(updateZoom, [\"stop\", \"prevent\"]),\n onDblclick: withModifiers(onDblclick, [\"prevent\"]),\n onPointerdown: withModifiers(pointerDown, [\"prevent\"]),\n onPointerup: withModifiers(pointerUp, [\"prevent\"]),\n onPointercancel: withModifiers(pointerCancel, [\"prevent\"]),\n onPointermove: withModifiers(pointerMove, [\"prevent\"])\n }, null, 46, _hoisted_2)) : createCommentVNode(\"\", true),\n livePhoto.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n withDirectives(createElementVNode(\"video\", {\n ref_key: \"video\",\n ref: video,\n class: normalizeClass({\n dragging: dragging.value,\n loaded: loaded.value,\n zoomed: zoomRatio.value > 1\n }),\n style: normalizeStyle(imgStyle.value),\n playsinline: true,\n muted: \"\",\n poster: data.value ?? void 0,\n src: livePhotoSrc.value ?? void 0,\n preload: \"metadata\",\n onCanplaythrough: doneLoadingLivePhoto,\n onLoadedmetadata: updateImageSize,\n onWheel: withModifiers(updateZoom, [\"stop\", \"prevent\"]),\n onErrorCaptureOnce: withModifiers(onFail, [\"prevent\", \"stop\"]),\n onDblclick: withModifiers(onDblclick, [\"prevent\"]),\n onPointerdown: withModifiers(pointerDown, [\"prevent\"]),\n onPointerup: withModifiers(pointerUp, [\"prevent\"]),\n onPointercancel: withModifiers(pointerCancel, [\"prevent\"]),\n onPointermove: withModifiers(pointerMove, [\"prevent\"]),\n onEnded: stopLivePhoto\n }, null, 46, _hoisted_3), [\n [vShow, livePhotoCanBePlayed.value]\n ]),\n width.value !== 0 ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n class: \"live-photo_play_button\",\n style: normalizeStyle({ left: `calc(50% - ${width.value / 2}px)` }),\n disabled: !livePhotoCanBePlayed.value,\n \"aria-label\": unref(t)(\"Play the live photo\"),\n onClick: playLivePhoto,\n onPointerenter: playLivePhoto,\n onFocus: playLivePhoto,\n onPointerleave: stopLivePhoto,\n onBlur: stopLivePhoto\n }, [\n livePhotoCanBePlayed.value ? (openBlock(), createBlock(PlayCircleOutline, { key: 0 })) : (openBlock(), createBlock(unref(NcLoadingIcon), { key: 1 })),\n createTextVNode(\" \" + toDisplayString(unref(t)(\"LIVE\")), 1)\n ], 44, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true)\n ]));\n };\n }\n});\nconst Images = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-7d63f0cd\"]]);\nexport {\n Images as default\n};\n//# sourceMappingURL=Images.mjs.map\n"],"file":"Images-D15tD-uO.chunk.mjs"}
\ No newline at end of file
diff --git a/js/Images-D15tD-uO.chunk.mjs.map.license b/js/Images-D15tD-uO.chunk.mjs.map.license
new file mode 120000
index 00000000..ed1bc706
--- /dev/null
+++ b/js/Images-D15tD-uO.chunk.mjs.map.license
@@ -0,0 +1 @@
+Images-D15tD-uO.chunk.mjs.license
\ No newline at end of file
diff --git a/js/NcActionButton-B2udyVne.chunk.mjs b/js/NcActionButton-B2udyVne.chunk.mjs
new file mode 100644
index 00000000..8b90c5c7
--- /dev/null
+++ b/js/NcActionButton-B2udyVne.chunk.mjs
@@ -0,0 +1,3 @@
+(function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode(".material-design-icon[data-v-6c2daf4e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-6c2daf4e]:hover,li.action.active[data-v-6c2daf4e]{border-radius:6px;padding:0}li.action[data-v-6c2daf4e]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-6c2daf4e]{pointer-events:none;opacity:.5}.action--disabled[data-v-6c2daf4e]:hover,.action--disabled[data-v-6c2daf4e]:focus{cursor:default;opacity:.5}.action--disabled[data-v-6c2daf4e] *{opacity:1!important}.action-button[data-v-6c2daf4e]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-button>span[data-v-6c2daf4e]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-6c2daf4e]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-6c2daf4e] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-button[data-v-6c2daf4e] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-6c2daf4e],.action-button__longtext[data-v-6c2daf4e]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-6c2daf4e]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-6c2daf4e]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-button__description[data-v-6c2daf4e]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-button__menu-icon[data-v-6c2daf4e],.action-button__pressed-icon[data-v-6c2daf4e]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action-button[data-v-6c2daf4e] *{cursor:pointer}")),document.head.appendChild(a)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
+import{b as m,c as b,m as y,d as k}from"./mdi-Cw2wacGo.chunk.mjs";import{K as f,a0 as x,a1 as g,k as i,q as n,A as l,M as C,u as _,v as r,D as s,x as o,m as h,J as v}from"./store-DT5_o2He.chunk.mjs";const V={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},S={mixins:[V],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:m}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},I={name:"NcActionButton",components:{NcIconSvgWrapper:x},mixins:[S],inject:{isInSemanticMenu:{from:b,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:k,mdiChevronRight:y}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},T=["role"],M=["aria-label","disabled","title","type"],A={class:"action-button__longtext-wrapper"},$={key:0,class:"action-button__name"},B=["textContent"],L={key:2,class:"action-button__text"},U=["textContent"],w={key:2,class:"action-button__pressed-icon material-design-icon"};function N(t,c,a,u,R,e){const d=g("NcIconSvgWrapper");return i(),n("li",{class:r(["action",{"action--disabled":a.disabled}]),role:e.isInSemanticMenu&&"presentation"},[l("button",v({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":e.isChecked,focusable:e.isFocusable}],disabled:a.disabled,title:t.title,type:e.nativeType},e.buttonAttributes,{onClick:c[0]||(c[0]=(...p)=>e.handleClick&&e.handleClick(...p))}),[C(t.$slots,"icon",{},()=>[l("span",{class:r([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:_({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),l("span",A,[t.name?(i(),n("strong",$,s(t.name),1)):o("",!0),t.isLongText?(i(),n("span",{key:1,class:"action-button__longtext",textContent:s(t.text)},null,8,B)):(i(),n("span",L,s(t.text),1)),a.description?(i(),n("span",{key:3,class:"action-button__description",textContent:s(a.description)},null,8,U)):o("",!0)]),a.isMenu?(i(),h(d,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):e.isChecked?(i(),h(d,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):e.isChecked===!1?(i(),n("span",w)):o("",!0),o("",!0)],16,M)],10,T)}const F=f(I,[["render",N],["__scopeId","data-v-6c2daf4e"]]);export{S as A,F as N};
+//# sourceMappingURL=NcActionButton-B2udyVne.chunk.mjs.map
diff --git a/js/NcCheckboxRadioSwitch-Di8Bp9TK.chunk.mjs.license b/js/NcActionButton-B2udyVne.chunk.mjs.license
similarity index 100%
rename from js/NcCheckboxRadioSwitch-Di8Bp9TK.chunk.mjs.license
rename to js/NcActionButton-B2udyVne.chunk.mjs.license
diff --git a/js/NcActionButton-B2udyVne.chunk.mjs.map b/js/NcActionButton-B2udyVne.chunk.mjs.map
new file mode 100644
index 00000000..d3546105
--- /dev/null
+++ b/js/NcActionButton-B2udyVne.chunk.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"NcActionButton-B2udyVne.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/actionGlobal.mjs","../node_modules/@nextcloud/vue/dist/chunks/actionText.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionButton.mjs"],"sourcesContent":["const ActionGlobalMixin = {\n beforeUpdate() {\n this.text = this.getText();\n },\n data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText() {\n return this.$slots.default?.()[0].children?.trim?.() || \"\";\n }\n }\n};\nexport {\n ActionGlobalMixin as A\n};\n//# sourceMappingURL=actionGlobal.mjs.map\n","import { warn } from \"vue\";\nimport { N as NC_ACTIONS_CLOSE_MENU } from \"./useNcActions.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal.mjs\";\nconst ActionTextMixin = {\n mixins: [ActionGlobalMixin],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n inject: {\n closeMenu: {\n from: NC_ACTIONS_CLOSE_MENU\n }\n },\n emits: [\n \"click\"\n ],\n created() {\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n computed: {\n /**\n * Check if icon prop is an URL\n *\n * @return {boolean} Whether the icon prop is an URL\n */\n isIconUrl() {\n try {\n return !!new URL(this.icon, this.icon.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n }\n },\n methods: {\n onClick(event) {\n this.$emit(\"click\", event);\n if (this.closeAfterClick) {\n this.closeMenu(false);\n }\n }\n }\n};\nexport {\n ActionTextMixin as A\n};\n//# sourceMappingURL=actionText.mjs.map\n","import '../assets/NcActionButton.css';\nimport { c as mdiChevronRight, d as mdiCheck } from \"./mdi.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper.mjs\";\nimport { A as ActionTextMixin } from \"./actionText.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, mergeProps, renderSlot, normalizeStyle, toDisplayString, createCommentVNode, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _sfc_main = {\n name: \"NcActionButton\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (behavior) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(behavior)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of ``\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Small underlying text content of the entry\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"update:modelValue\"],\n setup() {\n return {\n mdiCheck,\n mdiChevronRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n if (this.type === \"radio\" && typeof this.modelValue !== \"boolean\") {\n return this.modelValue === this.value;\n }\n return this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n if (this.type === \"submit\" || this.type === \"reset\") {\n return this.type;\n }\n return \"button\";\n },\n /**\n * HTML attributes to bind to the ")).result;return te("div",{class:"rich-text--wrapper rich-text--wrapper-markdown"},[e,this.referenceLimit>0?te("div",{class:"rich-text--reference-widget"},[te(fn,{text:this.prepareReferenceSource(this.text),referenceData:this.references,interactive:this.referenceInteractive,interactiveOptIn:this.referenceInteractiveOptIn})]):null])},prepareTextNode(e){return this.autolink&&(e=Yo(e)),Array.isArray(e)?e.map(t=>{if(typeof t=="string")return t;const{component:n,props:r}=t;return te(n,{...r,class:"rich-text--component"})}):e},prepareReferenceSource(e){if(!this.useMarkdown&&!this.useExtendedMarkdown)return e;const t=ti();return t.compiler=n=>Ut(n),t.use(Wr).use(Ed).processSync(e.replace(/\s/g," ")).value},createElement(e,t,n){n&&(t.key=n);const r=t.children??[];if(delete t.children,!String(e).startsWith("#")){["h1","h2","h3","h4","h5","h6"].includes(String(e))&&(e=`h${Math.min(+String(e)[1]+3,6)}`);let o=null;if(this.useExtendedMarkdown){if(String(e)==="code"&&!Dn.value&&t?.class?.includes("language")&&Dd(),String(e)==="pre"&&r&&String(r.type)==="code"){const l=this.parentId+"-code-block-"+Ot();return te("p",{class:"rich-text__code-block"},[te(e,{...t,id:l},r),te(wd,{class:"rich-text__code-block-button",contentId:l})])}if(String(e)==="li"&&Array.isArray(r)&&r.length!==0&&r[0].type==="input"&&r[0].props.type==="checkbox"){const[l,,...a]=r,s=a.findIndex(d=>["ul","ol","li","blockquote","pre"].includes(d.type));s!==-1&&(o=a[s],a.splice(s));const u=this.parentId+"-markdown-input-"+Ot(),f={...l.props};delete f.checked;const c=te(il,{...f,modelValue:l.props.checked,id:u,disabled:!this.interactive,"onUpdate:modelValue":()=>{this.$emit("interactTodo",u)}},{default:()=>a});return te(e,t,[c,o])}}if(String(e)==="a"){const l=yi(this.$router,t.href);return l?(delete t.href,delete t.target,te(xi,{...t,to:l},{default:()=>r})):/^(https?:\/\/|tel:|mailto:)/.test(t.href)?(t.href=t.href.trim(),te(Go,t,r)):(delete t.href,delete t.target,te("span",t,r))}return te(e,t,r)}const i=this.arguments[e.slice(1)];return i?i.component?te(typeof i.component=="string"?vn(i.component):i.component,{...t,...i.props,class:"rich-text--component"},{default:()=>r}):te("span",{...t},[i]):te("span",{...t,class:"rich-text--fallback"},[`{${e.slice(1)}}`])}},render(){return this.useMarkdown||this.useExtendedMarkdown?this.renderMarkdown():this.renderPlaintext()}},Pd=Re(Od,[["__scopeId","data-v-80e57a29"]]),zd={name:"BriefcaseOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Md=["aria-hidden","aria-label"],Fd=["fill","width","height"],Rd={key:0};function Nd(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon briefcase-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Rd,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z"},null,-1))],8,Fd))],16,Md)}const jd=Re(zd,[["render",Nd]]),Bd={name:"ClockOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Hd=["aria-hidden","aria-label"],Vd=["fill","width","height"],Ud={key:0};function qd(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon clock-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Ud,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"},null,-1))],8,Vd))],16,Hd)}const $d=Re(Bd,[["render",qd]]),Wd={name:"MapMarkerOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Gd=["aria-hidden","aria-label"],Yd=["fill","width","height"],Qd={key:0};function Zd(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon map-marker-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Qd,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z"},null,-1))],8,Yd))],16,Gd)}const Kd=Re(Wd,[["render",Zd]]),Xd={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Jd=["aria-hidden","aria-label"],eh=["fill","width","height"],th={key:0};function nh(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon pencil-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",th,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"},null,-1))],8,eh))],16,Jd)}const rh=Re(Xd,[["render",nh]]);Pn(jo);const wo=1800*1e3,On=new Map,mn=new Map;function So(e){const t=On.get(e);return t?Date.now()>=t.expiresAt?(On.delete(e),null):t.data:null}function Ft(e,t,n=wo){On.set(e,{data:t,expiresAt:Date.now()+n})}async function ih(e,t,n=wo){const r=So(e);if(r)return r;const i=mn.get(e);if(i)return i;const o=(async()=>{try{const l=await t();return l&&Ft(e,l,n),l}finally{mn.delete(e)}})();return mn.set(e,o),o}const oh=["aria-label"],lh={key:0,class:"profile-hover-card__loading"},ah={class:"profile-hover-card__header"},sh={class:"profile-hover-card__header__container"},uh={key:1,class:"profile-hover-card__header__container__placeholder"},ch={class:"profile-hover-card__header__container__identity"},fh={class:"profile-hover-card__header__container__displayname"},ph=["href"],dh={key:1},hh={key:2,class:"profile-hover-card__header__container__pronoun-separator"},gh={key:3,class:"profile-hover-card__header__container__pronouns"},mh={key:0,class:"profile-hover-card__header__container__status"},vh={class:"profile-hover-card__header__container__status-content"},yh={class:"profile-hover-card__body"},kh={class:"profile-hover-card__content"},xh={class:"profile-hover-card__sidebar"},bh={class:"user-actions"},wh={key:0,class:"user-actions__loading"},Sh=["src"],Ch=["src"],_h={key:0,class:"profile-hover-card__blocks"},Ih={key:0,class:"profile-hover-card__blocks-details"},Eh={key:0,class:"detail"},Th={key:0},Ah={key:1,class:"detail"},Lh={key:2,class:"detail"},Dh={key:0,class:"profile-hover-card__blocks-headline"},Oh={key:1,class:"profile-hover-card__blocks-biography"},Ph=Vt({__name:"NcProfileHoverCard",props:{user:{default:null},displayName:{default:null},profile:{default:null},preloadedUserStatus:{default:null},open:{type:Boolean,default:!1},actions:{default:null},actionsLoading:{type:Boolean,default:!1}},setup(e){const t=e,n=le(!1),r=le(!1),i=le(t.profile),o=le(t.preloadedUserStatus??{}),l=le(!!t.profile),a=le(t.preloadedUserStatus!==null),s=el(),u=W(()=>n.value||!!i.value&&!r.value&&!a.value);t.user&&t.profile&&Ft(t.user,t.profile);const f=W(()=>!!t.user&&kn()?.uid===t.user),c=Kt("/settings/user"),d=W(()=>{if(!l.value)return null;const k=i.value?.userId||t.user;return k?Kt("/u/{userId}",{userId:k}):null}),p=W(()=>i.value?.displayname||t.displayName||i.value?.userId||t.user||""),m=W(()=>d.value?{href:d.value,"aria-label":me("View profile")}:{});function S(k){return k.appId!=="timezone"&&k.appId!=="profile"&&k.id!=="profile"}function b(k){return f.value?k.text:k.id==="talk-call"||v(k)?me("Start call"):k.id==="talk"||k.appId==="spreed"?me("Send message"):k.text}function v(k){if(k.appId!=="spreed")return!1;const G=k.href??(typeof k.to=="string"?k.to:"");return typeof G=="string"&&G.includes("#direct-call")}const I=W(()=>t.actions&&t.actions.length>0?t.actions.filter(S):(i.value?.actions??[]).filter(S).map(k=>({id:k.id,appId:k.appId,text:k.title,href:k.target||void 0,icon:k.icon,target:k.id==="phone"?"_self":"_blank",rel:k.id==="fediverse"?"me":void 0}))),C=W(()=>{const k=V(new Date);return k?me("Local time: {time}",{time:k}):null}),A=W(()=>I.value[0]),M=W(()=>I.value.slice(1)),w=W(()=>{const k=A.value;return k?k.to?{to:k.to}:k.href?{href:k.href,target:k.target??(k.href.startsWith("tel:")?"_self":"_blank"),rel:k.rel}:{}:{}}),j=W(()=>({status:o.value.status??null,icon:o.value.icon??null,message:o.value.message??null}));function V(k){const G=i.value?.timezone;if(G)try{return new Intl.DateTimeFormat(fr(),{timeZone:G,hour:"2-digit",minute:"2-digit"}).format(k)}catch{}if(typeof i.value?.timezoneOffset=="number"){const U=new Date(k.getTime()+i.value.timezoneOffset*1e3);return new Intl.DateTimeFormat(fr(),{timeZone:"UTC",hour:"2-digit",minute:"2-digit"}).format(U)}return null}function B(k){return!!k&&(/^(https?:)?\/\//.test(k)||k.startsWith("/")||k.startsWith("data:"))}function y(k){return k.to?tl:k.onClick&&!k.href?nl:rl}function L(k){return k.to?{to:k.to,closeAfterClick:!0}:k.onClick&&!k.href?{onClick:k.onClick,closeAfterClick:!0}:{href:k.href,target:k.target??(k.href?.startsWith("tel:")?"_self":"_blank"),rel:k.rel,closeAfterClick:!0}}Je(()=>t.profile,k=>{k&&(i.value=k,l.value=!0,t.user&&Ft(t.user,k),r.value=!1)}),Je(()=>t.preloadedUserStatus,k=>{k&&(o.value=k,a.value=!0)}),Je(()=>t.displayName,k=>{k&&i.value&&!l.value&&(i.value={...i.value,displayname:k})}),Je(()=>t.user,()=>{i.value=t.profile,o.value=t.preloadedUserStatus??{},a.value=t.preloadedUserStatus!==null,l.value=!!t.profile,r.value=!1,t.user&&t.profile&&Ft(t.user,t.profile),t.open&&T()}),Je(()=>t.open,k=>{k&&T()}),No(()=>{t.open&&T()});async function D(k){if(t.displayName)return t.displayName;try{const{data:G}=await Ve.post(Kt("/displaynames"),{users:[k]});return G?.users?.[k]||k}catch(G){return ot.debug("Failed to load display name for hovercard",{error:G,userId:k}),k}}async function q(k){return{userId:k,displayname:await D(k),actions:[],isUserAvatarVisible:!0}}async function O(k){a.value||(o.value=await $(k),a.value=!0)}async function T(){if(!t.user||n.value)return;const k=t.user;if(!i.value){const U=So(k);U&&(i.value=U,l.value=!0)}if(i.value&&l.value){if(!a.value){n.value=!0;try{await O(k)}finally{n.value=!1}}return}n.value=!0,r.value=!1;const G=a.value?Promise.resolve(o.value):$(k);try{const U=await ih(k,async()=>{const{data:h}=await Ve.get(nt("/profile/{userId}",{userId:k}));return h.ocs?.data??null});U?(i.value=U,l.value=!0):(i.value=await q(k),l.value=!1)}catch(U){ot.debug("Failed to load profile for hovercard, showing limited info",{error:U,user:k}),i.value=await q(k),l.value=!1}try{o.value=await G,a.value=!0}finally{n.value=!1}}async function $(k){try{if(!Xo()?.user_status?.enabled||!kn())return{};const{data:G}=await Ve.get(nt("/apps/user_status/api/v1/statuses/{userId}",{userId:k}));return G.ocs?.data??{}}catch(G){return ot.debug("Failed to load user status for hovercard",{error:G,userId:k}),{}}}return(k,G)=>(P(),N("div",{class:it(["profile-hover-card",{"profile-hover-card--limited":!u.value&&!!i.value&&!r.value&&!l.value}]),role:"dialog","aria-label":oe(me)("Profile of {user}",{user:p.value})},[u.value?(P(),N("div",lh,[_e(ur,{size:32,name:oe(me)("Loading profile")},null,8,["name"])])):i.value&&!r.value?(P(),N(tt,{key:1},[ne("div",ah,[f.value?(P(),xe(Nt,{key:0,class:"profile-hover-card__header__edit",variant:"tertiary","aria-label":oe(me)("Edit profile"),title:oe(me)("Edit profile"),href:oe(c),target:"_blank"},{icon:we(()=>[_e(rh,{size:20})]),_:1},8,["aria-label","title","href"])):X("",!0),ne("div",sh,[oe(s)?(P(),xe(Pt(d.value?"a":"div"),Me({key:0,class:["profile-hover-card__header__container__avatar",{"profile-hover-card__profile-link":!!d.value}]},m.value),{default:we(()=>[_e(gr,{class:"avatar",user:i.value.userId,displayName:p.value,size:96,disableMenu:"",disableTooltip:"",preloadedUserStatus:j.value,isNoUser:!i.value.isUserAvatarVisible},null,8,["user","displayName","preloadedUserStatus","isNoUser"])]),_:1},16,["class"])):(P(),N("div",uh)),ne("div",ch,[ne("div",fh,[d.value?(P(),N("a",{key:0,class:"profile-hover-card__profile-link",href:d.value},[ne("h2",null,ie(p.value),1)],8,ph)):(P(),N("h2",dh,ie(p.value),1)),i.value.pronouns?(P(),N("span",hh,"·")):X("",!0),i.value.pronouns?(P(),N("span",gh,ie(i.value.pronouns),1)):X("",!0)]),o.value.icon||o.value.message?(P(),N("div",mh,[ne("span",vh,[ne("span",null,ie(o.value.icon)+" "+ie(o.value.message),1)])])):X("",!0)])])]),ne("div",yh,[ne("div",kh,[ne("div",xh,[oe(s)?X("",!0):(P(),xe(Pt(d.value?"a":"div"),Me({key:0,class:{"profile-hover-card__profile-link":!!d.value}},m.value),{default:we(()=>[_e(gr,{class:"avatar",user:i.value.userId,displayName:p.value,size:135,disableMenu:"",disableTooltip:"",preloadedUserStatus:j.value,isNoUser:!i.value.isUserAvatarVisible},null,8,["user","displayName","preloadedUserStatus","isNoUser"])]),_:1},16,["class"])),ne("div",bh,[e.actionsLoading&&I.value.length===0?(P(),N("div",wh,[_e(ur,{size:20,name:oe(me)("Loading actions")},null,8,["name"])])):(P(),N(tt,{key:1},[A.value?(P(),xe(Nt,Me({key:0,variant:"primary",class:"user-actions__primary"},w.value,{onClick:A.value.onClick}),cr({default:we(()=>[Be(" "+ie(b(A.value)),1)]),_:2},[A.value.iconSvg||A.value.icon?{name:"icon",fn:we(()=>[A.value.iconSvg?(P(),xe(oe(yn),{key:0,svg:A.value.iconSvg},null,8,["svg"])):B(A.value.icon)?(P(),N("img",{key:1,src:A.value.icon,alt:"",class:"user-actions__primary__icon"},null,8,Sh)):(P(),N("span",{key:2,"aria-hidden":"true",class:it(["user-actions__primary__icon-class",A.value.icon])},null,2))]),key:"0"}:void 0]),1040,["onClick"])):X("",!0),M.value.length>0?(P(),xe(Jo,{key:1,class:"user-actions__other",inline:oe(s)?5:4},{default:we(()=>[(P(!0),N(tt,null,vi(M.value,(U,h)=>(P(),xe(Pt(y(U)),Me({key:U.id||U.href||h},{ref_for:!0},L(U)),cr({default:we(()=>[Be(" "+ie(b(U)),1)]),_:2},[U.iconSvg||U.icon?{name:"icon",fn:we(()=>[U.iconSvg?(P(),xe(oe(yn),{key:0,svg:U.iconSvg},null,8,["svg"])):B(U.icon)?(P(),N("img",{key:1,src:U.icon,alt:"",class:"user-actions__other__icon"},null,8,Ch)):(P(),N("span",{key:2,"aria-hidden":"true",class:it(["user-actions__other__icon-class",U.icon])},null,2))]),key:"0"}:void 0]),1040))),128))]),_:1},8,["inline"])):X("",!0)],64))])]),l.value?(P(),N("div",_h,[i.value.organisation||i.value.role||i.value.address||C.value?(P(),N("div",Ih,[i.value.organisation||i.value.role?(P(),N("div",Eh,[ne("p",null,[_e(jd,{class:"detail-icon",size:16,title:""}),Be(" "+ie(i.value.organisation)+" ",1),i.value.organisation&&i.value.role?(P(),N("span",Th,"•")):X("",!0),Be(" "+ie(i.value.role),1)])])):X("",!0),i.value.address?(P(),N("div",Ah,[ne("p",null,[_e(Kd,{class:"detail-icon",size:16,title:""}),Be(" "+ie(i.value.address),1)])])):X("",!0),C.value?(P(),N("div",Lh,[ne("p",null,[_e($d,{class:"detail-icon",size:16,title:""}),Be(" "+ie(C.value),1)])])):X("",!0)])):X("",!0),i.value.headline||i.value.biography?(P(),N(tt,{key:1},[i.value.headline?(P(),N("h3",Dh,ie(i.value.headline),1)):X("",!0),i.value.biography?(P(),N("div",Oh,[_e(Pd,{text:i.value.biography,useExtendedMarkdown:""},null,8,["text"])])):X("",!0)],64)):X("",!0)])):X("",!0)])])],64)):X("",!0)],10,oh))}}),zh=Re(Ph,[["__scopeId","data-v-592f6ec3"]]),Nh=Object.freeze(Object.defineProperty({__proto__:null,default:zh},Symbol.toStringTag,{value:"Module"}));export{Nh as N,Ii as c,bt as v};
-//# sourceMappingURL=NcProfileHoverCard-DBdEYRaM.chunk.mjs.map
+`))}function s(p,m,S,b){const v=S.enter("tableCell"),I=S.enter("phrasing"),C=S.containerPhrasing(p,{...b,before:o,after:o});return I(),v(),C}function u(p,m){return Hf(p,{align:m,alignDelimiters:r,padding:n,stringLength:i})}function f(p,m,S){const b=p.children;let v=-1;const I=[],C=m.enter("table");for(;++vi?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)l=Array.from(r),l.unshift(t,n),e.splice(...l);else for(n&&e.splice(t,n);o0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}function Qp(e,t,n){const r=[];let i=-1;for(;++i999||c===93&&!l||c===null||c===91||pe(c))return n(c);if(c===93){e.exit("chunkString");const d=e.exit("gfmFootnoteCallString");return i.includes(It(r.sliceSerialize(d)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(c)}return pe(c)||(l=!0),o++,e.consume(c),c===92?f:u}function f(c){return c===91||c===92||c===93?(e.consume(c),o++,u):u(c)}}function rd(e,t,n){const r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o,l=0,a;return s;function s(m){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(m),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(m){return m===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(m),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",f):n(m)}function f(m){if(l>999||m===93&&!a||m===null||m===91||pe(m))return n(m);if(m===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return o=It(r.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(m),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),d}return pe(m)||(a=!0),l++,e.consume(m),m===92?c:f}function c(m){return m===91||m===92||m===93?(e.consume(m),l++,f):f(m)}function d(m){return m===58?(e.enter("definitionMarker"),e.consume(m),e.exit("definitionMarker"),i.includes(o)||i.push(o),ze(e,p,"gfmFootnoteDefinitionWhitespace")):n(m)}function p(m){return t(m)}}function id(e,t,n){return e.check(Zp,t,e.attempt(Xp,t,n))}function od(e){e.exit("gfmFootnoteDefinition")}function ld(e,t,n){const r=this;return ze(e,i,"gfmFootnoteDefinitionIndent",5);function i(o){const l=r.events[r.events.length-1];return l&&l[1].type==="gfmFootnoteDefinitionIndent"&&l[2].sliceSerialize(l[1],!0).length===4?t(o):n(o)}}function ad(e){let t=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:r};return t==null&&(t=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(o,l){let a=-1;for(;++a1?a(p):(o.consume(p),f++,d);if(f<2&&!t)return a(p);const S=o.exit("strikethroughSequenceTemporary"),b=Bt(p);return S._open=!b||b===2&&!!m,S._close=!m||m===2&&!!b,l(p)}}}class sd{constructor(){this.map=[]}add(t,n,r){ud(this,t,n,r)}consume(t){if(this.map.sort(function(o,l){return o[0]-l[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push(t.slice()),t.length=0;let i=r.pop();for(;i;){for(const o of i)t.push(o);i=r.pop()}this.map.length=0}}function ud(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i-1;){const O=r.events[L][1].type;if(O==="lineEnding"||O==="linePrefix")L--;else break}const D=L>-1?r.events[L][1].type:null,$=D==="tableHead"||D==="tableRow"?w:s;return $===w&&r.parser.lazy[r.now().line]?n(y):$(y)}function s(y){return e.enter("tableHead"),e.enter("tableRow"),u(y)}function u(y){return y===124||(l=!0,o+=1),f(y)}function f(y){return y===null?n(y):rt(y)?o>1?(o=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),p):n(y):Pe(y)?ze(e,f,"whitespace")(y):(o+=1,l&&(l=!1,i+=1),y===124?(e.enter("tableCellDivider"),e.consume(y),e.exit("tableCellDivider"),l=!0,f):(e.enter("data"),c(y)))}function c(y){return y===null||y===124||pe(y)?(e.exit("data"),f(y)):(e.consume(y),y===92?d:c)}function d(y){return y===92||y===124?(e.consume(y),c):c(y)}function p(y){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(y):(e.enter("tableDelimiterRow"),l=!1,Pe(y)?ze(e,m,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(y):m(y))}function m(y){return y===45||y===58?b(y):y===124?(l=!0,e.enter("tableCellDivider"),e.consume(y),e.exit("tableCellDivider"),S):M(y)}function S(y){return Pe(y)?ze(e,b,"whitespace")(y):b(y)}function b(y){return y===58?(o+=1,l=!0,e.enter("tableDelimiterMarker"),e.consume(y),e.exit("tableDelimiterMarker"),v):y===45?(o+=1,v(y)):y===null||rt(y)?A(y):M(y)}function v(y){return y===45?(e.enter("tableDelimiterFiller"),I(y)):M(y)}function I(y){return y===45?(e.consume(y),I):y===58?(l=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(y),e.exit("tableDelimiterMarker"),C):(e.exit("tableDelimiterFiller"),C(y))}function C(y){return Pe(y)?ze(e,A,"whitespace")(y):A(y)}function A(y){return y===124?m(y):y===null||rt(y)?!l||i!==o?M(y):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(y)):M(y)}function M(y){return n(y)}function w(y){return e.enter("tableRow"),j(y)}function j(y){return y===124?(e.enter("tableCellDivider"),e.consume(y),e.exit("tableCellDivider"),j):y===null||rt(y)?(e.exit("tableRow"),t(y)):Pe(y)?ze(e,j,"whitespace")(y):(e.enter("data"),V(y))}function V(y){return y===null||y===124||pe(y)?(e.exit("data"),j(y)):(e.consume(y),y===92?B:V)}function B(y){return y===92||y===124?(e.consume(y),V):V(y)}}function dd(e,t){let n=-1,r=!0,i=0,o=[0,0,0,0],l=[0,0,0,0],a=!1,s=0,u,f,c;const d=new sd;for(;++nn[2]+1){const m=n[2]+1,S=n[3]-n[2]-1;e.add(m,S,[])}}e.add(n[3]+1,0,[["exit",c,t]])}return i!==void 0&&(o.end=Object.assign({},et(t.events,i)),e.add(i,0,[["exit",o,t]]),o=void 0),o}function gi(e,t,n,r,i){const o=[],l=et(t.events,n);i&&(i.end=Object.assign({},l),o.push(["exit",i,t])),r.end=Object.assign({},l),o.push(["exit",r,t]),e.add(n+1,0,o)}function et(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const hd={name:"tasklistCheck",tokenize:md};function gd(){return{text:{91:hd}}}function md(e,t,n){const r=this;return i;function i(s){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),o)}function o(s){return pe(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),l):s===88||s===120?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),l):n(s)}function l(s){return s===93?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),a):n(s)}function a(s){return rt(s)?t(s):Pe(s)?e.check({tokenize:vd},t,n)(s):n(s)}}function vd(e,t,n){return ze(e,r,"whitespace");function r(i){return i===null?n(i):t(i)}}function yd(e){return Mp([Bp(),Jp(),ad(e),fd(),gd()])}const kd={};function xd(e){const t=this,n=e||kd,r=t.data(),i=r.micromarkExtensions||(r.micromarkExtensions=[]),o=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),l=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);i.push(yd(n)),o.push(Pp()),l.push(zp(n))}const bd=Vt({__name:"NcRichTextCopyButton",props:{contentId:{}},setup(e){const{copy:t,icon:n,altText:r}=Qc(()=>document.getElementById(e.contentId).textContent);return(i,o)=>(P(),xe(Nt,{variant:"tertiary",size:"small","aria-label":oe(r),title:oe(r),onClick:oe(t)},{icon:we(()=>[_e(yn,{path:oe(n),inline:""},null,8,["path"])]),_:1},8,["aria-label","title","onClick"]))}});function wd(e){return e.type==="text"}const Sd=function(e){qe(e,wd,(t,n)=>{const r=n.at(-1),i=r.children.indexOf(t),o=t.value.split(/(\{[a-z\-_.0-9]+\})/ig).map(l=>{const a=l.match(/^\{([a-z\-_.0-9]+)\}$/i);if(!a)return hr("text",l);const[,s]=a;return hr("element",{tagName:`#${s}`,children:[]})});r.children.splice(i,1,...o)})},Cd=()=>Sd;function _d(e){return["code","inlineCode"].includes(e.type)}const Id=function(){return function(e){qe(e,_d,(t,n)=>{const r=n.at(-1),i=r.children.indexOf(t);return r.children.splice(i,1,{...t,value:""}),[ki,i+1]})}};function Ed(e){return["text","code","inlineCode"].includes(e.type)}const Td=function(){return function(e){qe(e,Ed,(t,n)=>{const r=n.at(-1),i=r.children.indexOf(t);return r.children.splice(i,1,{...t,value:t.value.replace(/</gmi,"<").replace(/>/gmi,">")}),[ki,i+1]})}},Ad=["http","https","mailto","tel"],Dn=le(null);async function Ld(){const e=await No(()=>import("./index-DHgZaWhM.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url);Dn.value=e.default}const Dd={name:"NcRichText",components:{NcReferenceList:fn},props:{text:{type:String,default:""},arguments:{type:Object,default:()=>({})},referenceLimit:{type:Number,default:0},referenceInteractive:{type:Boolean,default:!0},referenceInteractiveOptIn:{type:Boolean,default:!1},references:{type:Array,default:null},useMarkdown:{type:Boolean,default:!1},useExtendedMarkdown:{type:Boolean,default:!1},interactive:{type:Boolean,default:!1},autolink:{type:Boolean,default:!0}},emits:["interactTodo"],data(){return{parentId:Ot()}},methods:{renderPlaintext(){const e=this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(t=>{const n=t.match(/^\{([a-z\-_.0-9]+)\}$/i);if(!n)return this.prepareTextNode(t);const r=n[1],i=this.arguments[r];if(typeof i=="object"){const{component:o,props:l}=i;return te(typeof o=="string"?vn(o):o,{...l,class:"rich-text--component"})}return i?te("span",{class:"rich-text--fallback"},i):t});return te("div",{class:"rich-text--wrapper"},[te("div",{},e.flat()),this.referenceLimit>0?te("div",{class:"rich-text--reference-widget"},[te(fn,{text:this.text,referenceData:this.references,interactive:this.referenceInteractive,interactiveOptIn:this.referenceInteractiveOptIn})]):null])},renderMarkdown(){const e=ni().use(Gr).use(qo,{autolink:this.autolink,useMarkdown:this.useMarkdown,useExtendedMarkdown:this.useExtendedMarkdown}).use(Td).use(this.useExtendedMarkdown?xd:void 0).use(_a).use(fc,{except:Ad}).use(uc,{handlers:{component(t,n){return t(n,n.component,{value:n.value})}}}).use(this.useExtendedMarkdown?Dn.value:void 0).use(Cd).use(El,{target:"_blank",rel:["noopener noreferrer"]}).use(va,{Fragment:tt,jsx:this.createElement,jsxs:this.createElement,elementAttributeNameCase:"html",prefix:!1}).processSync(this.text.replace(/<[^>]+>/g,t=>t.replace(/")).result;return te("div",{class:"rich-text--wrapper rich-text--wrapper-markdown"},[e,this.referenceLimit>0?te("div",{class:"rich-text--reference-widget"},[te(fn,{text:this.prepareReferenceSource(this.text),referenceData:this.references,interactive:this.referenceInteractive,interactiveOptIn:this.referenceInteractiveOptIn})]):null])},prepareTextNode(e){return this.autolink&&(e=Wo(e)),Array.isArray(e)?e.map(t=>{if(typeof t=="string")return t;const{component:n,props:r}=t;return te(n,{...r,class:"rich-text--component"})}):e},prepareReferenceSource(e){if(!this.useMarkdown&&!this.useExtendedMarkdown)return e;const t=ni();return t.compiler=n=>Ut(n),t.use(Gr).use(Id).processSync(e.replace(/\s/g," ")).value},createElement(e,t,n){n&&(t.key=n);const r=t.children??[];if(delete t.children,!String(e).startsWith("#")){["h1","h2","h3","h4","h5","h6"].includes(String(e))&&(e=`h${Math.min(+String(e)[1]+3,6)}`);let o=null;if(this.useExtendedMarkdown){if(String(e)==="code"&&!Dn.value&&t?.class?.includes("language")&&Ld(),String(e)==="pre"&&r&&String(r.type)==="code"){const l=this.parentId+"-code-block-"+Ot();return te("p",{class:"rich-text__code-block"},[te(e,{...t,id:l},r),te(bd,{class:"rich-text__code-block-button",contentId:l})])}if(String(e)==="li"&&Array.isArray(r)&&r.length!==0&&r[0].type==="input"&&r[0].props.type==="checkbox"){const[l,,...a]=r,s=a.findIndex(d=>["ul","ol","li","blockquote","pre"].includes(d.type));s!==-1&&(o=a[s],a.splice(s));const u=this.parentId+"-markdown-input-"+Ot(),f={...l.props};delete f.checked;const c=te(tl,{...f,modelValue:l.props.checked,id:u,disabled:!this.interactive,"onUpdate:modelValue":()=>{this.$emit("interactTodo",u)}},{default:()=>a});return te(e,t,[c,o])}}if(String(e)==="a"){const l=yi(this.$router,t.href);return l?(delete t.href,delete t.target,te(xi,{...t,to:l},{default:()=>r})):/^(https?:\/\/|tel:|mailto:)/.test(t.href)?(t.href=t.href.trim(),te($o,t,r)):(delete t.href,delete t.target,te("span",t,r))}return te(e,t,r)}const i=this.arguments[e.slice(1)];return i?i.component?te(typeof i.component=="string"?vn(i.component):i.component,{...t,...i.props,class:"rich-text--component"},{default:()=>r}):te("span",{...t},[i]):te("span",{...t,class:"rich-text--fallback"},[`{${e.slice(1)}}`])}},render(){return this.useMarkdown||this.useExtendedMarkdown?this.renderMarkdown():this.renderPlaintext()}},Od=Re(Dd,[["__scopeId","data-v-80e57a29"]]),Pd={name:"BriefcaseOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},zd=["aria-hidden","aria-label"],Md=["fill","width","height"],Fd={key:0};function Rd(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon briefcase-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Fd,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z"},null,-1))],8,Md))],16,zd)}const Nd=Re(Pd,[["render",Rd]]),jd={name:"ClockOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bd=["aria-hidden","aria-label"],Hd=["fill","width","height"],Vd={key:0};function Ud(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon clock-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Vd,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"},null,-1))],8,Hd))],16,Bd)}const $d=Re(jd,[["render",Ud]]),Wd={name:"MapMarkerOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qd=["aria-hidden","aria-label"],Gd=["fill","width","height"],Yd={key:0};function Qd(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon map-marker-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",Yd,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z"},null,-1))],8,Gd))],16,qd)}const Zd=Re(Wd,[["render",Qd]]),Kd={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Xd=["aria-hidden","aria-label"],Jd=["fill","width","height"],eh={key:0};function th(e,t,n,r,i,o){return P(),N("span",Me(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon pencil-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(P(),N("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[n.title?(P(),N("title",eh,ie(n.title),1)):X("",!0),t[1]||(t[1]=ne("path",{d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"},null,-1))],8,Jd))],16,Xd)}const nh=Re(Kd,[["render",th]]);Pn(Ho);const wo=1800*1e3,On=new Map,mn=new Map;function So(e){const t=On.get(e);return t?Date.now()>=t.expiresAt?(On.delete(e),null):t.data:null}function Ft(e,t,n=wo){On.set(e,{data:t,expiresAt:Date.now()+n})}async function rh(e,t,n=wo){const r=So(e);if(r)return r;const i=mn.get(e);if(i)return i;const o=(async()=>{try{const l=await t();return l&&Ft(e,l,n),l}finally{mn.delete(e)}})();return mn.set(e,o),o}const ih=["aria-label"],oh={key:0,class:"profile-hover-card__loading"},lh={class:"profile-hover-card__header"},ah={class:"profile-hover-card__header__container"},sh={key:1,class:"profile-hover-card__header__container__placeholder"},uh={class:"profile-hover-card__header__container__identity"},ch={class:"profile-hover-card__header__container__displayname"},fh=["href"],ph={key:1},dh={key:2,class:"profile-hover-card__header__container__pronoun-separator"},hh={key:3,class:"profile-hover-card__header__container__pronouns"},gh={key:0,class:"profile-hover-card__header__container__status"},mh={class:"profile-hover-card__header__container__status-content"},vh={class:"profile-hover-card__body"},yh={class:"profile-hover-card__content"},kh={class:"profile-hover-card__sidebar"},xh={class:"user-actions"},bh={key:0,class:"user-actions__loading"},wh=["src"],Sh=["src"],Ch={key:0,class:"profile-hover-card__blocks"},_h={key:0,class:"profile-hover-card__blocks-details"},Ih={key:0,class:"detail"},Eh={key:0},Th={key:1,class:"detail"},Ah={key:2,class:"detail"},Lh={key:0,class:"profile-hover-card__blocks-headline"},Dh={key:1,class:"profile-hover-card__blocks-biography"},Oh=Vt({__name:"NcProfileHoverCard",props:{user:{default:null},displayName:{default:null},profile:{default:null},preloadedUserStatus:{default:null},open:{type:Boolean,default:!1},actions:{default:null},actionsLoading:{type:Boolean,default:!1}},setup(e){const t=e,n=le(!1),r=le(!1),i=le(t.profile),o=le(t.preloadedUserStatus??{}),l=le(!!t.profile),a=le(t.preloadedUserStatus!==null),s=rl(),u=q(()=>n.value||!!i.value&&!r.value&&!a.value);t.user&&t.profile&&Ft(t.user,t.profile);const f=q(()=>!!t.user&&kn()?.uid===t.user),c=Kt("/settings/user"),d=q(()=>{if(!l.value)return null;const k=i.value?.userId||t.user;return k?Kt("/u/{userId}",{userId:k}):null}),p=q(()=>i.value?.displayname||t.displayName||i.value?.userId||t.user||""),m=q(()=>d.value?{href:d.value,"aria-label":me("View profile")}:{});function S(k){return k.appId!=="timezone"&&k.appId!=="profile"&&k.id!=="profile"}function b(k){return f.value?k.text:k.id==="talk-call"||v(k)?me("Start call"):k.id==="talk"||k.appId==="spreed"?me("Send message"):k.text}function v(k){if(k.appId!=="spreed")return!1;const G=k.href??(typeof k.to=="string"?k.to:"");return typeof G=="string"&&G.includes("#direct-call")}const I=q(()=>t.actions&&t.actions.length>0?t.actions.filter(S):(i.value?.actions??[]).filter(S).map(k=>({id:k.id,appId:k.appId,text:k.title,href:k.target||void 0,icon:k.icon,target:k.id==="phone"?"_self":"_blank",rel:k.id==="fediverse"?"me":void 0}))),C=q(()=>{const k=V(new Date);return k?me("Local time: {time}",{time:k}):null}),A=q(()=>I.value[0]),M=q(()=>I.value.slice(1)),w=q(()=>{const k=A.value;return k?k.to?{to:k.to}:k.href?{href:k.href,target:k.target??(k.href.startsWith("tel:")?"_self":"_blank"),rel:k.rel}:{}:{}}),j=q(()=>({status:o.value.status??null,icon:o.value.icon??null,message:o.value.message??null}));function V(k){const G=i.value?.timezone;if(G)try{return new Intl.DateTimeFormat(pr(),{timeZone:G,hour:"2-digit",minute:"2-digit"}).format(k)}catch{}if(typeof i.value?.timezoneOffset=="number"){const U=new Date(k.getTime()+i.value.timezoneOffset*1e3);return new Intl.DateTimeFormat(pr(),{timeZone:"UTC",hour:"2-digit",minute:"2-digit"}).format(U)}return null}function B(k){return!!k&&(/^(https?:)?\/\//.test(k)||k.startsWith("/")||k.startsWith("data:"))}function y(k){return k.to?Yo:k.onClick&&!k.href?Vo:Qo}function L(k){return k.to?{to:k.to,closeAfterClick:!0}:k.onClick&&!k.href?{onClick:k.onClick,closeAfterClick:!0}:{href:k.href,target:k.target??(k.href?.startsWith("tel:")?"_self":"_blank"),rel:k.rel,closeAfterClick:!0}}Je(()=>t.profile,k=>{k&&(i.value=k,l.value=!0,t.user&&Ft(t.user,k),r.value=!1)}),Je(()=>t.preloadedUserStatus,k=>{k&&(o.value=k,a.value=!0)}),Je(()=>t.displayName,k=>{k&&i.value&&!l.value&&(i.value={...i.value,displayname:k})}),Je(()=>t.user,()=>{i.value=t.profile,o.value=t.preloadedUserStatus??{},a.value=t.preloadedUserStatus!==null,l.value=!!t.profile,r.value=!1,t.user&&t.profile&&Ft(t.user,t.profile),t.open&&T()}),Je(()=>t.open,k=>{k&&T()}),jo(()=>{t.open&&T()});async function D(k){if(t.displayName)return t.displayName;try{const{data:G}=await Ve.post(Kt("/displaynames"),{users:[k]});return G?.users?.[k]||k}catch(G){return ot.debug("Failed to load display name for hovercard",{error:G,userId:k}),k}}async function $(k){return{userId:k,displayname:await D(k),actions:[],isUserAvatarVisible:!0}}async function O(k){a.value||(o.value=await W(k),a.value=!0)}async function T(){if(!t.user||n.value)return;const k=t.user;if(!i.value){const U=So(k);U&&(i.value=U,l.value=!0)}if(i.value&&l.value){if(!a.value){n.value=!0;try{await O(k)}finally{n.value=!1}}return}n.value=!0,r.value=!1;const G=a.value?Promise.resolve(o.value):W(k);try{const U=await rh(k,async()=>{const{data:h}=await Ve.get(nt("/profile/{userId}",{userId:k}));return h.ocs?.data??null});U?(i.value=U,l.value=!0):(i.value=await $(k),l.value=!1)}catch(U){ot.debug("Failed to load profile for hovercard, showing limited info",{error:U,user:k}),i.value=await $(k),l.value=!1}try{o.value=await G,a.value=!0}finally{n.value=!1}}async function W(k){try{if(!Bo()?.user_status?.enabled||!kn())return{};const{data:G}=await Ve.get(nt("/apps/user_status/api/v1/statuses/{userId}",{userId:k}));return G.ocs?.data??{}}catch(G){return ot.debug("Failed to load user status for hovercard",{error:G,userId:k}),{}}}return(k,G)=>(P(),N("div",{class:it(["profile-hover-card",{"profile-hover-card--limited":!u.value&&!!i.value&&!r.value&&!l.value}]),role:"dialog","aria-label":oe(me)("Profile of {user}",{user:p.value})},[u.value?(P(),N("div",oh,[_e(cr,{size:32,name:oe(me)("Loading profile")},null,8,["name"])])):i.value&&!r.value?(P(),N(tt,{key:1},[ne("div",lh,[f.value?(P(),xe(Nt,{key:0,class:"profile-hover-card__header__edit",variant:"tertiary","aria-label":oe(me)("Edit profile"),title:oe(me)("Edit profile"),href:oe(c),target:"_blank"},{icon:we(()=>[_e(nh,{size:20})]),_:1},8,["aria-label","title","href"])):X("",!0),ne("div",ah,[oe(s)?(P(),xe(Pt(d.value?"a":"div"),Me({key:0,class:["profile-hover-card__header__container__avatar",{"profile-hover-card__profile-link":!!d.value}]},m.value),{default:we(()=>[_e(gr,{class:"avatar",user:i.value.userId,displayName:p.value,size:96,disableMenu:"",disableTooltip:"",preloadedUserStatus:j.value,isNoUser:!i.value.isUserAvatarVisible},null,8,["user","displayName","preloadedUserStatus","isNoUser"])]),_:1},16,["class"])):(P(),N("div",sh)),ne("div",uh,[ne("div",ch,[d.value?(P(),N("a",{key:0,class:"profile-hover-card__profile-link",href:d.value},[ne("h2",null,ie(p.value),1)],8,fh)):(P(),N("h2",ph,ie(p.value),1)),i.value.pronouns?(P(),N("span",dh,"·")):X("",!0),i.value.pronouns?(P(),N("span",hh,ie(i.value.pronouns),1)):X("",!0)]),o.value.icon||o.value.message?(P(),N("div",gh,[ne("span",mh,[ne("span",null,ie(o.value.icon)+" "+ie(o.value.message),1)])])):X("",!0)])])]),ne("div",vh,[ne("div",yh,[ne("div",kh,[oe(s)?X("",!0):(P(),xe(Pt(d.value?"a":"div"),Me({key:0,class:{"profile-hover-card__profile-link":!!d.value}},m.value),{default:we(()=>[_e(gr,{class:"avatar",user:i.value.userId,displayName:p.value,size:135,disableMenu:"",disableTooltip:"",preloadedUserStatus:j.value,isNoUser:!i.value.isUserAvatarVisible},null,8,["user","displayName","preloadedUserStatus","isNoUser"])]),_:1},16,["class"])),ne("div",xh,[e.actionsLoading&&I.value.length===0?(P(),N("div",bh,[_e(cr,{size:20,name:oe(me)("Loading actions")},null,8,["name"])])):(P(),N(tt,{key:1},[A.value?(P(),xe(Nt,Me({key:0,variant:"primary",class:"user-actions__primary"},w.value,{onClick:A.value.onClick}),fr({default:we(()=>[Be(" "+ie(b(A.value)),1)]),_:2},[A.value.iconSvg||A.value.icon?{name:"icon",fn:we(()=>[A.value.iconSvg?(P(),xe(oe(yn),{key:0,svg:A.value.iconSvg},null,8,["svg"])):B(A.value.icon)?(P(),N("img",{key:1,src:A.value.icon,alt:"",class:"user-actions__primary__icon"},null,8,wh)):(P(),N("span",{key:2,"aria-hidden":"true",class:it(["user-actions__primary__icon-class",A.value.icon])},null,2))]),key:"0"}:void 0]),1040,["onClick"])):X("",!0),M.value.length>0?(P(),xe(el,{key:1,class:"user-actions__other",inline:oe(s)?5:4},{default:we(()=>[(P(!0),N(tt,null,vi(M.value,(U,h)=>(P(),xe(Pt(y(U)),Me({key:U.id||U.href||h},{ref_for:!0},L(U)),fr({default:we(()=>[Be(" "+ie(b(U)),1)]),_:2},[U.iconSvg||U.icon?{name:"icon",fn:we(()=>[U.iconSvg?(P(),xe(oe(yn),{key:0,svg:U.iconSvg},null,8,["svg"])):B(U.icon)?(P(),N("img",{key:1,src:U.icon,alt:"",class:"user-actions__other__icon"},null,8,Sh)):(P(),N("span",{key:2,"aria-hidden":"true",class:it(["user-actions__other__icon-class",U.icon])},null,2))]),key:"0"}:void 0]),1040))),128))]),_:1},8,["inline"])):X("",!0)],64))])]),l.value?(P(),N("div",Ch,[i.value.organisation||i.value.role||i.value.address||C.value?(P(),N("div",_h,[i.value.organisation||i.value.role?(P(),N("div",Ih,[ne("p",null,[_e(Nd,{class:"detail-icon",size:16,title:""}),Be(" "+ie(i.value.organisation)+" ",1),i.value.organisation&&i.value.role?(P(),N("span",Eh,"•")):X("",!0),Be(" "+ie(i.value.role),1)])])):X("",!0),i.value.address?(P(),N("div",Th,[ne("p",null,[_e(Zd,{class:"detail-icon",size:16,title:""}),Be(" "+ie(i.value.address),1)])])):X("",!0),C.value?(P(),N("div",Ah,[ne("p",null,[_e($d,{class:"detail-icon",size:16,title:""}),Be(" "+ie(C.value),1)])])):X("",!0)])):X("",!0),i.value.headline||i.value.biography?(P(),N(tt,{key:1},[i.value.headline?(P(),N("h3",Lh,ie(i.value.headline),1)):X("",!0),i.value.biography?(P(),N("div",Dh,[_e(Od,{text:i.value.biography,useExtendedMarkdown:""},null,8,["text"])])):X("",!0)],64)):X("",!0)])):X("",!0)])])],64)):X("",!0)],10,ih))}}),Ph=Re(Oh,[["__scopeId","data-v-592f6ec3"]]),Bh=Object.freeze(Object.defineProperty({__proto__:null,default:Ph},Symbol.toStringTag,{value:"Module"}));export{Bh as N,Ii as c,bt as v};
+//# sourceMappingURL=NcProfileHoverCard-CcFSHEIn.chunk.mjs.map
diff --git a/js/NcProfileHoverCard-DBdEYRaM.chunk.mjs.license b/js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.license
similarity index 97%
rename from js/NcProfileHoverCard-DBdEYRaM.chunk.mjs.license
rename to js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.license
index e70a7eba..d2641b72 100644
--- a/js/NcProfileHoverCard-DBdEYRaM.chunk.mjs.license
+++ b/js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.license
@@ -1,5 +1,4 @@
SPDX-License-Identifier: AGPL-3.0-or-later
-SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: ISC
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Andrea Giammarchi
@@ -15,9 +14,6 @@ SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: rhysd
This file is generated from multiple sources. Included packages:
-- @nextcloud/sharing
- - version: 0.4.0
- - license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.14.0
- license: AGPL-3.0-or-later
diff --git a/js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.map b/js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.map
new file mode 100644
index 00000000..333b40ba
--- /dev/null
+++ b/js/NcProfileHoverCard-CcFSHEIn.chunk.mjs.map
@@ -0,0 +1 @@
+{"version":3,"mappings":"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KAAWL,EACX,SAAUA,EACV,UAAUK,CACV,QAAS,SACT,MAAS,QACT,KACA,WACA,YACA,SAAU,SACV,MAAY,KACZ,MAAMD,CACN,QAASA,IACT,WACA,YAAY,SACZ,SACA,eAAiBH,IACjB,QAAUD,QACV,OAAcK,KACd,SACA,eAAa,SACP,SACN,KAAU,GACV,SAAU,MACV,OAASL,OACT,CAAOA,QACF,MACL,KAAS,KACT,WACA,YACA,UAAWC,QACX,MAAS,SACT,UAAc,CACd,eAAe,OACf,IAAM,GACN,WAAY,QACZ,SAAa,KACb,aAAY,SACZ,YACA,gBACA,OAASI,KACT,SACA,SACA,MACA,MAAM,OACN,KAAU,WACV,EAASA,KACT,OAAWA,OACP,SACJ,MAAY,MACZ,mBACA,KACA,WAAW,GACX,UAAW,QACP,SACJ,EAAOL,IACP,MAAQ,UACR,KACA,WACA,WACA,cACA,OACA,MAAO,OACP,KAAM,SACN,SACA,MAAM,KACN,MAAS,UACHA,EACN,KAAKI,CACL,aAAU,CACV,QAAK,CACL,eACA,KAAO,GACP,QAAQ,OACR,CAAK,KACL,iBACA,MACA,QACA,KAAM,WACC,OACP,OAAUJ,OACV,SACA,OAAS,KACT,eAAc,GACd,WAAY,OACZ,eAAe,OACf,gBACA,aAAgB,QAChB,eAAgB,SACR,KACR,WAAU,GACV,UAAW,QACX,eAAkB,SAClB,KAAU,WACV,CAAS,MACT,OAAS,OACT,eAAe,SACf,UAAe,EACf,qBAAmB,EACnB,OAAQ,SACR,eACA,MAAO,KACP,WAAY,GACZ,SAAQ,SACR,SACA,eAAa,GACb,gBACA,WAAa,OACb,gBACA,aAAa,KACb,SACA,sBACA,gBACA,OAAS,KACT,SAAS,SACT,MAAS,OACT,MAAY,UACZ,QAAc,KACd,QAAS,SACT,MAAW,KACX,aAAW,KACX,WAAY,EACZ,SAAS,OACT,cAAkB,MAClB,OAAQ,KACR,kBACA,gBAAkB,KAClB,UAAW,OACX,cAAa,CACb,UAAW,KACX,sBACA,WAAa,OACb,gBACA,aAAc,KACd,kBACA,cACA,gBAAa,CACb,WAAW,SACX,SAAW,CACX,UAAU,KACV,WAAY,OACZ,cACA,SAAS,MACT,QAAS,KACT,WACA,QAAW,KACX,YAAY,QACZ,OAAY,MACZ,cAAc,SACd,gBAAoB,EACpB,SAAS,OACT,MAAU,QACV,SAAU,EACV,eAAa,EACb,8BAA2B,CAC3B,SAAU,KACV,UAAW,QACX,WACA,aAAc,QACd,SAAW,MACX,SAAW,OACX,KAAU,WACV,OAAW,IACX,cAAc,OACd,IAAU,MACV,qBAAsB,SACtB,MAAU,MACV,gBAAgB,CAChB,UAAW,OACX,OAAS,QACT,CAAMA,QACN,OACA,MAAS,OACT,KACA,kBACA,cACA,MAAS,UACT,WAAe,GACf,0BACA,MAAQ,MACR,OAAS,KACT,aACA,cAAgB,OAChB,CAAKK,IACL,SACA,SAAUL,EACV,KAAMI,MACN,KAASA,CACT,UACA,OAAO,IACP,OAAQJ,OACR,OACA,WACA,qBACA,+BAAiCA,SACjC,kBAA0BA,OAC1B,cAAgB,CAChB,wBAAwBA,CACxB,MAAO,KACP,QACA,SAAO,CACP,KAAM,OACN,KACA,WAAYC,OACP,KACL,OAAQ,MACR,OAAS,KACT,OAAQ,KACR,OAAOG,CACP,KAAM,KACN,MAAO,OACP,SACA,OAAQ,QACR,KAAO,GACP,UAAW,KACX,KAAM,MACN,cAAeJ,CACf,QAAQ,MACR,YACA,CAAOI,KACP,IAAM,GACN,mBAAoB,QAIpB,WACA,MAAO,EACP,UACA,SAAM,CACN,cAAY,SACZ,CAAS,KACT,UACA,WAAa,OACb,cACA,cAAa,EACb,gBAAa,CACb,KAAM,KACN,QAAS,MACT,QAAS,WACF,MACP,GAAM,KACN,WAAU,KACV,OAAU,KACV,UAAO,CACP,gBACA,UACO,OACP,QACA,MAAO,OACP,aAAa,KACb,SACA,SAAYA,CACZ,KAAM,UACN,IAAU,KACV,OAAQ,KACR,gBACA,WAAaA,EACb,eACA,MACA,OAASJ,MACT,WACA,CAAQ,KACR,QAAS,QACT,OAAQ,QACH,MACL,SAAaI,EACb,MAAO,MACP,OAAQ,MACR,SAAWH,EACX,YAAS,CACT,QAAS,MACT,SACA,cACA,QAAW,KACX,SAAS,OACT,OA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","names":["b","a","isSameRouteLocationParams","key","isSameRouteLocationParamsValue","isEquivalentArray","i","useLink","router","inject","routeLocationKey","activeRecordIndex","computed","matched","length","currentMatched","isSameRouteRecord","parentRecordPath","getOriginalPath","includesParams","currentRoute","route","isExactActive","navigate","e","props","isActive","vnodes","defineComponent","slots","routerKey","getLinkClass","options","link","preferSingleVNode","children","guardEvent","outer","inner","innerValue","outerValue","isArray","record","globalClass","defaultClass","propClass","toString","includeImageAlt","settings","includeHtml","node","value","all","values","result","index","one","VOID","PRIMITIVE","OBJECT","DATE","REGEXP","MAP","ERROR","name","init","env","deserializer","$","_","unpair","type","as","arr","object","source","map","set","message","BIGINT","buffer","deserialize","EMPTY","keys","asString","ARRAY","shouldSkip","TYPE","serializer","strict","json","out","typeOf","entry","spread","pair","entries","flags","SET","lossy","serialize","convertElement","test","element","anyFactory","tests","checks","castFactory","any","tagNameFactory","check","tagName","testFunction","parent","looksLikeAnElement","ABSOLUTE_URL_REGEX","WINDOWS_PATH_REGEX","isAbsoluteUrl","url","parse","input","visit","tree","visitorOrReverse","maybeReverse","visitor","testOrVisitor","overload","parents","defaultProtocols","emptyOptions","protocols","is","createIfNeeded","contentRaw","relRaw","defaultRel","target","properties","structuredClone","rel","content","stringify","nameRe","nameReJsx","re","thing","empty","Schema","space","property","normal","definition","definitions","normalize","Info","powers","boolean","booleanish","overloadedBoolean","increment","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","types","DefinedInfo","mask","attribute","mark","normals","info","create","attributes","caseSensitiveTransform","html","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","style","lineno","column","updatePosition","str","lines","NEWLINE_REGEX","NEWLINE","position","start","Position","whitespace","error","msg","err","match","m","WHITESPACE_REGEX","comments","rules","c","comment","pos","FORWARD_SLASH","declaration","PROPERTY_REGEX","COLON_REGEX","val","VALUE_REGEX","ret","trim","COMMENT_REGEX","SEMICOLON_REGEX","declarations","decls","decl","TRIM_REGEX","cjs","this","mod","StyleToObject","inline_style_parser_1","__importDefault","require$$0","iterator","styleObject","hasIterator","utilities","CUSTOM_PROPERTY_REGEX","NO_HYPHEN_REGEX","MS_VENDOR_PREFIX_REGEX","character","prefix","camelCase","require$$1","StyleToJS","output","utilities_1","pointEnd","point","pointStart","VFileMessage","optionsOrParentOrPlace","origin","reason","legacyCause","causeOrReason","stringifyPosition","own","emptyMap","cap","tableElements","tableCellElement","docs","toJsxRuntime","filePath","developmentCreate","productionCreate","state","svg","mdxExpression","mdxEsm","root","text","schema","findComponentFromName","createElementProps","createChildren","child","addNode","parentSchema","expression","assert","crashEstree","mdxJsxElement","createJsxElementProps","addChildren","jsx","jsxs","fn","jsxDEV","alignValue","prop","createProperty","objectExpression","countsByName","count","find","commas","spaces","transformStylesToCssCasing","cause","allowExpression","identifiers","isIdentifierName","place","from","cssCasing","transformStyleToCssCasing","toDash","to","$0","self","compiler","file","escapeStringRegexp","string","findAndReplace","toPairs","list","pairs","visitParents","siblings","grandparent","pairIndex","change","matchObject","replace","nodes","tupleOrList","toExpression","tuple","escape","toFunction","newlineToBreak","remarkBreaks","items","end","remove","parameters","chunkStart","hasOwnProperty","combineExtensions","extensions","syntaxExtension","extension","hook","left","right","code","constructs","before","splice","existing","decodeNumericCharacterReference","base","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","regexCheck","asciiPunctuation","unicodePunctuation","unicodeWhitespace","skip","next","effects","ok","limit","afterContentStartConstruct","paragraphInitial","contentStart","lineStart","previous","token","document","initializeDocument","stack","childFlow","continued","item","documentContinue","indexBeforeFlow","checkNewContainers","thereIsANewContainer","closeFlow","lineStartOffset","flowStart","documentContinued","flowContinue","writeToChild","exitContainers","markdownLineEnding","endOfFile","childToken","stream","indexBeforeExits","seen","nok","classifyCharacter","markdownLineEndingOrSpace","resolveAll","events","called","resolve","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","open","context","use","movePoint","nextEvents","push","offset","inside","after","close","marker","schemeOrEmailAtext","schemeInsideOrEmailAtext","size","urlInside","emailAtext","emailAtSignOrDot","emailLabel","blankLine","tokenizeBlankLine","tokenizeBlockQuoteContinuation","markdownSpace","contStart","factorySpace","contBefore","blockQuote","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","max","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","initialPrefix","sizeOpen","tail","sequenceOpen","infoBefore","metaBefore","atNonLazyBreak","beforeContentChunk","beforeSequenceClose","sequenceClose","sequenceCloseAfter","tokenizeCodeIndented","afterPrefix","atBreak","furtherStart","resolveCodeText","tokenizeCodeText","headEnterIndex","enter","tailExitIndex","between","data","SpliceBuffer","initial","stop","expandTabs","loose","results","listLoose","listItems","definitionById","footnoteById","trimMarkdownSpaceStart","foot","remarkRehype","destination","hastTree","toHast","squeezeParagraphs","tracker","exit2","mapExceptFirst","line","blank","mapAll","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","constructsWithoutStrikethrough","exitStrikethrough","defaultStringLength","table","align","stringLength","alignments","sizeMatrix","longestCellByColumn","rowIndex","row2","columnIndex2","mostCellsPerRow","cellMatrix","sizes2","columnIndex","toAlignment","row","code2","cell","sizes","map$1","patternInScope","pattern","listInScope","list2","none","hardBreak","longestStreak","substring","expected","subexit","raw","suffix","quote","encodeCharacterReference","encodeInfo","outside","outsideKind","insideKind","rank","sequence","inlineCodeWithTable","handleTableCell","handleTableRow","handleTable","handleTableRowAsData","serializeData","around","matrix"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],"sources":["../node_modules/vue-router/dist/devtools-CxgSYwGp.js","../node_modules/vue-router/dist/vue-router.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/hast-util-is-element/lib/index.js","../node_modules/is-absolute-url/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/rehype-external-links/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/inline-style-parser/cjs/index.js","../node_modules/style-to-object/cjs/index.js","../node_modules/style-to-js/cjs/utilities.js","../node_modules/style-to-js/cjs/index.js","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/rehype-react/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-newline-to-break/lib/index.js","../node_modules/remark-breaks/lib/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/mdast-squeeze-paragraphs/lib/index.js","../node_modules/@nextcloud/vue/dist/chunks/NcRichText.mjs"],"sourcesContent":["/*!\n* vue-router v5.4.0\n* (c) 2026 Eduardo San Martin Morote\n* @license MIT\n*/\nimport { _ as isArray, d as createRouterError, g as isAbsolutePath, l as diagnostics, m as assign, r as matchedRouteKey, v as isESModule, y as isRouteComponent } from \"./useApi-CUWMwLLw.js\";\nimport { getCurrentInstance, inject, onActivated, onDeactivated, onUnmounted, watch } from \"vue\";\nimport { setupDevtoolsPlugin } from \"@vue/devtools-api\";\n//#region src/utils/env.ts\nconst isBrowser = typeof document !== \"undefined\";\n//#endregion\n//#region src/encoding.ts\n/**\n* Encoding Rules (␣ = Space)\n* - Path: ␣ \" < > # ? { }\n* - Query: ␣ \" < > # & =\n* - Hash: ␣ \" < > `\n*\n* On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n* defines some extra characters to be encoded. Most browsers do not encode them\n* in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n* also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n* plus `-._~`. This extra safety should be applied to query by patching the\n* string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n* should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n* into a `/` if directly typed in. The _backtick_ (`````) should also be\n* encoded everywhere because some browsers like FF encode it when directly\n* written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n*/\n/**\n* NOTE: `replaceAll()` is not faster than `replace()` with a global RegExp.\n* Benchmarks do not show a clear benefit for these simple replacements:\n* https://github.com/mathiasbynens/string-prototype-replace-regexp-benchmark\n*/\nconst HASH_RE = /#/g;\nconst AMPERSAND_RE = /&/g;\nconst SLASH_RE = /\\//g;\nconst EQUAL_RE = /=/g;\nconst IM_RE = /\\?/g;\nconst PLUS_RE = /\\+/g;\n/**\n* NOTE: It's not clear to me if we should encode the + symbol in queries, it\n* seems to be less flexible than not doing so and I can't find out the legacy\n* systems requiring this for regular requests like text/html. In the standard,\n* the encoding of the plus character is only mentioned for\n* application/x-www-form-urlencoded\n* (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n* leave the plus character as is in queries. To be more flexible, we allow the\n* plus character on the query, but it can also be manually encoded by the user.\n*\n* Resources:\n* - https://url.spec.whatwg.org/#urlencoded-parsing\n* - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n*/\nconst ENC_BRACKET_OPEN_RE = /%5B/g;\nconst ENC_BRACKET_CLOSE_RE = /%5D/g;\nconst ENC_CARET_RE = /%5E/g;\nconst ENC_BACKTICK_RE = /%60/g;\nconst ENC_CURLY_OPEN_RE = /%7B/g;\nconst ENC_PIPE_RE = /%7C/g;\nconst ENC_CURLY_CLOSE_RE = /%7D/g;\nconst ENC_SPACE_RE = /%20/g;\n/**\n* Encode characters that need to be encoded on the path, search and hash\n* sections of the URL.\n*\n* @internal\n* @param text - string to encode\n* @returns encoded string\n*/\nfunction commonEncode(text) {\n\treturn text == null ? \"\" : encodeURI(\"\" + text).replace(ENC_PIPE_RE, \"|\").replace(ENC_BRACKET_OPEN_RE, \"[\").replace(ENC_BRACKET_CLOSE_RE, \"]\");\n}\n/**\n* Encode characters that need to be encoded on the hash section of the URL.\n*\n* @param text - string to encode\n* @returns encoded string\n*/\nfunction encodeHash(text) {\n\treturn commonEncode(text).replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n}\n/**\n* Encode characters that need to be encoded query values on the query\n* section of the URL.\n*\n* @param text - string to encode\n* @returns encoded string\n*/\nfunction encodeQueryValue(text) {\n\treturn commonEncode(text).replace(PLUS_RE, \"%2B\").replace(ENC_SPACE_RE, \"+\").replace(HASH_RE, \"%23\").replace(AMPERSAND_RE, \"%26\").replace(ENC_BACKTICK_RE, \"`\").replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n}\n/**\n* Like `encodeQueryValue` but also encodes the `=` character.\n*\n* @param text - string to encode\n*/\nfunction encodeQueryKey(text) {\n\treturn encodeQueryValue(text).replace(EQUAL_RE, \"%3D\");\n}\n/**\n* Encode characters that need to be encoded on the path section of the URL.\n*\n* @param text - string to encode\n* @returns encoded string\n*/\nfunction encodePath(text) {\n\treturn commonEncode(text).replace(HASH_RE, \"%23\").replace(IM_RE, \"%3F\");\n}\n/**\n* Encode characters that need to be encoded on the path section of the URL as a\n* param. This function encodes everything {@link encodePath} does plus the\n* slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n* string instead.\n*\n* @param text - string to encode\n* @returns encoded string\n*/\nfunction encodeParam(text) {\n\treturn encodePath(text).replace(SLASH_RE, \"%2F\");\n}\nfunction decode(text) {\n\tif (text == null) return null;\n\ttry {\n\t\treturn decodeURIComponent(\"\" + text);\n\t} catch {\n\t\tprocess.env.NODE_ENV !== \"production\" && diagnostics.VUE_ROUTER_R0080({ text: \"\" + text });\n\t}\n\treturn \"\" + text;\n}\n//#endregion\n//#region src/location.ts\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, \"\");\n/**\n* Transforms a URI into a normalized history location\n*\n* @param parseQuery\n* @param location - URI to normalize\n* @param currentLocation - current absolute location. Allows resolving relative\n* paths. Must start with `/`. Defaults to `/`\n* @returns a normalized history location\n*/\nfunction parseURL(parseQuery, location, currentLocation = \"/\") {\n\tlet path, query = {}, searchString = \"\", hash = \"\";\n\tconst hashPos = location.indexOf(\"#\");\n\tlet searchPos = location.indexOf(\"?\");\n\tsearchPos = hashPos >= 0 && searchPos > hashPos ? -1 : searchPos;\n\tif (searchPos >= 0) {\n\t\tpath = location.slice(0, searchPos);\n\t\tsearchString = location.slice(searchPos, hashPos > 0 ? hashPos : location.length);\n\t\tquery = parseQuery(searchString.slice(1));\n\t}\n\tif (hashPos >= 0) {\n\t\tpath = path || location.slice(0, hashPos);\n\t\thash = location.slice(hashPos, location.length);\n\t}\n\tpath = resolveRelativePath(path != null ? path : location, currentLocation);\n\treturn {\n\t\tfullPath: path + searchString + hash,\n\t\tpath,\n\t\tquery,\n\t\thash: decode(hash)\n\t};\n}\n/**\n* Stringifies a URL object\n*\n* @param stringifyQuery\n* @param location\n*/\nfunction stringifyURL(stringifyQuery, location) {\n\tconst query = location.query ? stringifyQuery(location.query) : \"\";\n\treturn location.path + (query && \"?\") + query + (location.hash || \"\");\n}\n/**\n* Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n*\n* @param pathname - location.pathname\n* @param base - base to strip off\n*/\nfunction stripBase(pathname, base) {\n\tif (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) return pathname;\n\treturn pathname.slice(base.length) || \"/\";\n}\n/**\n* Checks if two RouteLocation are equal. This means that both locations are\n* pointing towards the same {@link RouteRecord} and that all `params`, `query`\n* parameters and `hash` are the same\n*\n* @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n* @param a - first {@link RouteLocation}\n* @param b - second {@link RouteLocation}\n*/\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n\tconst aLastIndex = a.matched.length - 1;\n\tconst bLastIndex = b.matched.length - 1;\n\treturn aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery(a.query) === stringifyQuery(b.query) && a.hash === b.hash;\n}\n/**\n* Check if two `RouteRecords` are equal. Takes into account aliases: they are\n* considered equal to the `RouteRecord` they are aliasing.\n*\n* @param a - first {@link RouteRecord}\n* @param b - second {@link RouteRecord}\n*/\nfunction isSameRouteRecord(a, b) {\n\treturn (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n\tif (Object.keys(a).length !== Object.keys(b).length) return false;\n\tfor (var key in a) if (!isSameRouteLocationParamsValue(a[key], b[key])) return false;\n\treturn true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n\treturn isArray(a) ? isEquivalentArray(a, b) : isArray(b) ? isEquivalentArray(b, a) : (a && a.valueOf()) === (b && b.valueOf());\n}\n/**\n* Check if two arrays are the same or if an array with one single entry is the\n* same as another primitive value. Used to check query and parameters\n*\n* @param a - array of values\n* @param b - array of values or a single value\n*/\nfunction isEquivalentArray(a, b) {\n\treturn isArray(b) ? a.length === b.length && a.every((value, i) => value === b[i]) : a.length === 1 && a[0] === b;\n}\n/**\n* Resolves a relative path that starts with `.`.\n*\n* @param to - path location we are resolving\n* @param from - currentLocation.path, should start with `/`\n*/\nfunction resolveRelativePath(to, from) {\n\tif (isAbsolutePath(to)) return to;\n\tif (process.env.NODE_ENV !== \"production\" && !isAbsolutePath(from)) {\n\t\tdiagnostics.VUE_ROUTER_R0070({\n\t\t\tto,\n\t\t\tfrom\n\t\t});\n\t\treturn to;\n\t}\n\tif (!to) return from;\n\tconst fromSegments = from.split(\"/\");\n\tconst toSegments = to.split(\"/\");\n\tconst lastToSegment = toSegments[toSegments.length - 1];\n\tif (lastToSegment === \"..\" || lastToSegment === \".\") toSegments.push(\"\");\n\tlet position = fromSegments.length - 1;\n\tlet toPosition;\n\tlet segment;\n\tfor (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n\t\tsegment = toSegments[toPosition];\n\t\tif (segment === \".\") continue;\n\t\tif (segment === \"..\") {\n\t\t\tif (position > 1) position--;\n\t\t} else break;\n\t}\n\treturn fromSegments.slice(0, position).join(\"/\") + \"/\" + toSegments.slice(toPosition).join(\"/\");\n}\n/**\n* Initial route location where the router is. Can be used in navigation guards\n* to differentiate the initial navigation.\n*\n* @example\n* ```js\n* import { START_LOCATION } from 'vue-router'\n*\n* router.beforeEach((to, from) => {\n* if (from === START_LOCATION) {\n* // initial navigation\n* }\n* })\n* ```\n*/\nconst START_LOCATION_NORMALIZED = {\n\tpath: \"/\",\n\tname: void 0,\n\tparams: {},\n\tquery: {},\n\thash: \"\",\n\tfullPath: \"/\",\n\tmatched: [],\n\tmeta: {},\n\tredirectedFrom: void 0\n};\n//#endregion\n//#region src/history/common.ts\n/**\n* Normalizes a base by removing any trailing slash and reading the base tag if\n* present.\n*\n* @param base - base to normalize\n*/\nfunction normalizeBase(base) {\n\tif (!base) {\n\t\tif (isBrowser) {\n\t\t\tconst baseEl = document.querySelector(\"base\");\n\t\t\tbase = baseEl && baseEl.getAttribute(\"href\") || \"/\";\n\t\t\tbase = base.replace(/^\\w+:\\/\\/[^/]+/, \"\");\n\t\t} else base = \"/\";\n\t}\n\tif (base[0] !== \"/\" && base[0] !== \"#\") base = \"/\" + base;\n\treturn removeTrailingSlash(base);\n}\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n\treturn base.replace(BEFORE_HASH_RE, \"#\") + location;\n}\n//#endregion\n//#region src/scrollBehavior.ts\nfunction getElementPosition(el, offset) {\n\tconst docRect = document.documentElement.getBoundingClientRect();\n\tconst elRect = el.getBoundingClientRect();\n\treturn {\n\t\tbehavior: offset.behavior,\n\t\tleft: elRect.left - docRect.left - (offset.left || 0),\n\t\ttop: elRect.top - docRect.top - (offset.top || 0)\n\t};\n}\nconst computeScrollPosition = () => history.scrollRestoration === \"manual\" ? {\n\tleft: window.scrollX,\n\ttop: window.scrollY\n} : null;\nfunction scrollToPosition(position) {\n\tlet scrollToOptions;\n\tif (\"el\" in position) {\n\t\tconst positionEl = position.el;\n\t\tconst isIdSelector = typeof positionEl === \"string\" && positionEl.startsWith(\"#\");\n\t\t/**\n\t\t* `id`s can accept pretty much any characters, including CSS combinators\n\t\t* like `>` or `~`. It's still possible to retrieve elements using\n\t\t* `document.getElementById('~')` but it needs to be escaped when using\n\t\t* `document.querySelector('#\\\\~')` for it to be valid. The only\n\t\t* requirements for `id`s are them to be unique on the page and to not be\n\t\t* empty (`id=\"\"`). Because of that, when passing an id selector, it should\n\t\t* be properly escaped for it to work with `querySelector`. We could check\n\t\t* for the id selector to be simple (no CSS combinators `+ >~`) but that\n\t\t* would make things inconsistent since they are valid characters for an\n\t\t* `id` but would need to be escaped when using `querySelector`, breaking\n\t\t* their usage and ending up in no selector returned. Selectors need to be\n\t\t* escaped:\n\t\t*\n\t\t* - `#1-thing` becomes `#\\31 -thing`\n\t\t* - `#with~symbols` becomes `#with\\\\~symbols`\n\t\t*\n\t\t* - More information about the topic can be found at\n\t\t* https://mathiasbynens.be/notes/html5-id-class.\n\t\t* - Practical example: https://mathiasbynens.be/demo/html5-id\n\t\t*/\n\t\tif (process.env.NODE_ENV !== \"production\" && typeof position.el === \"string\") {\n\t\t\tif (!isIdSelector || !document.getElementById(position.el.slice(1))) try {\n\t\t\t\tconst foundEl = document.querySelector(position.el);\n\t\t\t\tif (isIdSelector && foundEl) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0040({ el: position.el });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0041({ el: position.el });\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst el = typeof positionEl === \"string\" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;\n\t\tif (!el) {\n\t\t\tprocess.env.NODE_ENV !== \"production\" && diagnostics.VUE_ROUTER_R0042({ el: position.el });\n\t\t\treturn;\n\t\t}\n\t\tscrollToOptions = getElementPosition(el, position);\n\t} else scrollToOptions = position;\n\tif (\"scrollBehavior\" in document.documentElement.style) window.scrollTo(scrollToOptions);\n\telse window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n}\nfunction getScrollKey(path, delta) {\n\treturn (history.state ? history.state.position - delta : -1) + path;\n}\nconst scrollPositions = /* @__PURE__ */ new Map();\nfunction saveScrollPosition(key) {\n\tscrollPositions.set(key, computeScrollPosition());\n}\nfunction getSavedScrollPosition(key) {\n\tconst scroll = scrollPositions.get(key);\n\tscrollPositions.delete(key);\n\treturn scroll;\n}\nfunction invalidateScrollPositions(position, replace = false) {\n\tfor (const key of scrollPositions.keys()) {\n\t\tconst entryPosition = parseInt(key, 10);\n\t\tif (entryPosition === position || !replace && entryPosition > position) scrollPositions.delete(key);\n\t}\n}\n/**\n* ScrollBehavior instance used by the router to compute and restore the scroll\n* position when navigating.\n*/\n//#endregion\n//#region src/types/typeGuards.ts\nfunction isRouteLocation(route) {\n\treturn typeof route === \"string\" || route && typeof route === \"object\";\n}\nfunction isRouteName(name) {\n\treturn typeof name === \"string\" || typeof name === \"symbol\";\n}\n//#endregion\n//#region src/query.ts\n/**\n* Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n* version with the leading `?` and without Should work as URLSearchParams\n\n* @internal\n*\n* @param search - search string to parse\n* @returns a query object\n*/\nfunction parseQuery(search) {\n\tconst query = {};\n\tif (search === \"\" || search === \"?\") return query;\n\tconst searchParams = (search[0] === \"?\" ? search.slice(1) : search).split(\"&\");\n\tfor (let i = 0; i < searchParams.length; ++i) {\n\t\tconst searchParam = searchParams[i].replace(PLUS_RE, \" \");\n\t\tconst eqPos = searchParam.indexOf(\"=\");\n\t\tconst key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n\t\tconst value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n\t\tif (key in query) {\n\t\t\tlet currentValue = query[key];\n\t\t\tif (!isArray(currentValue)) currentValue = query[key] = [currentValue];\n\t\t\tcurrentValue.push(value);\n\t\t} else query[key] = value;\n\t}\n\treturn query;\n}\n/**\n* Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n* doesn't prepend a `?`\n*\n* @internal\n*\n* @param query - query object to stringify\n* @returns string version of the query without the leading `?`\n*/\nfunction stringifyQuery(query) {\n\tlet search = \"\";\n\tfor (let key in query) {\n\t\tconst value = query[key];\n\t\tkey = encodeQueryKey(key);\n\t\tif (value == null) {\n\t\t\tif (value !== void 0) search += (search.length ? \"&\" : \"\") + key;\n\t\t\tcontinue;\n\t\t}\n\t\t(isArray(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)]).forEach((value) => {\n\t\t\tif (value !== void 0) {\n\t\t\t\tsearch += (search.length ? \"&\" : \"\") + key;\n\t\t\t\tif (value != null) search += \"=\" + value;\n\t\t\t}\n\t\t});\n\t}\n\treturn search;\n}\n/**\n* Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n* numbers into strings, removing keys with an undefined value and replacing\n* undefined with null in arrays\n*\n* @param query - query object to normalize\n* @returns a normalized query object\n*/\nfunction normalizeQuery(query) {\n\tconst normalizedQuery = {};\n\tfor (const key in query) {\n\t\tconst value = query[key];\n\t\tif (value !== void 0) normalizedQuery[key] = isArray(value) ? value.map((v) => v == null ? null : \"\" + v) : value == null ? value : \"\" + value;\n\t}\n\treturn normalizedQuery;\n}\n//#endregion\n//#region src/utils/callbacks.ts\n/**\n* Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n*/\nfunction useCallbacks() {\n\tlet handlers = [];\n\tfunction add(handler) {\n\t\thandlers.push(handler);\n\t\treturn () => {\n\t\t\tconst i = handlers.indexOf(handler);\n\t\t\tif (i > -1) handlers.splice(i, 1);\n\t\t};\n\t}\n\tfunction reset() {\n\t\thandlers = [];\n\t}\n\treturn {\n\t\tadd,\n\t\tlist: () => handlers.slice(),\n\t\treset\n\t};\n}\n//#endregion\n//#region src/navigationGuards.ts\nfunction registerGuard(activeRecordRef, name, guard) {\n\tconst record = activeRecordRef.value;\n\tif (!record) {\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tconst fnName = name === \"updateGuards\" ? \"onBeforeRouteUpdate\" : \"onBeforeRouteLeave\";\n\t\t\tdiagnostics.VUE_ROUTER_R0020({ fn: fnName });\n\t\t}\n\t\treturn;\n\t}\n\tlet currentRecord = record;\n\tconst removeFromList = () => {\n\t\tcurrentRecord[name].delete(guard);\n\t};\n\tonUnmounted(removeFromList);\n\tonDeactivated(removeFromList);\n\tonActivated(() => {\n\t\tconst newRecord = activeRecordRef.value;\n\t\tif (process.env.NODE_ENV !== \"production\" && !newRecord) diagnostics.VUE_ROUTER_R0021();\n\t\tif (newRecord) currentRecord = newRecord;\n\t\tcurrentRecord[name].add(guard);\n\t});\n\tcurrentRecord[name].add(guard);\n}\n/**\n* Add a navigation guard that triggers whenever the component for the current\n* location is about to be left. Similar to {@link beforeRouteLeave} but can be\n* used in any component. The guard is removed when the component is unmounted.\n*\n* @param leaveGuard - {@link NavigationGuard}\n*/\nfunction onBeforeRouteLeave(leaveGuard) {\n\tif (process.env.NODE_ENV !== \"production\" && !getCurrentInstance()) {\n\t\tdiagnostics.VUE_ROUTER_R0022({ fn: \"onBeforeRouteLeave\" });\n\t\treturn;\n\t}\n\tregisterGuard(inject(matchedRouteKey, {}), \"leaveGuards\", leaveGuard);\n}\n/**\n* Add a navigation guard that triggers whenever the current location is about\n* to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n* component. The guard is removed when the component is unmounted.\n*\n* @param updateGuard - {@link NavigationGuard}\n*/\nfunction onBeforeRouteUpdate(updateGuard) {\n\tif (process.env.NODE_ENV !== \"production\" && !getCurrentInstance()) {\n\t\tdiagnostics.VUE_ROUTER_R0022({ fn: \"onBeforeRouteUpdate\" });\n\t\treturn;\n\t}\n\tregisterGuard(inject(matchedRouteKey, {}), \"updateGuards\", updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) {\n\tconst enterCallbackArray = record && (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n\treturn () => new Promise((resolve, reject) => {\n\t\tconst next = (valid) => {\n\t\t\tif (valid === false) reject(createRouterError(4, {\n\t\t\t\tfrom,\n\t\t\t\tto\n\t\t\t}));\n\t\t\telse if (valid instanceof Error) reject(valid);\n\t\t\telse if (isRouteLocation(valid)) reject(createRouterError(2, {\n\t\t\t\tfrom: to,\n\t\t\t\tto: valid\n\t\t\t}));\n\t\t\telse {\n\t\t\t\tif (enterCallbackArray && record.enterCallbacks[name] === enterCallbackArray && typeof valid === \"function\") enterCallbackArray.push(valid);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\t\tconst guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, process.env.NODE_ENV !== \"production\" ? withDeprecationWarning(canOnlyBeCalledOnce(next, to, from)) : next));\n\t\tlet guardCall = Promise.resolve(guardReturn);\n\t\tif (guard.length < 3) guardCall = guardCall.then(next);\n\t\tif (process.env.NODE_ENV !== \"production\" && guard.length > 2) {\n\t\t\tconst guardInfo = {\n\t\t\t\tname: guard.name,\n\t\t\t\tguard: guard.toString()\n\t\t\t};\n\t\t\tif (typeof guardReturn === \"object\" && \"then\" in guardReturn) guardCall = guardCall.then((resolvedValue) => {\n\t\t\t\tif (!next._called) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0023(guardInfo);\n\t\t\t\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Invalid navigation guard\"));\n\t\t\t\t}\n\t\t\t\treturn resolvedValue;\n\t\t\t});\n\t\t\telse if (guardReturn !== void 0) {\n\t\t\t\tif (!next._called) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0023(guardInfo);\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Invalid navigation guard\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tguardCall.catch((err) => reject(err));\n\t});\n}\n/**\n* Wraps the next callback to warn when it is used. Dev-only: when __DEV__ is\n* false (production builds), this branch is dead code and is stripped from the\n* bundle.\n*\n* @internal\n*/\nfunction withDeprecationWarning(next) {\n\tlet warned = false;\n\treturn function() {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tdiagnostics.VUE_ROUTER_R0025();\n\t\t}\n\t\treturn next.apply(this, arguments);\n\t};\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n\tlet called = 0;\n\treturn function() {\n\t\tif (called++ === 1) diagnostics.VUE_ROUTER_R0024({\n\t\t\tfrom: from.fullPath,\n\t\t\tto: to.fullPath\n\t\t});\n\t\tnext._called = true;\n\t\tif (called === 1) next.apply(null, arguments);\n\t};\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) {\n\tconst guards = [];\n\tfor (const record of matched) {\n\t\tif (process.env.NODE_ENV !== \"production\" && !record.components && record.children && !record.children.length) diagnostics.VUE_ROUTER_R0026({ path: record.path });\n\t\tfor (const name in record.components) {\n\t\t\tlet rawComponent = record.components[name];\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!rawComponent || typeof rawComponent !== \"object\" && typeof rawComponent !== \"function\") {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0027({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path,\n\t\t\t\t\t\treceived: String(rawComponent)\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(\"Invalid route component\");\n\t\t\t\t} else if (\"then\" in rawComponent) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0028({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t});\n\t\t\t\t\tconst promise = rawComponent;\n\t\t\t\t\trawComponent = () => promise;\n\t\t\t\t} else if (rawComponent.__asyncLoader && !rawComponent.__warnedDefineAsync) {\n\t\t\t\t\trawComponent.__warnedDefineAsync = true;\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0029({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (guardType !== \"beforeRouteEnter\" && !record.instances[name]) continue;\n\t\t\tif (isRouteComponent(rawComponent)) {\n\t\t\t\tconst guard = (rawComponent.__vccOpts || rawComponent)[guardType];\n\t\t\t\tguard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n\t\t\t} else {\n\t\t\t\tlet componentPromise = rawComponent();\n\t\t\t\tif (process.env.NODE_ENV !== \"production\" && !(\"catch\" in componentPromise)) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0030({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t});\n\t\t\t\t\tcomponentPromise = Promise.resolve(componentPromise);\n\t\t\t\t}\n\t\t\t\tguards.push(() => componentPromise.then((resolved) => {\n\t\t\t\t\tif (!resolved) throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n\t\t\t\t\tconst resolvedComponent = isESModule(resolved) ? resolved.default : resolved;\n\t\t\t\t\trecord.mods[name] = resolved;\n\t\t\t\t\trecord.components[name] = resolvedComponent;\n\t\t\t\t\tconst guard = (resolvedComponent.__vccOpts || resolvedComponent)[guardType];\n\t\t\t\t\treturn guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)();\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t}\n\treturn guards;\n}\n/**\n* Ensures a route is loaded, so it can be passed as o prop to ``.\n*\n* @param route - resolved route to load\n*/\nfunction loadRouteLocation(route) {\n\treturn route.matched.every((record) => record.redirect) ? Promise.reject(/* @__PURE__ */ new Error(\"Cannot load a route that redirects.\")) : Promise.all(route.matched.map((record) => record.components && Promise.all(Object.keys(record.components).reduce((promises, name) => {\n\t\tconst rawComponent = record.components[name];\n\t\tif (typeof rawComponent === \"function\" && !(\"displayName\" in rawComponent)) promises.push(rawComponent().then((resolved) => {\n\t\t\tif (!resolved) return Promise.reject(/* @__PURE__ */ new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n\t\t\tconst resolvedComponent = isESModule(resolved) ? resolved.default : resolved;\n\t\t\trecord.mods[name] = resolved;\n\t\t\trecord.components[name] = resolvedComponent;\n\t\t}));\n\t\treturn promises;\n\t}, [])))).then(() => route);\n}\n/**\n* Split the leaving, updating, and entering records.\n* @internal\n*\n* @param to - Location we are navigating to\n* @param from - Location we are navigating from\n*/\nfunction extractChangingRecords(to, from) {\n\tconst leavingRecords = [];\n\tconst updatingRecords = [];\n\tconst enteringRecords = [];\n\tconst len = Math.max(from.matched.length, to.matched.length);\n\tfor (let i = 0; i < len; i++) {\n\t\tconst recordFrom = from.matched[i];\n\t\tif (recordFrom) {\n\t\t\tif (to.matched.find((record) => isSameRouteRecord(record, recordFrom))) updatingRecords.push(recordFrom);\n\t\t\telse leavingRecords.push(recordFrom);\n\t\t}\n\t\tconst recordTo = to.matched[i];\n\t\tif (recordTo) {\n\t\t\tif (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) enteringRecords.push(recordTo);\n\t\t}\n\t}\n\treturn [\n\t\tleavingRecords,\n\t\tupdatingRecords,\n\t\tenteringRecords\n\t];\n}\n//#endregion\n//#region src/devtools.ts\n/**\n* Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n*\n* @param routeLocation - routeLocation to format\n* @param tooltip - optional tooltip\n* @returns a copy of the routeLocation\n*/\nfunction formatRouteLocation(routeLocation, tooltip) {\n\tconst copy = assign({}, routeLocation, { matched: routeLocation.matched.map((matched) => omit(matched, [\n\t\t\"instances\",\n\t\t\"children\",\n\t\t\"aliasOf\"\n\t])) });\n\treturn { _custom: {\n\t\ttype: null,\n\t\treadOnly: true,\n\t\tdisplay: routeLocation.fullPath,\n\t\ttooltip,\n\t\tvalue: copy\n\t} };\n}\nfunction formatDisplay(display) {\n\treturn { _custom: { display } };\n}\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n\tif (router.__hasDevtools) return;\n\trouter.__hasDevtools = true;\n\tconst id = routerId++;\n\tsetupDevtoolsPlugin({\n\t\tid: \"org.vuejs.router\" + (id ? \".\" + id : \"\"),\n\t\tlabel: \"Vue Router\",\n\t\tpackageName: \"vue-router\",\n\t\thomepage: \"https://router.vuejs.org\",\n\t\tlogo: \"https://router.vuejs.org/logo.png\",\n\t\tcomponentStateTypes: [\"Routing\"],\n\t\tapp\n\t}, (api) => {\n\t\tapi.on.inspectComponent((payload) => {\n\t\t\tif (payload.instanceData) payload.instanceData.state.push({\n\t\t\t\ttype: \"Routing\",\n\t\t\t\tkey: \"$route\",\n\t\t\t\teditable: false,\n\t\t\t\tvalue: formatRouteLocation(router.currentRoute.value, \"Current Route\")\n\t\t\t});\n\t\t});\n\t\tapi.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n\t\t\tif (componentInstance.__vrv_devtools) {\n\t\t\t\tconst info = componentInstance.__vrv_devtools;\n\t\t\t\tnode.tags.push({\n\t\t\t\t\tlabel: (info.name ? `${info.name.toString()}: ` : \"\") + info.path,\n\t\t\t\t\ttextColor: 0,\n\t\t\t\t\ttooltip: \"This component is rendered by <router-view>\",\n\t\t\t\t\tbackgroundColor: PINK_500\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (isArray(componentInstance.__vrl_devtools)) {\n\t\t\t\tcomponentInstance.__devtoolsApi = api;\n\t\t\t\tcomponentInstance.__vrl_devtools.forEach((devtoolsData) => {\n\t\t\t\t\tlet label = devtoolsData.route.path;\n\t\t\t\t\tlet backgroundColor = ORANGE_400;\n\t\t\t\t\tlet tooltip = \"\";\n\t\t\t\t\tlet textColor = 0;\n\t\t\t\t\tif (devtoolsData.error) {\n\t\t\t\t\t\tlabel = devtoolsData.error;\n\t\t\t\t\t\tbackgroundColor = RED_100;\n\t\t\t\t\t\ttextColor = RED_700;\n\t\t\t\t\t} else if (devtoolsData.isExactActive) {\n\t\t\t\t\t\tbackgroundColor = LIME_500;\n\t\t\t\t\t\ttooltip = \"This is exactly active\";\n\t\t\t\t\t} else if (devtoolsData.isActive) {\n\t\t\t\t\t\tbackgroundColor = BLUE_600;\n\t\t\t\t\t\ttooltip = \"This link is active\";\n\t\t\t\t\t}\n\t\t\t\t\tnode.tags.push({\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\ttooltip,\n\t\t\t\t\t\tbackgroundColor\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\twatch(router.currentRoute, () => {\n\t\t\trefreshRoutesView();\n\t\t\tapi.notifyComponentUpdate();\n\t\t\tapi.sendInspectorTree(routerInspectorId);\n\t\t\tapi.sendInspectorState(routerInspectorId);\n\t\t});\n\t\tconst navigationsLayerId = \"router:navigations:\" + id;\n\t\tapi.addTimelineLayer({\n\t\t\tid: navigationsLayerId,\n\t\t\tlabel: `Router${id ? \" \" + id : \"\"} Navigations`,\n\t\t\tcolor: 4237508\n\t\t});\n\t\trouter.onError((error, to) => {\n\t\t\tapi.addTimelineEvent({\n\t\t\t\tlayerId: navigationsLayerId,\n\t\t\t\tevent: {\n\t\t\t\t\ttitle: \"Error during Navigation\",\n\t\t\t\t\tsubtitle: to.fullPath,\n\t\t\t\t\tlogType: \"error\",\n\t\t\t\t\ttime: api.now(),\n\t\t\t\t\tdata: { error },\n\t\t\t\t\tgroupId: to.meta.__navigationId\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet navigationId = 0;\n\t\trouter.beforeEach((to, from) => {\n\t\t\tconst data = {\n\t\t\t\tguard: formatDisplay(\"beforeEach\"),\n\t\t\t\tfrom: formatRouteLocation(from, \"Current Location during this navigation\"),\n\t\t\t\tto: formatRouteLocation(to, \"Target location\")\n\t\t\t};\n\t\t\tObject.defineProperty(to.meta, \"__navigationId\", { value: navigationId++ });\n\t\t\tapi.addTimelineEvent({\n\t\t\t\tlayerId: navigationsLayerId,\n\t\t\t\tevent: {\n\t\t\t\t\ttime: api.now(),\n\t\t\t\t\ttitle: \"Start of navigation\",\n\t\t\t\t\tsubtitle: to.fullPath,\n\t\t\t\t\tdata,\n\t\t\t\t\tgroupId: to.meta.__navigationId\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\trouter.afterEach((to, from, failure) => {\n\t\t\tconst data = { guard: formatDisplay(\"afterEach\") };\n\t\t\tif (failure) {\n\t\t\t\tdata.failure = { _custom: {\n\t\t\t\t\ttype: Error,\n\t\t\t\t\treadOnly: true,\n\t\t\t\t\tdisplay: failure ? failure.message : \"\",\n\t\t\t\t\ttooltip: \"Navigation Failure\",\n\t\t\t\t\tvalue: failure\n\t\t\t\t} };\n\t\t\t\tdata.status = formatDisplay(\"❌\");\n\t\t\t} else data.status = formatDisplay(\"✅\");\n\t\t\tdata.from = formatRouteLocation(from, \"Current Location during this navigation\");\n\t\t\tdata.to = formatRouteLocation(to, \"Target location\");\n\t\t\tapi.addTimelineEvent({\n\t\t\t\tlayerId: navigationsLayerId,\n\t\t\t\tevent: {\n\t\t\t\t\ttitle: \"End of navigation\",\n\t\t\t\t\tsubtitle: to.fullPath,\n\t\t\t\t\ttime: api.now(),\n\t\t\t\t\tdata,\n\t\t\t\t\tlogType: failure ? \"warning\" : \"default\",\n\t\t\t\t\tgroupId: to.meta.__navigationId\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t/**\n\t\t* Inspector of Existing routes\n\t\t*/\n\t\tconst routerInspectorId = \"router-inspector:\" + id;\n\t\tapi.addInspector({\n\t\t\tid: routerInspectorId,\n\t\t\tlabel: \"Routes\" + (id ? \" \" + id : \"\"),\n\t\t\ticon: \"book\",\n\t\t\ttreeFilterPlaceholder: \"Search routes\"\n\t\t});\n\t\tfunction refreshRoutesView() {\n\t\t\tif (!activeRoutesPayload) return;\n\t\t\tconst payload = activeRoutesPayload;\n\t\t\tlet routes = matcher.getRoutes().filter((route) => !route.parent || !route.parent.record.components);\n\t\t\troutes.forEach(resetMatchStateOnRouteRecord);\n\t\t\tif (payload.filter) routes = routes.filter((route) => isRouteMatching(route, payload.filter.toLowerCase()));\n\t\t\troutes.forEach((route) => markRouteRecordActive(route, router.currentRoute.value));\n\t\t\tpayload.rootNodes = routes.map(formatRouteRecordForInspector);\n\t\t}\n\t\tlet activeRoutesPayload;\n\t\tapi.on.getInspectorTree((payload) => {\n\t\t\tactiveRoutesPayload = payload;\n\t\t\tif (payload.app === app && payload.inspectorId === routerInspectorId) refreshRoutesView();\n\t\t});\n\t\t/**\n\t\t* Display information about the currently selected route record\n\t\t*/\n\t\tapi.on.getInspectorState((payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === routerInspectorId) {\n\t\t\t\tconst route = matcher.getRoutes().find((route) => route.record.__vd_id === payload.nodeId);\n\t\t\t\tif (route) payload.state = { options: formatRouteRecordMatcherForStateInspector(route) };\n\t\t\t}\n\t\t});\n\t\tapi.sendInspectorTree(routerInspectorId);\n\t\tapi.sendInspectorState(routerInspectorId);\n\t});\n}\nfunction modifierForKey(key) {\n\tif (key.optional) return key.repeatable ? \"*\" : \"?\";\n\telse return key.repeatable ? \"+\" : \"\";\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n\tconst { record } = route;\n\tconst fields = [{\n\t\teditable: false,\n\t\tkey: \"path\",\n\t\tvalue: record.path\n\t}];\n\tif (record.name != null) fields.push({\n\t\teditable: false,\n\t\tkey: \"name\",\n\t\tvalue: record.name\n\t});\n\tfields.push({\n\t\teditable: false,\n\t\tkey: \"regexp\",\n\t\tvalue: route.re\n\t});\n\tif (route.keys.length) fields.push({\n\t\teditable: false,\n\t\tkey: \"keys\",\n\t\tvalue: { _custom: {\n\t\t\ttype: null,\n\t\t\treadOnly: true,\n\t\t\tdisplay: route.keys.map((key) => `${key.name}${modifierForKey(key)}`).join(\" \"),\n\t\t\ttooltip: \"Param keys\",\n\t\t\tvalue: route.keys\n\t\t} }\n\t});\n\tif (record.redirect != null) fields.push({\n\t\teditable: false,\n\t\tkey: \"redirect\",\n\t\tvalue: record.redirect\n\t});\n\tif (route.alias.length) fields.push({\n\t\teditable: false,\n\t\tkey: \"aliases\",\n\t\tvalue: route.alias.map((alias) => alias.record.path)\n\t});\n\tif (Object.keys(route.record.meta).length) fields.push({\n\t\teditable: false,\n\t\tkey: \"meta\",\n\t\tvalue: route.record.meta\n\t});\n\tfields.push({\n\t\tkey: \"score\",\n\t\teditable: false,\n\t\tvalue: { _custom: {\n\t\t\ttype: null,\n\t\t\treadOnly: true,\n\t\t\tdisplay: route.score.map((score) => score.join(\", \")).join(\" | \"),\n\t\t\ttooltip: \"Score used to sort routes\",\n\t\t\tvalue: route.score\n\t\t} }\n\t});\n\treturn fields;\n}\n/**\n* Extracted from tailwind palette\n*/\nconst PINK_500 = 15485081;\nconst BLUE_600 = 2450411;\nconst LIME_500 = 8702998;\nconst CYAN_400 = 2282478;\nconst ORANGE_400 = 16486972;\nconst DARK = 6710886;\nconst RED_100 = 16704226;\nconst RED_700 = 12131356;\nfunction formatRouteRecordForInspector(route) {\n\tconst tags = [];\n\tconst { record } = route;\n\tif (record.name != null) tags.push({\n\t\tlabel: String(record.name),\n\t\ttextColor: 0,\n\t\tbackgroundColor: CYAN_400\n\t});\n\tif (record.aliasOf) tags.push({\n\t\tlabel: \"alias\",\n\t\ttextColor: 0,\n\t\tbackgroundColor: ORANGE_400\n\t});\n\tif (route.__vd_match) tags.push({\n\t\tlabel: \"matches\",\n\t\ttextColor: 0,\n\t\tbackgroundColor: PINK_500\n\t});\n\tif (route.__vd_exactActive) tags.push({\n\t\tlabel: \"exact\",\n\t\ttextColor: 0,\n\t\tbackgroundColor: LIME_500\n\t});\n\tif (route.__vd_active) tags.push({\n\t\tlabel: \"active\",\n\t\ttextColor: 0,\n\t\tbackgroundColor: BLUE_600\n\t});\n\tif (record.redirect) tags.push({\n\t\tlabel: typeof record.redirect === \"string\" ? `redirect: ${record.redirect}` : \"redirects\",\n\t\ttextColor: 16777215,\n\t\tbackgroundColor: DARK\n\t});\n\tlet id = record.__vd_id;\n\tif (id == null) {\n\t\tid = String(routeRecordId++);\n\t\trecord.__vd_id = id;\n\t}\n\treturn {\n\t\tid,\n\t\tlabel: record.path,\n\t\ttags,\n\t\tchildren: route.children.map(formatRouteRecordForInspector)\n\t};\n}\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n\tconst isExactActive = currentRoute.matched.length && isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n\troute.__vd_exactActive = route.__vd_active = isExactActive;\n\tif (!isExactActive) route.__vd_active = currentRoute.matched.some((match) => isSameRouteRecord(match, route.record));\n\troute.children.forEach((childRoute) => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n\troute.__vd_match = false;\n\troute.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n\tconst found = String(route.re).match(EXTRACT_REGEXP_RE);\n\troute.__vd_match = false;\n\tif (!found || found.length < 3) return false;\n\tif (new RegExp(found[1].replace(/\\$$/, \"\"), found[2]).test(filter)) {\n\t\troute.children.forEach((child) => isRouteMatching(child, filter));\n\t\tif (route.record.path !== \"/\" || filter === \"/\") {\n\t\t\troute.__vd_match = route.re.test(filter);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tconst path = route.record.path.toLowerCase();\n\tconst decodedPath = decode(path);\n\tif (!isAbsolutePath(filter) && (decodedPath.includes(filter) || path.includes(filter))) return true;\n\tif (decodedPath.startsWith(filter) || path.startsWith(filter)) return true;\n\tif (route.record.name && String(route.record.name).includes(filter)) return true;\n\treturn route.children.some((child) => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n\tconst ret = {};\n\tfor (const key in obj) if (!keys.includes(key)) ret[key] = obj[key];\n\treturn ret;\n}\n//#endregion\nexport { PLUS_RE as A, isSameRouteLocation as C, resolveRelativePath as D, parseURL as E, encodePath as F, isBrowser as I, decode as M, encodeHash as N, stringifyURL as O, encodeParam as P, START_LOCATION_NORMALIZED as S, isSameRouteRecord as T, invalidateScrollPositions as _, loadRouteLocation as a, createHref as b, useCallbacks as c, stringifyQuery as d, isRouteLocation as f, getScrollKey as g, getSavedScrollPosition as h, guardToPromiseFn as i, commonEncode as j, stripBase as k, normalizeQuery as l, computeScrollPosition as m, extractChangingRecords as n, onBeforeRouteLeave as o, isRouteName as p, extractComponentsGuards as r, onBeforeRouteUpdate as s, addDevtools as t, parseQuery as u, saveScrollPosition as v, isSameRouteLocationParams as w, normalizeBase as x, scrollToPosition as y };\n","/*!\n* vue-router v5.4.0\n* (c) 2026 Eduardo San Martin Morote\n* @license MIT\n*/\nimport { C as isSameRouteLocation, E as parseURL, I as isBrowser, M as decode, N as encodeHash, O as stringifyURL, P as encodeParam, S as START_LOCATION_NORMALIZED, T as isSameRouteRecord, _ as invalidateScrollPositions, a as loadRouteLocation, b as createHref, c as useCallbacks, d as stringifyQuery, f as isRouteLocation, g as getScrollKey, h as getSavedScrollPosition, i as guardToPromiseFn, k as stripBase, l as normalizeQuery, m as computeScrollPosition, n as extractChangingRecords, o as onBeforeRouteLeave, p as isRouteName, r as extractComponentsGuards, s as onBeforeRouteUpdate, t as addDevtools, u as parseQuery, v as saveScrollPosition, w as isSameRouteLocationParams, x as normalizeBase, y as scrollToPosition } from \"./devtools-CxgSYwGp.js\";\nimport { _ as isArray, a as routerKey, b as mergeOptions, c as viewDepthKey, d as createRouterError, f as isNavigationFailure, g as isAbsolutePath, i as routeLocationKey, l as diagnostics, m as assign, n as useRouter, o as routerViewLocationKey, p as applyToParams, r as matchedRouteKey, s as routerViewOnRouteRenderedKey, t as useRoute, u as NavigationFailureType, x as noop } from \"./useApi-CUWMwLLw.js\";\nimport { computed, defineComponent, getCurrentInstance, h, inject, nextTick, provide, reactive, ref, shallowReactive, shallowRef, unref, watch, watchEffect } from \"vue\";\n//#region src/history/html5.ts\nlet createBaseLocation = () => location.protocol + \"//\" + location.host;\n/**\n* Creates a normalized history location from a window.location object\n* @param base - The base path\n* @param location - The window.location object\n*/\nfunction createCurrentLocation(base, location) {\n\tconst { pathname, search, hash } = location;\n\tconst hashPos = base.indexOf(\"#\");\n\tif (hashPos > -1) {\n\t\tlet slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;\n\t\tlet pathFromHash = hash.slice(slicePos);\n\t\tif (pathFromHash[0] !== \"/\") pathFromHash = \"/\" + pathFromHash;\n\t\treturn stripBase(pathFromHash, \"\");\n\t}\n\treturn stripBase(pathname, base) + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n\tlet listeners = [];\n\tlet teardowns = [];\n\tlet pauseState = null;\n\tconst popStateHandler = ({ state }) => {\n\t\tconst to = createCurrentLocation(base, location);\n\t\tconst from = currentLocation.value;\n\t\tconst fromState = historyState.value;\n\t\tlet delta = 0;\n\t\tif (state) {\n\t\t\tcurrentLocation.value = to;\n\t\t\thistoryState.value = state;\n\t\t\tif (pauseState && pauseState === from) {\n\t\t\t\tpauseState = null;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdelta = fromState ? state.position - fromState.position : 0;\n\t\t} else replace(to);\n\t\tlisteners.forEach((listener) => {\n\t\t\tlistener(currentLocation.value, from, {\n\t\t\t\tdelta,\n\t\t\t\ttype: \"pop\",\n\t\t\t\tdirection: delta ? delta > 0 ? \"forward\" : \"back\" : \"\"\n\t\t\t});\n\t\t});\n\t};\n\tfunction pauseListeners() {\n\t\tpauseState = currentLocation.value;\n\t}\n\tfunction listen(callback) {\n\t\tlisteners.push(callback);\n\t\tconst teardown = () => {\n\t\t\tconst index = listeners.indexOf(callback);\n\t\t\tif (index > -1) listeners.splice(index, 1);\n\t\t};\n\t\tteardowns.push(teardown);\n\t\treturn teardown;\n\t}\n\tfunction beforeUnloadListener() {\n\t\tconst { history } = window;\n\t\tif (!history.state) return;\n\t\thistory.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), \"\");\n\t}\n\tfunction destroy() {\n\t\tfor (const teardown of teardowns) teardown();\n\t\tteardowns = [];\n\t\twindow.removeEventListener(\"popstate\", popStateHandler);\n\t\twindow.removeEventListener(\"pagehide\", beforeUnloadListener);\n\t}\n\twindow.addEventListener(\"popstate\", popStateHandler);\n\twindow.addEventListener(\"pagehide\", beforeUnloadListener);\n\treturn {\n\t\tpauseListeners,\n\t\tlisten,\n\t\tdestroy\n\t};\n}\n/**\n* Creates a state object\n*/\nfunction buildState(back, current, forward, replaced = false) {\n\treturn {\n\t\tback,\n\t\tcurrent,\n\t\tforward,\n\t\treplaced,\n\t\tposition: window.history.length,\n\t\tscroll: null\n\t};\n}\nfunction useHistoryStateNavigation(base) {\n\tconst { history, location } = window;\n\tconst currentLocation = { value: createCurrentLocation(base, location) };\n\tconst historyState = { value: history.state };\n\tif (!historyState.value) changeLocation(currentLocation.value, {\n\t\tback: null,\n\t\tcurrent: currentLocation.value,\n\t\tforward: null,\n\t\tposition: history.length - 1,\n\t\treplaced: true,\n\t\tscroll: null\n\t}, true);\n\tfunction changeLocation(to, state, replace) {\n\t\t/**\n\t\t* if a base tag is provided, and we are on a normal domain, we have to\n\t\t* respect the provided `base` attribute because pushState() will use it and\n\t\t* potentially erase anything before the `#` like at\n\t\t* https://github.com/vuejs/router/issues/685 where a base of\n\t\t* `/folder/#` but a base of `/` would erase the `/folder/` section. If\n\t\t* there is no host, the `` tag makes no sense and if there isn't a\n\t\t* base tag we can just use everything after the `#`.\n\t\t*/\n\t\tconst hashIndex = base.indexOf(\"#\");\n\t\tconst url = hashIndex > -1 ? (location.host && document.querySelector(\"base\") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to;\n\t\ttry {\n\t\t\thistory[replace ? \"replaceState\" : \"pushState\"](state, \"\", url);\n\t\t\thistoryState.value = state;\n\t\t} catch (err) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") diagnostics.VUE_ROUTER_R0120({ cause: err });\n\t\t\telse console.error(err);\n\t\t\tlocation[replace ? \"replace\" : \"assign\"](url);\n\t\t}\n\t}\n\tfunction replace(to, data) {\n\t\tconst state = assign({}, history.state, buildState(historyState.value.back, to, historyState.value.forward, true), data, { position: historyState.value.position });\n\t\tchangeLocation(to, state, true);\n\t\tinvalidateScrollPositions(state.position, true);\n\t\tcurrentLocation.value = to;\n\t}\n\tfunction push(to, data) {\n\t\tconst currentState = assign({}, historyState.value, history.state, {\n\t\t\tforward: to,\n\t\t\tscroll: computeScrollPosition()\n\t\t});\n\t\tif (process.env.NODE_ENV !== \"production\" && !history.state) diagnostics.VUE_ROUTER_R0121();\n\t\tchangeLocation(currentState.current, currentState, true);\n\t\tchangeLocation(to, assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data), false);\n\t\tinvalidateScrollPositions(currentState.position);\n\t\tcurrentLocation.value = to;\n\t}\n\treturn {\n\t\tlocation: currentLocation,\n\t\tstate: historyState,\n\t\tpush,\n\t\treplace\n\t};\n}\n/**\n* Creates an HTML5 history. Most common history for single page applications.\n*\n* @param base -\n*/\nfunction createWebHistory(base) {\n\tbase = normalizeBase(base);\n\tconst historyNavigation = useHistoryStateNavigation(base);\n\tconst historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n\tfunction go(delta, triggerListeners = true) {\n\t\tif (!triggerListeners) historyListeners.pauseListeners();\n\t\thistory.go(delta);\n\t}\n\tconst routerHistory = assign({\n\t\tlocation: \"\",\n\t\tbase,\n\t\tgo,\n\t\tcreateHref: createHref.bind(null, base)\n\t}, historyNavigation, historyListeners);\n\tObject.defineProperty(routerHistory, \"location\", {\n\t\tenumerable: true,\n\t\tget: () => historyNavigation.location.value\n\t});\n\tObject.defineProperty(routerHistory, \"state\", {\n\t\tenumerable: true,\n\t\tget: () => historyNavigation.state.value\n\t});\n\treturn routerHistory;\n}\n//#endregion\n//#region src/history/hash.ts\n/**\n* Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n* handle any URL is not possible.\n*\n* @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n* in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n* calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n* after the `#`).\n*\n* @example\n* ```js\n* // at https://example.com/folder\n* createWebHashHistory() // gives a url of `https://example.com/folder#`\n* createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n* // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n* createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n* // you should avoid doing this because it changes the original url and breaks copying urls\n* createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n*\n* // at file:///usr/etc/folder/index.html\n* // for locations with no `host`, the base is ignored\n* createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n* ```\n*/\nfunction createWebHashHistory(base) {\n\tbase = location.host ? base || location.pathname + location.search : \"\";\n\tif (!base.includes(\"#\")) base += \"#\";\n\tif (process.env.NODE_ENV !== \"production\" && !base.endsWith(\"#/\") && !base.endsWith(\"#\")) diagnostics.VUE_ROUTER_R0110({\n\t\tbase,\n\t\tsuggestion: base.replace(/#.*$/, \"#\")\n\t});\n\treturn createWebHistory(base);\n}\n//#endregion\n//#region src/history/memory.ts\n/**\n* Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n* It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n*\n* @param base - Base applied to all urls, defaults to '/'\n* @returns a history object that can be passed to the router constructor\n*/\nfunction createMemoryHistory(base = \"\") {\n\tlet listeners = [];\n\tlet queue = [[\"\", {}]];\n\tlet position = 0;\n\tbase = normalizeBase(base);\n\tfunction setLocation(location, state = {}) {\n\t\tposition++;\n\t\tif (position !== queue.length) queue.splice(position);\n\t\tqueue.push([location, state]);\n\t}\n\tfunction triggerListeners(to, from, { direction, delta }) {\n\t\tconst info = {\n\t\t\tdirection,\n\t\t\tdelta,\n\t\t\ttype: \"pop\"\n\t\t};\n\t\tfor (const callback of listeners) callback(to, from, info);\n\t}\n\tconst routerHistory = {\n\t\tlocation: \"\",\n\t\tstate: {},\n\t\tbase,\n\t\tcreateHref: createHref.bind(null, base),\n\t\treplace(to, state) {\n\t\t\tqueue.splice(position--, 1);\n\t\t\tsetLocation(to, state);\n\t\t},\n\t\tpush(to, state) {\n\t\t\tsetLocation(to, state);\n\t\t},\n\t\tlisten(callback) {\n\t\t\tlisteners.push(callback);\n\t\t\treturn () => {\n\t\t\t\tconst index = listeners.indexOf(callback);\n\t\t\t\tif (index > -1) listeners.splice(index, 1);\n\t\t\t};\n\t\t},\n\t\tdestroy() {\n\t\t\tlisteners = [];\n\t\t\tqueue = [[\"\", {}]];\n\t\t\tposition = 0;\n\t\t},\n\t\tgo(delta, shouldTrigger = true) {\n\t\t\tconst from = this.location;\n\t\t\tconst direction = delta < 0 ? \"back\" : \"forward\";\n\t\t\tposition = Math.max(0, Math.min(position + delta, queue.length - 1));\n\t\t\tif (shouldTrigger) triggerListeners(this.location, from, {\n\t\t\t\tdirection,\n\t\t\t\tdelta\n\t\t\t});\n\t\t}\n\t};\n\tObject.defineProperty(routerHistory, \"location\", {\n\t\tenumerable: true,\n\t\tget: () => queue[position][0]\n\t});\n\tObject.defineProperty(routerHistory, \"state\", {\n\t\tenumerable: true,\n\t\tget: () => queue[position][1]\n\t});\n\treturn routerHistory;\n}\n//#endregion\n//#region src/matcher/pathTokenizer.ts\nconst ROOT_TOKEN = {\n\ttype: 0,\n\tvalue: \"\"\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\nfunction tokenizePath(path) {\n\tif (!path) return [[]];\n\tif (path === \"/\") return [[ROOT_TOKEN]];\n\tif (!isAbsolutePath(path)) throw new Error(process.env.NODE_ENV !== \"production\" ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".` : `Invalid path \"${path}\"`);\n\tfunction crash(message) {\n\t\tthrow new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n\t}\n\tlet state = 0;\n\tlet previousState = state;\n\tconst tokens = [];\n\tlet segment;\n\tfunction finalizeSegment() {\n\t\tif (segment) tokens.push(segment);\n\t\tsegment = [];\n\t}\n\tlet i = 0;\n\tlet char;\n\tlet buffer = \"\";\n\tlet customRe = \"\";\n\tfunction consumeBuffer() {\n\t\tif (!buffer) return;\n\t\tif (state === 0) segment.push({\n\t\t\ttype: 0,\n\t\t\tvalue: buffer\n\t\t});\n\t\telse if (state === 1 || state === 2 || state === 3) {\n\t\t\tif (segment.length > 1 && (char === \"*\" || char === \"+\")) crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n\t\t\tsegment.push({\n\t\t\t\ttype: 1,\n\t\t\t\tvalue: buffer,\n\t\t\t\tregexp: customRe,\n\t\t\t\trepeatable: char === \"*\" || char === \"+\",\n\t\t\t\toptional: char === \"*\" || char === \"?\"\n\t\t\t});\n\t\t} else crash(\"Invalid state to consume buffer\");\n\t\tbuffer = \"\";\n\t}\n\tfunction addCharToBuffer() {\n\t\tbuffer += char;\n\t}\n\twhile (i < path.length) {\n\t\tchar = path[i++];\n\t\tswitch (state) {\n\t\t\tcase 0:\n\t\t\t\tif (char === \"\\\\\") {\n\t\t\t\t\tpreviousState = state;\n\t\t\t\t\tstate = 4;\n\t\t\t\t} else if (char === \"/\") {\n\t\t\t\t\tif (buffer) consumeBuffer();\n\t\t\t\t\tfinalizeSegment();\n\t\t\t\t} else if (char === \":\") {\n\t\t\t\t\tconsumeBuffer();\n\t\t\t\t\tstate = 1;\n\t\t\t\t} else addCharToBuffer();\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\taddCharToBuffer();\n\t\t\t\tstate = previousState;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tif (char === \"(\") state = 2;\n\t\t\t\telse if (VALID_PARAM_RE.test(char)) addCharToBuffer();\n\t\t\t\telse {\n\t\t\t\t\tconsumeBuffer();\n\t\t\t\t\tstate = 0;\n\t\t\t\t\tif (char !== \"*\" && char !== \"?\" && char !== \"+\") i--;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tif (char === \")\") {\n\t\t\t\t\tif (customRe[customRe.length - 1] == \"\\\\\") customRe = customRe.slice(0, -1) + char;\n\t\t\t\t\telse state = 3;\n\t\t\t\t} else customRe += char;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tconsumeBuffer();\n\t\t\t\tstate = 0;\n\t\t\t\tif (char !== \"*\" && char !== \"?\" && char !== \"+\") i--;\n\t\t\t\tcustomRe = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault: crash(\"Unknown state\");\n\t\t}\n\t}\n\tif (state === 2) crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n\tconsumeBuffer();\n\tfinalizeSegment();\n\treturn tokens;\n}\n//#endregion\n//#region src/matcher/pathParserRanker.ts\nconst BASE_PARAM_PATTERN = \"[^/]+?\";\nconst BASE_PATH_PARSER_OPTIONS = {\n\tsensitive: false,\n\tstrict: false,\n\tstart: true,\n\tend: true\n};\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n* Creates a path parser from an array of Segments (a segment is an array of Tokens)\n*\n* @param segments - array of segments returned by tokenizePath\n* @param extraOptions - optional options for the regexp\n* @returns a PathParser\n*/\nfunction tokensToParser(segments, extraOptions) {\n\tconst options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n\tconst score = [];\n\tlet pattern = options.start ? \"^\" : \"\";\n\tconst keys = [];\n\tfor (const segment of segments) {\n\t\tconst segmentScores = segment.length ? [] : [90];\n\t\tif (options.strict && !segment.length) pattern += \"/\";\n\t\tfor (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n\t\t\tconst token = segment[tokenIndex];\n\t\t\tlet subSegmentScore = 40 + (options.sensitive ? .25 : 0);\n\t\t\tif (token.type === 0) {\n\t\t\t\tif (!tokenIndex) pattern += \"/\";\n\t\t\t\tpattern += token.value.replace(REGEX_CHARS_RE, \"\\\\$&\");\n\t\t\t\tsubSegmentScore += 40;\n\t\t\t} else if (token.type === 1) {\n\t\t\t\tconst { value, repeatable, optional, regexp } = token;\n\t\t\t\tkeys.push({\n\t\t\t\t\tname: value,\n\t\t\t\t\trepeatable,\n\t\t\t\t\toptional\n\t\t\t\t});\n\t\t\t\tconst re = regexp ? regexp : BASE_PARAM_PATTERN;\n\t\t\t\tif (re !== BASE_PARAM_PATTERN) {\n\t\t\t\t\tsubSegmentScore += 10;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tnew RegExp(`(${re})`);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tthrow new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` + err.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n\t\t\t\tif (!tokenIndex) subPattern = optional && segment.length < 2 ? `(?:/${subPattern})` : \"/\" + subPattern;\n\t\t\t\tif (optional) subPattern += \"?\";\n\t\t\t\tpattern += subPattern;\n\t\t\t\tsubSegmentScore += 20;\n\t\t\t\tif (optional) subSegmentScore += -8;\n\t\t\t\tif (repeatable) subSegmentScore += -20;\n\t\t\t\tif (re === \".*\") subSegmentScore += -50;\n\t\t\t}\n\t\t\tsegmentScores.push(subSegmentScore);\n\t\t}\n\t\tscore.push(segmentScores);\n\t}\n\tif (options.strict && options.end) {\n\t\tconst i = score.length - 1;\n\t\tscore[i][score[i].length - 1] += .7000000000000001;\n\t}\n\tif (!options.strict) pattern += \"/?\";\n\tif (options.end) pattern += \"$\";\n\telse if (options.strict && !pattern.endsWith(\"/\")) pattern += \"(?:/|$)\";\n\tconst re = new RegExp(pattern, options.sensitive ? \"\" : \"i\");\n\tfunction parse(path) {\n\t\tconst match = path.match(re);\n\t\tconst params = {};\n\t\tif (!match) return null;\n\t\tfor (let i = 1; i < match.length; i++) {\n\t\t\tconst value = match[i] || \"\";\n\t\t\tconst key = keys[i - 1];\n\t\t\tparams[key.name] = value && key.repeatable ? value.split(\"/\") : value;\n\t\t}\n\t\treturn params;\n\t}\n\tfunction stringify(params) {\n\t\tlet path = \"\";\n\t\tlet avoidDuplicatedSlash = false;\n\t\tfor (const segment of segments) {\n\t\t\tif (!avoidDuplicatedSlash || !path.endsWith(\"/\")) path += \"/\";\n\t\t\tavoidDuplicatedSlash = false;\n\t\t\tfor (const token of segment) if (token.type === 0) path += token.value;\n\t\t\telse if (token.type === 1) {\n\t\t\t\tconst { value, repeatable, optional } = token;\n\t\t\t\tconst param = value in params ? params[value] : \"\";\n\t\t\t\tif (isArray(param) && !repeatable) throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n\t\t\t\tconst text = isArray(param) ? param.join(\"/\") : param;\n\t\t\t\tif (!text) {\n\t\t\t\t\tif (optional) {\n\t\t\t\t\t\tif (segment.length < 2) {\n\t\t\t\t\t\t\tif (path.endsWith(\"/\")) path = path.slice(0, -1);\n\t\t\t\t\t\t\telse avoidDuplicatedSlash = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else throw new Error(`Missing required param \"${value}\"`);\n\t\t\t\t}\n\t\t\t\tpath += text;\n\t\t\t}\n\t\t}\n\t\treturn path || \"/\";\n\t}\n\treturn {\n\t\tre,\n\t\tscore,\n\t\tkeys,\n\t\tparse,\n\t\tstringify\n\t};\n}\n/**\n* Compares an array of numbers as used in PathParser.score and returns a\n* number. This function can be used to `sort` an array\n*\n* @param a - first array of numbers\n* @param b - second array of numbers\n* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n* should be sorted first\n*/\nfunction compareScoreArray(a, b) {\n\tlet i = 0;\n\twhile (i < a.length && i < b.length) {\n\t\tconst diff = b[i] - a[i];\n\t\tif (diff) return diff;\n\t\ti++;\n\t}\n\tif (a.length < b.length) return a.length === 1 && a[0] === 80 ? -1 : 1;\n\telse if (a.length > b.length) return b.length === 1 && b[0] === 80 ? 1 : -1;\n\treturn 0;\n}\n/**\n* Compare function that can be used with `sort` to sort an array of PathParser\n*\n* @param a - first PathParser\n* @param b - second PathParser\n* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n*/\nfunction comparePathParserScore(a, b) {\n\tlet i = 0;\n\tconst aScore = a.score;\n\tconst bScore = b.score;\n\twhile (i < aScore.length && i < bScore.length) {\n\t\tconst comp = compareScoreArray(aScore[i], bScore[i]);\n\t\tif (comp) return comp;\n\t\ti++;\n\t}\n\tif (Math.abs(bScore.length - aScore.length) === 1) {\n\t\tif (isLastScoreNegative(aScore)) return 1;\n\t\tif (isLastScoreNegative(bScore)) return -1;\n\t}\n\treturn bScore.length - aScore.length;\n}\n/**\n* This allows detecting splats at the end of a path: /home/:id(.*)*\n*\n* @param score - score to check\n* @returns true if the last entry is negative\n*/\nfunction isLastScoreNegative(score) {\n\tconst last = score[score.length - 1];\n\treturn score.length > 0 && last[last.length - 1] < 0;\n}\nconst PATH_PARSER_OPTIONS_DEFAULTS = {\n\tstrict: false,\n\tend: true,\n\tsensitive: false\n};\n//#endregion\n//#region src/matcher/pathMatcher.ts\nfunction createRouteRecordMatcher(record, parent, options) {\n\tconst parser = tokensToParser(tokenizePath(record.path), options);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst existingKeys = /* @__PURE__ */ new Set();\n\t\tfor (const key of parser.keys) {\n\t\t\tif (existingKeys.has(key.name)) diagnostics.VUE_ROUTER_R0090({\n\t\t\t\tname: key.name,\n\t\t\t\tpath: record.path\n\t\t\t});\n\t\t\texistingKeys.add(key.name);\n\t\t}\n\t}\n\tconst matcher = assign(parser, {\n\t\trecord,\n\t\tparent,\n\t\tchildren: [],\n\t\talias: []\n\t});\n\tif (parent) {\n\t\tif (!matcher.record.aliasOf === !parent.record.aliasOf) parent.children.push(matcher);\n\t}\n\treturn matcher;\n}\n//#endregion\n//#region src/matcher/index.ts\n/**\n* Creates a Router Matcher.\n*\n* @internal\n* @param routes - array of initial routes\n* @param globalOptions - global route options\n*/\nfunction createRouterMatcher(routes, globalOptions) {\n\tconst matchers = [];\n\tconst matcherMap = /* @__PURE__ */ new Map();\n\tglobalOptions = mergeOptions(PATH_PARSER_OPTIONS_DEFAULTS, globalOptions);\n\tfunction getRecordMatcher(name) {\n\t\treturn matcherMap.get(name);\n\t}\n\tfunction addRoute(record, parent, originalRecord) {\n\t\tconst isRootAdd = !originalRecord;\n\t\tconst mainNormalizedRecord = normalizeRouteRecord(record);\n\t\tif (process.env.NODE_ENV !== \"production\") checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n\t\tmainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n\t\tconst options = mergeOptions(globalOptions, record);\n\t\tconst normalizedRecords = [mainNormalizedRecord];\n\t\tif (\"alias\" in record) {\n\t\t\tconst aliases = typeof record.alias === \"string\" ? [record.alias] : record.alias;\n\t\t\tfor (const alias of aliases) normalizedRecords.push(normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n\t\t\t\tcomponents: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,\n\t\t\t\tpath: alias,\n\t\t\t\taliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord\n\t\t\t})));\n\t\t}\n\t\tlet matcher;\n\t\tlet originalMatcher;\n\t\tfor (const normalizedRecord of normalizedRecords) {\n\t\t\tconst { path } = normalizedRecord;\n\t\t\tif (parent && !isAbsolutePath(path)) {\n\t\t\t\tconst parentPath = parent.record.path;\n\t\t\t\tconst connectingSlash = parentPath[parentPath.length - 1] === \"/\" ? \"\" : \"/\";\n\t\t\t\tnormalizedRecord.path = parent.record.path + (path && connectingSlash + path);\n\t\t\t}\n\t\t\tif (process.env.NODE_ENV !== \"production\" && normalizedRecord.path === \"*\") throw new Error(\"Catch all routes (\\\"*\\\") must now be defined using a param with a custom regexp.\\nSee more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.\");\n\t\t\tmatcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n\t\t\tif (process.env.NODE_ENV !== \"production\" && parent && isAbsolutePath(path)) checkMissingParamsInAbsolutePath(matcher, parent);\n\t\t\tif (originalRecord) {\n\t\t\t\toriginalRecord.alias.push(matcher);\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") checkSameParams(originalRecord, matcher);\n\t\t\t} else {\n\t\t\t\toriginalMatcher = originalMatcher || matcher;\n\t\t\t\tif (originalMatcher !== matcher) originalMatcher.alias.push(matcher);\n\t\t\t\tif (isRootAdd && record.name && !isAliasRecord(matcher)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") checkSameNameAsAncestor(record, parent);\n\t\t\t\t\tremoveRoute(record.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isMatchable(matcher)) insertMatcher(matcher);\n\t\t\tif (mainNormalizedRecord.children) {\n\t\t\t\tconst children = mainNormalizedRecord.children;\n\t\t\t\tfor (let i = 0; i < children.length; i++) addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n\t\t\t}\n\t\t\toriginalRecord = originalRecord || matcher;\n\t\t}\n\t\treturn originalMatcher ? () => {\n\t\t\tremoveRoute(originalMatcher);\n\t\t} : noop;\n\t}\n\tfunction removeRoute(matcherRef) {\n\t\tif (isRouteName(matcherRef)) {\n\t\t\tconst matcher = matcherMap.get(matcherRef);\n\t\t\tif (matcher) {\n\t\t\t\tmatcherMap.delete(matcherRef);\n\t\t\t\tmatchers.splice(matchers.indexOf(matcher), 1);\n\t\t\t\tmatcher.children.forEach(removeRoute);\n\t\t\t\tmatcher.alias.forEach(removeRoute);\n\t\t\t}\n\t\t} else {\n\t\t\tconst index = matchers.indexOf(matcherRef);\n\t\t\tif (index > -1) {\n\t\t\t\tmatchers.splice(index, 1);\n\t\t\t\tif (matcherRef.record.name) matcherMap.delete(matcherRef.record.name);\n\t\t\t\tmatcherRef.children.forEach(removeRoute);\n\t\t\t\tmatcherRef.alias.forEach(removeRoute);\n\t\t\t}\n\t\t}\n\t}\n\tfunction getRoutes() {\n\t\treturn matchers;\n\t}\n\tfunction insertMatcher(matcher) {\n\t\tconst index = findInsertionIndex(matcher, matchers);\n\t\tmatchers.splice(index, 0, matcher);\n\t\tif (matcher.record.name && !isAliasRecord(matcher)) matcherMap.set(matcher.record.name, matcher);\n\t}\n\tfunction resolve(location, currentLocation) {\n\t\tlet matcher;\n\t\tlet params = {};\n\t\tlet path;\n\t\tlet name;\n\t\tif (\"name\" in location && location.name) {\n\t\t\tmatcher = matcherMap.get(location.name);\n\t\t\tif (!matcher) throw createRouterError(1, { location });\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tconst invalidParams = Object.keys(location.params || {}).filter((paramName) => !matcher.keys.find((k) => k.name === paramName));\n\t\t\t\tif (invalidParams.length) {\n\t\t\t\t\tconst isInherited = !matcher.keys.length && invalidParams.some((name) => name in currentLocation.params);\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0100({\n\t\t\t\t\t\tparams: invalidParams.join(\"\\\", \\\"\"),\n\t\t\t\t\t\tinherited: isInherited ? ` If you are using a catch-all route with a named redirect, pass an empty \\`params\\` object: \\`redirect: { name: '...', params: {} }\\`.` : \"\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tname = matcher.record.name;\n\t\t\tparams = assign(pickParams(currentLocation.params, matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)), location.params && pickParams(location.params, matcher.keys.map((k) => k.name)));\n\t\t\tpath = matcher.stringify(params);\n\t\t} else if (location.path != null) {\n\t\t\tpath = location.path;\n\t\t\tif (process.env.NODE_ENV !== \"production\" && !isAbsolutePath(path)) diagnostics.VUE_ROUTER_R0101({ path });\n\t\t\tmatcher = matchers.find((m) => m.re.test(path));\n\t\t\tif (matcher) {\n\t\t\t\tparams = matcher.parse(path);\n\t\t\t\tname = matcher.record.name;\n\t\t\t\tmatcher.keys.forEach((key) => {\n\t\t\t\t\tif (key.optional && !params[key.name]) delete params[key.name];\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tmatcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path));\n\t\t\tif (!matcher) throw createRouterError(1, {\n\t\t\t\tlocation,\n\t\t\t\tcurrentLocation\n\t\t\t});\n\t\t\tname = matcher.record.name;\n\t\t\tparams = assign({}, currentLocation.params, location.params);\n\t\t\tpath = matcher.stringify(params);\n\t\t}\n\t\tconst matched = [];\n\t\tlet parentMatcher = matcher;\n\t\twhile (parentMatcher) {\n\t\t\tmatched.unshift(parentMatcher.record);\n\t\t\tparentMatcher = parentMatcher.parent;\n\t\t}\n\t\treturn {\n\t\t\tname,\n\t\t\tpath,\n\t\t\tparams,\n\t\t\tmatched,\n\t\t\tmeta: mergeMetaFields(matched)\n\t\t};\n\t}\n\troutes.forEach((route) => addRoute(route));\n\tfunction clearRoutes() {\n\t\tmatchers.length = 0;\n\t\tmatcherMap.clear();\n\t}\n\treturn {\n\t\taddRoute,\n\t\tresolve,\n\t\tremoveRoute,\n\t\tclearRoutes,\n\t\tgetRoutes,\n\t\tgetRecordMatcher\n\t};\n}\n/**\n* Picks an object param to contain only specified keys.\n*\n* @param params - params object to pick from\n* @param keys - keys to pick\n*/\nfunction pickParams(params, keys) {\n\tconst newParams = {};\n\tfor (const key of keys) if (key in params) newParams[key] = params[key];\n\treturn newParams;\n}\n/**\n* Normalizes a RouteRecordRaw. Creates a copy\n*\n* @param record\n* @returns the normalized version\n*/\nfunction normalizeRouteRecord(record) {\n\tconst normalized = {\n\t\tpath: record.path,\n\t\tredirect: record.redirect,\n\t\tname: record.name,\n\t\tmeta: record.meta || {},\n\t\taliasOf: record.aliasOf,\n\t\tbeforeEnter: record.beforeEnter,\n\t\tprops: normalizeRecordProps(record),\n\t\tchildren: record.children || [],\n\t\tinstances: {},\n\t\tleaveGuards: /* @__PURE__ */ new Set(),\n\t\tupdateGuards: /* @__PURE__ */ new Set(),\n\t\tenterCallbacks: {},\n\t\tcomponents: \"components\" in record ? record.components || null : record.component && { default: record.component }\n\t};\n\tObject.defineProperty(normalized, \"mods\", { value: {} });\n\treturn normalized;\n}\n/**\n* Normalize the optional `props` in a record to always be an object similar to\n* components. Also accept a boolean for components.\n* @param record\n*/\nfunction normalizeRecordProps(record) {\n\tconst propsObject = {};\n\tconst props = record.props || false;\n\tif (\"component\" in record) propsObject.default = props;\n\telse for (const name in record.components) propsObject[name] = typeof props === \"object\" ? props[name] : props;\n\treturn propsObject;\n}\n/**\n* Checks if a record or any of its parent is an alias\n* @param record\n*/\nfunction isAliasRecord(record) {\n\twhile (record) {\n\t\tif (record.record.aliasOf) return true;\n\t\trecord = record.parent;\n\t}\n\treturn false;\n}\n/**\n* Merge meta fields of an array of records\n*\n* @param matched - array of matched records\n*/\nfunction mergeMetaFields(matched) {\n\treturn matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction isSameParam(a, b) {\n\treturn a.name === b.name && a.optional === b.optional && a.repeatable === b.repeatable;\n}\n/**\n* Check if a path and its alias have the same required params\n*\n* @param a - original record\n* @param b - alias record\n*/\nfunction checkSameParams(a, b) {\n\tfor (const key of a.keys) if (!key.optional && !b.keys.find(isSameParam.bind(null, key))) {\n\t\tdiagnostics.VUE_ROUTER_R0102({\n\t\t\talias: b.record.path,\n\t\t\toriginal: a.record.path,\n\t\t\tname: key.name\n\t\t});\n\t\treturn;\n\t}\n\tfor (const key of b.keys) if (!key.optional && !a.keys.find(isSameParam.bind(null, key))) {\n\t\tdiagnostics.VUE_ROUTER_R0102({\n\t\t\talias: b.record.path,\n\t\t\toriginal: a.record.path,\n\t\t\tname: key.name\n\t\t});\n\t\treturn;\n\t}\n}\n/**\n* A route with a name and a child with an empty path without a name should warn when adding the route\n*\n* @param mainNormalizedRecord - RouteRecordNormalized\n* @param parent - RouteRecordMatcher\n*/\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n\tif (parent && parent.record.name && !mainNormalizedRecord.name && !mainNormalizedRecord.path && mainNormalizedRecord.children.length === 0) diagnostics.VUE_ROUTER_R0103({ name: String(parent.record.name) });\n}\nfunction checkSameNameAsAncestor(record, parent) {\n\tfor (let ancestor = parent; ancestor; ancestor = ancestor.parent) if (ancestor.record.name === record.name) throw new Error(`A route named \"${String(record.name)}\" has been added as a ${parent === ancestor ? \"child\" : \"descendant\"} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`);\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n\tfor (const key of parent.keys) if (!record.keys.find(isSameParam.bind(null, key))) {\n\t\tdiagnostics.VUE_ROUTER_R0104({\n\t\t\tpath: record.record.path,\n\t\t\tname: key.name,\n\t\t\tparent: parent.record.path\n\t\t});\n\t\treturn;\n\t}\n}\n/**\n* Performs a binary search to find the correct insertion index for a new matcher.\n*\n* Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n* with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n*\n* @param matcher - new matcher to be inserted\n* @param matchers - existing matchers\n*/\nfunction findInsertionIndex(matcher, matchers) {\n\tlet lower = 0;\n\tlet upper = matchers.length;\n\twhile (lower !== upper) {\n\t\tconst mid = lower + upper >> 1;\n\t\tif (comparePathParserScore(matcher, matchers[mid]) < 0) upper = mid;\n\t\telse lower = mid + 1;\n\t}\n\tconst insertionAncestor = getInsertionAncestor(matcher);\n\tif (insertionAncestor) {\n\t\tupper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n\t\tif (process.env.NODE_ENV !== \"production\" && upper < 0) diagnostics.VUE_ROUTER_R0105({\n\t\t\tancestor: insertionAncestor.record.path,\n\t\t\trecord: matcher.record.path\n\t\t});\n\t}\n\treturn upper;\n}\nfunction getInsertionAncestor(matcher) {\n\tlet ancestor = matcher;\n\twhile (ancestor = ancestor.parent) if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) return ancestor;\n}\n/**\n* Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n* a component, or name, or redirect, are just used to group other routes.\n* @param matcher\n* @param matcher.record record of the matcher\n* @returns\n*/\nfunction isMatchable({ record }) {\n\treturn !!(record.name || record.components && Object.keys(record.components).length || record.redirect);\n}\n//#endregion\n//#region src/RouterLink.ts\n/**\n* Returns the internal behavior of a {@link RouterLink} without the rendering part.\n*\n* @param props - a `to` location and an optional `replace` flag\n*/\nfunction useLink(props) {\n\tconst router = inject(routerKey);\n\tconst currentRoute = inject(routeLocationKey);\n\tlet hasPrevious = false;\n\tlet previousTo = null;\n\tconst route = computed(() => {\n\t\tconst to = unref(props.to);\n\t\tif (process.env.NODE_ENV !== \"production\" && (!hasPrevious || to !== previousTo)) {\n\t\t\tif (!isRouteLocation(to)) diagnostics.VUE_ROUTER_R0050({ to });\n\t\t\tpreviousTo = to;\n\t\t\thasPrevious = true;\n\t\t}\n\t\treturn router.resolve(to);\n\t});\n\tconst activeRecordIndex = computed(() => {\n\t\tconst { matched } = route.value;\n\t\tconst { length } = matched;\n\t\tconst routeMatched = matched[length - 1];\n\t\tconst currentMatched = currentRoute.matched;\n\t\tif (!routeMatched || !currentMatched.length) return -1;\n\t\tconst index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n\t\tif (index > -1) return index;\n\t\tconst parentRecordPath = getOriginalPath(matched[length - 2]);\n\t\treturn length > 1 && getOriginalPath(routeMatched) === parentRecordPath && currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index;\n\t});\n\tconst isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));\n\tconst isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));\n\tfunction navigate(e = {}) {\n\t\tif (guardEvent(e)) {\n\t\t\tconst p = router[unref(props.replace) ? \"replace\" : \"push\"](unref(props.to)).catch(noop);\n\t\t\tif (props.viewTransition && typeof document !== \"undefined\" && \"startViewTransition\" in document) document.startViewTransition(() => p);\n\t\t\treturn p;\n\t\t}\n\t\treturn Promise.resolve();\n\t}\n\tif ((process.env.NODE_ENV !== \"production\" || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n\t\tconst instance = getCurrentInstance();\n\t\tif (instance) {\n\t\t\tconst linkContextDevtools = {\n\t\t\t\troute: route.value,\n\t\t\t\tisActive: isActive.value,\n\t\t\t\tisExactActive: isExactActive.value,\n\t\t\t\terror: null\n\t\t\t};\n\t\t\tinstance.__vrl_devtools = instance.__vrl_devtools || [];\n\t\t\tinstance.__vrl_devtools.push(linkContextDevtools);\n\t\t\twatchEffect(() => {\n\t\t\t\tlinkContextDevtools.route = route.value;\n\t\t\t\tlinkContextDevtools.isActive = isActive.value;\n\t\t\t\tlinkContextDevtools.isExactActive = isExactActive.value;\n\t\t\t\tlinkContextDevtools.error = isRouteLocation(unref(props.to)) ? null : \"Invalid \\\"to\\\" value\";\n\t\t\t}, { flush: \"post\" });\n\t\t}\n\t}\n\t/**\n\t* NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n\t*/\n\treturn {\n\t\troute,\n\t\thref: computed(() => route.value.href),\n\t\tisActive,\n\t\tisExactActive,\n\t\tnavigate\n\t};\n}\nfunction preferSingleVNode(vnodes) {\n\treturn vnodes.length === 1 ? vnodes[0] : vnodes;\n}\n/**\n* Component to render a link that triggers a navigation on click.\n*/\nconst RouterLink = /* @__PURE__ */ defineComponent({\n\tname: \"RouterLink\",\n\tcompatConfig: { MODE: 3 },\n\tprops: {\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\trequired: true\n\t\t},\n\t\treplace: Boolean,\n\t\tactiveClass: String,\n\t\texactActiveClass: String,\n\t\tcustom: Boolean,\n\t\tariaCurrentValue: {\n\t\t\ttype: String,\n\t\t\tdefault: \"page\"\n\t\t},\n\t\tviewTransition: Boolean\n\t},\n\tuseLink,\n\tsetup(props, { slots }) {\n\t\tconst link = reactive(useLink(props));\n\t\tconst { options } = inject(routerKey);\n\t\tconst elClass = computed(() => ({\n\t\t\t[getLinkClass(props.activeClass, options.linkActiveClass, \"router-link-active\")]: link.isActive,\n\t\t\t[getLinkClass(props.exactActiveClass, options.linkExactActiveClass, \"router-link-exact-active\")]: link.isExactActive\n\t\t}));\n\t\treturn () => {\n\t\t\tconst children = slots.default && preferSingleVNode(slots.default(link));\n\t\t\treturn props.custom ? children : h(\"a\", {\n\t\t\t\t\"aria-current\": link.isExactActive ? props.ariaCurrentValue : null,\n\t\t\t\thref: link.href,\n\t\t\t\tonClick: link.navigate,\n\t\t\t\tclass: elClass.value\n\t\t\t}, children);\n\t\t};\n\t}\n});\nfunction guardEvent(e) {\n\tif (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;\n\tif (e.defaultPrevented) return;\n\tif (e.button !== void 0 && e.button !== 0) return;\n\tif (e.currentTarget && e.currentTarget.getAttribute) {\n\t\tconst target = e.currentTarget.getAttribute(\"target\");\n\t\tif (/\\b_blank\\b/i.test(target)) return;\n\t}\n\tif (e.preventDefault) e.preventDefault();\n\treturn true;\n}\nfunction includesParams(outer, inner) {\n\tfor (const key in inner) {\n\t\tconst innerValue = inner[key];\n\t\tconst outerValue = outer[key];\n\t\tif (isArray(innerValue)) {\n\t\t\tif (!isArray(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i) => value.valueOf() !== outerValue[i].valueOf())) return false;\n\t\t} else if (innerValue !== outerValue) return false;\n\t}\n\treturn true;\n}\n/**\n* Get the original path value of a record by following its aliasOf\n* @param record\n*/\nfunction getOriginalPath(record) {\n\treturn record ? record.aliasOf ? record.aliasOf.path : record.path : \"\";\n}\n/**\n* Utility class to get the active class based on defaults.\n* @param propClass\n* @param globalClass\n* @param defaultClass\n*/\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;\n//#endregion\n//#region src/RouterView.ts\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n\tname: \"RouterView\",\n\tinheritAttrs: false,\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: \"default\"\n\t\t},\n\t\troute: Object\n\t},\n\tcompatConfig: { MODE: 3 },\n\tsetup(props, { attrs, slots }) {\n\t\tprocess.env.NODE_ENV !== \"production\" && warnDeprecatedUsage();\n\t\tconst injectedRoute = inject(routerViewLocationKey);\n\t\tconst routeToDisplay = computed(() => props.route || injectedRoute.value);\n\t\tconst injectedDepth = inject(viewDepthKey, 0);\n\t\tconst depth = computed(() => {\n\t\t\tlet initialDepth = unref(injectedDepth);\n\t\t\tconst { matched } = routeToDisplay.value;\n\t\t\tlet matchedRoute;\n\t\t\twhile ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) initialDepth++;\n\t\t\treturn initialDepth;\n\t\t});\n\t\tconst matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n\t\tprovide(viewDepthKey, computed(() => depth.value + 1));\n\t\tprovide(matchedRouteKey, matchedRouteRef);\n\t\tprovide(routerViewLocationKey, routeToDisplay);\n\t\tconst onRouteRenderedCallbacks = /* @__PURE__ */ new Set();\n\t\tprovide(routerViewOnRouteRenderedKey, onRouteRenderedCallbacks);\n\t\tconst viewRef = ref();\n\t\tlet settledRoute = START_LOCATION_NORMALIZED;\n\t\tconst { app } = getCurrentInstance().appContext;\n\t\twatch(() => [\n\t\t\tviewRef.value,\n\t\t\tmatchedRouteRef.value,\n\t\t\tprops.name\n\t\t], ([instance, to, name], [oldInstance, from, _oldName]) => {\n\t\t\tif (to) {\n\t\t\t\tto.instances[name] = instance;\n\t\t\t\tif (from && from !== to && instance && instance === oldInstance) {\n\t\t\t\t\tif (!to.leaveGuards.size) to.leaveGuards = from.leaveGuards;\n\t\t\t\t\tif (!to.updateGuards.size) to.updateGuards = from.updateGuards;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (instance && to && (!from || !isSameRouteRecord(to, from) || !oldInstance)) (to.enterCallbacks[name] || []).forEach((callback) => callback(instance));\n\t\t}, { flush: \"post\" });\n\t\treturn () => {\n\t\t\tconst route = routeToDisplay.value;\n\t\t\tconst currentName = props.name;\n\t\t\tconst matchedRoute = matchedRouteRef.value;\n\t\t\tconst ViewComponent = matchedRoute && matchedRoute.components[currentName];\n\t\t\tif (!ViewComponent) return normalizeSlot(slots.default, {\n\t\t\t\tComponent: ViewComponent,\n\t\t\t\troute\n\t\t\t});\n\t\t\tconst routePropsOption = matchedRoute.props[currentName];\n\t\t\tconst routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === \"function\" ? routePropsOption(route) : routePropsOption : null;\n\t\t\tconst onVnodeUnmounted = (vnode) => {\n\t\t\t\tif (vnode.component.isUnmounted) matchedRoute.instances[currentName] = null;\n\t\t\t};\n\t\t\tconst onVnodeSettled = (vnode) => nextTick(() => {\n\t\t\t\tif (settledRoute === route || routeToDisplay.value !== route || vnode.el.getRootNode() !== app._container.getRootNode()) return;\n\t\t\t\tconst from = settledRoute;\n\t\t\t\tsettledRoute = route;\n\t\t\t\tfor (const callback of onRouteRenderedCallbacks) callback(route, from);\n\t\t\t});\n\t\t\tconst component = h(ViewComponent, assign({}, routeProps, attrs, {\n\t\t\t\tonVnodeUnmounted,\n\t\t\t\tonVnodeMounted: onVnodeSettled,\n\t\t\t\tonVnodeUpdated: onVnodeSettled,\n\t\t\t\tref: viewRef\n\t\t\t}));\n\t\t\tif ((process.env.NODE_ENV !== \"production\" || __VUE_PROD_DEVTOOLS__) && isBrowser && component.ref) {\n\t\t\t\tconst info = {\n\t\t\t\t\tdepth: depth.value,\n\t\t\t\t\tname: matchedRoute.name,\n\t\t\t\t\tpath: matchedRoute.path,\n\t\t\t\t\tmeta: matchedRoute.meta\n\t\t\t\t};\n\t\t\t\t(isArray(component.ref) ? component.ref.map((r) => r.i) : [component.ref.i]).forEach((instance) => {\n\t\t\t\t\tif (instance) instance.__vrv_devtools = info;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn normalizeSlot(slots.default, {\n\t\t\t\tComponent: component,\n\t\t\t\troute\n\t\t\t}) || component;\n\t\t};\n\t}\n});\nfunction normalizeSlot(slot, data) {\n\tif (!slot) return null;\n\tconst slotContent = slot(data);\n\treturn slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n/**\n* Component to display the current route the user is at.\n*/\nconst RouterView = RouterViewImpl;\nfunction warnDeprecatedUsage() {\n\tconst instance = getCurrentInstance();\n\tconst parentName = instance.parent && instance.parent.type.name;\n\tconst parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n\tif (parentName && (parentName === \"KeepAlive\" || parentName.includes(\"Transition\")) && typeof parentSubTreeType === \"object\" && parentSubTreeType.name === \"RouterView\") {\n\t\tconst comp = parentName === \"KeepAlive\" ? \"keep-alive\" : \"transition\";\n\t\tdiagnostics.VUE_ROUTER_R0060({ comp });\n\t}\n}\n//#endregion\n//#region src/router.ts\n/**\n* Creates a Router instance that can be used by a Vue app.\n*\n* @param options - {@link RouterOptions}\n*/\nfunction createRouter(options) {\n\tconst matcher = options.matcher || createRouterMatcher(options.routes, options);\n\tconst parseQuery$1 = options.parseQuery || parseQuery;\n\tconst stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n\tconst routerHistory = options.history;\n\tif (process.env.NODE_ENV !== \"production\" && !routerHistory) throw new Error(\"Provide the \\\"history\\\" option when calling \\\"createRouter()\\\": https://router.vuejs.org/api/interfaces/RouterOptions.html#history\");\n\tconst beforeGuards = useCallbacks();\n\tconst beforeResolveGuards = useCallbacks();\n\tconst afterGuards = useCallbacks();\n\tconst currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n\tconst routesVersion = shallowRef(0);\n\tlet pendingLocation = START_LOCATION_NORMALIZED;\n\tif (isBrowser && options.scrollBehavior && \"scrollRestoration\" in history) history.scrollRestoration = \"manual\";\n\tconst normalizeParams = applyToParams.bind(null, (paramValue) => \"\" + paramValue);\n\tconst encodeParams = applyToParams.bind(null, encodeParam);\n\tconst decodeParams = applyToParams.bind(null, decode);\n\tfunction addRoute(parentOrRoute, route) {\n\t\tlet parent;\n\t\tlet record;\n\t\tif (isRouteName(parentOrRoute)) {\n\t\t\tparent = matcher.getRecordMatcher(parentOrRoute);\n\t\t\tif (process.env.NODE_ENV !== \"production\" && !parent) diagnostics.VUE_ROUTER_R0001({ name: String(parentOrRoute) });\n\t\t\trecord = route;\n\t\t} else record = parentOrRoute;\n\t\tconst removeRoute = matcher.addRoute(record, parent);\n\t\troutesVersion.value++;\n\t\treturn () => {\n\t\t\tremoveRoute();\n\t\t\troutesVersion.value++;\n\t\t};\n\t}\n\tfunction removeRoute(name) {\n\t\tconst recordMatcher = matcher.getRecordMatcher(name);\n\t\tif (recordMatcher) {\n\t\t\tmatcher.removeRoute(recordMatcher);\n\t\t\troutesVersion.value++;\n\t\t} else if (process.env.NODE_ENV !== \"production\") diagnostics.VUE_ROUTER_R0002({ name: String(name) });\n\t}\n\tfunction clearRoutes() {\n\t\tmatcher.clearRoutes();\n\t\troutesVersion.value++;\n\t}\n\tfunction getRoutes() {\n\t\treturn matcher.getRoutes().map((routeMatcher) => routeMatcher.record);\n\t}\n\tfunction hasRoute(name) {\n\t\treturn !!matcher.getRecordMatcher(name);\n\t}\n\tfunction resolve(rawLocation, currentLocation) {\n\t\troutesVersion.value;\n\t\tif (typeof rawLocation === \"string\") {\n\t\t\tcurrentLocation = currentLocation || (rawLocation.startsWith(\"/\") ? START_LOCATION_NORMALIZED : currentRoute.value);\n\t\t\tconst locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n\t\t\tconst matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n\t\t\tconst href = routerHistory.createHref(locationNormalized.fullPath);\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (href.startsWith(\"//\")) diagnostics.VUE_ROUTER_R0003({\n\t\t\t\t\tlocation: rawLocation,\n\t\t\t\t\thref\n\t\t\t\t});\n\t\t\t\telse if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation });\n\t\t\t}\n\t\t\treturn assign(locationNormalized, matchedRoute, {\n\t\t\t\tparams: decodeParams(matchedRoute.params),\n\t\t\t\tredirectedFrom: void 0,\n\t\t\t\thref\n\t\t\t});\n\t\t}\n\t\tif (process.env.NODE_ENV !== \"production\" && !isRouteLocation(rawLocation)) {\n\t\t\tdiagnostics.VUE_ROUTER_R0005({ rawLocation });\n\t\t\treturn resolve({});\n\t\t}\n\t\tcurrentLocation = assign({}, currentLocation || (rawLocation.path != null && rawLocation.path.startsWith(\"/\") && !(\"name\" in rawLocation && rawLocation.name) ? START_LOCATION_NORMALIZED : currentRoute.value));\n\t\tlet matcherLocation;\n\t\tif (rawLocation.path != null) {\n\t\t\tif (process.env.NODE_ENV !== \"production\" && \"params\" in rawLocation && !(\"name\" in rawLocation) && Object.keys(rawLocation.params).length) diagnostics.VUE_ROUTER_R0006({ path: rawLocation.path });\n\t\t\tmatcherLocation = assign({}, rawLocation, { path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path });\n\t\t} else {\n\t\t\tconst targetParams = assign({}, rawLocation.params);\n\t\t\tfor (const key in targetParams) if (targetParams[key] == null) delete targetParams[key];\n\t\t\tmatcherLocation = assign({}, rawLocation, { params: encodeParams(targetParams) });\n\t\t\tcurrentLocation.params = encodeParams(currentLocation.params);\n\t\t}\n\t\tconst matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n\t\tconst hash = rawLocation.hash || \"\";\n\t\tif (process.env.NODE_ENV !== \"production\" && hash && !hash.startsWith(\"#\")) diagnostics.VUE_ROUTER_R0007({ hash });\n\t\tmatchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n\t\tconst fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n\t\t\thash: encodeHash(hash),\n\t\t\tpath: matchedRoute.path\n\t\t}));\n\t\tconst href = routerHistory.createHref(fullPath);\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (href.startsWith(\"//\")) diagnostics.VUE_ROUTER_R0003({\n\t\t\t\tlocation: rawLocation,\n\t\t\t\thref\n\t\t\t});\n\t\t\telse if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation.path != null ? rawLocation.path : rawLocation });\n\t\t}\n\t\treturn assign({\n\t\t\tfullPath,\n\t\t\thash,\n\t\t\tquery: stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}\n\t\t}, matchedRoute, {\n\t\t\tredirectedFrom: void 0,\n\t\t\thref\n\t\t});\n\t}\n\tfunction locationAsObject(to) {\n\t\treturn typeof to === \"string\" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to);\n\t}\n\tfunction checkCanceledNavigation(to, from) {\n\t\tif (pendingLocation !== to) return createRouterError(8, {\n\t\t\tfrom,\n\t\t\tto\n\t\t});\n\t}\n\tfunction push(to) {\n\t\treturn pushWithRedirect(to);\n\t}\n\tfunction replace(to) {\n\t\treturn push(assign(locationAsObject(to), { replace: true }));\n\t}\n\tfunction handleRedirectRecord(to, from) {\n\t\tconst lastMatched = to.matched[to.matched.length - 1];\n\t\tif (lastMatched && lastMatched.redirect) {\n\t\t\tconst { redirect } = lastMatched;\n\t\t\tlet newTargetLocation = typeof redirect === \"function\" ? redirect(to, from) : redirect;\n\t\t\tif (typeof newTargetLocation === \"string\") {\n\t\t\t\tnewTargetLocation = newTargetLocation.includes(\"?\") || newTargetLocation.includes(\"#\") ? newTargetLocation = locationAsObject(newTargetLocation) : { path: newTargetLocation };\n\t\t\t\tnewTargetLocation.params = {};\n\t\t\t}\n\t\t\tif (process.env.NODE_ENV !== \"production\" && newTargetLocation.path == null && !(\"name\" in newTargetLocation)) {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0008({\n\t\t\t\t\ttarget: JSON.stringify(newTargetLocation, null, 2),\n\t\t\t\t\tto: to.fullPath\n\t\t\t\t});\n\t\t\t\tthrow new Error(\"Invalid redirect\");\n\t\t\t}\n\t\t\treturn assign({\n\t\t\t\tquery: to.query,\n\t\t\t\thash: to.hash,\n\t\t\t\tparams: newTargetLocation.path != null ? {} : to.params\n\t\t\t}, newTargetLocation);\n\t\t}\n\t}\n\tfunction pushWithRedirect(to, redirectedFrom) {\n\t\tconst targetLocation = pendingLocation = resolve(to);\n\t\tconst from = currentRoute.value;\n\t\tconst data = to.state;\n\t\tconst force = to.force;\n\t\tconst replace = to.replace === true;\n\t\tconst shouldRedirect = handleRedirectRecord(targetLocation, from);\n\t\tif (shouldRedirect) return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n\t\t\tstate: typeof shouldRedirect === \"object\" ? assign({}, data, shouldRedirect.state) : data,\n\t\t\tforce,\n\t\t\treplace\n\t\t}), redirectedFrom || targetLocation);\n\t\tconst toLocation = targetLocation;\n\t\ttoLocation.redirectedFrom = redirectedFrom;\n\t\tlet failure;\n\t\tif (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n\t\t\tfailure = createRouterError(16, {\n\t\t\t\tto: toLocation,\n\t\t\t\tfrom\n\t\t\t});\n\t\t\thandleScroll(from, from, true, false);\n\t\t}\n\t\treturn (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? isNavigationFailure(error, 2) ? error : markAsReady(error) : triggerError(error, toLocation, from)).then((failure) => {\n\t\t\tif (failure) {\n\t\t\t\tif (isNavigationFailure(failure, 2)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\" && isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) && redirectedFrom && (redirectedFrom._count = redirectedFrom._count ? redirectedFrom._count + 1 : 1) > 30) {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0009({\n\t\t\t\t\t\t\tfrom: from.fullPath,\n\t\t\t\t\t\t\tto: toLocation.fullPath\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Infinite redirect in navigation guard\"));\n\t\t\t\t\t}\n\t\t\t\t\treturn pushWithRedirect(assign({ replace }, locationAsObject(failure.to), {\n\t\t\t\t\t\tstate: typeof failure.to === \"object\" ? assign({}, data, failure.to.state) : data,\n\t\t\t\t\t\tforce\n\t\t\t\t\t}), redirectedFrom || toLocation);\n\t\t\t\t}\n\t\t\t} else failure = finalizeNavigation(toLocation, from, true, replace, data);\n\t\t\ttriggerAfterEach(toLocation, from, failure);\n\t\t\treturn failure;\n\t\t});\n\t}\n\t/**\n\t* Helper to reject and skip all navigation guards if a new navigation happened\n\t* @param to\n\t* @param from\n\t*/\n\tfunction checkCanceledNavigationAndReject(to, from) {\n\t\tconst error = checkCanceledNavigation(to, from);\n\t\treturn error ? Promise.reject(error) : Promise.resolve();\n\t}\n\tfunction runWithContext(fn) {\n\t\tconst app = installedApps.values().next().value;\n\t\treturn app && typeof app.runWithContext === \"function\" ? app.runWithContext(fn) : fn();\n\t}\n\tfunction navigate(to, from) {\n\t\tlet guards;\n\t\tconst [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n\t\tguards = extractComponentsGuards(leavingRecords.reverse(), \"beforeRouteLeave\", to, from);\n\t\tfor (const record of leavingRecords) record.leaveGuards.forEach((guard) => {\n\t\t\tguards.push(guardToPromiseFn(guard, to, from));\n\t\t});\n\t\tconst canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n\t\tguards.push(canceledNavigationCheck);\n\t\treturn runGuardQueue(guards).then(() => {\n\t\t\tguards = [];\n\t\t\tfor (const guard of beforeGuards.list()) guards.push(guardToPromiseFn(guard, to, from));\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards);\n\t\t}).then(() => {\n\t\t\tguards = extractComponentsGuards(updatingRecords, \"beforeRouteUpdate\", to, from);\n\t\t\tfor (const record of updatingRecords) record.updateGuards.forEach((guard) => {\n\t\t\t\tguards.push(guardToPromiseFn(guard, to, from));\n\t\t\t});\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards);\n\t\t}).then(() => {\n\t\t\tguards = [];\n\t\t\tfor (const record of enteringRecords) if (record.beforeEnter) {\n\t\t\t\tif (isArray(record.beforeEnter)) for (const beforeEnter of record.beforeEnter) guards.push(guardToPromiseFn(beforeEnter, to, from));\n\t\t\t\telse guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n\t\t\t}\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards);\n\t\t}).then(() => {\n\t\t\tto.matched.forEach((record) => record.enterCallbacks = {});\n\t\t\tguards = extractComponentsGuards(enteringRecords, \"beforeRouteEnter\", to, from, runWithContext);\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards);\n\t\t}).then(() => {\n\t\t\tguards = [];\n\t\t\tfor (const guard of beforeResolveGuards.list()) guards.push(guardToPromiseFn(guard, to, from));\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards);\n\t\t}).catch((err) => isNavigationFailure(err, 8) ? err : Promise.reject(err));\n\t}\n\tfunction triggerAfterEach(to, from, failure) {\n\t\tafterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure)));\n\t}\n\t/**\n\t* - Cleans up any navigation guards\n\t* - Changes the url if necessary\n\t* - Calls the scrollBehavior\n\t*/\n\tfunction finalizeNavigation(toLocation, from, isPush, replace, data) {\n\t\tconst error = checkCanceledNavigation(toLocation, from);\n\t\tif (error) return error;\n\t\tconst isFirstNavigation = from === START_LOCATION_NORMALIZED;\n\t\tconst state = !isBrowser ? {} : history.state;\n\t\tif (isPush) {\n\t\t\tif (replace || isFirstNavigation) routerHistory.replace(toLocation.fullPath, assign({ scroll: isFirstNavigation && state && state.scroll }, data));\n\t\t\telse routerHistory.push(toLocation.fullPath, data);\n\t\t}\n\t\tcurrentRoute.value = toLocation;\n\t\thandleScroll(toLocation, from, isPush, isFirstNavigation);\n\t\tmarkAsReady();\n\t}\n\tlet removeHistoryListener;\n\tfunction setupListeners() {\n\t\tif (removeHistoryListener) return;\n\t\tremoveHistoryListener = routerHistory.listen((to, _from, info) => {\n\t\t\tif (!router.listening) return;\n\t\t\tconst toLocation = resolve(to);\n\t\t\tconst shouldRedirect = handleRedirectRecord(toLocation, router.currentRoute.value);\n\t\t\tif (shouldRedirect) {\n\t\t\t\tpushWithRedirect(assign(shouldRedirect, {\n\t\t\t\t\treplace: true,\n\t\t\t\t\tforce: true\n\t\t\t\t}), toLocation).catch(noop);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpendingLocation = toLocation;\n\t\t\tconst from = currentRoute.value;\n\t\t\tif (isBrowser && info.delta) saveScrollPosition(getScrollKey(from.fullPath, info.delta));\n\t\t\tnavigate(toLocation, from).catch((error) => {\n\t\t\t\tif (isNavigationFailure(error, 12)) return error;\n\t\t\t\tif (isNavigationFailure(error, 2)) {\n\t\t\t\t\tpushWithRedirect(assign(locationAsObject(error.to), { force: true }), toLocation).then((failure) => {\n\t\t\t\t\t\tif (isNavigationFailure(failure, 20) && !info.delta && info.type === \"pop\") routerHistory.go(-1, false);\n\t\t\t\t\t}).catch(noop);\n\t\t\t\t\treturn Promise.reject();\n\t\t\t\t}\n\t\t\t\tif (info.delta) routerHistory.go(-info.delta, false);\n\t\t\t\treturn triggerError(error, toLocation, from);\n\t\t\t}).then((failure) => {\n\t\t\t\tfailure = failure || finalizeNavigation(toLocation, from, false);\n\t\t\t\tif (failure) {\n\t\t\t\t\tif (info.delta && !isNavigationFailure(failure, 8)) routerHistory.go(-info.delta, false);\n\t\t\t\t\telse if (info.type === \"pop\" && isNavigationFailure(failure, 20)) routerHistory.go(-1, false);\n\t\t\t\t}\n\t\t\t\ttriggerAfterEach(toLocation, from, failure);\n\t\t\t}).catch(noop);\n\t\t});\n\t}\n\tlet readyHandlers = useCallbacks();\n\tlet errorListeners = useCallbacks();\n\tlet ready;\n\t/**\n\t* Trigger errorListeners added via onError and throws the error as well\n\t*\n\t* @param error - error to throw\n\t* @param to - location we were navigating to when the error happened\n\t* @param from - location we were navigating from when the error happened\n\t* @returns the error as a rejected promise\n\t*/\n\tfunction triggerError(error, to, from) {\n\t\tmarkAsReady(error);\n\t\tconst list = errorListeners.list();\n\t\tif (list.length) list.forEach((handler) => handler(error, to, from));\n\t\telse {\n\t\t\tif (process.env.NODE_ENV !== \"production\") diagnostics.VUE_ROUTER_R0010();\n\t\t\tconsole.error(error);\n\t\t}\n\t\treturn Promise.reject(error);\n\t}\n\tfunction isReady() {\n\t\tif (ready && currentRoute.value !== START_LOCATION_NORMALIZED) return Promise.resolve();\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treadyHandlers.add([resolve, reject]);\n\t\t});\n\t}\n\tfunction markAsReady(err) {\n\t\tif (!ready) {\n\t\t\tready = !err;\n\t\t\tsetupListeners();\n\t\t\treadyHandlers.list().forEach(([resolve, reject]) => err ? reject(err) : resolve());\n\t\t\treadyHandlers.reset();\n\t\t}\n\t\treturn err;\n\t}\n\tfunction handleScroll(to, from, isPush, isFirstNavigation) {\n\t\tconst { scrollBehavior } = options;\n\t\tif (!isBrowser || !scrollBehavior) return Promise.resolve();\n\t\tconst scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;\n\t\treturn nextTick().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => to === currentRoute.value && position && scrollToPosition(position)).catch((err) => to === currentRoute.value && triggerError(err, to, from));\n\t}\n\tconst go = (delta) => routerHistory.go(delta);\n\tlet started;\n\tconst installedApps = /* @__PURE__ */ new Set();\n\tconst router = {\n\t\tcurrentRoute,\n\t\tlistening: true,\n\t\taddRoute,\n\t\tremoveRoute,\n\t\tclearRoutes,\n\t\thasRoute,\n\t\tgetRoutes,\n\t\tresolve,\n\t\toptions,\n\t\tpush,\n\t\treplace,\n\t\tgo,\n\t\tback: () => go(-1),\n\t\tforward: () => go(1),\n\t\tbeforeEach: beforeGuards.add,\n\t\tbeforeResolve: beforeResolveGuards.add,\n\t\tafterEach: afterGuards.add,\n\t\tonError: errorListeners.add,\n\t\tisReady,\n\t\tinstall(app) {\n\t\t\tapp.component(\"RouterLink\", RouterLink);\n\t\t\tapp.component(\"RouterView\", RouterView);\n\t\t\tapp.config.globalProperties.$router = router;\n\t\t\tObject.defineProperty(app.config.globalProperties, \"$route\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => unref(currentRoute)\n\t\t\t});\n\t\t\tif (isBrowser && !started && currentRoute.value === START_LOCATION_NORMALIZED) {\n\t\t\t\tstarted = true;\n\t\t\t\tpush(routerHistory.location).catch((err) => {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") diagnostics.VUE_ROUTER_R0011({ cause: err });\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst reactiveRoute = {};\n\t\t\tfor (const key in START_LOCATION_NORMALIZED) Object.defineProperty(reactiveRoute, key, {\n\t\t\t\tget: () => currentRoute.value[key],\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t\tapp.provide(routerKey, router);\n\t\t\tapp.provide(routeLocationKey, shallowReactive(reactiveRoute));\n\t\t\tapp.provide(routerViewLocationKey, currentRoute);\n\t\t\tconst unmountApp = app.unmount;\n\t\t\tinstalledApps.add(app);\n\t\t\tapp.unmount = function() {\n\t\t\t\tinstalledApps.delete(app);\n\t\t\t\tif (installedApps.size < 1) {\n\t\t\t\t\tpendingLocation = START_LOCATION_NORMALIZED;\n\t\t\t\t\tremoveHistoryListener && removeHistoryListener();\n\t\t\t\t\tremoveHistoryListener = null;\n\t\t\t\t\tcurrentRoute.value = START_LOCATION_NORMALIZED;\n\t\t\t\t\tstarted = false;\n\t\t\t\t\tready = false;\n\t\t\t\t}\n\t\t\t\tunmountApp();\n\t\t\t};\n\t\t\tif ((process.env.NODE_ENV !== \"production\" || __VUE_PROD_DEVTOOLS__) && isBrowser && true) addDevtools(app, router, matcher);\n\t\t}\n\t};\n\tfunction runGuardQueue(guards) {\n\t\treturn guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n\t}\n\treturn router;\n}\n//#endregion\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst guard = (name, init) => {\n switch (name) {\n case 'Function':\n case 'SharedWorker':\n case 'Worker':\n case 'eval':\n case 'setInterval':\n case 'setTimeout':\n throw new TypeError('unable to deserialize ' + name);\n }\n return new env[name](init);\n};\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(\n typeof env[name] === 'function' ?\n guard(name, message) :\n new Error(message),\n index\n );\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(guard(type, value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (value instanceof Error)\n return [ERROR, value.name || 'Error'];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, isNaN(value.getTime()) ? EMPTY : value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is an element.\n * @param {unknown} this\n * Context object (`this`) to call `test` with\n * @param {unknown} [element]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean}\n * Whether this is an element and passes a test.\n *\n * @typedef {Array | TestFunction | string | null | undefined} Test\n * Check for an arbitrary element.\n *\n * * when `string`, checks that the element has that tag name\n * * when `function`, see `TestFunction`\n * * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n * Check if an element passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Element} element\n * An element.\n * @param {number | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean | undefined | void}\n * Whether this element passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n * Thing to check, typically `element`.\n * @param test\n * Check for a specific element.\n * @param index\n * Position of `element` in its parent.\n * @param parent\n * Parent of `element`.\n * @param context\n * Context object (`this`) to call `test` with.\n * @returns\n * Whether `element` is an `Element` and passes a test.\n * @throws\n * When an incorrect `test`, `index`, or `parent` is given; there is no error\n * thrown when `element` is not a node or not an element.\n */\nexport const isElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate) &\n * ((element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((element?: null | undefined) => false) &\n * ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [element]\n * @param {Test | undefined} [test]\n * @param {number | null | undefined} [index]\n * @param {Parents | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (element, test, index, parent, context) {\n const check = convertElement(test)\n\n if (\n index !== null &&\n index !== undefined &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite `index`')\n }\n\n if (\n parent !== null &&\n parent !== undefined &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected valid `parent`')\n }\n\n if (\n (index === null || index === undefined) !==\n (parent === null || parent === undefined)\n ) {\n throw new Error('Expected both `index` and `parent`')\n }\n\n return looksLikeAnElement(element)\n ? check.call(context, element, index, parent)\n : false\n }\n )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n * A test for a specific element.\n * @returns\n * A check.\n */\nexport const convertElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate) &\n * ((test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test | null | undefined} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n // Assume array.\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as `test`')\n }\n )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n return castFactory(tagName)\n\n /**\n * @param {Element} element\n * @returns {boolean}\n */\n function tagName(element) {\n return element.tagName === check\n }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeAnElement(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction element(element) {\n return Boolean(\n element &&\n typeof element === 'object' &&\n 'type' in element &&\n element.type === 'element' &&\n 'tagName' in element &&\n typeof element.tagName === 'string'\n )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'type' in value &&\n 'tagName' in value\n )\n}\n","// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\n// Windows paths like `c:\\`\nconst WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\\\/;\n\nexport default function isAbsoluteUrl(url) {\n\tif (typeof url !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof url}\\``);\n\t}\n\n\tif (WINDOWS_PATH_REGEX.test(url)) {\n\t\treturn false;\n\t}\n\n\treturn ABSOLUTE_URL_REGEX.test(url);\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @callback CreateContent\n * Create a target for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array | ElementContent | null | undefined}\n * Content to add.\n *\n * @callback CreateProperties\n * Create properties for an element.\n * @param {Element} element\n * Element to check.\n * @returns {Properties | null | undefined}\n * Properties to add.\n *\n * @callback CreateRel\n * Create a `rel` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array | string | null | undefined}\n * `rel` to use.\n *\n * @callback CreateTarget\n * Create a `target` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Target | null | undefined}\n * `target` to use.\n *\n * @typedef Options\n * Configuration.\n * @property {Array | CreateContent | ElementContent | null | undefined} [content]\n * Content to insert at the end of external links (optional); will be\n * inserted in a `` element; useful for improving accessibility by\n * giving users advanced warning when opening a new window.\n * @property {CreateProperties | Properties | null | undefined} [contentProperties]\n * Properties to add to the `span` wrapping `content` (optional).\n * @property {CreateProperties | Properties | null | undefined} [properties]\n * Properties to add to the link itself (optional).\n * @property {Array | null | undefined} [protocols=['http', 'https']]\n * Protocols to check, such as `mailto` or `tel` (default: `['http',\n * 'https']`).\n * @property {Array | CreateRel | string | null | undefined} [rel=['nofollow']]\n * Link types to hint about the referenced documents (default:\n * `['nofollow']`); pass an empty array (`[]`) to not set `rel`s on links;\n * when using a `target`, add `noopener` and `noreferrer` to avoid\n * exploitation of the `window.opener` API.\n * @property {CreateTarget | Target | null | undefined} [target]\n * How to display referenced documents; the default (nothing) is to not set\n * `target`s on links.\n * @property {Test | null | undefined} [test]\n * Extra test to define which external link elements are modified (optional);\n * any test that can be given to `hast-util-is-element` is supported.\n *\n * @typedef {'_blank' | '_parent' | '_self' | '_top'} Target\n * Target.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {convertElement} from 'hast-util-is-element'\nimport isAbsoluteUrl from 'is-absolute-url'\nimport {parse} from 'space-separated-tokens'\nimport {visit} from 'unist-util-visit'\n\nconst defaultProtocols = ['http', 'https']\nconst defaultRel = ['nofollow']\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Automatically add `rel` (and `target`?) to external links.\n *\n * ###### Notes\n *\n * You should [likely not configure `target`][css-tricks].\n *\n * You should at least set `rel` to `['nofollow']`.\n * When using a `target`, add `noopener` and `noreferrer` to avoid exploitation\n * of the `window.opener` API.\n *\n * When using a `target`, you should set `content` to adhere to accessibility\n * guidelines by giving users advanced warning when opening a new window.\n *\n * [css-tricks]: https://css-tricks.com/use-target_blank/\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeExternalLinks(options) {\n const settings = options || emptyOptions\n const protocols = settings.protocols || defaultProtocols\n const is = convertElement(settings.test)\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n visit(tree, 'element', function (node, index, parent) {\n if (\n node.tagName === 'a' &&\n typeof node.properties.href === 'string' &&\n is(node, index, parent)\n ) {\n const url = node.properties.href\n\n if (\n isAbsoluteUrl(url)\n ? protocols.includes(url.slice(0, url.indexOf(':')))\n : url.startsWith('//')\n ) {\n const contentRaw = createIfNeeded(settings.content, node)\n const content =\n contentRaw && !Array.isArray(contentRaw) ? [contentRaw] : contentRaw\n const relRaw = createIfNeeded(settings.rel, node) || defaultRel\n const rel = typeof relRaw === 'string' ? parse(relRaw) : relRaw\n const target = createIfNeeded(settings.target, node)\n\n const properties = createIfNeeded(settings.properties, node)\n\n if (properties) {\n Object.assign(node.properties, structuredClone(properties))\n }\n\n if (rel.length > 0) {\n node.properties.rel = [...rel]\n }\n\n if (target) {\n node.properties.target = target\n }\n\n if (content) {\n const properties =\n createIfNeeded(settings.contentProperties, node) || {}\n\n node.children.push({\n type: 'element',\n tagName: 'span',\n properties: structuredClone(properties),\n children: structuredClone(content)\n })\n }\n }\n }\n })\n }\n}\n\n/**\n * Call a function to get a return value or use the value.\n *\n * @template T\n * Type of value.\n * @param {T} value\n * Value.\n * @param {Element} element\n * Element.\n * @returns {T extends Function ? ReturnType : T}\n * Result.\n */\nfunction createIfNeeded(value, element) {\n return typeof value === 'function' ? value(element) : value\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record} */\n const property = {}\n /** @type {Record} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record} */\n const properties = {}\n /** @type {Record} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `