Some checks failed
Client Admin / build-deploy (push) Failing after 8s
Client Client / build-deploy (push) Failing after 3s
Client Registration / build-deploy (push) Failing after 20s
Client Tech / build-deploy (push) Failing after 1s
Client Home / build-deploy (push) Successful in 14s
2 lines
1.1 MiB
2 lines
1.1 MiB
/*! For license information please see bundle.js.LICENSE.txt */
|
||
(()=>{"use strict";var e={20(e,n,i){var t=i(540),a=Symbol.for("react.element"),r=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d={key:!0,ref:!0,__self:!0,__source:!0};function l(e,n,i){var t,r={},l=null,c=null;for(t in void 0!==i&&(l=""+i),void 0!==n.key&&(l=""+n.key),void 0!==n.ref&&(c=n.ref),n)o.call(n,t)&&!d.hasOwnProperty(t)&&(r[t]=n[t]);if(e&&e.defaultProps)for(t in n=e.defaultProps)void 0===r[t]&&(r[t]=n[t]);return{$$typeof:a,type:e,key:l,ref:c,props:r,_owner:s.current}}n.Fragment=r,n.jsx=l,n.jsxs=l},27(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ── Modifiers Panel ────────────────────────────────────── */\n\n.modifiers-panel {\n max-width: 900px;\n}\n\n/* ── Toast ── */\n.mod-toast {\n position: fixed;\n top: 16px;\n right: 24px;\n background: #059669;\n color: #fff;\n padding: 8px 20px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n z-index: 1000;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n animation: mod-toast-in 0.25s ease-out;\n}\n@keyframes mod-toast-in {\n from { opacity: 0; transform: translateY(-8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.mod-dismiss-btn {\n margin-left: 12px;\n cursor: pointer;\n background: none;\n border: none;\n font-weight: 700;\n font-size: 14px;\n color: inherit;\n}\n\n/* ── Intro ── */\n.mod-intro {\n margin-bottom: 20px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n}\n.mod-intro p {\n color: #64748b;\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.mod-dirty-badge {\n flex-shrink: 0;\n background: #fef3c7;\n color: #92400e;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n/* ── Factor Group Card ── */\n.mod-group {\n background: #fff;\n border: 1px solid var(--border, #e2e8f0);\n border-radius: 10px;\n margin-bottom: 16px;\n overflow: hidden;\n}\n.mod-group-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px 20px 12px;\n border-bottom: 1px solid var(--border, #e2e8f0);\n background: #fafbfc;\n}\n.mod-group-icon {\n font-size: 20px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.mod-group-title {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--text, #1e293b);\n}\n.mod-group-desc {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--text-dim, #64748b);\n}\n\n/* ── Value Section (young, mature, local, etc.) ── */\n.mod-value-section {\n border-bottom: 1px solid #f1f5f9;\n}\n.mod-value-section:last-child {\n border-bottom: none;\n}\n.mod-value-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px 4px;\n}\n.mod-value-icon {\n font-size: 14px;\n}\n.mod-value-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--text, #1e293b);\n flex: 1;\n}\n.mod-save-group-btn {\n background: var(--accent, #4F46E5);\n color: #fff;\n border: none;\n border-radius: 6px;\n padding: 4px 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.15s;\n}\n.mod-save-group-btn:hover { opacity: 0.85; }\n.mod-save-group-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Modifier Row ── */\n.mod-slider-list {\n padding: 2px 20px 14px;\n}\n.mod-row {\n padding: 10px 0 6px;\n border-bottom: 1px solid #f8fafc;\n transition: opacity 0.2s;\n}\n.mod-row:last-child { border-bottom: none; }\n.mod-row-disabled { opacity: 0.4; }\n.mod-row-dirty {\n background: #fffbeb;\n margin: 0 -8px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 6px;\n}\n.mod-row-top {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.mod-ch-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.mod-ch-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--text, #1e293b);\n min-width: 90px;\n}\n.mod-empty {\n padding: 12px 0;\n color: #94a3b8;\n font-size: 13px;\n font-style: italic;\n}\n\n/* ── Slider ── */\n.mod-slider-wrap {\n flex: 1;\n min-width: 180px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.mod-slider-tick {\n font-size: 10px;\n color: #94a3b8;\n flex-shrink: 0;\n width: 24px;\n font-variant-numeric: tabular-nums;\n}\n.mod-slider-tick-neg { text-align: right; }\n.mod-slider-tick-pos { text-align: left; }\n\n.mod-slider {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 6px;\n border-radius: 3px;\n background: linear-gradient(to right, #fecaca 0%, #f1f5f9 50%, #bbf7d0 100%);\n outline: none;\n cursor: pointer;\n}\n.mod-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: var(--slider-color, #94a3b8);\n border: 2px solid #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n cursor: grab;\n transition: transform 0.1s;\n}\n.mod-slider::-webkit-slider-thumb:hover {\n transform: scale(1.15);\n}\n.mod-slider::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: var(--slider-color, #94a3b8);\n border: 2px solid #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n cursor: grab;\n}\n\n/* ── Percentage Badge ── */\n.mod-pct-badge {\n font-size: 13px;\n font-weight: 700;\n min-width: 48px;\n text-align: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-variant-numeric: tabular-nums;\n color: #64748b;\n background: #f1f5f9;\n}\n.mod-pct-badge.pos { color: #059669; background: #ecfdf5; }\n.mod-pct-badge.neg { color: #dc2626; background: #fef2f2; }\n\n/* ── Toggle Switch ── */\n.mod-toggle {\n position: relative;\n cursor: pointer;\n flex-shrink: 0;\n}\n.mod-toggle input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n.mod-toggle-track {\n display: block;\n width: 34px;\n height: 18px;\n border-radius: 9px;\n background: #cbd5e1;\n transition: background 0.2s;\n position: relative;\n}\n.mod-toggle-track::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n}\n.mod-toggle input:checked + .mod-toggle-track {\n background: #4F46E5;\n}\n.mod-toggle input:checked + .mod-toggle-track::after {\n transform: translateX(16px);\n}\n\n/* ── Save Button (per row) ── */\n.mod-save-btn {\n background: #4F46E5;\n color: #fff;\n border: none;\n border-radius: 6px;\n width: 28px;\n height: 28px;\n font-size: 14px;\n font-weight: 700;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: opacity 0.15s;\n}\n.mod-save-btn:hover { opacity: 0.85; }\n.mod-save-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Rationale Row ── */\n.mod-row-bottom {\n margin-top: 4px;\n padding-left: 20px;\n}\n.mod-rationale {\n width: 100%;\n border: 1px solid transparent;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 11px;\n color: #64748b;\n background: transparent;\n transition: border-color 0.15s, background 0.15s;\n box-sizing: border-box;\n}\n.mod-rationale:hover {\n background: #f8fafc;\n}\n.mod-rationale:focus {\n outline: none;\n border-color: #4F46E5;\n background: #fff;\n color: #1e293b;\n}\n.mod-rationale::placeholder {\n color: #94a3b8;\n}\n\n/* ── Preview Section ── */\n.mod-preview-controls {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n padding: 14px 20px;\n align-items: flex-end;\n}\n.mod-preview-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.mod-preview-field label {\n font-size: 11px;\n font-weight: 600;\n color: #64748b;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n.mod-preview-field input,\n.mod-preview-field select {\n border: 1px solid var(--border, #e2e8f0);\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 13px;\n min-width: 120px;\n color: var(--text, #1e293b);\n background: #fff;\n}\n.mod-preview-field input:focus,\n.mod-preview-field select:focus {\n outline: none;\n border-color: #4F46E5;\n}\n.mod-preview-btn {\n background: var(--text, #1e293b);\n color: #fff;\n border: none;\n border-radius: 6px;\n padding: 7px 18px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.15s;\n}\n.mod-preview-btn:hover { opacity: 0.85; }\n.mod-preview-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Preview Result ── */\n.mod-preview-result {\n padding: 14px 20px;\n border-top: 1px solid #f1f5f9;\n}\n.mod-preview-channels {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.mod-preview-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n font-size: 13px;\n}\n.mod-preview-header-row {\n padding-bottom: 4px;\n border-bottom: 1px solid #f1f5f9;\n margin-bottom: 2px;\n}\n.mod-preview-ch-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.mod-preview-ch-dot-spacer {\n width: 10px;\n flex-shrink: 0;\n}\n.mod-preview-ch-name {\n font-weight: 500;\n min-width: 90px;\n flex: 1;\n}\n.mod-preview-ch-val {\n min-width: 40px;\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n.mod-preview-ch-arrow {\n color: #94a3b8;\n font-size: 12px;\n width: 16px;\n text-align: center;\n}\n.mod-preview-ch-diff {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 8px;\n border-radius: 4px;\n min-width: 32px;\n text-align: center;\n font-variant-numeric: tabular-nums;\n}\n.mod-preview-ch-diff.pos {\n color: #059669;\n background: #ecfdf5;\n}\n.mod-preview-ch-diff.neg {\n color: #dc2626;\n background: #fef2f2;\n}\n.mod-preview-ch-diff-spacer {\n min-width: 32px;\n}\n\n/* ── Responsive ── */\n@media (max-width: 768px) {\n .mod-row-top {\n flex-wrap: wrap;\n }\n .mod-slider-wrap {\n min-width: 100%;\n order: 10;\n margin-top: 4px;\n }\n .mod-preview-controls {\n flex-direction: column;\n }\n .mod-preview-field input,\n .mod-preview-field select {\n min-width: 100%;\n }\n}\n",""]);const s=o},56(e,n,i){e.exports=function(e){var n=i.nc;n&&e.setAttribute("nonce",n)}},72(e){var n=[];function i(e){for(var i=-1,t=0;t<n.length;t++)if(n[t].identifier===e){i=t;break}return i}function t(e,t){for(var r={},o=[],s=0;s<e.length;s++){var d=e[s],l=t.base?d[0]+t.base:d[0],c=r[l]||0,f="".concat(l," ").concat(c);r[l]=c+1;var u=i(f),h={css:d[1],media:d[2],sourceMap:d[3],supports:d[4],layer:d[5]};if(-1!==u)n[u].references++,n[u].updater(h);else{var m=a(h,t);t.byIndex=s,n.splice(s,0,{identifier:f,updater:m,references:1})}o.push(f)}return o}function a(e,n){var i=n.domAPI(n);return i.update(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;i.update(e=n)}else i.remove()}}e.exports=function(e,a){var r=t(e=e||[],a=a||{});return function(e){e=e||[];for(var o=0;o<r.length;o++){var s=i(r[o]);n[s].references--}for(var d=t(e,a),l=0;l<r.length;l++){var c=i(r[l]);0===n[c].references&&(n[c].updater(),n.splice(c,1))}r=d}}},113(e){e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},159(e){e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},287(e,n){var i=Symbol.for("react.element"),t=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),d=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),h=Symbol.iterator,m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},p=Object.assign,g={};function v(e,n,i){this.props=e,this.context=n,this.refs=g,this.updater=i||m}function y(){}function k(e,n,i){this.props=e,this.context=n,this.refs=g,this.updater=i||m}v.prototype.isReactComponent={},v.prototype.setState=function(e,n){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=v.prototype;var b=k.prototype=new y;b.constructor=k,p(b,v.prototype),b.isPureReactComponent=!0;var w=Array.isArray,_=Object.prototype.hasOwnProperty,x={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function S(e,n,t){var a,r={},o=null,s=null;if(null!=n)for(a in void 0!==n.ref&&(s=n.ref),void 0!==n.key&&(o=""+n.key),n)_.call(n,a)&&!C.hasOwnProperty(a)&&(r[a]=n[a]);var d=arguments.length-2;if(1===d)r.children=t;else if(1<d){for(var l=Array(d),c=0;c<d;c++)l[c]=arguments[c+2];r.children=l}if(e&&e.defaultProps)for(a in d=e.defaultProps)void 0===r[a]&&(r[a]=d[a]);return{$$typeof:i,type:e,key:o,ref:s,props:r,_owner:x.current}}function T(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var I=/\/+/g;function A(e,n){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return n[e]})}(""+e.key):n.toString(36)}function j(e,n,a,r,o){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var d=!1;if(null===e)d=!0;else switch(s){case"string":case"number":d=!0;break;case"object":switch(e.$$typeof){case i:case t:d=!0}}if(d)return o=o(d=e),e=""===r?"."+A(d,0):r,w(o)?(a="",null!=e&&(a=e.replace(I,"$&/")+"/"),j(o,n,a,"",function(e){return e})):null!=o&&(T(o)&&(o=function(e,n){return{$$typeof:i,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}(o,a+(!o.key||d&&d.key===o.key?"":(""+o.key).replace(I,"$&/")+"/")+e)),n.push(o)),1;if(d=0,r=""===r?".":r+":",w(e))for(var l=0;l<e.length;l++){var c=r+A(s=e[l],l);d+=j(s,n,a,c,o)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=h&&e[h]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),l=0;!(s=e.next()).done;)d+=j(s=s.value,n,a,c=r+A(s,l++),o);else if("object"===s)throw n=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.");return d}function E(e,n,i){if(null==e)return e;var t=[],a=0;return j(e,t,"","",function(e){return n.call(i,e,a++)}),t}function P(e){if(-1===e._status){var n=e._result;(n=n()).then(function(n){0!==e._status&&-1!==e._status||(e._status=1,e._result=n)},function(n){0!==e._status&&-1!==e._status||(e._status=2,e._result=n)}),-1===e._status&&(e._status=0,e._result=n)}if(1===e._status)return e._result.default;throw e._result}var M={current:null},R={transition:null},N={ReactCurrentDispatcher:M,ReactCurrentBatchConfig:R,ReactCurrentOwner:x};function O(){throw Error("act(...) is not supported in production builds of React.")}n.Children={map:E,forEach:function(e,n,i){E(e,function(){n.apply(this,arguments)},i)},count:function(e){var n=0;return E(e,function(){n++}),n},toArray:function(e){return E(e,function(e){return e})||[]},only:function(e){if(!T(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},n.Component=v,n.Fragment=a,n.Profiler=o,n.PureComponent=k,n.StrictMode=r,n.Suspense=c,n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=N,n.act=O,n.cloneElement=function(e,n,t){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=p({},e.props),r=e.key,o=e.ref,s=e._owner;if(null!=n){if(void 0!==n.ref&&(o=n.ref,s=x.current),void 0!==n.key&&(r=""+n.key),e.type&&e.type.defaultProps)var d=e.type.defaultProps;for(l in n)_.call(n,l)&&!C.hasOwnProperty(l)&&(a[l]=void 0===n[l]&&void 0!==d?d[l]:n[l])}var l=arguments.length-2;if(1===l)a.children=t;else if(1<l){d=Array(l);for(var c=0;c<l;c++)d[c]=arguments[c+2];a.children=d}return{$$typeof:i,type:e.type,key:r,ref:o,props:a,_owner:s}},n.createContext=function(e){return(e={$$typeof:d,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},n.createElement=S,n.createFactory=function(e){var n=S.bind(null,e);return n.type=e,n},n.createRef=function(){return{current:null}},n.forwardRef=function(e){return{$$typeof:l,render:e}},n.isValidElement=T,n.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:P}},n.memo=function(e,n){return{$$typeof:f,type:e,compare:void 0===n?null:n}},n.startTransition=function(e){var n=R.transition;R.transition={};try{e()}finally{R.transition=n}},n.unstable_act=O,n.useCallback=function(e,n){return M.current.useCallback(e,n)},n.useContext=function(e){return M.current.useContext(e)},n.useDebugValue=function(){},n.useDeferredValue=function(e){return M.current.useDeferredValue(e)},n.useEffect=function(e,n){return M.current.useEffect(e,n)},n.useId=function(){return M.current.useId()},n.useImperativeHandle=function(e,n,i){return M.current.useImperativeHandle(e,n,i)},n.useInsertionEffect=function(e,n){return M.current.useInsertionEffect(e,n)},n.useLayoutEffect=function(e,n){return M.current.useLayoutEffect(e,n)},n.useMemo=function(e,n){return M.current.useMemo(e,n)},n.useReducer=function(e,n,i){return M.current.useReducer(e,n,i)},n.useRef=function(e){return M.current.useRef(e)},n.useState=function(e){return M.current.useState(e)},n.useSyncExternalStore=function(e,n,i){return M.current.useSyncExternalStore(e,n,i)},n.useTransition=function(){return M.current.useTransition()},n.version="18.3.1"},314(e){e.exports=function(e){var n=[];return n.toString=function(){return this.map(function(n){var i="",t=void 0!==n[5];return n[4]&&(i+="@supports (".concat(n[4],") {")),n[2]&&(i+="@media ".concat(n[2]," {")),t&&(i+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),i+=e(n),t&&(i+="}"),n[2]&&(i+="}"),n[4]&&(i+="}"),i}).join("")},n.i=function(e,i,t,a,r){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(t)for(var s=0;s<this.length;s++){var d=this[s][0];null!=d&&(o[d]=!0)}for(var l=0;l<e.length;l++){var c=[].concat(e[l]);t&&o[c[0]]||(void 0!==r&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=r),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),a&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=a):c[4]="".concat(a)),n.push(c))}},n}},336(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ============================================================\n Templates Panel — Sidebar + Grouped Card Layout\n Append to app.css or import separately\n ============================================================ */\n\n/* ─── Layout ─────────────────────────────────────────────── */\n.templates-layout {\n display: flex;\n gap: 0;\n min-height: calc(100vh - var(--header-height) - 100px);\n}\n\n.templates-sidebar {\n width: 240px;\n min-width: 240px;\n background: var(--surface);\n border-right: 1px solid var(--border);\n border-radius: 8px 0 0 8px;\n padding: 0;\n overflow-y: auto;\n max-height: calc(100vh - var(--header-height) - 100px);\n}\n\n.templates-content {\n flex: 1;\n min-width: 0;\n padding: 20px 24px;\n}\n\n/* ─── Sidebar Sections ───────────────────────────────────── */\n.sidebar-section {\n padding: 12px 0;\n border-bottom: 1px solid var(--border-light);\n}\n\n.sidebar-section:last-child {\n border-bottom: none;\n}\n\n.sidebar-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 14px 6px;\n}\n\n.sidebar-section-title {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--text-dim);\n}\n\n/* ─── Sidebar Items ──────────────────────────────────────── */\n.sidebar-list {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.sidebar-list-scrollable {\n max-height: 280px;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar {\n width: 4px;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar-track {\n background: transparent;\n}\n\n/* Add button pinned below the scrollable list */\n.sidebar-section > .sidebar-add-btn,\n.sidebar-section > .sidebar-new-item {\n margin: 4px 6px 0;\n}\n\n.sidebar-item-wrapper {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.sidebar-item-wrapper .btn-icon-xs {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.sidebar-item-wrapper:hover .btn-icon-xs {\n opacity: 1;\n}\n\n.sidebar-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--text);\n text-align: left;\n font-family: inherit;\n transition: background 0.12s;\n border-radius: 0;\n}\n\n.sidebar-item:hover {\n background: var(--sidebar-hover);\n}\n\n.sidebar-item.active {\n background: var(--sidebar-active);\n color: var(--accent);\n font-weight: 600;\n}\n\n.sidebar-item-static {\n cursor: default;\n}\n\n.sidebar-item-static:hover {\n background: none;\n}\n\n.sidebar-item-icon {\n font-size: 16px;\n width: 22px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.sidebar-item-label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sidebar-item-count {\n font-size: 11px;\n color: var(--text-dim);\n background: var(--bg);\n padding: 1px 7px;\n border-radius: 10px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.sidebar-color-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-left: 6px;\n}\n\n.sidebar-add-btn {\n color: var(--accent);\n font-style: italic;\n}\n\n.sidebar-new-item {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 14px;\n}\n\n.sidebar-new-item input {\n flex: 1;\n font-size: 12px;\n padding: 4px 8px;\n border: 1px solid var(--border);\n border-radius: 4px;\n font-family: inherit;\n background: var(--bg);\n}\n\n/* ─── Icon & Color Pickers ───────────────────────────────── */\n.icon-picker-btn {\n font-size: 16px;\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n cursor: pointer;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: border-color 0.15s;\n}\n\n.icon-picker-btn:hover {\n border-color: var(--accent);\n}\n\n.icon-picker-popover {\n position: absolute;\n left: 0;\n z-index: 999;\n border-radius: 10px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.15), 0 1px 4px rgba(0,0,0,0.08);\n overflow: hidden;\n animation: iconPickerIn 0.12s ease-out;\n}\n\n.icon-picker-popover em-emoji-picker {\n --em-rgb-background: var(--surface-rgb, 255, 255, 255);\n --em-rgb-input: 241, 245, 249;\n border: none !important;\n}\n\n@keyframes iconPickerIn {\n from { opacity: 0; transform: translateY(-3px) scale(0.98); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n.color-picker-btn {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--border);\n cursor: pointer;\n padding: 0;\n transition: border-color 0.15s;\n margin-left: 6px;\n flex-shrink: 0;\n}\n\n.color-picker-btn:hover {\n border-color: var(--accent);\n}\n\n.color-picker-grid {\n position: absolute;\n left: 0;\n top: 24px;\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px;\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 4px;\n z-index: 99;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n}\n\n.color-picker-option {\n width: 22px;\n height: 22px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 0;\n transition: border-color 0.15s, transform 0.1s;\n}\n\n.color-picker-option:hover {\n transform: scale(1.15);\n}\n\n.color-picker-option.active {\n border-color: var(--text);\n}\n\n/* ─── Small Button Variants ──────────────────────────────── */\n.btn-icon-sm {\n width: 24px;\n height: 24px;\n border: 1px solid var(--border);\n background: var(--bg);\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-secondary);\n transition: all 0.12s;\n padding: 0;\n font-family: inherit;\n}\n\n.btn-icon-sm:hover {\n background: var(--accent-light);\n color: var(--accent);\n border-color: var(--accent);\n}\n\n.btn-icon-xs {\n width: 20px;\n height: 20px;\n border: none;\n background: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-dim);\n transition: all 0.12s;\n padding: 0;\n font-family: inherit;\n}\n\n.btn-icon-xs:hover {\n background: var(--danger-bg);\n color: var(--danger);\n}\n\n.btn-icon-xs:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.btn-danger-icon:hover {\n background: var(--danger-bg);\n color: var(--danger);\n}\n\n/* ─── Template Groups ────────────────────────────────────── */\n.template-group {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 16px;\n overflow: hidden;\n}\n\n.template-group-header {\n padding: 16px 20px;\n background: var(--bg);\n border-bottom: 1px solid var(--border-light);\n}\n\n.template-group-info {\n display: flex;\n align-items: flex-start;\n gap: 20px;\n}\n\n.template-group-meta {\n flex: 1;\n min-width: 0;\n}\n\n.template-group-title {\n font-size: 15px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.cat-icon {\n font-size: 18px;\n}\n\n.objective-tag,\n.header-objective-tag {\n display: inline-block;\n font-size: 11px;\n font-weight: 600;\n color: #fff;\n padding: 2px 10px;\n border-radius: 10px;\n margin-left: 6px;\n}\n\n.template-group-stats {\n font-size: 12px;\n color: var(--text-secondary);\n margin-bottom: 10px;\n}\n\n.text-success { color: var(--success); font-weight: 600; }\n.text-danger { color: var(--danger); font-weight: 600; }\n.text-dim { color: var(--text-dim); }\n\n/* ─── Channel Bars (mini horizontal bars) ────────────────── */\n.template-group-channel-bars {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.channel-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n}\n\n.channel-bar-color {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.channel-bar-label {\n width: 80px;\n flex-shrink: 0;\n color: var(--text-secondary);\n}\n\n.channel-bar-pct {\n width: 36px;\n text-align: right;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.channel-bar-track {\n flex: 1;\n height: 6px;\n background: var(--border-light);\n border-radius: 3px;\n overflow: hidden;\n max-width: 200px;\n}\n\n.channel-bar-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n/* ─── Template Group Table ───────────────────────────────── */\n.template-group .data-table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n\n.template-group .data-table thead th {\n background: var(--surface);\n}\n\n/* ─── Channel Legend Bar (top of content) ───────────────── */\n.channel-legend-bar {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 14px;\n}\n\n.channel-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary);\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 20px;\n border-left-width: 3px;\n}\n\n.channel-chip-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* ─── Add Channel Button (per group) ────────────────────── */\n.btn-add-channel {\n display: block;\n margin: 8px 0 4px;\n padding: 6px 12px;\n font-size: 12px;\n color: var(--accent);\n background: var(--surface);\n border: 1px dashed var(--border);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.btn-add-channel:hover {\n background: var(--accent-light, #f0f7ff);\n border-color: var(--accent);\n}\n\n/* ─── Empty State ────────────────────────────────────────── */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--text-secondary);\n}\n\n.empty-state-icon {\n font-size: 48px;\n margin-bottom: 12px;\n}\n\n/* ─── Responsive ─────────────────────────────────────────── */\n@media (max-width: 1024px) {\n .templates-sidebar {\n width: 200px;\n min-width: 200px;\n }\n}\n\n@media (max-width: 768px) {\n .templates-layout {\n flex-direction: column;\n }\n\n .templates-sidebar {\n width: 100%;\n min-width: unset;\n max-height: 260px;\n border-right: none;\n border-bottom: 1px solid var(--border);\n border-radius: 8px 8px 0 0;\n }\n\n .template-group-info {\n flex-direction: column;\n align-items: center;\n }\n}\n",""]);const s=o},338(e,n,i){var t=i(961);n.H=t.createRoot,t.hydrateRoot},463(e,n){function i(e,n){var i=e.length;e.push(n);e:for(;0<i;){var t=i-1>>>1,a=e[t];if(!(0<r(a,n)))break e;e[t]=n,e[i]=a,i=t}}function t(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var n=e[0],i=e.pop();if(i!==n){e[0]=i;e:for(var t=0,a=e.length,o=a>>>1;t<o;){var s=2*(t+1)-1,d=e[s],l=s+1,c=e[l];if(0>r(d,i))l<a&&0>r(c,d)?(e[t]=c,e[l]=i,t=l):(e[t]=d,e[s]=i,t=s);else{if(!(l<a&&0>r(c,i)))break e;e[t]=c,e[l]=i,t=l}}}return n}function r(e,n){var i=e.sortIndex-n.sortIndex;return 0!==i?i:e.id-n.id}if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;n.unstable_now=function(){return o.now()}}else{var s=Date,d=s.now();n.unstable_now=function(){return s.now()-d}}var l=[],c=[],f=1,u=null,h=3,m=!1,p=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,y="function"==typeof clearTimeout?clearTimeout:null,k="undefined"!=typeof setImmediate?setImmediate:null;function b(e){for(var n=t(c);null!==n;){if(null===n.callback)a(c);else{if(!(n.startTime<=e))break;a(c),n.sortIndex=n.expirationTime,i(l,n)}n=t(c)}}function w(e){if(g=!1,b(e),!p)if(null!==t(l))p=!0,R(_);else{var n=t(c);null!==n&&N(w,n.startTime-e)}}function _(e,i){p=!1,g&&(g=!1,y(T),T=-1),m=!0;var r=h;try{for(b(i),u=t(l);null!==u&&(!(u.expirationTime>i)||e&&!j());){var o=u.callback;if("function"==typeof o){u.callback=null,h=u.priorityLevel;var s=o(u.expirationTime<=i);i=n.unstable_now(),"function"==typeof s?u.callback=s:u===t(l)&&a(l),b(i)}else a(l);u=t(l)}if(null!==u)var d=!0;else{var f=t(c);null!==f&&N(w,f.startTime-i),d=!1}return d}finally{u=null,h=r,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,C=!1,S=null,T=-1,I=5,A=-1;function j(){return!(n.unstable_now()-A<I)}function E(){if(null!==S){var e=n.unstable_now();A=e;var i=!0;try{i=S(!0,e)}finally{i?x():(C=!1,S=null)}}else C=!1}if("function"==typeof k)x=function(){k(E)};else if("undefined"!=typeof MessageChannel){var P=new MessageChannel,M=P.port2;P.port1.onmessage=E,x=function(){M.postMessage(null)}}else x=function(){v(E,0)};function R(e){S=e,C||(C=!0,x())}function N(e,i){T=v(function(){e(n.unstable_now())},i)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(e){e.callback=null},n.unstable_continueExecution=function(){p||m||(p=!0,R(_))},n.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):I=0<e?Math.floor(1e3/e):5},n.unstable_getCurrentPriorityLevel=function(){return h},n.unstable_getFirstCallbackNode=function(){return t(l)},n.unstable_next=function(e){switch(h){case 1:case 2:case 3:var n=3;break;default:n=h}var i=h;h=n;try{return e()}finally{h=i}},n.unstable_pauseExecution=function(){},n.unstable_requestPaint=function(){},n.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var i=h;h=e;try{return n()}finally{h=i}},n.unstable_scheduleCallback=function(e,a,r){var o=n.unstable_now();switch(r="object"==typeof r&&null!==r&&"number"==typeof(r=r.delay)&&0<r?o+r:o,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:f++,callback:a,priorityLevel:e,startTime:r,expirationTime:s=r+s,sortIndex:-1},r>o?(e.sortIndex=r,i(c,e),null===t(l)&&e===t(c)&&(g?(y(T),T=-1):g=!0,N(w,r-o))):(e.sortIndex=s,i(l,e),p||m||(p=!0,R(_))),e},n.unstable_shouldYield=j,n.unstable_wrapCallback=function(e){var n=h;return function(){var i=h;h=n;try{return e.apply(this,arguments)}finally{h=i}}}},540(e,n,i){e.exports=i(287)},551(e,n,i){var t=i(540),a=i(982);function r(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,i=1;i<arguments.length;i++)n+="&args[]="+encodeURIComponent(arguments[i]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var o=new Set,s={};function d(e,n){l(e,n),l(e+"Capture",n)}function l(e,n){for(s[e]=n,e=0;e<n.length;e++)o.add(n[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,u=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},m={};function p(e,n,i,t,a,r,o){this.acceptsBooleans=2===n||3===n||4===n,this.attributeName=t,this.attributeNamespace=a,this.mustUseProperty=i,this.propertyName=e,this.type=n,this.sanitizeURL=r,this.removeEmptyString=o}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){g[e]=new p(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];g[n]=new p(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){g[e]=new p(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){g[e]=new p(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){g[e]=new p(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){g[e]=new p(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){g[e]=new p(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){g[e]=new p(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){g[e]=new p(e,5,!1,e.toLowerCase(),null,!1,!1)});var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function k(e,n,i,t){var a=g.hasOwnProperty(n)?g[n]:null;(null!==a?0!==a.type:t||!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])&&(function(e,n,i,t){if(null==n||function(e,n,i,t){if(null!==i&&0===i.type)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return!t&&(null!==i?!i.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,n,i,t))return!0;if(t)return!1;if(null!==i)switch(i.type){case 3:return!n;case 4:return!1===n;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}(n,i,a,t)&&(i=null),t||null===a?function(e){return!!f.call(m,e)||!f.call(h,e)&&(u.test(e)?m[e]=!0:(h[e]=!0,!1))}(n)&&(null===i?e.removeAttribute(n):e.setAttribute(n,""+i)):a.mustUseProperty?e[a.propertyName]=null===i?3!==a.type&&"":i:(n=a.attributeName,t=a.attributeNamespace,null===i?e.removeAttribute(n):(i=3===(a=a.type)||4===a&&!0===i?"":""+i,t?e.setAttributeNS(t,n,i):e.setAttribute(n,i))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(v,y);g[n]=new p(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(v,y);g[n]=new p(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(v,y);g[n]=new p(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){g[e]=new p(e,1,!1,e.toLowerCase(),null,!1,!1)}),g.xlinkHref=new p("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){g[e]=new p(e,1,!1,e.toLowerCase(),null,!0,!0)});var b=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),_=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),T=Symbol.for("react.provider"),I=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),j=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),M=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var R=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var N=Symbol.iterator;function O(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=N&&e[N]||e["@@iterator"])?e:null}var F,z=Object.assign;function L(e){if(void 0===F)try{throw Error()}catch(e){var n=e.stack.trim().match(/\n( *(at )?)/);F=n&&n[1]||""}return"\n"+F+e}var q=!1;function B(e,n){if(!e||q)return"";q=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var t=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){t=e}e.call(n.prototype)}else{try{throw Error()}catch(e){t=e}e()}}catch(n){if(n&&t&&"string"==typeof n.stack){for(var a=n.stack.split("\n"),r=t.stack.split("\n"),o=a.length-1,s=r.length-1;1<=o&&0<=s&&a[o]!==r[s];)s--;for(;1<=o&&0<=s;o--,s--)if(a[o]!==r[s]){if(1!==o||1!==s)do{if(o--,0>--s||a[o]!==r[s]){var d="\n"+a[o].replace(" at new "," at ");return e.displayName&&d.includes("<anonymous>")&&(d=d.replace("<anonymous>",e.displayName)),d}}while(1<=o&&0<=s);break}}}finally{q=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?L(e):""}function H(e){switch(e.tag){case 5:return L(e.type);case 16:return L("Lazy");case 13:return L("Suspense");case 19:return L("SuspenseList");case 0:case 2:case 15:return B(e.type,!1);case 11:return B(e.type.render,!1);case 1:return B(e.type,!0);default:return""}}function D(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case _:return"Portal";case S:return"Profiler";case C:return"StrictMode";case j:return"Suspense";case E:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case I:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case A:var n=e.render;return(e=e.displayName)||(e=""!==(e=n.displayName||n.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case P:return null!==(n=e.displayName||null)?n:D(e.type)||"Memo";case M:n=e._payload,e=e._init;try{return D(e(n))}catch(e){}}return null}function U(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=n.render).displayName||e.name||"",n.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return D(n);case 8:return n===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof n)return n.displayName||n.name||null;if("string"==typeof n)return n}return null}function W(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function K(e){var n=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===n||"radio"===n)}function G(e){e._valueTracker||(e._valueTracker=function(e){var n=K(e)?"checked":"value",i=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),t=""+e[n];if(!e.hasOwnProperty(n)&&void 0!==i&&"function"==typeof i.get&&"function"==typeof i.set){var a=i.get,r=i.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return a.call(this)},set:function(e){t=""+e,r.call(this,e)}}),Object.defineProperty(e,n,{enumerable:i.enumerable}),{getValue:function(){return t},setValue:function(e){t=""+e},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}(e))}function $(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var i=n.getValue(),t="";return e&&(t=K(e)?e.checked?"true":"false":e.value),(e=t)!==i&&(n.setValue(e),!0)}function V(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(n){return e.body}}function Q(e,n){var i=n.checked;return z({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=i?i:e._wrapperState.initialChecked})}function Y(e,n){var i=null==n.defaultValue?"":n.defaultValue,t=null!=n.checked?n.checked:n.defaultChecked;i=W(null!=n.value?n.value:i),e._wrapperState={initialChecked:t,initialValue:i,controlled:"checkbox"===n.type||"radio"===n.type?null!=n.checked:null!=n.value}}function J(e,n){null!=(n=n.checked)&&k(e,"checked",n,!1)}function X(e,n){J(e,n);var i=W(n.value),t=n.type;if(null!=i)"number"===t?(0===i&&""===e.value||e.value!=i)&&(e.value=""+i):e.value!==""+i&&(e.value=""+i);else if("submit"===t||"reset"===t)return void e.removeAttribute("value");n.hasOwnProperty("value")?ee(e,n.type,i):n.hasOwnProperty("defaultValue")&&ee(e,n.type,W(n.defaultValue)),null==n.checked&&null!=n.defaultChecked&&(e.defaultChecked=!!n.defaultChecked)}function Z(e,n,i){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var t=n.type;if(!("submit"!==t&&"reset"!==t||void 0!==n.value&&null!==n.value))return;n=""+e._wrapperState.initialValue,i||n===e.value||(e.value=n),e.defaultValue=n}""!==(i=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==i&&(e.name=i)}function ee(e,n,i){"number"===n&&V(e.ownerDocument)===e||(null==i?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var ne=Array.isArray;function ie(e,n,i,t){if(e=e.options,n){n={};for(var a=0;a<i.length;a++)n["$"+i[a]]=!0;for(i=0;i<e.length;i++)a=n.hasOwnProperty("$"+e[i].value),e[i].selected!==a&&(e[i].selected=a),a&&t&&(e[i].defaultSelected=!0)}else{for(i=""+W(i),n=null,a=0;a<e.length;a++){if(e[a].value===i)return e[a].selected=!0,void(t&&(e[a].defaultSelected=!0));null!==n||e[a].disabled||(n=e[a])}null!==n&&(n.selected=!0)}}function te(e,n){if(null!=n.dangerouslySetInnerHTML)throw Error(r(91));return z({},n,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,n){var i=n.value;if(null==i){if(i=n.children,n=n.defaultValue,null!=i){if(null!=n)throw Error(r(92));if(ne(i)){if(1<i.length)throw Error(r(93));i=i[0]}n=i}null==n&&(n=""),i=n}e._wrapperState={initialValue:W(i)}}function re(e,n){var i=W(n.value),t=W(n.defaultValue);null!=i&&((i=""+i)!==e.value&&(e.value=i),null==n.defaultValue&&e.defaultValue!==i&&(e.defaultValue=i)),null!=t&&(e.defaultValue=""+t)}function oe(e){var n=e.textContent;n===e._wrapperState.initialValue&&""!==n&&null!==n&&(e.value=n)}function se(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function de(e,n){return null==e||"http://www.w3.org/1999/xhtml"===e?se(n):"http://www.w3.org/2000/svg"===e&&"foreignObject"===n?"http://www.w3.org/1999/xhtml":e}var le,ce,fe=(ce=function(e,n){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=n;else{for((le=le||document.createElement("div")).innerHTML="<svg>"+n.valueOf().toString()+"</svg>",n=le.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,n,i,t){MSApp.execUnsafeLocalFunction(function(){return ce(e,n)})}:ce);function ue(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&3===i.nodeType)return void(i.nodeValue=n)}e.textContent=n}var he={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function pe(e,n,i){return null==n||"boolean"==typeof n||""===n?"":i||"number"!=typeof n||0===n||he.hasOwnProperty(e)&&he[e]?(""+n).trim():n+"px"}function ge(e,n){for(var i in e=e.style,n)if(n.hasOwnProperty(i)){var t=0===i.indexOf("--"),a=pe(i,n[i],t);"float"===i&&(i="cssFloat"),t?e.setProperty(i,a):e[i]=a}}Object.keys(he).forEach(function(e){me.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),he[n]=he[e]})});var ve=z({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ye(e,n){if(n){if(ve[e]&&(null!=n.children||null!=n.dangerouslySetInnerHTML))throw Error(r(137,e));if(null!=n.dangerouslySetInnerHTML){if(null!=n.children)throw Error(r(60));if("object"!=typeof n.dangerouslySetInnerHTML||!("__html"in n.dangerouslySetInnerHTML))throw Error(r(61))}if(null!=n.style&&"object"!=typeof n.style)throw Error(r(62))}}function ke(e,n){if(-1===e.indexOf("-"))return"string"==typeof n.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var be=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var _e=null,xe=null,Ce=null;function Se(e){if(e=ka(e)){if("function"!=typeof _e)throw Error(r(280));var n=e.stateNode;n&&(n=wa(n),_e(e.stateNode,e.type,n))}}function Te(e){xe?Ce?Ce.push(e):Ce=[e]:xe=e}function Ie(){if(xe){var e=xe,n=Ce;if(Ce=xe=null,Se(e),n)for(e=0;e<n.length;e++)Se(n[e])}}function Ae(e,n){return e(n)}function je(){}var Ee=!1;function Pe(e,n,i){if(Ee)return e(n,i);Ee=!0;try{return Ae(e,n,i)}finally{Ee=!1,(null!==xe||null!==Ce)&&(je(),Ie())}}function Me(e,n){var i=e.stateNode;if(null===i)return null;var t=wa(i);if(null===t)return null;i=t[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(t=!t.disabled)||(t=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!t;break e;default:e=!1}if(e)return null;if(i&&"function"!=typeof i)throw Error(r(231,n,typeof i));return i}var Re=!1;if(c)try{var Ne={};Object.defineProperty(Ne,"passive",{get:function(){Re=!0}}),window.addEventListener("test",Ne,Ne),window.removeEventListener("test",Ne,Ne)}catch(ce){Re=!1}function Oe(e,n,i,t,a,r,o,s,d){var l=Array.prototype.slice.call(arguments,3);try{n.apply(i,l)}catch(e){this.onError(e)}}var Fe=!1,ze=null,Le=!1,qe=null,Be={onError:function(e){Fe=!0,ze=e}};function He(e,n,i,t,a,r,o,s,d){Fe=!1,ze=null,Oe.apply(Be,arguments)}function De(e){var n=e,i=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do{!!(4098&(n=e).flags)&&(i=n.return),e=n.return}while(e)}return 3===n.tag?i:null}function Ue(e){if(13===e.tag){var n=e.memoizedState;if(null===n&&null!==(e=e.alternate)&&(n=e.memoizedState),null!==n)return n.dehydrated}return null}function We(e){if(De(e)!==e)throw Error(r(188))}function Ke(e){return null!==(e=function(e){var n=e.alternate;if(!n){if(null===(n=De(e)))throw Error(r(188));return n!==e?null:e}for(var i=e,t=n;;){var a=i.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(t=a.return)){i=t;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===i)return We(a),e;if(o===t)return We(a),n;o=o.sibling}throw Error(r(188))}if(i.return!==t.return)i=a,t=o;else{for(var s=!1,d=a.child;d;){if(d===i){s=!0,i=a,t=o;break}if(d===t){s=!0,t=a,i=o;break}d=d.sibling}if(!s){for(d=o.child;d;){if(d===i){s=!0,i=o,t=a;break}if(d===t){s=!0,t=o,i=a;break}d=d.sibling}if(!s)throw Error(r(189))}}if(i.alternate!==t)throw Error(r(190))}if(3!==i.tag)throw Error(r(188));return i.stateNode.current===i?e:n}(e))?Ge(e):null}function Ge(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var n=Ge(e);if(null!==n)return n;e=e.sibling}return null}var $e=a.unstable_scheduleCallback,Ve=a.unstable_cancelCallback,Qe=a.unstable_shouldYield,Ye=a.unstable_requestPaint,Je=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Ze=a.unstable_ImmediatePriority,en=a.unstable_UserBlockingPriority,nn=a.unstable_NormalPriority,tn=a.unstable_LowPriority,an=a.unstable_IdlePriority,rn=null,on=null,sn=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(dn(e)/ln|0)|0},dn=Math.log,ln=Math.LN2,cn=64,fn=4194304;function un(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function hn(e,n){var i=e.pendingLanes;if(0===i)return 0;var t=0,a=e.suspendedLanes,r=e.pingedLanes,o=268435455&i;if(0!==o){var s=o&~a;0!==s?t=un(s):0!==(r&=o)&&(t=un(r))}else 0!==(o=i&~a)?t=un(o):0!==r&&(t=un(r));if(0===t)return 0;if(0!==n&&n!==t&&0===(n&a)&&((a=t&-t)>=(r=n&-n)||16===a&&4194240&r))return n;if(4&t&&(t|=16&i),0!==(n=e.entangledLanes))for(e=e.entanglements,n&=t;0<n;)a=1<<(i=31-sn(n)),t|=e[i],n&=~a;return t}function mn(e,n){switch(e){case 1:case 2:case 4:return n+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;default:return-1}}function pn(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gn(){var e=cn;return!(4194240&(cn<<=1))&&(cn=64),e}function vn(e){for(var n=[],i=0;31>i;i++)n.push(e);return n}function yn(e,n,i){e.pendingLanes|=n,536870912!==n&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[n=31-sn(n)]=i}function kn(e,n){var i=e.entangledLanes|=n;for(e=e.entanglements;i;){var t=31-sn(i),a=1<<t;a&n|e[t]&n&&(e[t]|=n),i&=~a}}var bn=0;function wn(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var _n,xn,Cn,Sn,Tn,In=!1,An=[],jn=null,En=null,Pn=null,Mn=new Map,Rn=new Map,Nn=[],On="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Fn(e,n){switch(e){case"focusin":case"focusout":jn=null;break;case"dragenter":case"dragleave":En=null;break;case"mouseover":case"mouseout":Pn=null;break;case"pointerover":case"pointerout":Mn.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":Rn.delete(n.pointerId)}}function zn(e,n,i,t,a,r){return null===e||e.nativeEvent!==r?(e={blockedOn:n,domEventName:i,eventSystemFlags:t,nativeEvent:r,targetContainers:[a]},null!==n&&null!==(n=ka(n))&&xn(n),e):(e.eventSystemFlags|=t,n=e.targetContainers,null!==a&&-1===n.indexOf(a)&&n.push(a),e)}function Ln(e){var n=ya(e.target);if(null!==n){var i=De(n);if(null!==i)if(13===(n=i.tag)){if(null!==(n=Ue(i)))return e.blockedOn=n,void Tn(e.priority,function(){Cn(i)})}else if(3===n&&i.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===i.tag?i.stateNode.containerInfo:null)}e.blockedOn=null}function qn(e){if(null!==e.blockedOn)return!1;for(var n=e.targetContainers;0<n.length;){var i=Yn(e.domEventName,e.eventSystemFlags,n[0],e.nativeEvent);if(null!==i)return null!==(n=ka(i))&&xn(n),e.blockedOn=i,!1;var t=new(i=e.nativeEvent).constructor(i.type,i);be=t,i.target.dispatchEvent(t),be=null,n.shift()}return!0}function Bn(e,n,i){qn(e)&&i.delete(n)}function Hn(){In=!1,null!==jn&&qn(jn)&&(jn=null),null!==En&&qn(En)&&(En=null),null!==Pn&&qn(Pn)&&(Pn=null),Mn.forEach(Bn),Rn.forEach(Bn)}function Dn(e,n){e.blockedOn===n&&(e.blockedOn=null,In||(In=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Hn)))}function Un(e){function n(n){return Dn(n,e)}if(0<An.length){Dn(An[0],e);for(var i=1;i<An.length;i++){var t=An[i];t.blockedOn===e&&(t.blockedOn=null)}}for(null!==jn&&Dn(jn,e),null!==En&&Dn(En,e),null!==Pn&&Dn(Pn,e),Mn.forEach(n),Rn.forEach(n),i=0;i<Nn.length;i++)(t=Nn[i]).blockedOn===e&&(t.blockedOn=null);for(;0<Nn.length&&null===(i=Nn[0]).blockedOn;)Ln(i),null===i.blockedOn&&Nn.shift()}var Wn=b.ReactCurrentBatchConfig,Kn=!0;function Gn(e,n,i,t){var a=bn,r=Wn.transition;Wn.transition=null;try{bn=1,Vn(e,n,i,t)}finally{bn=a,Wn.transition=r}}function $n(e,n,i,t){var a=bn,r=Wn.transition;Wn.transition=null;try{bn=4,Vn(e,n,i,t)}finally{bn=a,Wn.transition=r}}function Vn(e,n,i,t){if(Kn){var a=Yn(e,n,i,t);if(null===a)Wt(e,n,t,Qn,i),Fn(e,t);else if(function(e,n,i,t,a){switch(n){case"focusin":return jn=zn(jn,e,n,i,t,a),!0;case"dragenter":return En=zn(En,e,n,i,t,a),!0;case"mouseover":return Pn=zn(Pn,e,n,i,t,a),!0;case"pointerover":var r=a.pointerId;return Mn.set(r,zn(Mn.get(r)||null,e,n,i,t,a)),!0;case"gotpointercapture":return r=a.pointerId,Rn.set(r,zn(Rn.get(r)||null,e,n,i,t,a)),!0}return!1}(a,e,n,i,t))t.stopPropagation();else if(Fn(e,t),4&n&&-1<On.indexOf(e)){for(;null!==a;){var r=ka(a);if(null!==r&&_n(r),null===(r=Yn(e,n,i,t))&&Wt(e,n,t,Qn,i),r===a)break;a=r}null!==a&&t.stopPropagation()}else Wt(e,n,t,null,i)}}var Qn=null;function Yn(e,n,i,t){if(Qn=null,null!==(e=ya(e=we(t))))if(null===(n=De(e)))e=null;else if(13===(i=n.tag)){if(null!==(e=Ue(n)))return e;e=null}else if(3===i){if(n.stateNode.current.memoizedState.isDehydrated)return 3===n.tag?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null);return Qn=e,null}function Jn(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Ze:return 1;case en:return 4;case nn:case tn:return 16;case an:return 536870912;default:return 16}default:return 16}}var Xn=null,Zn=null,ei=null;function ni(){if(ei)return ei;var e,n,i=Zn,t=i.length,a="value"in Xn?Xn.value:Xn.textContent,r=a.length;for(e=0;e<t&&i[e]===a[e];e++);var o=t-e;for(n=1;n<=o&&i[t-n]===a[r-n];n++);return ei=a.slice(e,1<n?1-n:void 0)}function ii(e){var n=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===n&&(e=13):e=n,10===e&&(e=13),32<=e||13===e?e:0}function ti(){return!0}function ai(){return!1}function ri(e){function n(n,i,t,a,r){for(var o in this._reactName=n,this._targetInst=t,this.type=i,this.nativeEvent=a,this.target=r,this.currentTarget=null,e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(a):a[o]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?ti:ai,this.isPropagationStopped=ai,this}return z(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ti)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ti)},persist:function(){},isPersistent:ti}),n}var oi,si,di,li={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},ci=ri(li),fi=z({},li,{view:0,detail:0}),ui=ri(fi),hi=z({},fi,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Si,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==di&&(di&&"mousemove"===e.type?(oi=e.screenX-di.screenX,si=e.screenY-di.screenY):si=oi=0,di=e),oi)},movementY:function(e){return"movementY"in e?e.movementY:si}}),mi=ri(hi),pi=ri(z({},hi,{dataTransfer:0})),gi=ri(z({},fi,{relatedTarget:0})),vi=ri(z({},li,{animationName:0,elapsedTime:0,pseudoElement:0})),yi=z({},li,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),ki=ri(yi),bi=ri(z({},li,{data:0})),wi={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},_i={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xi={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ci(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):!!(e=xi[e])&&!!n[e]}function Si(){return Ci}var Ti=z({},fi,{key:function(e){if(e.key){var n=wi[e.key]||e.key;if("Unidentified"!==n)return n}return"keypress"===e.type?13===(e=ii(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?_i[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Si,charCode:function(e){return"keypress"===e.type?ii(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?ii(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ii=ri(Ti),Ai=ri(z({},hi,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),ji=ri(z({},fi,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Si})),Ei=ri(z({},li,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pi=z({},hi,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Mi=ri(Pi),Ri=[9,13,27,32],Ni=c&&"CompositionEvent"in window,Oi=null;c&&"documentMode"in document&&(Oi=document.documentMode);var Fi=c&&"TextEvent"in window&&!Oi,zi=c&&(!Ni||Oi&&8<Oi&&11>=Oi),Li=String.fromCharCode(32),qi=!1;function Bi(e,n){switch(e){case"keyup":return-1!==Ri.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hi(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Di=!1,Ui={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wi(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===n?!!Ui[e.type]:"textarea"===n}function Ki(e,n,i,t){Te(t),0<(n=Gt(n,"onChange")).length&&(i=new ci("onChange","change",null,i,t),e.push({event:i,listeners:n}))}var Gi=null,$i=null;function Vi(e){Lt(e,0)}function Qi(e){if($(ba(e)))return e}function Yi(e,n){if("change"===e)return n}var Ji=!1;if(c){var Xi;if(c){var Zi="oninput"in document;if(!Zi){var et=document.createElement("div");et.setAttribute("oninput","return;"),Zi="function"==typeof et.oninput}Xi=Zi}else Xi=!1;Ji=Xi&&(!document.documentMode||9<document.documentMode)}function nt(){Gi&&(Gi.detachEvent("onpropertychange",it),$i=Gi=null)}function it(e){if("value"===e.propertyName&&Qi($i)){var n=[];Ki(n,$i,e,we(e)),Pe(Vi,n)}}function tt(e,n,i){"focusin"===e?(nt(),$i=i,(Gi=n).attachEvent("onpropertychange",it)):"focusout"===e&&nt()}function at(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qi($i)}function rt(e,n){if("click"===e)return Qi(n)}function ot(e,n){if("input"===e||"change"===e)return Qi(n)}var st="function"==typeof Object.is?Object.is:function(e,n){return e===n&&(0!==e||1/e==1/n)||e!=e&&n!=n};function dt(e,n){if(st(e,n))return!0;if("object"!=typeof e||null===e||"object"!=typeof n||null===n)return!1;var i=Object.keys(e),t=Object.keys(n);if(i.length!==t.length)return!1;for(t=0;t<i.length;t++){var a=i[t];if(!f.call(n,a)||!st(e[a],n[a]))return!1}return!0}function lt(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ct(e,n){var i,t=lt(e);for(e=0;t;){if(3===t.nodeType){if(i=e+t.textContent.length,e<=n&&i>=n)return{node:t,offset:n-e};e=i}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=lt(t)}}function ft(e,n){return!(!e||!n)&&(e===n||(!e||3!==e.nodeType)&&(n&&3===n.nodeType?ft(e,n.parentNode):"contains"in e?e.contains(n):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(n))))}function ut(){for(var e=window,n=V();n instanceof e.HTMLIFrameElement;){try{var i="string"==typeof n.contentWindow.location.href}catch(e){i=!1}if(!i)break;n=V((e=n.contentWindow).document)}return n}function ht(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&("input"===n&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===n||"true"===e.contentEditable)}function mt(e){var n=ut(),i=e.focusedElem,t=e.selectionRange;if(n!==i&&i&&i.ownerDocument&&ft(i.ownerDocument.documentElement,i)){if(null!==t&&ht(i))if(n=t.start,void 0===(e=t.end)&&(e=n),"selectionStart"in i)i.selectionStart=n,i.selectionEnd=Math.min(e,i.value.length);else if((e=(n=i.ownerDocument||document)&&n.defaultView||window).getSelection){e=e.getSelection();var a=i.textContent.length,r=Math.min(t.start,a);t=void 0===t.end?r:Math.min(t.end,a),!e.extend&&r>t&&(a=t,t=r,r=a),a=ct(i,r);var o=ct(i,t);a&&o&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&((n=n.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),r>t?(e.addRange(n),e.extend(o.node,o.offset)):(n.setEnd(o.node,o.offset),e.addRange(n)))}for(n=[],e=i;e=e.parentNode;)1===e.nodeType&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;i<n.length;i++)(e=n[i]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var pt=c&&"documentMode"in document&&11>=document.documentMode,gt=null,vt=null,yt=null,kt=!1;function bt(e,n,i){var t=i.window===i?i.document:9===i.nodeType?i:i.ownerDocument;kt||null==gt||gt!==V(t)||(t="selectionStart"in(t=gt)&&ht(t)?{start:t.selectionStart,end:t.selectionEnd}:{anchorNode:(t=(t.ownerDocument&&t.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:t.anchorOffset,focusNode:t.focusNode,focusOffset:t.focusOffset},yt&&dt(yt,t)||(yt=t,0<(t=Gt(vt,"onSelect")).length&&(n=new ci("onSelect","select",null,n,i),e.push({event:n,listeners:t}),n.target=gt)))}function wt(e,n){var i={};return i[e.toLowerCase()]=n.toLowerCase(),i["Webkit"+e]="webkit"+n,i["Moz"+e]="moz"+n,i}var _t={animationend:wt("Animation","AnimationEnd"),animationiteration:wt("Animation","AnimationIteration"),animationstart:wt("Animation","AnimationStart"),transitionend:wt("Transition","TransitionEnd")},xt={},Ct={};function St(e){if(xt[e])return xt[e];if(!_t[e])return e;var n,i=_t[e];for(n in i)if(i.hasOwnProperty(n)&&n in Ct)return xt[e]=i[n];return e}c&&(Ct=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=St("animationend"),It=St("animationiteration"),At=St("animationstart"),jt=St("transitionend"),Et=new Map,Pt="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Mt(e,n){Et.set(e,n),d(n,[e])}for(var Rt=0;Rt<Pt.length;Rt++){var Nt=Pt[Rt];Mt(Nt.toLowerCase(),"on"+(Nt[0].toUpperCase()+Nt.slice(1)))}Mt(Tt,"onAnimationEnd"),Mt(It,"onAnimationIteration"),Mt(At,"onAnimationStart"),Mt("dblclick","onDoubleClick"),Mt("focusin","onFocus"),Mt("focusout","onBlur"),Mt(jt,"onTransitionEnd"),l("onMouseEnter",["mouseout","mouseover"]),l("onMouseLeave",["mouseout","mouseover"]),l("onPointerEnter",["pointerout","pointerover"]),l("onPointerLeave",["pointerout","pointerover"]),d("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),d("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),d("onBeforeInput",["compositionend","keypress","textInput","paste"]),d("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),d("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),d("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ot="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ft=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ot));function zt(e,n,i){var t=e.type||"unknown-event";e.currentTarget=i,function(e,n,i,t,a,o,s,d,l){if(He.apply(this,arguments),Fe){if(!Fe)throw Error(r(198));var c=ze;Fe=!1,ze=null,Le||(Le=!0,qe=c)}}(t,n,void 0,e),e.currentTarget=null}function Lt(e,n){n=!!(4&n);for(var i=0;i<e.length;i++){var t=e[i],a=t.event;t=t.listeners;e:{var r=void 0;if(n)for(var o=t.length-1;0<=o;o--){var s=t[o],d=s.instance,l=s.currentTarget;if(s=s.listener,d!==r&&a.isPropagationStopped())break e;zt(a,s,l),r=d}else for(o=0;o<t.length;o++){if(d=(s=t[o]).instance,l=s.currentTarget,s=s.listener,d!==r&&a.isPropagationStopped())break e;zt(a,s,l),r=d}}}if(Le)throw e=qe,Le=!1,qe=null,e}function qt(e,n){var i=n[pa];void 0===i&&(i=n[pa]=new Set);var t=e+"__bubble";i.has(t)||(Ut(n,e,2,!1),i.add(t))}function Bt(e,n,i){var t=0;n&&(t|=4),Ut(i,e,t,n)}var Ht="_reactListening"+Math.random().toString(36).slice(2);function Dt(e){if(!e[Ht]){e[Ht]=!0,o.forEach(function(n){"selectionchange"!==n&&(Ft.has(n)||Bt(n,!1,e),Bt(n,!0,e))});var n=9===e.nodeType?e:e.ownerDocument;null===n||n[Ht]||(n[Ht]=!0,Bt("selectionchange",!1,n))}}function Ut(e,n,i,t){switch(Jn(n)){case 1:var a=Gn;break;case 4:a=$n;break;default:a=Vn}i=a.bind(null,n,i,e),a=void 0,!Re||"touchstart"!==n&&"touchmove"!==n&&"wheel"!==n||(a=!0),t?void 0!==a?e.addEventListener(n,i,{capture:!0,passive:a}):e.addEventListener(n,i,!0):void 0!==a?e.addEventListener(n,i,{passive:a}):e.addEventListener(n,i,!1)}function Wt(e,n,i,t,a){var r=t;if(!(1&n||2&n||null===t))e:for(;;){if(null===t)return;var o=t.tag;if(3===o||4===o){var s=t.stateNode.containerInfo;if(s===a||8===s.nodeType&&s.parentNode===a)break;if(4===o)for(o=t.return;null!==o;){var d=o.tag;if((3===d||4===d)&&((d=o.stateNode.containerInfo)===a||8===d.nodeType&&d.parentNode===a))return;o=o.return}for(;null!==s;){if(null===(o=ya(s)))return;if(5===(d=o.tag)||6===d){t=r=o;continue e}s=s.parentNode}}t=t.return}Pe(function(){var t=r,a=we(i),o=[];e:{var s=Et.get(e);if(void 0!==s){var d=ci,l=e;switch(e){case"keypress":if(0===ii(i))break e;case"keydown":case"keyup":d=Ii;break;case"focusin":l="focus",d=gi;break;case"focusout":l="blur",d=gi;break;case"beforeblur":case"afterblur":d=gi;break;case"click":if(2===i.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":d=mi;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":d=pi;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":d=ji;break;case Tt:case It:case At:d=vi;break;case jt:d=Ei;break;case"scroll":d=ui;break;case"wheel":d=Mi;break;case"copy":case"cut":case"paste":d=ki;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":d=Ai}var c=!!(4&n),f=!c&&"scroll"===e,u=c?null!==s?s+"Capture":null:s;c=[];for(var h,m=t;null!==m;){var p=(h=m).stateNode;if(5===h.tag&&null!==p&&(h=p,null!==u&&null!=(p=Me(m,u))&&c.push(Kt(m,p,h))),f)break;m=m.return}0<c.length&&(s=new d(s,l,null,i,a),o.push({event:s,listeners:c}))}}if(!(7&n)){if(d="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||i===be||!(l=i.relatedTarget||i.fromElement)||!ya(l)&&!l[ma])&&(d||s)&&(s=a.window===a?a:(s=a.ownerDocument)?s.defaultView||s.parentWindow:window,d?(d=t,null!==(l=(l=i.relatedTarget||i.toElement)?ya(l):null)&&(l!==(f=De(l))||5!==l.tag&&6!==l.tag)&&(l=null)):(d=null,l=t),d!==l)){if(c=mi,p="onMouseLeave",u="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Ai,p="onPointerLeave",u="onPointerEnter",m="pointer"),f=null==d?s:ba(d),h=null==l?s:ba(l),(s=new c(p,m+"leave",d,i,a)).target=f,s.relatedTarget=h,p=null,ya(a)===t&&((c=new c(u,m+"enter",l,i,a)).target=h,c.relatedTarget=f,p=c),f=p,d&&l)e:{for(u=l,m=0,h=c=d;h;h=$t(h))m++;for(h=0,p=u;p;p=$t(p))h++;for(;0<m-h;)c=$t(c),m--;for(;0<h-m;)u=$t(u),h--;for(;m--;){if(c===u||null!==u&&c===u.alternate)break e;c=$t(c),u=$t(u)}c=null}else c=null;null!==d&&Vt(o,s,d,c,!1),null!==l&&null!==f&&Vt(o,f,l,c,!0)}if("select"===(d=(s=t?ba(t):window).nodeName&&s.nodeName.toLowerCase())||"input"===d&&"file"===s.type)var g=Yi;else if(Wi(s))if(Ji)g=ot;else{g=at;var v=tt}else(d=s.nodeName)&&"input"===d.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(g=rt);switch(g&&(g=g(e,t))?Ki(o,g,i,a):(v&&v(e,s,t),"focusout"===e&&(v=s._wrapperState)&&v.controlled&&"number"===s.type&&ee(s,"number",s.value)),v=t?ba(t):window,e){case"focusin":(Wi(v)||"true"===v.contentEditable)&&(gt=v,vt=t,yt=null);break;case"focusout":yt=vt=gt=null;break;case"mousedown":kt=!0;break;case"contextmenu":case"mouseup":case"dragend":kt=!1,bt(o,i,a);break;case"selectionchange":if(pt)break;case"keydown":case"keyup":bt(o,i,a)}var y;if(Ni)e:{switch(e){case"compositionstart":var k="onCompositionStart";break e;case"compositionend":k="onCompositionEnd";break e;case"compositionupdate":k="onCompositionUpdate";break e}k=void 0}else Di?Bi(e,i)&&(k="onCompositionEnd"):"keydown"===e&&229===i.keyCode&&(k="onCompositionStart");k&&(zi&&"ko"!==i.locale&&(Di||"onCompositionStart"!==k?"onCompositionEnd"===k&&Di&&(y=ni()):(Zn="value"in(Xn=a)?Xn.value:Xn.textContent,Di=!0)),0<(v=Gt(t,k)).length&&(k=new bi(k,e,null,i,a),o.push({event:k,listeners:v}),(y||null!==(y=Hi(i)))&&(k.data=y))),(y=Fi?function(e,n){switch(e){case"compositionend":return Hi(n);case"keypress":return 32!==n.which?null:(qi=!0,Li);case"textInput":return(e=n.data)===Li&&qi?null:e;default:return null}}(e,i):function(e,n){if(Di)return"compositionend"===e||!Ni&&Bi(e,n)?(e=ni(),ei=Zn=Xn=null,Di=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return zi&&"ko"!==n.locale?null:n.data}}(e,i))&&0<(t=Gt(t,"onBeforeInput")).length&&(a=new bi("onBeforeInput","beforeinput",null,i,a),o.push({event:a,listeners:t}),a.data=y)}Lt(o,n)})}function Kt(e,n,i){return{instance:e,listener:n,currentTarget:i}}function Gt(e,n){for(var i=n+"Capture",t=[];null!==e;){var a=e,r=a.stateNode;5===a.tag&&null!==r&&(a=r,null!=(r=Me(e,i))&&t.unshift(Kt(e,r,a)),null!=(r=Me(e,n))&&t.push(Kt(e,r,a))),e=e.return}return t}function $t(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Vt(e,n,i,t,a){for(var r=n._reactName,o=[];null!==i&&i!==t;){var s=i,d=s.alternate,l=s.stateNode;if(null!==d&&d===t)break;5===s.tag&&null!==l&&(s=l,a?null!=(d=Me(i,r))&&o.unshift(Kt(i,d,s)):a||null!=(d=Me(i,r))&&o.push(Kt(i,d,s))),i=i.return}0!==o.length&&e.push({event:n,listeners:o})}var Qt=/\r\n?/g,Yt=/\u0000|\uFFFD/g;function Jt(e){return("string"==typeof e?e:""+e).replace(Qt,"\n").replace(Yt,"")}function Xt(e,n,i){if(n=Jt(n),Jt(e)!==n&&i)throw Error(r(425))}function Zt(){}var ea=null,na=null;function ia(e,n){return"textarea"===e||"noscript"===e||"string"==typeof n.children||"number"==typeof n.children||"object"==typeof n.dangerouslySetInnerHTML&&null!==n.dangerouslySetInnerHTML&&null!=n.dangerouslySetInnerHTML.__html}var ta="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,ra="function"==typeof Promise?Promise:void 0,oa="function"==typeof queueMicrotask?queueMicrotask:void 0!==ra?function(e){return ra.resolve(null).then(e).catch(sa)}:ta;function sa(e){setTimeout(function(){throw e})}function da(e,n){var i=n,t=0;do{var a=i.nextSibling;if(e.removeChild(i),a&&8===a.nodeType)if("/$"===(i=a.data)){if(0===t)return e.removeChild(a),void Un(n);t--}else"$"!==i&&"$?"!==i&&"$!"!==i||t++;i=a}while(i);Un(n)}function la(e){for(;null!=e;e=e.nextSibling){var n=e.nodeType;if(1===n||3===n)break;if(8===n){if("$"===(n=e.data)||"$!"===n||"$?"===n)break;if("/$"===n)return null}}return e}function ca(e){e=e.previousSibling;for(var n=0;e;){if(8===e.nodeType){var i=e.data;if("$"===i||"$!"===i||"$?"===i){if(0===n)return e;n--}else"/$"===i&&n++}e=e.previousSibling}return null}var fa=Math.random().toString(36).slice(2),ua="__reactFiber$"+fa,ha="__reactProps$"+fa,ma="__reactContainer$"+fa,pa="__reactEvents$"+fa,ga="__reactListeners$"+fa,va="__reactHandles$"+fa;function ya(e){var n=e[ua];if(n)return n;for(var i=e.parentNode;i;){if(n=i[ma]||i[ua]){if(i=n.alternate,null!==n.child||null!==i&&null!==i.child)for(e=ca(e);null!==e;){if(i=e[ua])return i;e=ca(e)}return n}i=(e=i).parentNode}return null}function ka(e){return!(e=e[ua]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ba(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(r(33))}function wa(e){return e[ha]||null}var _a=[],xa=-1;function Ca(e){return{current:e}}function Sa(e){0>xa||(e.current=_a[xa],_a[xa]=null,xa--)}function Ta(e,n){xa++,_a[xa]=e.current,e.current=n}var Ia={},Aa=Ca(Ia),ja=Ca(!1),Ea=Ia;function Pa(e,n){var i=e.type.contextTypes;if(!i)return Ia;var t=e.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===n)return t.__reactInternalMemoizedMaskedChildContext;var a,r={};for(a in i)r[a]=n[a];return t&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=r),r}function Ma(e){return null!=e.childContextTypes}function Ra(){Sa(ja),Sa(Aa)}function Na(e,n,i){if(Aa.current!==Ia)throw Error(r(168));Ta(Aa,n),Ta(ja,i)}function Oa(e,n,i){var t=e.stateNode;if(n=n.childContextTypes,"function"!=typeof t.getChildContext)return i;for(var a in t=t.getChildContext())if(!(a in n))throw Error(r(108,U(e)||"Unknown",a));return z({},i,t)}function Fa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ia,Ea=Aa.current,Ta(Aa,e),Ta(ja,ja.current),!0}function za(e,n,i){var t=e.stateNode;if(!t)throw Error(r(169));i?(e=Oa(e,n,Ea),t.__reactInternalMemoizedMergedChildContext=e,Sa(ja),Sa(Aa),Ta(Aa,e)):Sa(ja),Ta(ja,i)}var La=null,qa=!1,Ba=!1;function Ha(e){null===La?La=[e]:La.push(e)}function Da(){if(!Ba&&null!==La){Ba=!0;var e=0,n=bn;try{var i=La;for(bn=1;e<i.length;e++){var t=i[e];do{t=t(!0)}while(null!==t)}La=null,qa=!1}catch(n){throw null!==La&&(La=La.slice(e+1)),$e(Ze,Da),n}finally{bn=n,Ba=!1}}return null}var Ua=[],Wa=0,Ka=null,Ga=0,$a=[],Va=0,Qa=null,Ya=1,Ja="";function Xa(e,n){Ua[Wa++]=Ga,Ua[Wa++]=Ka,Ka=e,Ga=n}function Za(e,n,i){$a[Va++]=Ya,$a[Va++]=Ja,$a[Va++]=Qa,Qa=e;var t=Ya;e=Ja;var a=32-sn(t)-1;t&=~(1<<a),i+=1;var r=32-sn(n)+a;if(30<r){var o=a-a%5;r=(t&(1<<o)-1).toString(32),t>>=o,a-=o,Ya=1<<32-sn(n)+a|i<<a|t,Ja=r+e}else Ya=1<<r|i<<a|t,Ja=e}function er(e){null!==e.return&&(Xa(e,1),Za(e,1,0))}function nr(e){for(;e===Ka;)Ka=Ua[--Wa],Ua[Wa]=null,Ga=Ua[--Wa],Ua[Wa]=null;for(;e===Qa;)Qa=$a[--Va],$a[Va]=null,Ja=$a[--Va],$a[Va]=null,Ya=$a[--Va],$a[Va]=null}var ir=null,tr=null,ar=!1,rr=null;function or(e,n){var i=El(5,null,null,0);i.elementType="DELETED",i.stateNode=n,i.return=e,null===(n=e.deletions)?(e.deletions=[i],e.flags|=16):n.push(i)}function sr(e,n){switch(e.tag){case 5:var i=e.type;return null!==(n=1!==n.nodeType||i.toLowerCase()!==n.nodeName.toLowerCase()?null:n)&&(e.stateNode=n,ir=e,tr=la(n.firstChild),!0);case 6:return null!==(n=""===e.pendingProps||3!==n.nodeType?null:n)&&(e.stateNode=n,ir=e,tr=null,!0);case 13:return null!==(n=8!==n.nodeType?null:n)&&(i=null!==Qa?{id:Ya,overflow:Ja}:null,e.memoizedState={dehydrated:n,treeContext:i,retryLane:1073741824},(i=El(18,null,null,0)).stateNode=n,i.return=e,e.child=i,ir=e,tr=null,!0);default:return!1}}function dr(e){return!(!(1&e.mode)||128&e.flags)}function lr(e){if(ar){var n=tr;if(n){var i=n;if(!sr(e,n)){if(dr(e))throw Error(r(418));n=la(i.nextSibling);var t=ir;n&&sr(e,n)?or(t,i):(e.flags=-4097&e.flags|2,ar=!1,ir=e)}}else{if(dr(e))throw Error(r(418));e.flags=-4097&e.flags|2,ar=!1,ir=e}}}function cr(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ir=e}function fr(e){if(e!==ir)return!1;if(!ar)return cr(e),ar=!0,!1;var n;if((n=3!==e.tag)&&!(n=5!==e.tag)&&(n="head"!==(n=e.type)&&"body"!==n&&!ia(e.type,e.memoizedProps)),n&&(n=tr)){if(dr(e))throw ur(),Error(r(418));for(;n;)or(e,n),n=la(n.nextSibling)}if(cr(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(r(317));e:{for(e=e.nextSibling,n=0;e;){if(8===e.nodeType){var i=e.data;if("/$"===i){if(0===n){tr=la(e.nextSibling);break e}n--}else"$"!==i&&"$!"!==i&&"$?"!==i||n++}e=e.nextSibling}tr=null}}else tr=ir?la(e.stateNode.nextSibling):null;return!0}function ur(){for(var e=tr;e;)e=la(e.nextSibling)}function hr(){tr=ir=null,ar=!1}function mr(e){null===rr?rr=[e]:rr.push(e)}var pr=b.ReactCurrentBatchConfig;function gr(e,n,i){if(null!==(e=i.ref)&&"function"!=typeof e&&"object"!=typeof e){if(i._owner){if(i=i._owner){if(1!==i.tag)throw Error(r(309));var t=i.stateNode}if(!t)throw Error(r(147,e));var a=t,o=""+e;return null!==n&&null!==n.ref&&"function"==typeof n.ref&&n.ref._stringRef===o?n.ref:(n=function(e){var n=a.refs;null===e?delete n[o]:n[o]=e},n._stringRef=o,n)}if("string"!=typeof e)throw Error(r(284));if(!i._owner)throw Error(r(290,e))}return e}function vr(e,n){throw e=Object.prototype.toString.call(n),Error(r(31,"[object Object]"===e?"object with keys {"+Object.keys(n).join(", ")+"}":e))}function yr(e){return(0,e._init)(e._payload)}function kr(e){function n(n,i){if(e){var t=n.deletions;null===t?(n.deletions=[i],n.flags|=16):t.push(i)}}function i(i,t){if(!e)return null;for(;null!==t;)n(i,t),t=t.sibling;return null}function t(e,n){for(e=new Map;null!==n;)null!==n.key?e.set(n.key,n):e.set(n.index,n),n=n.sibling;return e}function a(e,n){return(e=Ml(e,n)).index=0,e.sibling=null,e}function o(n,i,t){return n.index=t,e?null!==(t=n.alternate)?(t=t.index)<i?(n.flags|=2,i):t:(n.flags|=2,i):(n.flags|=1048576,i)}function s(n){return e&&null===n.alternate&&(n.flags|=2),n}function d(e,n,i,t){return null===n||6!==n.tag?((n=Fl(i,e.mode,t)).return=e,n):((n=a(n,i)).return=e,n)}function l(e,n,i,t){var r=i.type;return r===x?f(e,n,i.props.children,t,i.key):null!==n&&(n.elementType===r||"object"==typeof r&&null!==r&&r.$$typeof===M&&yr(r)===n.type)?((t=a(n,i.props)).ref=gr(e,n,i),t.return=e,t):((t=Rl(i.type,i.key,i.props,null,e.mode,t)).ref=gr(e,n,i),t.return=e,t)}function c(e,n,i,t){return null===n||4!==n.tag||n.stateNode.containerInfo!==i.containerInfo||n.stateNode.implementation!==i.implementation?((n=zl(i,e.mode,t)).return=e,n):((n=a(n,i.children||[])).return=e,n)}function f(e,n,i,t,r){return null===n||7!==n.tag?((n=Nl(i,e.mode,t,r)).return=e,n):((n=a(n,i)).return=e,n)}function u(e,n,i){if("string"==typeof n&&""!==n||"number"==typeof n)return(n=Fl(""+n,e.mode,i)).return=e,n;if("object"==typeof n&&null!==n){switch(n.$$typeof){case w:return(i=Rl(n.type,n.key,n.props,null,e.mode,i)).ref=gr(e,null,n),i.return=e,i;case _:return(n=zl(n,e.mode,i)).return=e,n;case M:return u(e,(0,n._init)(n._payload),i)}if(ne(n)||O(n))return(n=Nl(n,e.mode,i,null)).return=e,n;vr(e,n)}return null}function h(e,n,i,t){var a=null!==n?n.key:null;if("string"==typeof i&&""!==i||"number"==typeof i)return null!==a?null:d(e,n,""+i,t);if("object"==typeof i&&null!==i){switch(i.$$typeof){case w:return i.key===a?l(e,n,i,t):null;case _:return i.key===a?c(e,n,i,t):null;case M:return h(e,n,(a=i._init)(i._payload),t)}if(ne(i)||O(i))return null!==a?null:f(e,n,i,t,null);vr(e,i)}return null}function m(e,n,i,t,a){if("string"==typeof t&&""!==t||"number"==typeof t)return d(n,e=e.get(i)||null,""+t,a);if("object"==typeof t&&null!==t){switch(t.$$typeof){case w:return l(n,e=e.get(null===t.key?i:t.key)||null,t,a);case _:return c(n,e=e.get(null===t.key?i:t.key)||null,t,a);case M:return m(e,n,i,(0,t._init)(t._payload),a)}if(ne(t)||O(t))return f(n,e=e.get(i)||null,t,a,null);vr(n,t)}return null}function p(a,r,s,d){for(var l=null,c=null,f=r,p=r=0,g=null;null!==f&&p<s.length;p++){f.index>p?(g=f,f=null):g=f.sibling;var v=h(a,f,s[p],d);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&n(a,f),r=o(v,r,p),null===c?l=v:c.sibling=v,c=v,f=g}if(p===s.length)return i(a,f),ar&&Xa(a,p),l;if(null===f){for(;p<s.length;p++)null!==(f=u(a,s[p],d))&&(r=o(f,r,p),null===c?l=f:c.sibling=f,c=f);return ar&&Xa(a,p),l}for(f=t(a,f);p<s.length;p++)null!==(g=m(f,a,p,s[p],d))&&(e&&null!==g.alternate&&f.delete(null===g.key?p:g.key),r=o(g,r,p),null===c?l=g:c.sibling=g,c=g);return e&&f.forEach(function(e){return n(a,e)}),ar&&Xa(a,p),l}function g(a,s,d,l){var c=O(d);if("function"!=typeof c)throw Error(r(150));if(null==(d=c.call(d)))throw Error(r(151));for(var f=c=null,p=s,g=s=0,v=null,y=d.next();null!==p&&!y.done;g++,y=d.next()){p.index>g?(v=p,p=null):v=p.sibling;var k=h(a,p,y.value,l);if(null===k){null===p&&(p=v);break}e&&p&&null===k.alternate&&n(a,p),s=o(k,s,g),null===f?c=k:f.sibling=k,f=k,p=v}if(y.done)return i(a,p),ar&&Xa(a,g),c;if(null===p){for(;!y.done;g++,y=d.next())null!==(y=u(a,y.value,l))&&(s=o(y,s,g),null===f?c=y:f.sibling=y,f=y);return ar&&Xa(a,g),c}for(p=t(a,p);!y.done;g++,y=d.next())null!==(y=m(p,a,g,y.value,l))&&(e&&null!==y.alternate&&p.delete(null===y.key?g:y.key),s=o(y,s,g),null===f?c=y:f.sibling=y,f=y);return e&&p.forEach(function(e){return n(a,e)}),ar&&Xa(a,g),c}return function e(t,r,o,d){if("object"==typeof o&&null!==o&&o.type===x&&null===o.key&&(o=o.props.children),"object"==typeof o&&null!==o){switch(o.$$typeof){case w:e:{for(var l=o.key,c=r;null!==c;){if(c.key===l){if((l=o.type)===x){if(7===c.tag){i(t,c.sibling),(r=a(c,o.props.children)).return=t,t=r;break e}}else if(c.elementType===l||"object"==typeof l&&null!==l&&l.$$typeof===M&&yr(l)===c.type){i(t,c.sibling),(r=a(c,o.props)).ref=gr(t,c,o),r.return=t,t=r;break e}i(t,c);break}n(t,c),c=c.sibling}o.type===x?((r=Nl(o.props.children,t.mode,d,o.key)).return=t,t=r):((d=Rl(o.type,o.key,o.props,null,t.mode,d)).ref=gr(t,r,o),d.return=t,t=d)}return s(t);case _:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){i(t,r.sibling),(r=a(r,o.children||[])).return=t,t=r;break e}i(t,r);break}n(t,r),r=r.sibling}(r=zl(o,t.mode,d)).return=t,t=r}return s(t);case M:return e(t,r,(c=o._init)(o._payload),d)}if(ne(o))return p(t,r,o,d);if(O(o))return g(t,r,o,d);vr(t,o)}return"string"==typeof o&&""!==o||"number"==typeof o?(o=""+o,null!==r&&6===r.tag?(i(t,r.sibling),(r=a(r,o)).return=t,t=r):(i(t,r),(r=Fl(o,t.mode,d)).return=t,t=r),s(t)):i(t,r)}}var br=kr(!0),wr=kr(!1),_r=Ca(null),xr=null,Cr=null,Sr=null;function Tr(){Sr=Cr=xr=null}function Ir(e){var n=_r.current;Sa(_r),e._currentValue=n}function Ar(e,n,i){for(;null!==e;){var t=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,null!==t&&(t.childLanes|=n)):null!==t&&(t.childLanes&n)!==n&&(t.childLanes|=n),e===i)break;e=e.return}}function jr(e,n){xr=e,Sr=Cr=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&n)&&(ks=!0),e.firstContext=null)}function Er(e){var n=e._currentValue;if(Sr!==e)if(e={context:e,memoizedValue:n,next:null},null===Cr){if(null===xr)throw Error(r(308));Cr=e,xr.dependencies={lanes:0,firstContext:e}}else Cr=Cr.next=e;return n}var Pr=null;function Mr(e){null===Pr?Pr=[e]:Pr.push(e)}function Rr(e,n,i,t){var a=n.interleaved;return null===a?(i.next=i,Mr(n)):(i.next=a.next,a.next=i),n.interleaved=i,Nr(e,t)}function Nr(e,n){e.lanes|=n;var i=e.alternate;for(null!==i&&(i.lanes|=n),i=e,e=e.return;null!==e;)e.childLanes|=n,null!==(i=e.alternate)&&(i.childLanes|=n),i=e,e=e.return;return 3===i.tag?i.stateNode:null}var Or=!1;function Fr(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function zr(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Lr(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function qr(e,n,i){var t=e.updateQueue;if(null===t)return null;if(t=t.shared,2&Id){var a=t.pending;return null===a?n.next=n:(n.next=a.next,a.next=n),t.pending=n,Nr(e,i)}return null===(a=t.interleaved)?(n.next=n,Mr(t)):(n.next=a.next,a.next=n),t.interleaved=n,Nr(e,i)}function Br(e,n,i){if(null!==(n=n.updateQueue)&&(n=n.shared,4194240&i)){var t=n.lanes;i|=t&=e.pendingLanes,n.lanes=i,kn(e,i)}}function Hr(e,n){var i=e.updateQueue,t=e.alternate;if(null!==t&&i===(t=t.updateQueue)){var a=null,r=null;if(null!==(i=i.firstBaseUpdate)){do{var o={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};null===r?a=r=o:r=r.next=o,i=i.next}while(null!==i);null===r?a=r=n:r=r.next=n}else a=r=n;return i={baseState:t.baseState,firstBaseUpdate:a,lastBaseUpdate:r,shared:t.shared,effects:t.effects},void(e.updateQueue=i)}null===(e=i.lastBaseUpdate)?i.firstBaseUpdate=n:e.next=n,i.lastBaseUpdate=n}function Dr(e,n,i,t){var a=e.updateQueue;Or=!1;var r=a.firstBaseUpdate,o=a.lastBaseUpdate,s=a.shared.pending;if(null!==s){a.shared.pending=null;var d=s,l=d.next;d.next=null,null===o?r=l:o.next=l,o=d;var c=e.alternate;null!==c&&(s=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===s?c.firstBaseUpdate=l:s.next=l,c.lastBaseUpdate=d)}if(null!==r){var f=a.baseState;for(o=0,c=l=d=null,s=r;;){var u=s.lane,h=s.eventTime;if((t&u)===u){null!==c&&(c=c.next={eventTime:h,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var m=e,p=s;switch(u=n,h=i,p.tag){case 1:if("function"==typeof(m=p.payload)){f=m.call(h,f,u);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(u="function"==typeof(m=p.payload)?m.call(h,f,u):m))break e;f=z({},f,u);break e;case 2:Or=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(u=a.effects)?a.effects=[s]:u.push(s))}else h={eventTime:h,lane:u,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===c?(l=c=h,d=f):c=c.next=h,o|=u;if(null===(s=s.next)){if(null===(s=a.shared.pending))break;s=(u=s).next,u.next=null,a.lastBaseUpdate=u,a.shared.pending=null}}if(null===c&&(d=f),a.baseState=d,a.firstBaseUpdate=l,a.lastBaseUpdate=c,null!==(n=a.shared.interleaved)){a=n;do{o|=a.lane,a=a.next}while(a!==n)}else null===r&&(a.shared.lanes=0);Od|=o,e.lanes=o,e.memoizedState=f}}function Ur(e,n,i){if(e=n.effects,n.effects=null,null!==e)for(n=0;n<e.length;n++){var t=e[n],a=t.callback;if(null!==a){if(t.callback=null,t=i,"function"!=typeof a)throw Error(r(191,a));a.call(t)}}}var Wr={},Kr=Ca(Wr),Gr=Ca(Wr),$r=Ca(Wr);function Vr(e){if(e===Wr)throw Error(r(174));return e}function Qr(e,n){switch(Ta($r,n),Ta(Gr,e),Ta(Kr,Wr),e=n.nodeType){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:de(null,"");break;default:n=de(n=(e=8===e?n.parentNode:n).namespaceURI||null,e=e.tagName)}Sa(Kr),Ta(Kr,n)}function Yr(){Sa(Kr),Sa(Gr),Sa($r)}function Jr(e){Vr($r.current);var n=Vr(Kr.current),i=de(n,e.type);n!==i&&(Ta(Gr,e),Ta(Kr,i))}function Xr(e){Gr.current===e&&(Sa(Kr),Sa(Gr))}var Zr=Ca(0);function eo(e){for(var n=e;null!==n;){if(13===n.tag){var i=n.memoizedState;if(null!==i&&(null===(i=i.dehydrated)||"$?"===i.data||"$!"===i.data))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(128&n.flags)return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var no=[];function io(){for(var e=0;e<no.length;e++)no[e]._workInProgressVersionPrimary=null;no.length=0}var to=b.ReactCurrentDispatcher,ao=b.ReactCurrentBatchConfig,ro=0,oo=null,so=null,lo=null,co=!1,fo=!1,uo=0,ho=0;function mo(){throw Error(r(321))}function po(e,n){if(null===n)return!1;for(var i=0;i<n.length&&i<e.length;i++)if(!st(e[i],n[i]))return!1;return!0}function go(e,n,i,t,a,o){if(ro=o,oo=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,to.current=null===e||null===e.memoizedState?Zo:es,e=i(t,a),fo){o=0;do{if(fo=!1,uo=0,25<=o)throw Error(r(301));o+=1,lo=so=null,n.updateQueue=null,to.current=ns,e=i(t,a)}while(fo)}if(to.current=Xo,n=null!==so&&null!==so.next,ro=0,lo=so=oo=null,co=!1,n)throw Error(r(300));return e}function vo(){var e=0!==uo;return uo=0,e}function yo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===lo?oo.memoizedState=lo=e:lo=lo.next=e,lo}function ko(){if(null===so){var e=oo.alternate;e=null!==e?e.memoizedState:null}else e=so.next;var n=null===lo?oo.memoizedState:lo.next;if(null!==n)lo=n,so=e;else{if(null===e)throw Error(r(310));e={memoizedState:(so=e).memoizedState,baseState:so.baseState,baseQueue:so.baseQueue,queue:so.queue,next:null},null===lo?oo.memoizedState=lo=e:lo=lo.next=e}return lo}function bo(e,n){return"function"==typeof n?n(e):n}function wo(e){var n=ko(),i=n.queue;if(null===i)throw Error(r(311));i.lastRenderedReducer=e;var t=so,a=t.baseQueue,o=i.pending;if(null!==o){if(null!==a){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,i.pending=null}if(null!==a){o=a.next,t=t.baseState;var d=s=null,l=null,c=o;do{var f=c.lane;if((ro&f)===f)null!==l&&(l=l.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),t=c.hasEagerState?c.eagerState:e(t,c.action);else{var u={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===l?(d=l=u,s=t):l=l.next=u,oo.lanes|=f,Od|=f}c=c.next}while(null!==c&&c!==o);null===l?s=t:l.next=d,st(t,n.memoizedState)||(ks=!0),n.memoizedState=t,n.baseState=s,n.baseQueue=l,i.lastRenderedState=t}if(null!==(e=i.interleaved)){a=e;do{o=a.lane,oo.lanes|=o,Od|=o,a=a.next}while(a!==e)}else null===a&&(i.lanes=0);return[n.memoizedState,i.dispatch]}function _o(e){var n=ko(),i=n.queue;if(null===i)throw Error(r(311));i.lastRenderedReducer=e;var t=i.dispatch,a=i.pending,o=n.memoizedState;if(null!==a){i.pending=null;var s=a=a.next;do{o=e(o,s.action),s=s.next}while(s!==a);st(o,n.memoizedState)||(ks=!0),n.memoizedState=o,null===n.baseQueue&&(n.baseState=o),i.lastRenderedState=o}return[o,t]}function xo(){}function Co(e,n){var i=oo,t=ko(),a=n(),o=!st(t.memoizedState,a);if(o&&(t.memoizedState=a,ks=!0),t=t.queue,Fo(Io.bind(null,i,t,e),[e]),t.getSnapshot!==n||o||null!==lo&&1&lo.memoizedState.tag){if(i.flags|=2048,Po(9,To.bind(null,i,t,a,n),void 0,null),null===Ad)throw Error(r(349));30&ro||So(i,n,a)}return a}function So(e,n,i){e.flags|=16384,e={getSnapshot:n,value:i},null===(n=oo.updateQueue)?(n={lastEffect:null,stores:null},oo.updateQueue=n,n.stores=[e]):null===(i=n.stores)?n.stores=[e]:i.push(e)}function To(e,n,i,t){n.value=i,n.getSnapshot=t,Ao(n)&&jo(e)}function Io(e,n,i){return i(function(){Ao(n)&&jo(e)})}function Ao(e){var n=e.getSnapshot;e=e.value;try{var i=n();return!st(e,i)}catch(e){return!0}}function jo(e){var n=Nr(e,1);null!==n&&nl(n,e,1,-1)}function Eo(e){var n=yo();return"function"==typeof e&&(e=e()),n.memoizedState=n.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:bo,lastRenderedState:e},n.queue=e,e=e.dispatch=Vo.bind(null,oo,e),[n.memoizedState,e]}function Po(e,n,i,t){return e={tag:e,create:n,destroy:i,deps:t,next:null},null===(n=oo.updateQueue)?(n={lastEffect:null,stores:null},oo.updateQueue=n,n.lastEffect=e.next=e):null===(i=n.lastEffect)?n.lastEffect=e.next=e:(t=i.next,i.next=e,e.next=t,n.lastEffect=e),e}function Mo(){return ko().memoizedState}function Ro(e,n,i,t){var a=yo();oo.flags|=e,a.memoizedState=Po(1|n,i,void 0,void 0===t?null:t)}function No(e,n,i,t){var a=ko();t=void 0===t?null:t;var r=void 0;if(null!==so){var o=so.memoizedState;if(r=o.destroy,null!==t&&po(t,o.deps))return void(a.memoizedState=Po(n,i,r,t))}oo.flags|=e,a.memoizedState=Po(1|n,i,r,t)}function Oo(e,n){return Ro(8390656,8,e,n)}function Fo(e,n){return No(2048,8,e,n)}function zo(e,n){return No(4,2,e,n)}function Lo(e,n){return No(4,4,e,n)}function qo(e,n){return"function"==typeof n?(e=e(),n(e),function(){n(null)}):null!=n?(e=e(),n.current=e,function(){n.current=null}):void 0}function Bo(e,n,i){return i=null!=i?i.concat([e]):null,No(4,4,qo.bind(null,n,e),i)}function Ho(){}function Do(e,n){var i=ko();n=void 0===n?null:n;var t=i.memoizedState;return null!==t&&null!==n&&po(n,t[1])?t[0]:(i.memoizedState=[e,n],e)}function Uo(e,n){var i=ko();n=void 0===n?null:n;var t=i.memoizedState;return null!==t&&null!==n&&po(n,t[1])?t[0]:(e=e(),i.memoizedState=[e,n],e)}function Wo(e,n,i){return 21&ro?(st(i,n)||(i=gn(),oo.lanes|=i,Od|=i,e.baseState=!0),n):(e.baseState&&(e.baseState=!1,ks=!0),e.memoizedState=i)}function Ko(e,n){var i=bn;bn=0!==i&&4>i?i:4,e(!0);var t=ao.transition;ao.transition={};try{e(!1),n()}finally{bn=i,ao.transition=t}}function Go(){return ko().memoizedState}function $o(e,n,i){var t=el(e);i={lane:t,action:i,hasEagerState:!1,eagerState:null,next:null},Qo(e)?Yo(n,i):null!==(i=Rr(e,n,i,t))&&(nl(i,e,t,Zd()),Jo(i,n,t))}function Vo(e,n,i){var t=el(e),a={lane:t,action:i,hasEagerState:!1,eagerState:null,next:null};if(Qo(e))Yo(n,a);else{var r=e.alternate;if(0===e.lanes&&(null===r||0===r.lanes)&&null!==(r=n.lastRenderedReducer))try{var o=n.lastRenderedState,s=r(o,i);if(a.hasEagerState=!0,a.eagerState=s,st(s,o)){var d=n.interleaved;return null===d?(a.next=a,Mr(n)):(a.next=d.next,d.next=a),void(n.interleaved=a)}}catch(e){}null!==(i=Rr(e,n,a,t))&&(nl(i,e,t,a=Zd()),Jo(i,n,t))}}function Qo(e){var n=e.alternate;return e===oo||null!==n&&n===oo}function Yo(e,n){fo=co=!0;var i=e.pending;null===i?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function Jo(e,n,i){if(4194240&i){var t=n.lanes;i|=t&=e.pendingLanes,n.lanes=i,kn(e,i)}}var Xo={readContext:Er,useCallback:mo,useContext:mo,useEffect:mo,useImperativeHandle:mo,useInsertionEffect:mo,useLayoutEffect:mo,useMemo:mo,useReducer:mo,useRef:mo,useState:mo,useDebugValue:mo,useDeferredValue:mo,useTransition:mo,useMutableSource:mo,useSyncExternalStore:mo,useId:mo,unstable_isNewReconciler:!1},Zo={readContext:Er,useCallback:function(e,n){return yo().memoizedState=[e,void 0===n?null:n],e},useContext:Er,useEffect:Oo,useImperativeHandle:function(e,n,i){return i=null!=i?i.concat([e]):null,Ro(4194308,4,qo.bind(null,n,e),i)},useLayoutEffect:function(e,n){return Ro(4194308,4,e,n)},useInsertionEffect:function(e,n){return Ro(4,2,e,n)},useMemo:function(e,n){var i=yo();return n=void 0===n?null:n,e=e(),i.memoizedState=[e,n],e},useReducer:function(e,n,i){var t=yo();return n=void 0!==i?i(n):n,t.memoizedState=t.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},t.queue=e,e=e.dispatch=$o.bind(null,oo,e),[t.memoizedState,e]},useRef:function(e){return e={current:e},yo().memoizedState=e},useState:Eo,useDebugValue:Ho,useDeferredValue:function(e){return yo().memoizedState=e},useTransition:function(){var e=Eo(!1),n=e[0];return e=Ko.bind(null,e[1]),yo().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,i){var t=oo,a=yo();if(ar){if(void 0===i)throw Error(r(407));i=i()}else{if(i=n(),null===Ad)throw Error(r(349));30&ro||So(t,n,i)}a.memoizedState=i;var o={value:i,getSnapshot:n};return a.queue=o,Oo(Io.bind(null,t,o,e),[e]),t.flags|=2048,Po(9,To.bind(null,t,o,i,n),void 0,null),i},useId:function(){var e=yo(),n=Ad.identifierPrefix;if(ar){var i=Ja;n=":"+n+"R"+(i=(Ya&~(1<<32-sn(Ya)-1)).toString(32)+i),0<(i=uo++)&&(n+="H"+i.toString(32)),n+=":"}else n=":"+n+"r"+(i=ho++).toString(32)+":";return e.memoizedState=n},unstable_isNewReconciler:!1},es={readContext:Er,useCallback:Do,useContext:Er,useEffect:Fo,useImperativeHandle:Bo,useInsertionEffect:zo,useLayoutEffect:Lo,useMemo:Uo,useReducer:wo,useRef:Mo,useState:function(){return wo(bo)},useDebugValue:Ho,useDeferredValue:function(e){return Wo(ko(),so.memoizedState,e)},useTransition:function(){return[wo(bo)[0],ko().memoizedState]},useMutableSource:xo,useSyncExternalStore:Co,useId:Go,unstable_isNewReconciler:!1},ns={readContext:Er,useCallback:Do,useContext:Er,useEffect:Fo,useImperativeHandle:Bo,useInsertionEffect:zo,useLayoutEffect:Lo,useMemo:Uo,useReducer:_o,useRef:Mo,useState:function(){return _o(bo)},useDebugValue:Ho,useDeferredValue:function(e){var n=ko();return null===so?n.memoizedState=e:Wo(n,so.memoizedState,e)},useTransition:function(){return[_o(bo)[0],ko().memoizedState]},useMutableSource:xo,useSyncExternalStore:Co,useId:Go,unstable_isNewReconciler:!1};function is(e,n){if(e&&e.defaultProps){for(var i in n=z({},n),e=e.defaultProps)void 0===n[i]&&(n[i]=e[i]);return n}return n}function ts(e,n,i,t){i=null==(i=i(t,n=e.memoizedState))?n:z({},n,i),e.memoizedState=i,0===e.lanes&&(e.updateQueue.baseState=i)}var as={isMounted:function(e){return!!(e=e._reactInternals)&&De(e)===e},enqueueSetState:function(e,n,i){e=e._reactInternals;var t=Zd(),a=el(e),r=Lr(t,a);r.payload=n,null!=i&&(r.callback=i),null!==(n=qr(e,r,a))&&(nl(n,e,a,t),Br(n,e,a))},enqueueReplaceState:function(e,n,i){e=e._reactInternals;var t=Zd(),a=el(e),r=Lr(t,a);r.tag=1,r.payload=n,null!=i&&(r.callback=i),null!==(n=qr(e,r,a))&&(nl(n,e,a,t),Br(n,e,a))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var i=Zd(),t=el(e),a=Lr(i,t);a.tag=2,null!=n&&(a.callback=n),null!==(n=qr(e,a,t))&&(nl(n,e,t,i),Br(n,e,t))}};function rs(e,n,i,t,a,r,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(t,r,o):!(n.prototype&&n.prototype.isPureReactComponent&&dt(i,t)&&dt(a,r))}function os(e,n,i){var t=!1,a=Ia,r=n.contextType;return"object"==typeof r&&null!==r?r=Er(r):(a=Ma(n)?Ea:Aa.current,r=(t=null!=(t=n.contextTypes))?Pa(e,a):Ia),n=new n(i,r),e.memoizedState=null!==n.state&&void 0!==n.state?n.state:null,n.updater=as,e.stateNode=n,n._reactInternals=e,t&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=r),n}function ss(e,n,i,t){e=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(i,t),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(i,t),n.state!==e&&as.enqueueReplaceState(n,n.state,null)}function ds(e,n,i,t){var a=e.stateNode;a.props=i,a.state=e.memoizedState,a.refs={},Fr(e);var r=n.contextType;"object"==typeof r&&null!==r?a.context=Er(r):(r=Ma(n)?Ea:Aa.current,a.context=Pa(e,r)),a.state=e.memoizedState,"function"==typeof(r=n.getDerivedStateFromProps)&&(ts(e,n,r,i),a.state=e.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(n=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),n!==a.state&&as.enqueueReplaceState(a,a.state,null),Dr(e,i,a,t),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function ls(e,n){try{var i="",t=n;do{i+=H(t),t=t.return}while(t);var a=i}catch(e){a="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:n,stack:a,digest:null}}function cs(e,n,i){return{value:e,source:null,stack:null!=i?i:null,digest:null!=n?n:null}}function fs(e,n){try{console.error(n.value)}catch(e){setTimeout(function(){throw e})}}var us="function"==typeof WeakMap?WeakMap:Map;function hs(e,n,i){(i=Lr(-1,i)).tag=3,i.payload={element:null};var t=n.value;return i.callback=function(){Ud||(Ud=!0,Wd=t),fs(0,n)},i}function ms(e,n,i){(i=Lr(-1,i)).tag=3;var t=e.type.getDerivedStateFromError;if("function"==typeof t){var a=n.value;i.payload=function(){return t(a)},i.callback=function(){fs(0,n)}}var r=e.stateNode;return null!==r&&"function"==typeof r.componentDidCatch&&(i.callback=function(){fs(0,n),"function"!=typeof t&&(null===Kd?Kd=new Set([this]):Kd.add(this));var e=n.stack;this.componentDidCatch(n.value,{componentStack:null!==e?e:""})}),i}function ps(e,n,i){var t=e.pingCache;if(null===t){t=e.pingCache=new us;var a=new Set;t.set(n,a)}else void 0===(a=t.get(n))&&(a=new Set,t.set(n,a));a.has(i)||(a.add(i),e=Cl.bind(null,e,n,i),n.then(e,e))}function gs(e){do{var n;if((n=13===e.tag)&&(n=null===(n=e.memoizedState)||null!==n.dehydrated),n)return e;e=e.return}while(null!==e);return null}function vs(e,n,i,t,a){return 1&e.mode?(e.flags|=65536,e.lanes=a,e):(e===n?e.flags|=65536:(e.flags|=128,i.flags|=131072,i.flags&=-52805,1===i.tag&&(null===i.alternate?i.tag=17:((n=Lr(-1,1)).tag=2,qr(i,n,1))),i.lanes|=1),e)}var ys=b.ReactCurrentOwner,ks=!1;function bs(e,n,i,t){n.child=null===e?wr(n,null,i,t):br(n,e.child,i,t)}function ws(e,n,i,t,a){i=i.render;var r=n.ref;return jr(n,a),t=go(e,n,i,t,r,a),i=vo(),null===e||ks?(ar&&i&&er(n),n.flags|=1,bs(e,n,t,a),n.child):(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~a,Us(e,n,a))}function _s(e,n,i,t,a){if(null===e){var r=i.type;return"function"!=typeof r||Pl(r)||void 0!==r.defaultProps||null!==i.compare||void 0!==i.defaultProps?((e=Rl(i.type,null,t,n,n.mode,a)).ref=n.ref,e.return=n,n.child=e):(n.tag=15,n.type=r,xs(e,n,r,t,a))}if(r=e.child,0===(e.lanes&a)){var o=r.memoizedProps;if((i=null!==(i=i.compare)?i:dt)(o,t)&&e.ref===n.ref)return Us(e,n,a)}return n.flags|=1,(e=Ml(r,t)).ref=n.ref,e.return=n,n.child=e}function xs(e,n,i,t,a){if(null!==e){var r=e.memoizedProps;if(dt(r,t)&&e.ref===n.ref){if(ks=!1,n.pendingProps=t=r,0===(e.lanes&a))return n.lanes=e.lanes,Us(e,n,a);131072&e.flags&&(ks=!0)}}return Ts(e,n,i,t,a)}function Cs(e,n,i){var t=n.pendingProps,a=t.children,r=null!==e?e.memoizedState:null;if("hidden"===t.mode)if(1&n.mode){if(!(1073741824&i))return e=null!==r?r.baseLanes|i:i,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,Ta(Md,Pd),Pd|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},t=null!==r?r.baseLanes:i,Ta(Md,Pd),Pd|=t}else n.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ta(Md,Pd),Pd|=i;else null!==r?(t=r.baseLanes|i,n.memoizedState=null):t=i,Ta(Md,Pd),Pd|=t;return bs(e,n,a,i),n.child}function Ss(e,n){var i=n.ref;(null===e&&null!==i||null!==e&&e.ref!==i)&&(n.flags|=512,n.flags|=2097152)}function Ts(e,n,i,t,a){var r=Ma(i)?Ea:Aa.current;return r=Pa(n,r),jr(n,a),i=go(e,n,i,t,r,a),t=vo(),null===e||ks?(ar&&t&&er(n),n.flags|=1,bs(e,n,i,a),n.child):(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~a,Us(e,n,a))}function Is(e,n,i,t,a){if(Ma(i)){var r=!0;Fa(n)}else r=!1;if(jr(n,a),null===n.stateNode)Ds(e,n),os(n,i,t),ds(n,i,t,a),t=!0;else if(null===e){var o=n.stateNode,s=n.memoizedProps;o.props=s;var d=o.context,l=i.contextType;l="object"==typeof l&&null!==l?Er(l):Pa(n,l=Ma(i)?Ea:Aa.current);var c=i.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof o.getSnapshotBeforeUpdate;f||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==t||d!==l)&&ss(n,o,t,l),Or=!1;var u=n.memoizedState;o.state=u,Dr(n,t,o,a),d=n.memoizedState,s!==t||u!==d||ja.current||Or?("function"==typeof c&&(ts(n,i,c,t),d=n.memoizedState),(s=Or||rs(n,i,s,t,u,d,l))?(f||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(n.flags|=4194308)):("function"==typeof o.componentDidMount&&(n.flags|=4194308),n.memoizedProps=t,n.memoizedState=d),o.props=t,o.state=d,o.context=l,t=s):("function"==typeof o.componentDidMount&&(n.flags|=4194308),t=!1)}else{o=n.stateNode,zr(e,n),s=n.memoizedProps,l=n.type===n.elementType?s:is(n.type,s),o.props=l,f=n.pendingProps,u=o.context,d="object"==typeof(d=i.contextType)&&null!==d?Er(d):Pa(n,d=Ma(i)?Ea:Aa.current);var h=i.getDerivedStateFromProps;(c="function"==typeof h||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==f||u!==d)&&ss(n,o,t,d),Or=!1,u=n.memoizedState,o.state=u,Dr(n,t,o,a);var m=n.memoizedState;s!==f||u!==m||ja.current||Or?("function"==typeof h&&(ts(n,i,h,t),m=n.memoizedState),(l=Or||rs(n,i,l,t,u,m,d)||!1)?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(t,m,d),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(t,m,d)),"function"==typeof o.componentDidUpdate&&(n.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&u===e.memoizedState||(n.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&u===e.memoizedState||(n.flags|=1024),n.memoizedProps=t,n.memoizedState=m),o.props=t,o.state=m,o.context=d,t=l):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&u===e.memoizedState||(n.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&u===e.memoizedState||(n.flags|=1024),t=!1)}return As(e,n,i,t,r,a)}function As(e,n,i,t,a,r){Ss(e,n);var o=!!(128&n.flags);if(!t&&!o)return a&&za(n,i,!1),Us(e,n,r);t=n.stateNode,ys.current=n;var s=o&&"function"!=typeof i.getDerivedStateFromError?null:t.render();return n.flags|=1,null!==e&&o?(n.child=br(n,e.child,null,r),n.child=br(n,null,s,r)):bs(e,n,s,r),n.memoizedState=t.state,a&&za(n,i,!0),n.child}function js(e){var n=e.stateNode;n.pendingContext?Na(0,n.pendingContext,n.pendingContext!==n.context):n.context&&Na(0,n.context,!1),Qr(e,n.containerInfo)}function Es(e,n,i,t,a){return hr(),mr(a),n.flags|=256,bs(e,n,i,t),n.child}var Ps,Ms,Rs,Ns={dehydrated:null,treeContext:null,retryLane:0};function Os(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fs(e,n,i){var t,a=n.pendingProps,o=Zr.current,s=!1,d=!!(128&n.flags);if((t=d)||(t=(null===e||null!==e.memoizedState)&&!!(2&o)),t?(s=!0,n.flags&=-129):null!==e&&null===e.memoizedState||(o|=1),Ta(Zr,1&o),null===e)return lr(n),null!==(e=n.memoizedState)&&null!==(e=e.dehydrated)?(1&n.mode?"$!"===e.data?n.lanes=8:n.lanes=1073741824:n.lanes=1,null):(d=a.children,e=a.fallback,s?(a=n.mode,s=n.child,d={mode:"hidden",children:d},1&a||null===s?s=Ol(d,a,0,null):(s.childLanes=0,s.pendingProps=d),e=Nl(e,a,i,null),s.return=n,e.return=n,s.sibling=e,n.child=s,n.child.memoizedState=Os(i),n.memoizedState=Ns,e):zs(n,d));if(null!==(o=e.memoizedState)&&null!==(t=o.dehydrated))return function(e,n,i,t,a,o,s){if(i)return 256&n.flags?(n.flags&=-257,Ls(e,n,s,t=cs(Error(r(422))))):null!==n.memoizedState?(n.child=e.child,n.flags|=128,null):(o=t.fallback,a=n.mode,t=Ol({mode:"visible",children:t.children},a,0,null),(o=Nl(o,a,s,null)).flags|=2,t.return=n,o.return=n,t.sibling=o,n.child=t,1&n.mode&&br(n,e.child,null,s),n.child.memoizedState=Os(s),n.memoizedState=Ns,o);if(!(1&n.mode))return Ls(e,n,s,null);if("$!"===a.data){if(t=a.nextSibling&&a.nextSibling.dataset)var d=t.dgst;return t=d,Ls(e,n,s,t=cs(o=Error(r(419)),t,void 0))}if(d=0!==(s&e.childLanes),ks||d){if(null!==(t=Ad)){switch(s&-s){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!==(a&(t.suspendedLanes|s))?0:a)&&a!==o.retryLane&&(o.retryLane=a,Nr(e,a),nl(t,e,a,-1))}return ml(),Ls(e,n,s,t=cs(Error(r(421))))}return"$?"===a.data?(n.flags|=128,n.child=e.child,n=Tl.bind(null,e),a._reactRetry=n,null):(e=o.treeContext,tr=la(a.nextSibling),ir=n,ar=!0,rr=null,null!==e&&($a[Va++]=Ya,$a[Va++]=Ja,$a[Va++]=Qa,Ya=e.id,Ja=e.overflow,Qa=n),(n=zs(n,t.children)).flags|=4096,n)}(e,n,d,a,t,o,i);if(s){s=a.fallback,d=n.mode,t=(o=e.child).sibling;var l={mode:"hidden",children:a.children};return 1&d||n.child===o?(a=Ml(o,l)).subtreeFlags=14680064&o.subtreeFlags:((a=n.child).childLanes=0,a.pendingProps=l,n.deletions=null),null!==t?s=Ml(t,s):(s=Nl(s,d,i,null)).flags|=2,s.return=n,a.return=n,a.sibling=s,n.child=a,a=s,s=n.child,d=null===(d=e.child.memoizedState)?Os(i):{baseLanes:d.baseLanes|i,cachePool:null,transitions:d.transitions},s.memoizedState=d,s.childLanes=e.childLanes&~i,n.memoizedState=Ns,a}return e=(s=e.child).sibling,a=Ml(s,{mode:"visible",children:a.children}),!(1&n.mode)&&(a.lanes=i),a.return=n,a.sibling=null,null!==e&&(null===(i=n.deletions)?(n.deletions=[e],n.flags|=16):i.push(e)),n.child=a,n.memoizedState=null,a}function zs(e,n){return(n=Ol({mode:"visible",children:n},e.mode,0,null)).return=e,e.child=n}function Ls(e,n,i,t){return null!==t&&mr(t),br(n,e.child,null,i),(e=zs(n,n.pendingProps.children)).flags|=2,n.memoizedState=null,e}function qs(e,n,i){e.lanes|=n;var t=e.alternate;null!==t&&(t.lanes|=n),Ar(e.return,n,i)}function Bs(e,n,i,t,a){var r=e.memoizedState;null===r?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:t,tail:i,tailMode:a}:(r.isBackwards=n,r.rendering=null,r.renderingStartTime=0,r.last=t,r.tail=i,r.tailMode=a)}function Hs(e,n,i){var t=n.pendingProps,a=t.revealOrder,r=t.tail;if(bs(e,n,t.children,i),2&(t=Zr.current))t=1&t|2,n.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=n.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&qs(e,i,n);else if(19===e.tag)qs(e,i,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}t&=1}if(Ta(Zr,t),1&n.mode)switch(a){case"forwards":for(i=n.child,a=null;null!==i;)null!==(e=i.alternate)&&null===eo(e)&&(a=i),i=i.sibling;null===(i=a)?(a=n.child,n.child=null):(a=i.sibling,i.sibling=null),Bs(n,!1,a,i,r);break;case"backwards":for(i=null,a=n.child,n.child=null;null!==a;){if(null!==(e=a.alternate)&&null===eo(e)){n.child=a;break}e=a.sibling,a.sibling=i,i=a,a=e}Bs(n,!0,i,null,r);break;case"together":Bs(n,!1,null,null,void 0);break;default:n.memoizedState=null}else n.memoizedState=null;return n.child}function Ds(e,n){!(1&n.mode)&&null!==e&&(e.alternate=null,n.alternate=null,n.flags|=2)}function Us(e,n,i){if(null!==e&&(n.dependencies=e.dependencies),Od|=n.lanes,0===(i&n.childLanes))return null;if(null!==e&&n.child!==e.child)throw Error(r(153));if(null!==n.child){for(i=Ml(e=n.child,e.pendingProps),n.child=i,i.return=n;null!==e.sibling;)e=e.sibling,(i=i.sibling=Ml(e,e.pendingProps)).return=n;i.sibling=null}return n.child}function Ws(e,n){if(!ar)switch(e.tailMode){case"hidden":n=e.tail;for(var i=null;null!==n;)null!==n.alternate&&(i=n),n=n.sibling;null===i?e.tail=null:i.sibling=null;break;case"collapsed":i=e.tail;for(var t=null;null!==i;)null!==i.alternate&&(t=i),i=i.sibling;null===t?n||null===e.tail?e.tail=null:e.tail.sibling=null:t.sibling=null}}function Ks(e){var n=null!==e.alternate&&e.alternate.child===e.child,i=0,t=0;if(n)for(var a=e.child;null!==a;)i|=a.lanes|a.childLanes,t|=14680064&a.subtreeFlags,t|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)i|=a.lanes|a.childLanes,t|=a.subtreeFlags,t|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=t,e.childLanes=i,n}function Gs(e,n,i){var t=n.pendingProps;switch(nr(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ks(n),null;case 1:case 17:return Ma(n.type)&&Ra(),Ks(n),null;case 3:return t=n.stateNode,Yr(),Sa(ja),Sa(Aa),io(),t.pendingContext&&(t.context=t.pendingContext,t.pendingContext=null),null!==e&&null!==e.child||(fr(n)?n.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&n.flags)||(n.flags|=1024,null!==rr&&(rl(rr),rr=null))),Ks(n),null;case 5:Xr(n);var a=Vr($r.current);if(i=n.type,null!==e&&null!=n.stateNode)Ms(e,n,i,t),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!t){if(null===n.stateNode)throw Error(r(166));return Ks(n),null}if(e=Vr(Kr.current),fr(n)){t=n.stateNode,i=n.type;var o=n.memoizedProps;switch(t[ua]=n,t[ha]=o,e=!!(1&n.mode),i){case"dialog":qt("cancel",t),qt("close",t);break;case"iframe":case"object":case"embed":qt("load",t);break;case"video":case"audio":for(a=0;a<Ot.length;a++)qt(Ot[a],t);break;case"source":qt("error",t);break;case"img":case"image":case"link":qt("error",t),qt("load",t);break;case"details":qt("toggle",t);break;case"input":Y(t,o),qt("invalid",t);break;case"select":t._wrapperState={wasMultiple:!!o.multiple},qt("invalid",t);break;case"textarea":ae(t,o),qt("invalid",t)}for(var d in ye(i,o),a=null,o)if(o.hasOwnProperty(d)){var l=o[d];"children"===d?"string"==typeof l?t.textContent!==l&&(!0!==o.suppressHydrationWarning&&Xt(t.textContent,l,e),a=["children",l]):"number"==typeof l&&t.textContent!==""+l&&(!0!==o.suppressHydrationWarning&&Xt(t.textContent,l,e),a=["children",""+l]):s.hasOwnProperty(d)&&null!=l&&"onScroll"===d&&qt("scroll",t)}switch(i){case"input":G(t),Z(t,o,!0);break;case"textarea":G(t),oe(t);break;case"select":case"option":break;default:"function"==typeof o.onClick&&(t.onclick=Zt)}t=a,n.updateQueue=t,null!==t&&(n.flags|=4)}else{d=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(i)),"http://www.w3.org/1999/xhtml"===e?"script"===i?((e=d.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof t.is?e=d.createElement(i,{is:t.is}):(e=d.createElement(i),"select"===i&&(d=e,t.multiple?d.multiple=!0:t.size&&(d.size=t.size))):e=d.createElementNS(e,i),e[ua]=n,e[ha]=t,Ps(e,n),n.stateNode=e;e:{switch(d=ke(i,t),i){case"dialog":qt("cancel",e),qt("close",e),a=t;break;case"iframe":case"object":case"embed":qt("load",e),a=t;break;case"video":case"audio":for(a=0;a<Ot.length;a++)qt(Ot[a],e);a=t;break;case"source":qt("error",e),a=t;break;case"img":case"image":case"link":qt("error",e),qt("load",e),a=t;break;case"details":qt("toggle",e),a=t;break;case"input":Y(e,t),a=Q(e,t),qt("invalid",e);break;case"option":default:a=t;break;case"select":e._wrapperState={wasMultiple:!!t.multiple},a=z({},t,{value:void 0}),qt("invalid",e);break;case"textarea":ae(e,t),a=te(e,t),qt("invalid",e)}for(o in ye(i,a),l=a)if(l.hasOwnProperty(o)){var c=l[o];"style"===o?ge(e,c):"dangerouslySetInnerHTML"===o?null!=(c=c?c.__html:void 0)&&fe(e,c):"children"===o?"string"==typeof c?("textarea"!==i||""!==c)&&ue(e,c):"number"==typeof c&&ue(e,""+c):"suppressContentEditableWarning"!==o&&"suppressHydrationWarning"!==o&&"autoFocus"!==o&&(s.hasOwnProperty(o)?null!=c&&"onScroll"===o&&qt("scroll",e):null!=c&&k(e,o,c,d))}switch(i){case"input":G(e),Z(e,t,!1);break;case"textarea":G(e),oe(e);break;case"option":null!=t.value&&e.setAttribute("value",""+W(t.value));break;case"select":e.multiple=!!t.multiple,null!=(o=t.value)?ie(e,!!t.multiple,o,!1):null!=t.defaultValue&&ie(e,!!t.multiple,t.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Zt)}switch(i){case"button":case"input":case"select":case"textarea":t=!!t.autoFocus;break e;case"img":t=!0;break e;default:t=!1}}t&&(n.flags|=4)}null!==n.ref&&(n.flags|=512,n.flags|=2097152)}return Ks(n),null;case 6:if(e&&null!=n.stateNode)Rs(0,n,e.memoizedProps,t);else{if("string"!=typeof t&&null===n.stateNode)throw Error(r(166));if(i=Vr($r.current),Vr(Kr.current),fr(n)){if(t=n.stateNode,i=n.memoizedProps,t[ua]=n,(o=t.nodeValue!==i)&&null!==(e=ir))switch(e.tag){case 3:Xt(t.nodeValue,i,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xt(t.nodeValue,i,!!(1&e.mode))}o&&(n.flags|=4)}else(t=(9===i.nodeType?i:i.ownerDocument).createTextNode(t))[ua]=n,n.stateNode=t}return Ks(n),null;case 13:if(Sa(Zr),t=n.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ar&&null!==tr&&1&n.mode&&!(128&n.flags))ur(),hr(),n.flags|=98560,o=!1;else if(o=fr(n),null!==t&&null!==t.dehydrated){if(null===e){if(!o)throw Error(r(318));if(!(o=null!==(o=n.memoizedState)?o.dehydrated:null))throw Error(r(317));o[ua]=n}else hr(),!(128&n.flags)&&(n.memoizedState=null),n.flags|=4;Ks(n),o=!1}else null!==rr&&(rl(rr),rr=null),o=!0;if(!o)return 65536&n.flags?n:null}return 128&n.flags?(n.lanes=i,n):((t=null!==t)!=(null!==e&&null!==e.memoizedState)&&t&&(n.child.flags|=8192,1&n.mode&&(null===e||1&Zr.current?0===Rd&&(Rd=3):ml())),null!==n.updateQueue&&(n.flags|=4),Ks(n),null);case 4:return Yr(),null===e&&Dt(n.stateNode.containerInfo),Ks(n),null;case 10:return Ir(n.type._context),Ks(n),null;case 19:if(Sa(Zr),null===(o=n.memoizedState))return Ks(n),null;if(t=!!(128&n.flags),null===(d=o.rendering))if(t)Ws(o,!1);else{if(0!==Rd||null!==e&&128&e.flags)for(e=n.child;null!==e;){if(null!==(d=eo(e))){for(n.flags|=128,Ws(o,!1),null!==(t=d.updateQueue)&&(n.updateQueue=t,n.flags|=4),n.subtreeFlags=0,t=i,i=n.child;null!==i;)e=t,(o=i).flags&=14680066,null===(d=o.alternate)?(o.childLanes=0,o.lanes=e,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=d.childLanes,o.lanes=d.lanes,o.child=d.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=d.memoizedProps,o.memoizedState=d.memoizedState,o.updateQueue=d.updateQueue,o.type=d.type,e=d.dependencies,o.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),i=i.sibling;return Ta(Zr,1&Zr.current|2),n.child}e=e.sibling}null!==o.tail&&Je()>Hd&&(n.flags|=128,t=!0,Ws(o,!1),n.lanes=4194304)}else{if(!t)if(null!==(e=eo(d))){if(n.flags|=128,t=!0,null!==(i=e.updateQueue)&&(n.updateQueue=i,n.flags|=4),Ws(o,!0),null===o.tail&&"hidden"===o.tailMode&&!d.alternate&&!ar)return Ks(n),null}else 2*Je()-o.renderingStartTime>Hd&&1073741824!==i&&(n.flags|=128,t=!0,Ws(o,!1),n.lanes=4194304);o.isBackwards?(d.sibling=n.child,n.child=d):(null!==(i=o.last)?i.sibling=d:n.child=d,o.last=d)}return null!==o.tail?(n=o.tail,o.rendering=n,o.tail=n.sibling,o.renderingStartTime=Je(),n.sibling=null,i=Zr.current,Ta(Zr,t?1&i|2:1&i),n):(Ks(n),null);case 22:case 23:return cl(),t=null!==n.memoizedState,null!==e&&null!==e.memoizedState!==t&&(n.flags|=8192),t&&1&n.mode?!!(1073741824&Pd)&&(Ks(n),6&n.subtreeFlags&&(n.flags|=8192)):Ks(n),null;case 24:case 25:return null}throw Error(r(156,n.tag))}function $s(e,n){switch(nr(n),n.tag){case 1:return Ma(n.type)&&Ra(),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return Yr(),Sa(ja),Sa(Aa),io(),65536&(e=n.flags)&&!(128&e)?(n.flags=-65537&e|128,n):null;case 5:return Xr(n),null;case 13:if(Sa(Zr),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(r(340));hr()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return Sa(Zr),null;case 4:return Yr(),null;case 10:return Ir(n.type._context),null;case 22:case 23:return cl(),null;default:return null}}Ps=function(e,n){for(var i=n.child;null!==i;){if(5===i.tag||6===i.tag)e.appendChild(i.stateNode);else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===n)break;for(;null===i.sibling;){if(null===i.return||i.return===n)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},Ms=function(e,n,i,t){var a=e.memoizedProps;if(a!==t){e=n.stateNode,Vr(Kr.current);var r,o=null;switch(i){case"input":a=Q(e,a),t=Q(e,t),o=[];break;case"select":a=z({},a,{value:void 0}),t=z({},t,{value:void 0}),o=[];break;case"textarea":a=te(e,a),t=te(e,t),o=[];break;default:"function"!=typeof a.onClick&&"function"==typeof t.onClick&&(e.onclick=Zt)}for(c in ye(i,t),i=null,a)if(!t.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var d=a[c];for(r in d)d.hasOwnProperty(r)&&(i||(i={}),i[r]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(s.hasOwnProperty(c)?o||(o=[]):(o=o||[]).push(c,null));for(c in t){var l=t[c];if(d=null!=a?a[c]:void 0,t.hasOwnProperty(c)&&l!==d&&(null!=l||null!=d))if("style"===c)if(d){for(r in d)!d.hasOwnProperty(r)||l&&l.hasOwnProperty(r)||(i||(i={}),i[r]="");for(r in l)l.hasOwnProperty(r)&&d[r]!==l[r]&&(i||(i={}),i[r]=l[r])}else i||(o||(o=[]),o.push(c,i)),i=l;else"dangerouslySetInnerHTML"===c?(l=l?l.__html:void 0,d=d?d.__html:void 0,null!=l&&d!==l&&(o=o||[]).push(c,l)):"children"===c?"string"!=typeof l&&"number"!=typeof l||(o=o||[]).push(c,""+l):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(s.hasOwnProperty(c)?(null!=l&&"onScroll"===c&&qt("scroll",e),o||d===l||(o=[])):(o=o||[]).push(c,l))}i&&(o=o||[]).push("style",i);var c=o;(n.updateQueue=c)&&(n.flags|=4)}},Rs=function(e,n,i,t){i!==t&&(n.flags|=4)};var Vs=!1,Qs=!1,Ys="function"==typeof WeakSet?WeakSet:Set,Js=null;function Xs(e,n){var i=e.ref;if(null!==i)if("function"==typeof i)try{i(null)}catch(i){xl(e,n,i)}else i.current=null}function Zs(e,n,i){try{i()}catch(i){xl(e,n,i)}}var ed=!1;function nd(e,n,i){var t=n.updateQueue;if(null!==(t=null!==t?t.lastEffect:null)){var a=t=t.next;do{if((a.tag&e)===e){var r=a.destroy;a.destroy=void 0,void 0!==r&&Zs(n,i,r)}a=a.next}while(a!==t)}}function id(e,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var i=n=n.next;do{if((i.tag&e)===e){var t=i.create;i.destroy=t()}i=i.next}while(i!==n)}}function td(e){var n=e.ref;if(null!==n){var i=e.stateNode;e.tag,e=i,"function"==typeof n?n(e):n.current=e}}function ad(e){var n=e.alternate;null!==n&&(e.alternate=null,ad(n)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(n=e.stateNode)&&(delete n[ua],delete n[ha],delete n[pa],delete n[ga],delete n[va]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function rd(e){return 5===e.tag||3===e.tag||4===e.tag}function od(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||rd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function sd(e,n,i){var t=e.tag;if(5===t||6===t)e=e.stateNode,n?8===i.nodeType?i.parentNode.insertBefore(e,n):i.insertBefore(e,n):(8===i.nodeType?(n=i.parentNode).insertBefore(e,i):(n=i).appendChild(e),null!=(i=i._reactRootContainer)||null!==n.onclick||(n.onclick=Zt));else if(4!==t&&null!==(e=e.child))for(sd(e,n,i),e=e.sibling;null!==e;)sd(e,n,i),e=e.sibling}function dd(e,n,i){var t=e.tag;if(5===t||6===t)e=e.stateNode,n?i.insertBefore(e,n):i.appendChild(e);else if(4!==t&&null!==(e=e.child))for(dd(e,n,i),e=e.sibling;null!==e;)dd(e,n,i),e=e.sibling}var ld=null,cd=!1;function fd(e,n,i){for(i=i.child;null!==i;)ud(e,n,i),i=i.sibling}function ud(e,n,i){if(on&&"function"==typeof on.onCommitFiberUnmount)try{on.onCommitFiberUnmount(rn,i)}catch(e){}switch(i.tag){case 5:Qs||Xs(i,n);case 6:var t=ld,a=cd;ld=null,fd(e,n,i),cd=a,null!==(ld=t)&&(cd?(e=ld,i=i.stateNode,8===e.nodeType?e.parentNode.removeChild(i):e.removeChild(i)):ld.removeChild(i.stateNode));break;case 18:null!==ld&&(cd?(e=ld,i=i.stateNode,8===e.nodeType?da(e.parentNode,i):1===e.nodeType&&da(e,i),Un(e)):da(ld,i.stateNode));break;case 4:t=ld,a=cd,ld=i.stateNode.containerInfo,cd=!0,fd(e,n,i),ld=t,cd=a;break;case 0:case 11:case 14:case 15:if(!Qs&&null!==(t=i.updateQueue)&&null!==(t=t.lastEffect)){a=t=t.next;do{var r=a,o=r.destroy;r=r.tag,void 0!==o&&(2&r||4&r)&&Zs(i,n,o),a=a.next}while(a!==t)}fd(e,n,i);break;case 1:if(!Qs&&(Xs(i,n),"function"==typeof(t=i.stateNode).componentWillUnmount))try{t.props=i.memoizedProps,t.state=i.memoizedState,t.componentWillUnmount()}catch(e){xl(i,n,e)}fd(e,n,i);break;case 21:fd(e,n,i);break;case 22:1&i.mode?(Qs=(t=Qs)||null!==i.memoizedState,fd(e,n,i),Qs=t):fd(e,n,i);break;default:fd(e,n,i)}}function hd(e){var n=e.updateQueue;if(null!==n){e.updateQueue=null;var i=e.stateNode;null===i&&(i=e.stateNode=new Ys),n.forEach(function(n){var t=Il.bind(null,e,n);i.has(n)||(i.add(n),n.then(t,t))})}}function md(e,n){var i=n.deletions;if(null!==i)for(var t=0;t<i.length;t++){var a=i[t];try{var o=e,s=n,d=s;e:for(;null!==d;){switch(d.tag){case 5:ld=d.stateNode,cd=!1;break e;case 3:case 4:ld=d.stateNode.containerInfo,cd=!0;break e}d=d.return}if(null===ld)throw Error(r(160));ud(o,s,a),ld=null,cd=!1;var l=a.alternate;null!==l&&(l.return=null),a.return=null}catch(e){xl(a,n,e)}}if(12854&n.subtreeFlags)for(n=n.child;null!==n;)pd(n,e),n=n.sibling}function pd(e,n){var i=e.alternate,t=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(md(n,e),gd(e),4&t){try{nd(3,e,e.return),id(3,e)}catch(n){xl(e,e.return,n)}try{nd(5,e,e.return)}catch(n){xl(e,e.return,n)}}break;case 1:md(n,e),gd(e),512&t&&null!==i&&Xs(i,i.return);break;case 5:if(md(n,e),gd(e),512&t&&null!==i&&Xs(i,i.return),32&e.flags){var a=e.stateNode;try{ue(a,"")}catch(n){xl(e,e.return,n)}}if(4&t&&null!=(a=e.stateNode)){var o=e.memoizedProps,s=null!==i?i.memoizedProps:o,d=e.type,l=e.updateQueue;if(e.updateQueue=null,null!==l)try{"input"===d&&"radio"===o.type&&null!=o.name&&J(a,o),ke(d,s);var c=ke(d,o);for(s=0;s<l.length;s+=2){var f=l[s],u=l[s+1];"style"===f?ge(a,u):"dangerouslySetInnerHTML"===f?fe(a,u):"children"===f?ue(a,u):k(a,f,u,c)}switch(d){case"input":X(a,o);break;case"textarea":re(a,o);break;case"select":var h=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!o.multiple;var m=o.value;null!=m?ie(a,!!o.multiple,m,!1):h!==!!o.multiple&&(null!=o.defaultValue?ie(a,!!o.multiple,o.defaultValue,!0):ie(a,!!o.multiple,o.multiple?[]:"",!1))}a[ha]=o}catch(n){xl(e,e.return,n)}}break;case 6:if(md(n,e),gd(e),4&t){if(null===e.stateNode)throw Error(r(162));a=e.stateNode,o=e.memoizedProps;try{a.nodeValue=o}catch(n){xl(e,e.return,n)}}break;case 3:if(md(n,e),gd(e),4&t&&null!==i&&i.memoizedState.isDehydrated)try{Un(n.containerInfo)}catch(n){xl(e,e.return,n)}break;case 4:default:md(n,e),gd(e);break;case 13:md(n,e),gd(e),8192&(a=e.child).flags&&(o=null!==a.memoizedState,a.stateNode.isHidden=o,!o||null!==a.alternate&&null!==a.alternate.memoizedState||(Bd=Je())),4&t&&hd(e);break;case 22:if(f=null!==i&&null!==i.memoizedState,1&e.mode?(Qs=(c=Qs)||f,md(n,e),Qs=c):md(n,e),gd(e),8192&t){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!f&&1&e.mode)for(Js=e,f=e.child;null!==f;){for(u=Js=f;null!==Js;){switch(m=(h=Js).child,h.tag){case 0:case 11:case 14:case 15:nd(4,h,h.return);break;case 1:Xs(h,h.return);var p=h.stateNode;if("function"==typeof p.componentWillUnmount){t=h,i=h.return;try{n=t,p.props=n.memoizedProps,p.state=n.memoizedState,p.componentWillUnmount()}catch(e){xl(t,i,e)}}break;case 5:Xs(h,h.return);break;case 22:if(null!==h.memoizedState){bd(u);continue}}null!==m?(m.return=h,Js=m):bd(u)}f=f.sibling}e:for(f=null,u=e;;){if(5===u.tag){if(null===f){f=u;try{a=u.stateNode,c?"function"==typeof(o=a.style).setProperty?o.setProperty("display","none","important"):o.display="none":(d=u.stateNode,s=null!=(l=u.memoizedProps.style)&&l.hasOwnProperty("display")?l.display:null,d.style.display=pe("display",s))}catch(n){xl(e,e.return,n)}}}else if(6===u.tag){if(null===f)try{u.stateNode.nodeValue=c?"":u.memoizedProps}catch(n){xl(e,e.return,n)}}else if((22!==u.tag&&23!==u.tag||null===u.memoizedState||u===e)&&null!==u.child){u.child.return=u,u=u.child;continue}if(u===e)break e;for(;null===u.sibling;){if(null===u.return||u.return===e)break e;f===u&&(f=null),u=u.return}f===u&&(f=null),u.sibling.return=u.return,u=u.sibling}}break;case 19:md(n,e),gd(e),4&t&&hd(e);case 21:}}function gd(e){var n=e.flags;if(2&n){try{e:{for(var i=e.return;null!==i;){if(rd(i)){var t=i;break e}i=i.return}throw Error(r(160))}switch(t.tag){case 5:var a=t.stateNode;32&t.flags&&(ue(a,""),t.flags&=-33),dd(e,od(e),a);break;case 3:case 4:var o=t.stateNode.containerInfo;sd(e,od(e),o);break;default:throw Error(r(161))}}catch(n){xl(e,e.return,n)}e.flags&=-3}4096&n&&(e.flags&=-4097)}function vd(e,n,i){Js=e,yd(e,n,i)}function yd(e,n,i){for(var t=!!(1&e.mode);null!==Js;){var a=Js,r=a.child;if(22===a.tag&&t){var o=null!==a.memoizedState||Vs;if(!o){var s=a.alternate,d=null!==s&&null!==s.memoizedState||Qs;s=Vs;var l=Qs;if(Vs=o,(Qs=d)&&!l)for(Js=a;null!==Js;)d=(o=Js).child,22===o.tag&&null!==o.memoizedState?wd(a):null!==d?(d.return=o,Js=d):wd(a);for(;null!==r;)Js=r,yd(r,n,i),r=r.sibling;Js=a,Vs=s,Qs=l}kd(e)}else 8772&a.subtreeFlags&&null!==r?(r.return=a,Js=r):kd(e)}}function kd(e){for(;null!==Js;){var n=Js;if(8772&n.flags){var i=n.alternate;try{if(8772&n.flags)switch(n.tag){case 0:case 11:case 15:Qs||id(5,n);break;case 1:var t=n.stateNode;if(4&n.flags&&!Qs)if(null===i)t.componentDidMount();else{var a=n.elementType===n.type?i.memoizedProps:is(n.type,i.memoizedProps);t.componentDidUpdate(a,i.memoizedState,t.__reactInternalSnapshotBeforeUpdate)}var o=n.updateQueue;null!==o&&Ur(n,o,t);break;case 3:var s=n.updateQueue;if(null!==s){if(i=null,null!==n.child)switch(n.child.tag){case 5:case 1:i=n.child.stateNode}Ur(n,s,i)}break;case 5:var d=n.stateNode;if(null===i&&4&n.flags){i=d;var l=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":l.autoFocus&&i.focus();break;case"img":l.src&&(i.src=l.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===n.memoizedState){var c=n.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var u=f.dehydrated;null!==u&&Un(u)}}}break;default:throw Error(r(163))}Qs||512&n.flags&&td(n)}catch(e){xl(n,n.return,e)}}if(n===e){Js=null;break}if(null!==(i=n.sibling)){i.return=n.return,Js=i;break}Js=n.return}}function bd(e){for(;null!==Js;){var n=Js;if(n===e){Js=null;break}var i=n.sibling;if(null!==i){i.return=n.return,Js=i;break}Js=n.return}}function wd(e){for(;null!==Js;){var n=Js;try{switch(n.tag){case 0:case 11:case 15:var i=n.return;try{id(4,n)}catch(e){xl(n,i,e)}break;case 1:var t=n.stateNode;if("function"==typeof t.componentDidMount){var a=n.return;try{t.componentDidMount()}catch(e){xl(n,a,e)}}var r=n.return;try{td(n)}catch(e){xl(n,r,e)}break;case 5:var o=n.return;try{td(n)}catch(e){xl(n,o,e)}}}catch(e){xl(n,n.return,e)}if(n===e){Js=null;break}var s=n.sibling;if(null!==s){s.return=n.return,Js=s;break}Js=n.return}}var _d,xd=Math.ceil,Cd=b.ReactCurrentDispatcher,Sd=b.ReactCurrentOwner,Td=b.ReactCurrentBatchConfig,Id=0,Ad=null,jd=null,Ed=0,Pd=0,Md=Ca(0),Rd=0,Nd=null,Od=0,Fd=0,zd=0,Ld=null,qd=null,Bd=0,Hd=1/0,Dd=null,Ud=!1,Wd=null,Kd=null,Gd=!1,$d=null,Vd=0,Qd=0,Yd=null,Jd=-1,Xd=0;function Zd(){return 6&Id?Je():-1!==Jd?Jd:Jd=Je()}function el(e){return 1&e.mode?2&Id&&0!==Ed?Ed&-Ed:null!==pr.transition?(0===Xd&&(Xd=gn()),Xd):0!==(e=bn)?e:e=void 0===(e=window.event)?16:Jn(e.type):1}function nl(e,n,i,t){if(50<Qd)throw Qd=0,Yd=null,Error(r(185));yn(e,i,t),2&Id&&e===Ad||(e===Ad&&(!(2&Id)&&(Fd|=i),4===Rd&&ol(e,Ed)),il(e,t),1===i&&0===Id&&!(1&n.mode)&&(Hd=Je()+500,qa&&Da()))}function il(e,n){var i=e.callbackNode;!function(e,n){for(var i=e.suspendedLanes,t=e.pingedLanes,a=e.expirationTimes,r=e.pendingLanes;0<r;){var o=31-sn(r),s=1<<o,d=a[o];-1===d?0!==(s&i)&&0===(s&t)||(a[o]=mn(s,n)):d<=n&&(e.expiredLanes|=s),r&=~s}}(e,n);var t=hn(e,e===Ad?Ed:0);if(0===t)null!==i&&Ve(i),e.callbackNode=null,e.callbackPriority=0;else if(n=t&-t,e.callbackPriority!==n){if(null!=i&&Ve(i),1===n)0===e.tag?function(e){qa=!0,Ha(e)}(sl.bind(null,e)):Ha(sl.bind(null,e)),oa(function(){!(6&Id)&&Da()}),i=null;else{switch(wn(t)){case 1:i=Ze;break;case 4:i=en;break;case 16:default:i=nn;break;case 536870912:i=an}i=Al(i,tl.bind(null,e))}e.callbackPriority=n,e.callbackNode=i}}function tl(e,n){if(Jd=-1,Xd=0,6&Id)throw Error(r(327));var i=e.callbackNode;if(wl()&&e.callbackNode!==i)return null;var t=hn(e,e===Ad?Ed:0);if(0===t)return null;if(30&t||0!==(t&e.expiredLanes)||n)n=pl(e,t);else{n=t;var a=Id;Id|=2;var o=hl();for(Ad===e&&Ed===n||(Dd=null,Hd=Je()+500,fl(e,n));;)try{vl();break}catch(n){ul(e,n)}Tr(),Cd.current=o,Id=a,null!==jd?n=0:(Ad=null,Ed=0,n=Rd)}if(0!==n){if(2===n&&0!==(a=pn(e))&&(t=a,n=al(e,a)),1===n)throw i=Nd,fl(e,0),ol(e,t),il(e,Je()),i;if(6===n)ol(e,t);else{if(a=e.current.alternate,!(30&t||function(e){for(var n=e;;){if(16384&n.flags){var i=n.updateQueue;if(null!==i&&null!==(i=i.stores))for(var t=0;t<i.length;t++){var a=i[t],r=a.getSnapshot;a=a.value;try{if(!st(r(),a))return!1}catch(e){return!1}}}if(i=n.child,16384&n.subtreeFlags&&null!==i)i.return=n,n=i;else{if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}(a)||(n=pl(e,t),2===n&&(o=pn(e),0!==o&&(t=o,n=al(e,o))),1!==n)))throw i=Nd,fl(e,0),ol(e,t),il(e,Je()),i;switch(e.finishedWork=a,e.finishedLanes=t,n){case 0:case 1:throw Error(r(345));case 2:case 5:bl(e,qd,Dd);break;case 3:if(ol(e,t),(130023424&t)===t&&10<(n=Bd+500-Je())){if(0!==hn(e,0))break;if(((a=e.suspendedLanes)&t)!==t){Zd(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ta(bl.bind(null,e,qd,Dd),n);break}bl(e,qd,Dd);break;case 4:if(ol(e,t),(4194240&t)===t)break;for(n=e.eventTimes,a=-1;0<t;){var s=31-sn(t);o=1<<s,(s=n[s])>a&&(a=s),t&=~o}if(t=a,10<(t=(120>(t=Je()-t)?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*xd(t/1960))-t)){e.timeoutHandle=ta(bl.bind(null,e,qd,Dd),t);break}bl(e,qd,Dd);break;default:throw Error(r(329))}}}return il(e,Je()),e.callbackNode===i?tl.bind(null,e):null}function al(e,n){var i=Ld;return e.current.memoizedState.isDehydrated&&(fl(e,n).flags|=256),2!==(e=pl(e,n))&&(n=qd,qd=i,null!==n&&rl(n)),e}function rl(e){null===qd?qd=e:qd.push.apply(qd,e)}function ol(e,n){for(n&=~zd,n&=~Fd,e.suspendedLanes|=n,e.pingedLanes&=~n,e=e.expirationTimes;0<n;){var i=31-sn(n),t=1<<i;e[i]=-1,n&=~t}}function sl(e){if(6&Id)throw Error(r(327));wl();var n=hn(e,0);if(!(1&n))return il(e,Je()),null;var i=pl(e,n);if(0!==e.tag&&2===i){var t=pn(e);0!==t&&(n=t,i=al(e,t))}if(1===i)throw i=Nd,fl(e,0),ol(e,n),il(e,Je()),i;if(6===i)throw Error(r(345));return e.finishedWork=e.current.alternate,e.finishedLanes=n,bl(e,qd,Dd),il(e,Je()),null}function dl(e,n){var i=Id;Id|=1;try{return e(n)}finally{0===(Id=i)&&(Hd=Je()+500,qa&&Da())}}function ll(e){null!==$d&&0===$d.tag&&!(6&Id)&&wl();var n=Id;Id|=1;var i=Td.transition,t=bn;try{if(Td.transition=null,bn=1,e)return e()}finally{bn=t,Td.transition=i,!(6&(Id=n))&&Da()}}function cl(){Pd=Md.current,Sa(Md)}function fl(e,n){e.finishedWork=null,e.finishedLanes=0;var i=e.timeoutHandle;if(-1!==i&&(e.timeoutHandle=-1,aa(i)),null!==jd)for(i=jd.return;null!==i;){var t=i;switch(nr(t),t.tag){case 1:null!=(t=t.type.childContextTypes)&&Ra();break;case 3:Yr(),Sa(ja),Sa(Aa),io();break;case 5:Xr(t);break;case 4:Yr();break;case 13:case 19:Sa(Zr);break;case 10:Ir(t.type._context);break;case 22:case 23:cl()}i=i.return}if(Ad=e,jd=e=Ml(e.current,null),Ed=Pd=n,Rd=0,Nd=null,zd=Fd=Od=0,qd=Ld=null,null!==Pr){for(n=0;n<Pr.length;n++)if(null!==(t=(i=Pr[n]).interleaved)){i.interleaved=null;var a=t.next,r=i.pending;if(null!==r){var o=r.next;r.next=a,t.next=o}i.pending=t}Pr=null}return e}function ul(e,n){for(;;){var i=jd;try{if(Tr(),to.current=Xo,co){for(var t=oo.memoizedState;null!==t;){var a=t.queue;null!==a&&(a.pending=null),t=t.next}co=!1}if(ro=0,lo=so=oo=null,fo=!1,uo=0,Sd.current=null,null===i||null===i.return){Rd=1,Nd=n,jd=null;break}e:{var o=e,s=i.return,d=i,l=n;if(n=Ed,d.flags|=32768,null!==l&&"object"==typeof l&&"function"==typeof l.then){var c=l,f=d,u=f.tag;if(!(1&f.mode||0!==u&&11!==u&&15!==u)){var h=f.alternate;h?(f.updateQueue=h.updateQueue,f.memoizedState=h.memoizedState,f.lanes=h.lanes):(f.updateQueue=null,f.memoizedState=null)}var m=gs(s);if(null!==m){m.flags&=-257,vs(m,s,d,0,n),1&m.mode&&ps(o,c,n),l=c;var p=(n=m).updateQueue;if(null===p){var g=new Set;g.add(l),n.updateQueue=g}else p.add(l);break e}if(!(1&n)){ps(o,c,n),ml();break e}l=Error(r(426))}else if(ar&&1&d.mode){var v=gs(s);if(null!==v){!(65536&v.flags)&&(v.flags|=256),vs(v,s,d,0,n),mr(ls(l,d));break e}}o=l=ls(l,d),4!==Rd&&(Rd=2),null===Ld?Ld=[o]:Ld.push(o),o=s;do{switch(o.tag){case 3:o.flags|=65536,n&=-n,o.lanes|=n,Hr(o,hs(0,l,n));break e;case 1:d=l;var y=o.type,k=o.stateNode;if(!(128&o.flags||"function"!=typeof y.getDerivedStateFromError&&(null===k||"function"!=typeof k.componentDidCatch||null!==Kd&&Kd.has(k)))){o.flags|=65536,n&=-n,o.lanes|=n,Hr(o,ms(o,d,n));break e}}o=o.return}while(null!==o)}kl(i)}catch(e){n=e,jd===i&&null!==i&&(jd=i=i.return);continue}break}}function hl(){var e=Cd.current;return Cd.current=Xo,null===e?Xo:e}function ml(){0!==Rd&&3!==Rd&&2!==Rd||(Rd=4),null===Ad||!(268435455&Od)&&!(268435455&Fd)||ol(Ad,Ed)}function pl(e,n){var i=Id;Id|=2;var t=hl();for(Ad===e&&Ed===n||(Dd=null,fl(e,n));;)try{gl();break}catch(n){ul(e,n)}if(Tr(),Id=i,Cd.current=t,null!==jd)throw Error(r(261));return Ad=null,Ed=0,Rd}function gl(){for(;null!==jd;)yl(jd)}function vl(){for(;null!==jd&&!Qe();)yl(jd)}function yl(e){var n=_d(e.alternate,e,Pd);e.memoizedProps=e.pendingProps,null===n?kl(e):jd=n,Sd.current=null}function kl(e){var n=e;do{var i=n.alternate;if(e=n.return,32768&n.flags){if(null!==(i=$s(i,n)))return i.flags&=32767,void(jd=i);if(null===e)return Rd=6,void(jd=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(i=Gs(i,n,Pd)))return void(jd=i);if(null!==(n=n.sibling))return void(jd=n);jd=n=e}while(null!==n);0===Rd&&(Rd=5)}function bl(e,n,i){var t=bn,a=Td.transition;try{Td.transition=null,bn=1,function(e,n,i,t){do{wl()}while(null!==$d);if(6&Id)throw Error(r(327));i=e.finishedWork;var a=e.finishedLanes;if(null===i)return null;if(e.finishedWork=null,e.finishedLanes=0,i===e.current)throw Error(r(177));e.callbackNode=null,e.callbackPriority=0;var o=i.lanes|i.childLanes;if(function(e,n){var i=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var t=e.eventTimes;for(e=e.expirationTimes;0<i;){var a=31-sn(i),r=1<<a;n[a]=0,t[a]=-1,e[a]=-1,i&=~r}}(e,o),e===Ad&&(jd=Ad=null,Ed=0),!(2064&i.subtreeFlags)&&!(2064&i.flags)||Gd||(Gd=!0,Al(nn,function(){return wl(),null})),o=!!(15990&i.flags),15990&i.subtreeFlags||o){o=Td.transition,Td.transition=null;var s=bn;bn=1;var d=Id;Id|=4,Sd.current=null,function(e,n){if(ea=Kn,ht(e=ut())){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{var t=(i=(i=e.ownerDocument)&&i.defaultView||window).getSelection&&i.getSelection();if(t&&0!==t.rangeCount){i=t.anchorNode;var a=t.anchorOffset,o=t.focusNode;t=t.focusOffset;try{i.nodeType,o.nodeType}catch(e){i=null;break e}var s=0,d=-1,l=-1,c=0,f=0,u=e,h=null;n:for(;;){for(var m;u!==i||0!==a&&3!==u.nodeType||(d=s+a),u!==o||0!==t&&3!==u.nodeType||(l=s+t),3===u.nodeType&&(s+=u.nodeValue.length),null!==(m=u.firstChild);)h=u,u=m;for(;;){if(u===e)break n;if(h===i&&++c===a&&(d=s),h===o&&++f===t&&(l=s),null!==(m=u.nextSibling))break;h=(u=h).parentNode}u=m}i=-1===d||-1===l?null:{start:d,end:l}}else i=null}i=i||{start:0,end:0}}else i=null;for(na={focusedElem:e,selectionRange:i},Kn=!1,Js=n;null!==Js;)if(e=(n=Js).child,1028&n.subtreeFlags&&null!==e)e.return=n,Js=e;else for(;null!==Js;){n=Js;try{var p=n.alternate;if(1024&n.flags)switch(n.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==p){var g=p.memoizedProps,v=p.memoizedState,y=n.stateNode,k=y.getSnapshotBeforeUpdate(n.elementType===n.type?g:is(n.type,g),v);y.__reactInternalSnapshotBeforeUpdate=k}break;case 3:var b=n.stateNode.containerInfo;1===b.nodeType?b.textContent="":9===b.nodeType&&b.documentElement&&b.removeChild(b.documentElement);break;default:throw Error(r(163))}}catch(e){xl(n,n.return,e)}if(null!==(e=n.sibling)){e.return=n.return,Js=e;break}Js=n.return}p=ed,ed=!1}(e,i),pd(i,e),mt(na),Kn=!!ea,na=ea=null,e.current=i,vd(i,e,a),Ye(),Id=d,bn=s,Td.transition=o}else e.current=i;if(Gd&&(Gd=!1,$d=e,Vd=a),0===(o=e.pendingLanes)&&(Kd=null),function(e){if(on&&"function"==typeof on.onCommitFiberRoot)try{on.onCommitFiberRoot(rn,e,void 0,!(128&~e.current.flags))}catch(e){}}(i.stateNode),il(e,Je()),null!==n)for(t=e.onRecoverableError,i=0;i<n.length;i++)t((a=n[i]).value,{componentStack:a.stack,digest:a.digest});if(Ud)throw Ud=!1,e=Wd,Wd=null,e;!!(1&Vd)&&0!==e.tag&&wl(),1&(o=e.pendingLanes)?e===Yd?Qd++:(Qd=0,Yd=e):Qd=0,Da()}(e,n,i,t)}finally{Td.transition=a,bn=t}return null}function wl(){if(null!==$d){var e=wn(Vd),n=Td.transition,i=bn;try{if(Td.transition=null,bn=16>e?16:e,null===$d)var t=!1;else{if(e=$d,$d=null,Vd=0,6&Id)throw Error(r(331));var a=Id;for(Id|=4,Js=e.current;null!==Js;){var o=Js,s=o.child;if(16&Js.flags){var d=o.deletions;if(null!==d){for(var l=0;l<d.length;l++){var c=d[l];for(Js=c;null!==Js;){var f=Js;switch(f.tag){case 0:case 11:case 15:nd(8,f,o)}var u=f.child;if(null!==u)u.return=f,Js=u;else for(;null!==Js;){var h=(f=Js).sibling,m=f.return;if(ad(f),f===c){Js=null;break}if(null!==h){h.return=m,Js=h;break}Js=m}}}var p=o.alternate;if(null!==p){var g=p.child;if(null!==g){p.child=null;do{var v=g.sibling;g.sibling=null,g=v}while(null!==g)}}Js=o}}if(2064&o.subtreeFlags&&null!==s)s.return=o,Js=s;else e:for(;null!==Js;){if(2048&(o=Js).flags)switch(o.tag){case 0:case 11:case 15:nd(9,o,o.return)}var y=o.sibling;if(null!==y){y.return=o.return,Js=y;break e}Js=o.return}}var k=e.current;for(Js=k;null!==Js;){var b=(s=Js).child;if(2064&s.subtreeFlags&&null!==b)b.return=s,Js=b;else e:for(s=k;null!==Js;){if(2048&(d=Js).flags)try{switch(d.tag){case 0:case 11:case 15:id(9,d)}}catch(e){xl(d,d.return,e)}if(d===s){Js=null;break e}var w=d.sibling;if(null!==w){w.return=d.return,Js=w;break e}Js=d.return}}if(Id=a,Da(),on&&"function"==typeof on.onPostCommitFiberRoot)try{on.onPostCommitFiberRoot(rn,e)}catch(e){}t=!0}return t}finally{bn=i,Td.transition=n}}return!1}function _l(e,n,i){e=qr(e,n=hs(0,n=ls(i,n),1),1),n=Zd(),null!==e&&(yn(e,1,n),il(e,n))}function xl(e,n,i){if(3===e.tag)_l(e,e,i);else for(;null!==n;){if(3===n.tag){_l(n,e,i);break}if(1===n.tag){var t=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof t.componentDidCatch&&(null===Kd||!Kd.has(t))){n=qr(n,e=ms(n,e=ls(i,e),1),1),e=Zd(),null!==n&&(yn(n,1,e),il(n,e));break}}n=n.return}}function Cl(e,n,i){var t=e.pingCache;null!==t&&t.delete(n),n=Zd(),e.pingedLanes|=e.suspendedLanes&i,Ad===e&&(Ed&i)===i&&(4===Rd||3===Rd&&(130023424&Ed)===Ed&&500>Je()-Bd?fl(e,0):zd|=i),il(e,n)}function Sl(e,n){0===n&&(1&e.mode?(n=fn,!(130023424&(fn<<=1))&&(fn=4194304)):n=1);var i=Zd();null!==(e=Nr(e,n))&&(yn(e,n,i),il(e,i))}function Tl(e){var n=e.memoizedState,i=0;null!==n&&(i=n.retryLane),Sl(e,i)}function Il(e,n){var i=0;switch(e.tag){case 13:var t=e.stateNode,a=e.memoizedState;null!==a&&(i=a.retryLane);break;case 19:t=e.stateNode;break;default:throw Error(r(314))}null!==t&&t.delete(n),Sl(e,i)}function Al(e,n){return $e(e,n)}function jl(e,n,i,t){this.tag=e,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function El(e,n,i,t){return new jl(e,n,i,t)}function Pl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ml(e,n){var i=e.alternate;return null===i?((i=El(e.tag,n,e.key,e.mode)).elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=14680064&e.flags,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i}function Rl(e,n,i,t,a,o){var s=2;if(t=e,"function"==typeof e)Pl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case x:return Nl(i.children,a,o,n);case C:s=8,a|=8;break;case S:return(e=El(12,i,n,2|a)).elementType=S,e.lanes=o,e;case j:return(e=El(13,i,n,a)).elementType=j,e.lanes=o,e;case E:return(e=El(19,i,n,a)).elementType=E,e.lanes=o,e;case R:return Ol(i,a,o,n);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:s=10;break e;case I:s=9;break e;case A:s=11;break e;case P:s=14;break e;case M:s=16,t=null;break e}throw Error(r(130,null==e?e:typeof e,""))}return(n=El(s,i,n,a)).elementType=e,n.type=t,n.lanes=o,n}function Nl(e,n,i,t){return(e=El(7,e,t,n)).lanes=i,e}function Ol(e,n,i,t){return(e=El(22,e,t,n)).elementType=R,e.lanes=i,e.stateNode={isHidden:!1},e}function Fl(e,n,i){return(e=El(6,e,null,n)).lanes=i,e}function zl(e,n,i){return(n=El(4,null!==e.children?e.children:[],e.key,n)).lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Ll(e,n,i,t,a){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vn(0),this.expirationTimes=vn(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vn(0),this.identifierPrefix=t,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function ql(e,n,i,t,a,r,o,s,d){return e=new Ll(e,n,i,s,d),1===n?(n=1,!0===r&&(n|=8)):n=0,r=El(3,null,null,n),e.current=r,r.stateNode=e,r.memoizedState={element:t,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},Fr(r),e}function Bl(e){if(!e)return Ia;e:{if(De(e=e._reactInternals)!==e||1!==e.tag)throw Error(r(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(Ma(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(null!==n);throw Error(r(171))}if(1===e.tag){var i=e.type;if(Ma(i))return Oa(e,i,n)}return n}function Hl(e,n,i,t,a,r,o,s,d){return(e=ql(i,t,!0,e,0,r,0,s,d)).context=Bl(null),i=e.current,(r=Lr(t=Zd(),a=el(i))).callback=null!=n?n:null,qr(i,r,a),e.current.lanes=a,yn(e,a,t),il(e,t),e}function Dl(e,n,i,t){var a=n.current,r=Zd(),o=el(a);return i=Bl(i),null===n.context?n.context=i:n.pendingContext=i,(n=Lr(r,o)).payload={element:e},null!==(t=void 0===t?null:t)&&(n.callback=t),null!==(e=qr(a,n,o))&&(nl(e,a,o,r),Br(e,a,o)),o}function Ul(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Wl(e,n){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var i=e.retryLane;e.retryLane=0!==i&&i<n?i:n}}function Kl(e,n){Wl(e,n),(e=e.alternate)&&Wl(e,n)}_d=function(e,n,i){if(null!==e)if(e.memoizedProps!==n.pendingProps||ja.current)ks=!0;else{if(0===(e.lanes&i)&&!(128&n.flags))return ks=!1,function(e,n,i){switch(n.tag){case 3:js(n),hr();break;case 5:Jr(n);break;case 1:Ma(n.type)&&Fa(n);break;case 4:Qr(n,n.stateNode.containerInfo);break;case 10:var t=n.type._context,a=n.memoizedProps.value;Ta(_r,t._currentValue),t._currentValue=a;break;case 13:if(null!==(t=n.memoizedState))return null!==t.dehydrated?(Ta(Zr,1&Zr.current),n.flags|=128,null):0!==(i&n.child.childLanes)?Fs(e,n,i):(Ta(Zr,1&Zr.current),null!==(e=Us(e,n,i))?e.sibling:null);Ta(Zr,1&Zr.current);break;case 19:if(t=0!==(i&n.childLanes),128&e.flags){if(t)return Hs(e,n,i);n.flags|=128}if(null!==(a=n.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Ta(Zr,Zr.current),t)break;return null;case 22:case 23:return n.lanes=0,Cs(e,n,i)}return Us(e,n,i)}(e,n,i);ks=!!(131072&e.flags)}else ks=!1,ar&&1048576&n.flags&&Za(n,Ga,n.index);switch(n.lanes=0,n.tag){case 2:var t=n.type;Ds(e,n),e=n.pendingProps;var a=Pa(n,Aa.current);jr(n,i),a=go(null,n,t,e,a,i);var o=vo();return n.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(n.tag=1,n.memoizedState=null,n.updateQueue=null,Ma(t)?(o=!0,Fa(n)):o=!1,n.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Fr(n),a.updater=as,n.stateNode=a,a._reactInternals=n,ds(n,t,e,i),n=As(null,n,t,!0,o,i)):(n.tag=0,ar&&o&&er(n),bs(null,n,a,i),n=n.child),n;case 16:t=n.elementType;e:{switch(Ds(e,n),e=n.pendingProps,t=(a=t._init)(t._payload),n.type=t,a=n.tag=function(e){if("function"==typeof e)return Pl(e)?1:0;if(null!=e){if((e=e.$$typeof)===A)return 11;if(e===P)return 14}return 2}(t),e=is(t,e),a){case 0:n=Ts(null,n,t,e,i);break e;case 1:n=Is(null,n,t,e,i);break e;case 11:n=ws(null,n,t,e,i);break e;case 14:n=_s(null,n,t,is(t.type,e),i);break e}throw Error(r(306,t,""))}return n;case 0:return t=n.type,a=n.pendingProps,Ts(e,n,t,a=n.elementType===t?a:is(t,a),i);case 1:return t=n.type,a=n.pendingProps,Is(e,n,t,a=n.elementType===t?a:is(t,a),i);case 3:e:{if(js(n),null===e)throw Error(r(387));t=n.pendingProps,a=(o=n.memoizedState).element,zr(e,n),Dr(n,t,null,i);var s=n.memoizedState;if(t=s.element,o.isDehydrated){if(o={element:t,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},n.updateQueue.baseState=o,n.memoizedState=o,256&n.flags){n=Es(e,n,t,i,a=ls(Error(r(423)),n));break e}if(t!==a){n=Es(e,n,t,i,a=ls(Error(r(424)),n));break e}for(tr=la(n.stateNode.containerInfo.firstChild),ir=n,ar=!0,rr=null,i=wr(n,null,t,i),n.child=i;i;)i.flags=-3&i.flags|4096,i=i.sibling}else{if(hr(),t===a){n=Us(e,n,i);break e}bs(e,n,t,i)}n=n.child}return n;case 5:return Jr(n),null===e&&lr(n),t=n.type,a=n.pendingProps,o=null!==e?e.memoizedProps:null,s=a.children,ia(t,a)?s=null:null!==o&&ia(t,o)&&(n.flags|=32),Ss(e,n),bs(e,n,s,i),n.child;case 6:return null===e&&lr(n),null;case 13:return Fs(e,n,i);case 4:return Qr(n,n.stateNode.containerInfo),t=n.pendingProps,null===e?n.child=br(n,null,t,i):bs(e,n,t,i),n.child;case 11:return t=n.type,a=n.pendingProps,ws(e,n,t,a=n.elementType===t?a:is(t,a),i);case 7:return bs(e,n,n.pendingProps,i),n.child;case 8:case 12:return bs(e,n,n.pendingProps.children,i),n.child;case 10:e:{if(t=n.type._context,a=n.pendingProps,o=n.memoizedProps,s=a.value,Ta(_r,t._currentValue),t._currentValue=s,null!==o)if(st(o.value,s)){if(o.children===a.children&&!ja.current){n=Us(e,n,i);break e}}else for(null!==(o=n.child)&&(o.return=n);null!==o;){var d=o.dependencies;if(null!==d){s=o.child;for(var l=d.firstContext;null!==l;){if(l.context===t){if(1===o.tag){(l=Lr(-1,i&-i)).tag=2;var c=o.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?l.next=l:(l.next=f.next,f.next=l),c.pending=l}}o.lanes|=i,null!==(l=o.alternate)&&(l.lanes|=i),Ar(o.return,i,n),d.lanes|=i;break}l=l.next}}else if(10===o.tag)s=o.type===n.type?null:o.child;else if(18===o.tag){if(null===(s=o.return))throw Error(r(341));s.lanes|=i,null!==(d=s.alternate)&&(d.lanes|=i),Ar(s,i,n),s=o.sibling}else s=o.child;if(null!==s)s.return=o;else for(s=o;null!==s;){if(s===n){s=null;break}if(null!==(o=s.sibling)){o.return=s.return,s=o;break}s=s.return}o=s}bs(e,n,a.children,i),n=n.child}return n;case 9:return a=n.type,t=n.pendingProps.children,jr(n,i),t=t(a=Er(a)),n.flags|=1,bs(e,n,t,i),n.child;case 14:return a=is(t=n.type,n.pendingProps),_s(e,n,t,a=is(t.type,a),i);case 15:return xs(e,n,n.type,n.pendingProps,i);case 17:return t=n.type,a=n.pendingProps,a=n.elementType===t?a:is(t,a),Ds(e,n),n.tag=1,Ma(t)?(e=!0,Fa(n)):e=!1,jr(n,i),os(n,t,a),ds(n,t,a,i),As(null,n,t,!0,e,i);case 19:return Hs(e,n,i);case 22:return Cs(e,n,i)}throw Error(r(156,n.tag))};var Gl="function"==typeof reportError?reportError:function(e){console.error(e)};function $l(e){this._internalRoot=e}function Vl(e){this._internalRoot=e}function Ql(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Yl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Jl(){}function Xl(e,n,i,t,a){var r=i._reactRootContainer;if(r){var o=r;if("function"==typeof a){var s=a;a=function(){var e=Ul(o);s.call(e)}}Dl(n,o,e,a)}else o=function(e,n,i,t,a){if(a){if("function"==typeof t){var r=t;t=function(){var e=Ul(o);r.call(e)}}var o=Hl(n,t,e,0,null,!1,0,"",Jl);return e._reactRootContainer=o,e[ma]=o.current,Dt(8===e.nodeType?e.parentNode:e),ll(),o}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof t){var s=t;t=function(){var e=Ul(d);s.call(e)}}var d=ql(e,0,!1,null,0,!1,0,"",Jl);return e._reactRootContainer=d,e[ma]=d.current,Dt(8===e.nodeType?e.parentNode:e),ll(function(){Dl(n,d,i,t)}),d}(i,n,e,a,t);return Ul(o)}Vl.prototype.render=$l.prototype.render=function(e){var n=this._internalRoot;if(null===n)throw Error(r(409));Dl(e,n,null,null)},Vl.prototype.unmount=$l.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var n=e.containerInfo;ll(function(){Dl(null,e,null,null)}),n[ma]=null}},Vl.prototype.unstable_scheduleHydration=function(e){if(e){var n=Sn();e={blockedOn:null,target:e,priority:n};for(var i=0;i<Nn.length&&0!==n&&n<Nn[i].priority;i++);Nn.splice(i,0,e),0===i&&Ln(e)}},_n=function(e){switch(e.tag){case 3:var n=e.stateNode;if(n.current.memoizedState.isDehydrated){var i=un(n.pendingLanes);0!==i&&(kn(n,1|i),il(n,Je()),!(6&Id)&&(Hd=Je()+500,Da()))}break;case 13:ll(function(){var n=Nr(e,1);if(null!==n){var i=Zd();nl(n,e,1,i)}}),Kl(e,1)}},xn=function(e){if(13===e.tag){var n=Nr(e,134217728);null!==n&&nl(n,e,134217728,Zd()),Kl(e,134217728)}},Cn=function(e){if(13===e.tag){var n=el(e),i=Nr(e,n);null!==i&&nl(i,e,n,Zd()),Kl(e,n)}},Sn=function(){return bn},Tn=function(e,n){var i=bn;try{return bn=e,n()}finally{bn=i}},_e=function(e,n,i){switch(n){case"input":if(X(e,i),n=i.name,"radio"===i.type&&null!=n){for(i=e;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),n=0;n<i.length;n++){var t=i[n];if(t!==e&&t.form===e.form){var a=wa(t);if(!a)throw Error(r(90));$(t),X(t,a)}}}break;case"textarea":re(e,i);break;case"select":null!=(n=i.value)&&ie(e,!!i.multiple,n,!1)}},Ae=dl,je=ll;var Zl={usingClientEntryPoint:!1,Events:[ka,ba,wa,Te,Ie,dl]},ec={findFiberByHostInstance:ya,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nc={bundleType:ec.bundleType,version:ec.version,rendererPackageName:ec.rendererPackageName,rendererConfig:ec.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:b.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ke(e))?null:e.stateNode},findFiberByHostInstance:ec.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ic=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ic.isDisabled&&ic.supportsFiber)try{rn=ic.inject(nc),on=ic}catch(ce){}}n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Zl,n.createPortal=function(e,n){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Ql(n))throw Error(r(200));return function(e,n,i){var t=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==t?null:""+t,children:e,containerInfo:n,implementation:i}}(e,n,null,i)},n.createRoot=function(e,n){if(!Ql(e))throw Error(r(299));var i=!1,t="",a=Gl;return null!=n&&(!0===n.unstable_strictMode&&(i=!0),void 0!==n.identifierPrefix&&(t=n.identifierPrefix),void 0!==n.onRecoverableError&&(a=n.onRecoverableError)),n=ql(e,1,!1,null,0,i,0,t,a),e[ma]=n.current,Dt(8===e.nodeType?e.parentNode:e),new $l(n)},n.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var n=e._reactInternals;if(void 0===n){if("function"==typeof e.render)throw Error(r(188));throw e=Object.keys(e).join(","),Error(r(268,e))}return null===(e=Ke(n))?null:e.stateNode},n.flushSync=function(e){return ll(e)},n.hydrate=function(e,n,i){if(!Yl(n))throw Error(r(200));return Xl(null,e,n,!0,i)},n.hydrateRoot=function(e,n,i){if(!Ql(e))throw Error(r(405));var t=null!=i&&i.hydratedSources||null,a=!1,o="",s=Gl;if(null!=i&&(!0===i.unstable_strictMode&&(a=!0),void 0!==i.identifierPrefix&&(o=i.identifierPrefix),void 0!==i.onRecoverableError&&(s=i.onRecoverableError)),n=Hl(n,null,e,1,null!=i?i:null,a,0,o,s),e[ma]=n.current,Dt(e),t)for(e=0;e<t.length;e++)a=(a=(i=t[e])._getVersion)(i._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[i,a]:n.mutableSourceEagerHydrationData.push(i,a);return new Vl(n)},n.render=function(e,n,i){if(!Yl(n))throw Error(r(200));return Xl(null,e,n,!1,i)},n.unmountComponentAtNode=function(e){if(!Yl(e))throw Error(r(40));return!!e._reactRootContainer&&(ll(function(){Xl(null,null,e,!1,function(){e._reactRootContainer=null,e[ma]=null})}),!0)},n.unstable_batchedUpdates=dl,n.unstable_renderSubtreeIntoContainer=function(e,n,i,t){if(!Yl(i))throw Error(r(200));if(null==e||void 0===e._reactInternals)throw Error(r(38));return Xl(e,n,i,!1,t)},n.version="18.3.1-next-f1338f8080-20240426"},601(e){e.exports=function(e){return e[1]}},659(e){var n={};e.exports=function(e,i){var t=function(e){if(void 0===n[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}n[e]=i}return n[e]}(e);if(!t)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");t.appendChild(i)}},825(e){e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(i){!function(e,n,i){var t="";i.supports&&(t+="@supports (".concat(i.supports,") {")),i.media&&(t+="@media ".concat(i.media," {"));var a=void 0!==i.layer;a&&(t+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),t+=i.css,a&&(t+="}"),i.media&&(t+="}"),i.supports&&(t+="}");var r=i.sourceMap;r&&"undefined"!=typeof btoa&&(t+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),n.styleTagTransform(t,e,n.options)}(n,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},848(e,n,i){e.exports=i(20)},877(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ============================================================\n AdPlatform Management Console Styles\n ============================================================ */\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\n:root {\n --bg: #f4f5f7;\n --surface: #ffffff;\n --card-bg: #ffffff;\n --border: rgba(0,0,0,0.09);\n --border-light: rgba(0,0,0,0.05);\n --text: #1a1d23;\n --text-secondary: #5f6672;\n --text-dim: #9099a4;\n --accent: #3b82f6;\n --accent-hover: #2563eb;\n --accent-light: rgba(59,130,246,0.08);\n --sidebar-bg: #ffffff;\n --sidebar-hover: rgba(0,0,0,0.04);\n --sidebar-active: rgba(59,130,246,0.08);\n --sidebar-width: 224px;\n --sidebar-collapsed-width: 64px;\n --header-height: 56px;\n --danger: #dc2626;\n --danger-bg: #fef2f2;\n --success: #16a34a;\n --success-bg: #dcfce7;\n --warning-bg: #fef3cd;\n --warning-border: #ffc107;\n --warning-text: #856404;\n}\n\nbody {\n font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--text);\n background: var(--bg);\n}\n\n\n/* ============================================================\n Shell Layout (sign-in / registration — no sidebar)\n ============================================================ */\n\n.shell { min-height: 100vh; display: flex; flex-direction: column; }\n\n.shell-header {\n background: #1a1a2e;\n color: #fff;\n padding: 0 24px;\n height: var(--header-height);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.shell-logo { display: flex; align-items: center; gap: 8px; }\n.logo-icon { font-size: 24px; color: var(--accent); }\n.logo-text { font-size: 18px; font-weight: 600; }\n.logo-badge { font-size: 11px; background: var(--accent); padding: 2px 8px; border-radius: 4px; text-transform: uppercase; }\n\n.shell-user { display: flex; align-items: center; gap: 16px; }\n.user-name { font-size: 13px; opacity: 0.9; }\n\n.btn-signout {\n background: transparent;\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n padding: 6px 12px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n font-family: inherit;\n}\n.btn-signout:hover { background: rgba(255,255,255,0.1); }\n\n.shell-content { flex: 1; padding: 24px; }\n\n.shell-footer {\n background: #1a1a2e;\n color: rgba(255,255,255,0.5);\n padding: 12px 24px;\n font-size: 12px;\n text-align: center;\n}\n\n\n/* ============================================================\n Dashboard Layout (sidebar + main)\n ============================================================ */\n\n.dashboard-layout {\n display: flex;\n height: 100vh;\n width: 100vw;\n overflow: hidden;\n background: var(--bg);\n}\n\n\n/* ── Sidebar ── */\n\n.sidebar {\n width: var(--sidebar-width);\n min-width: var(--sidebar-width);\n background: var(--sidebar-bg);\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n transition: width 0.25s cubic-bezier(0.4,0,0.2,1),\n min-width 0.25s cubic-bezier(0.4,0,0.2,1);\n overflow: hidden;\n}\n\n.sidebar-collapsed {\n width: var(--sidebar-collapsed-width);\n min-width: var(--sidebar-collapsed-width);\n}\n\n/* Logo */\n.sidebar-logo {\n padding: 0 20px;\n height: var(--header-height);\n display: flex;\n align-items: center;\n gap: 10px;\n border-bottom: 1px solid var(--border);\n flex-shrink: 0;\n overflow: hidden;\n white-space: nowrap;\n}\n.sidebar-collapsed .sidebar-logo {\n padding: 0;\n justify-content: center;\n}\n.sidebar-logo-icon {\n font-size: 22px;\n color: var(--accent);\n flex-shrink: 0;\n}\n.sidebar-logo-text {\n font-size: 16px;\n font-weight: 700;\n color: var(--text);\n letter-spacing: -0.3px;\n}\n.sidebar-logo-badge {\n font-size: 10px;\n font-weight: 600;\n background: var(--accent);\n color: #fff;\n padding: 1px 7px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Nav items */\n.sidebar-nav {\n flex: 1;\n padding: 12px 8px;\n overflow-y: auto;\n}\n\n.sidebar-divider {\n height: 1px;\n background: var(--border);\n margin: 8px 8px;\n}\n\n.sidebar-item {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 10px 12px;\n border-radius: 8px;\n border: none;\n background: transparent;\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13.5px;\n font-weight: 500;\n font-family: inherit;\n margin-bottom: 2px;\n transition: all 0.15s;\n white-space: nowrap;\n overflow: hidden;\n}\n.sidebar-collapsed .sidebar-item {\n padding: 10px 0;\n justify-content: center;\n}\n.sidebar-item:hover {\n background: var(--sidebar-hover);\n color: var(--text);\n}\n.sidebar-item-active {\n background: var(--sidebar-active);\n color: var(--accent);\n font-weight: 600;\n}\n.sidebar-item-active:hover {\n background: var(--sidebar-active);\n color: var(--accent);\n}\n.sidebar-item-disabled {\n opacity: 0.45;\n cursor: default;\n}\n.sidebar-item-disabled:hover {\n background: transparent;\n color: var(--text-secondary);\n}\n.sidebar-item-icon {\n display: flex;\n flex-shrink: 0;\n}\n.sidebar-item-label {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.sidebar-badge {\n margin-left: auto;\n background: var(--accent);\n color: #fff;\n font-size: 10.5px;\n font-weight: 700;\n padding: 1px 7px;\n border-radius: 10px;\n min-width: 18px;\n text-align: center;\n}\n.sidebar-soon {\n margin-left: auto;\n font-size: 10px;\n font-weight: 600;\n color: var(--text-dim);\n background: var(--bg);\n padding: 2px 7px;\n border-radius: 6px;\n}\n\n/* User + collapse area */\n.sidebar-footer {\n padding: 12px 8px;\n border-top: 1px solid var(--border);\n flex-shrink: 0;\n}\n.sidebar-user {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n margin-bottom: 8px;\n}\n.sidebar-user-collapsed {\n display: flex;\n justify-content: center;\n margin-bottom: 8px;\n}\n.sidebar-user-avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--accent), #6366f1);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n flex-shrink: 0;\n}\n.sidebar-user-info {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-width: 0;\n}\n.sidebar-user-name {\n font-size: 12.5px;\n font-weight: 600;\n color: var(--text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.sidebar-user-signout {\n font-size: 11.5px;\n color: var(--text-dim);\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n}\n.sidebar-user-signout:hover { color: var(--danger); }\n\n.sidebar-collapse-btn {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n border-radius: 8px;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--text-dim);\n font-size: 12.5px;\n font-family: inherit;\n font-weight: 500;\n transition: all 0.15s;\n}\n.sidebar-collapsed .sidebar-collapse-btn {\n justify-content: center;\n padding: 8px 0;\n}\n.sidebar-collapse-btn:hover { color: var(--text-secondary); }\n\n.sidebar-collapse-icon {\n display: flex;\n transition: transform 0.25s;\n}\n.sidebar-collapse-icon-flip {\n transform: rotate(180deg);\n}\n\n\n/* ── Main Area ── */\n\n.dashboard-main {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-width: 0;\n}\n\n\n/* ── Header with title + tabs ── */\n\n.dashboard-header {\n background: var(--surface);\n border-bottom: 1px solid var(--border);\n flex-shrink: 0;\n}\n\n.dashboard-header-top {\n padding: 16px 32px 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.dashboard-title {\n font-size: 20px;\n font-weight: 700;\n letter-spacing: -0.4px;\n color: var(--text);\n margin: 0;\n}\n\n.dashboard-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-meta {\n display: flex;\n gap: 16px;\n font-size: 12.5px;\n color: var(--text-secondary);\n}\n.dashboard-meta strong {\n font-weight: 600;\n color: var(--text-dim);\n}\n\n/* Horizontal tabs within the header */\n.dashboard-tabs {\n display: flex;\n padding: 0 32px;\n margin-top: 12px;\n gap: 0;\n position: relative;\n}\n\n.tab-btn {\n background: transparent;\n border: none;\n padding: 10px 18px;\n font-size: 13.5px;\n font-weight: 500;\n font-family: inherit;\n color: var(--text-dim);\n cursor: pointer;\n position: relative;\n transition: color 0.15s;\n border-bottom: 2px solid transparent;\n}\n.tab-btn:hover {\n color: var(--text-secondary);\n}\n.tab-btn.active {\n color: var(--accent);\n font-weight: 600;\n border-bottom-color: var(--accent);\n}\n\n\n/* ── Content area ── */\n\n.dashboard-content {\n flex: 1;\n overflow: auto;\n padding: 28px 32px;\n}\n\n\n/* ── Placeholder panel for coming-soon features ── */\n\n.placeholder-panel {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: var(--text-dim);\n background: var(--card-bg);\n border-radius: 12px;\n border: 1px dashed var(--border);\n}\n.placeholder-panel .placeholder-icon {\n font-size: 36px;\n margin-bottom: 12px;\n}\n.placeholder-panel h3 {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-secondary);\n margin-bottom: 4px;\n}\n.placeholder-panel p {\n font-size: 13px;\n}\n\n\n/* ============================================================\n Shared Components (loading, messages, forms, tables)\n ============================================================ */\n\n/* Loading */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px;\n color: var(--text-dim);\n}\n\n.spinner {\n width: 40px;\n height: 40px;\n border: 3px solid var(--border);\n border-top-color: var(--accent);\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n margin-bottom: 16px;\n}\n\n@keyframes spin { to { transform: rotate(360deg); } }\n\n/* Sign In */\n.signin-overlay { display: flex; align-items: center; justify-content: center; min-height: 60vh; }\n\n.signin-card {\n background: var(--surface);\n border-radius: 12px;\n padding: 48px;\n text-align: center;\n box-shadow: 0 4px 24px rgba(0,0,0,0.08);\n max-width: 400px;\n width: 100%;\n}\n\n.signin-icon { font-size: 48px; color: var(--accent); margin-bottom: 24px; }\n.signin-card h1 { font-size: 24px; font-weight: 600; margin-bottom: 8px; }\n.signin-subtitle { color: var(--text-secondary); margin-bottom: 32px; }\n\n.btn-signin {\n background: #0078d4;\n color: #fff;\n border: none;\n padding: 14px 32px;\n border-radius: 6px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n width: 100%;\n font-family: inherit;\n}\n.btn-signin:hover { background: #006cbd; }\n\n.signin-help { margin-top: 24px; font-size: 12px; color: var(--text-dim); }\n\n/* Registration */\n.registration-container { display: flex; align-items: center; justify-content: center; min-height: 60vh; }\n\n.registration-card {\n background: var(--surface);\n border-radius: 12px;\n padding: 48px;\n box-shadow: 0 4px 24px rgba(0,0,0,0.08);\n max-width: 480px;\n width: 100%;\n}\n\n.registration-card h1 { font-size: 24px; font-weight: 600; margin-bottom: 8px; }\n.registration-subtitle { color: var(--text-secondary); margin-bottom: 32px; }\n\n/* Forms */\n.form-group { margin-bottom: 20px; }\n.form-group label { display: block; font-weight: 500; margin-bottom: 8px; }\n\n.form-group input, .form-group select {\n width: 100%;\n padding: 12px 16px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n}\n.form-group input:focus, .form-group select:focus { outline: none; border-color: var(--accent); }\n\n.form-help { display: block; margin-top: 8px; font-size: 12px; color: var(--text-dim); }\n\n.btn-primary {\n background: var(--accent);\n color: #fff;\n border: none;\n padding: 14px 32px;\n border-radius: 6px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n width: 100%;\n font-family: inherit;\n}\n.btn-primary:hover { background: var(--accent-hover); }\n.btn-primary:disabled { background: #a0c4ff; cursor: not-allowed; }\n\n/* Messages */\n.error-message {\n background: var(--danger-bg);\n border: 1px solid #fecaca;\n color: var(--danger);\n padding: 12px 16px;\n border-radius: 6px;\n margin-bottom: 20px;\n font-size: 13px;\n}\n\n.success-message {\n background: var(--success-bg);\n border: 1px solid #86efac;\n color: var(--success);\n padding: 12px 16px;\n border-radius: 6px;\n margin-bottom: 20px;\n font-size: 13px;\n}\n\n\n/* ============================================================\n Overview Panel\n ============================================================ */\n\n.overview-panel h2 { font-size: 18px; margin-bottom: 24px; }\n\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.stat-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 10px;\n padding: 24px;\n text-align: center;\n}\n.stat-value { font-size: 36px; font-weight: 700; color: var(--accent); margin-bottom: 8px; letter-spacing: -1px; }\n.stat-label { font-size: 12px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.5px; font-weight: 550; }\n\n.server-time { font-size: 12px; color: var(--text-dim); text-align: right; }\n\n\n/* ============================================================\n Table Panels\n ============================================================ */\n\n.table-panel h2 { font-size: 18px; margin-bottom: 20px; }\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.data-table { width: 100%; border-collapse: collapse; }\n\n.data-table th, .data-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border-light);\n}\n\n.data-table th {\n background: var(--bg);\n font-weight: 600;\n font-size: 11.5px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-dim);\n border-bottom: 1px solid var(--border);\n}\n\n.data-table tr:hover { background: rgba(0,0,0,0.015); }\n.empty-row { text-align: center !important; color: var(--text-dim); padding: 40px !important; }\n\n.text-muted { color: var(--text-dim); font-size: 12px; }\n\n/* Status Badges */\n.status-badge {\n display: inline-block;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-active { background: var(--success-bg); color: var(--success); }\n.status-inactive { background: #f3f4f6; color: #6b7280; }\n.status-default { background: #f3f4f6; color: #6b7280; }\n\n/* Buttons */\n.btn-action {\n background: var(--surface);\n border: 1px solid var(--accent);\n color: var(--accent);\n padding: 10px 20px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n transition: all 0.15s;\n}\n.btn-action:hover { background: var(--accent); color: #fff; }\n\n.btn-small {\n padding: 6px 12px;\n font-size: 12px;\n border-radius: 4px;\n cursor: pointer;\n border: none;\n font-family: inherit;\n}\n\n.btn-danger { background: var(--danger-bg); color: var(--danger); }\n.btn-danger:hover { background: #fee2e2; }\n\n.btn-cancel {\n background: var(--surface);\n border: 1px solid #ddd;\n padding: 12px 20px;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n font-family: inherit;\n}\n.btn-cancel:hover { background: var(--bg); }\n\n/* Admin Form */\n.admin-form {\n background: var(--bg);\n border-radius: 8px;\n padding: 24px;\n margin-bottom: 24px;\n max-width: 500px;\n}\n.admin-form h3 { font-size: 16px; margin-bottom: 20px; }\n\n.form-buttons { display: flex; gap: 12px; margin-top: 24px; }\n.form-buttons button { flex: 1; }\n\n\n/* ============================================================\n Multi-Channel Admin Panel Styles\n ============================================================ */\n\n/* Filter Row */\n.filter-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 0;\n margin-bottom: 8px;\n}\n.filter-row select {\n padding: 6px 10px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 13px;\n background: var(--surface);\n cursor: pointer;\n font-family: inherit;\n}\n.filter-count {\n margin-left: auto;\n font-size: 12px;\n color: var(--text-dim);\n}\n\n/* Inline Form Row */\n.form-row-inline {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 12px;\n}\n.form-row-inline .form-group {\n flex: 1;\n min-width: 140px;\n}\n.form-row-inline select,\n.form-row-inline input {\n width: 100%;\n padding: 8px 10px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n}\n\n/* Badges */\n.channel-badge,\n.objective-badge {\n display: inline-block;\n padding: 2px 8px;\n border: 2px solid;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 600;\n font-family: monospace;\n}\n\n/* Number Cells */\n.number-cell {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n.mono-cell {\n font-family: monospace;\n font-size: 12px;\n}\n\n/* Inactive Rows */\n.row-inactive {\n opacity: 0.5;\n}\n\n/* Allocation Summary */\n.allocation-summary {\n margin-top: 24px;\n padding: 16px;\n background: var(--bg);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.allocation-summary h3 {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--text);\n}\n.summary-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 6px;\n font-size: 13px;\n}\n.summary-warning {\n border-color: #fbbf24;\n background: #fffbeb;\n}\n.summary-label {\n color: var(--text-secondary);\n}\n.summary-ok {\n color: var(--success);\n font-weight: 600;\n}\n.summary-bad {\n color: var(--danger);\n font-weight: 600;\n}\n\n/* Coverage Matrix */\n.coverage-matrix {\n margin-top: 24px;\n padding: 16px;\n background: var(--bg);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.coverage-matrix h3 {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--text);\n}\n.matrix-table {\n table-layout: fixed;\n}\n.matrix-cell {\n text-align: center;\n font-size: 16px;\n padding: 8px !important;\n}\n.matrix-mapped {\n background: #ecfdf5;\n color: var(--success);\n}\n.matrix-empty {\n background: var(--surface);\n}\n.matrix-missing {\n color: #d1d5db;\n}\n.matrix-legend {\n display: flex;\n gap: 16px;\n margin-top: 8px;\n font-size: 12px;\n color: var(--text-dim);\n}\n\n\n/* ============================================================\n Responsive\n ============================================================ */\n\n@media (max-width: 768px) {\n .shell-header { padding: 0 16px; }\n .shell-content { padding: 16px; }\n\n .sidebar {\n width: var(--sidebar-collapsed-width) !important;\n min-width: var(--sidebar-collapsed-width) !important;\n }\n .sidebar .sidebar-item-label,\n .sidebar .sidebar-logo-text,\n .sidebar .sidebar-logo-badge,\n .sidebar .sidebar-badge,\n .sidebar .sidebar-soon,\n .sidebar .sidebar-user-info { display: none; }\n .sidebar .sidebar-item { padding: 10px 0; justify-content: center; }\n .sidebar .sidebar-logo { padding: 0; justify-content: center; }\n\n .dashboard-header-top { padding: 12px 16px 0; }\n .dashboard-tabs { padding: 0 16px; }\n .dashboard-content { padding: 16px; }\n .dashboard-meta { display: none; }\n\n .stats-grid { grid-template-columns: 1fr 1fr; }\n .data-table { font-size: 12px; }\n .data-table th, .data-table td { padding: 8px 12px; }\n}\n\n/* ─── Campaigns Panel ─────────────────────────────────────────────────────── */\n\n.initiative-row:hover { background: var(--hover-bg, #f9fafb); }\n\n.channel-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n white-space: nowrap;\n}\n\n.channel-detail-row td { padding: 0 !important; border-top: none !important; }\n.channel-detail-row + .channel-detail-row td { border-top: none !important; }\n.channel-detail {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px 6px 36px;\n background: #f9fafb;\n border-left: 3px solid var(--accent);\n font-size: 13px;\n}\n.channel-detail-info {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 120px;\n}\n.channel-detail-type { font-weight: 500; }\n.channel-detail-alloc { font-size: 12px; color: #6b7280; }\n.channel-detail-ext {\n font-family: monospace;\n font-size: 11px;\n color: #9ca3af;\n margin-left: auto;\n}\n.channel-detail-provider {\n font-size: 11px;\n color: #9ca3af;\n margin-left: 8px;\n}\n\n.objective-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 12px;\n background: #f0f4ff;\n color: #4b5563;\n}\n\n.status-pending { background: var(--warning-bg); color: var(--warning-text); }\n.status-warning { background: #fef9c3; color: #a16207; }\n.status-error { background: var(--danger-bg); color: var(--danger); }\n\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6b7280;\n}\n.empty-state-icon { font-size: 40px; margin-bottom: 12px; }\n.empty-state h3 { margin: 0 0 8px; color: #374151; }\n.empty-state p { margin: 0; font-size: 14px; }\n\n/* ─── Filter Bar ──────────────────────────────────────────────────────────── */\n\n.filter-bar {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n padding: 12px 16px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n flex-wrap: wrap;\n}\n.filter-group {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n.filter-label {\n font-size: 11px;\n font-weight: 500;\n color: #6b7280;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n.filter-select,\n.filter-input {\n padding: 6px 10px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n background: #fff;\n color: #1f2937;\n min-width: 140px;\n outline: none;\n transition: border-color 0.15s;\n}\n.filter-select:focus,\n.filter-input:focus {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px rgba(59,130,246,0.1);\n}\n.filter-input[type=\"date\"] { min-width: 130px; }\n.btn-clear-filters {\n padding: 6px 12px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n background: #fff;\n color: #6b7280;\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s;\n align-self: flex-end;\n}\n.btn-clear-filters:hover { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }\n\n/* ═══════════════════════════════════════════════════════════\n CLIENT MANAGEMENT PANEL\n ═══════════════════════════════════════════════════════════ */\n\n/* ── Pending Tab: Card layout ── */\n.client-cards {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.client-card {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 10px;\n padding: 20px;\n transition: box-shadow 0.15s;\n}\n\n.client-card:hover {\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n}\n\n.client-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.client-card-title {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.client-card-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.category-tag {\n display: inline-block;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n background: var(--accent-light, #e0e7ff);\n color: var(--accent, #4f46e5);\n}\n\n.client-card-date {\n font-size: 12px;\n color: var(--text-dim);\n white-space: nowrap;\n}\n\n.client-card-desc {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0 0 12px;\n line-height: 1.5;\n}\n\n.client-card-details {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 8px 24px;\n margin-bottom: 16px;\n padding: 12px;\n background: var(--bg);\n border-radius: 8px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: 13px;\n}\n\n.detail-item a {\n color: var(--accent);\n text-decoration: none;\n}\n\n.detail-item a:hover {\n text-decoration: underline;\n}\n\n.client-card-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.reject-form {\n display: flex;\n gap: 8px;\n align-items: center;\n flex: 1;\n}\n\n.reject-form input {\n flex: 1;\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n}\n\n.text-success { color: #16a34a; }\n.text-warning { color: #d97706; }\n\n/* ── All Clients Tab ── */\n.client-search {\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n width: 200px;\n outline: none;\n transition: border-color 0.15s;\n}\n\n.client-search:focus {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px rgba(59,130,246,0.1);\n}\n\n.client-filter-select {\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n background: #fff;\n outline: none;\n min-width: 120px;\n}\n\n/* ── Expandable Row ── */\n.client-row {\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.client-row.expanded {\n background: rgba(59,130,246,0.04);\n}\n\n.expand-toggle {\n text-align: center;\n color: var(--text-dim);\n font-size: 11px;\n user-select: none;\n}\n\n.client-name-cell {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.client-url {\n font-size: 11px;\n color: var(--text-dim);\n font-weight: 400;\n}\n\n.client-detail-row td {\n padding: 0 !important;\n border-top: none !important;\n}\n\n.client-detail {\n padding: 16px 24px 20px;\n background: var(--bg);\n border-top: 1px solid var(--border);\n}\n\n/* ── Detail Sections ── */\n.detail-section {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--border);\n}\n\n.detail-section:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.detail-section h4 {\n font-size: 13px;\n font-weight: 600;\n color: var(--text-secondary, #6b7280);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 10px;\n}\n\n.detail-section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.detail-section-header h4 {\n margin: 0;\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n gap: 10px 24px;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: 13px;\n}\n\n.detail-field-wide {\n grid-column: 1 / -1;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--text-dim);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.admin-notes {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n white-space: pre-wrap;\n}\n\n/* ── Status Actions ── */\n.action-buttons {\n display: flex;\n gap: 8px;\n}\n\n.action-confirm {\n background: var(--surface);\n padding: 12px;\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n\n.action-confirm p {\n margin: 0 0 8px;\n font-size: 13px;\n}\n\n.action-confirm input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n font-size: 13px;\n font-family: inherit;\n margin-bottom: 4px;\n}\n\n/* ── Status Timeline ── */\n.status-timeline {\n display: flex;\n flex-direction: column;\n gap: 0;\n padding-left: 12px;\n}\n\n.timeline-entry {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n position: relative;\n}\n\n.timeline-entry:not(:last-child)::before {\n content: '';\n position: absolute;\n left: 4px;\n top: 22px;\n bottom: -2px;\n width: 1px;\n background: var(--border);\n}\n\n.timeline-dot {\n width: 9px;\n height: 9px;\n border-radius: 50%;\n background: var(--accent);\n flex-shrink: 0;\n margin-top: 4px;\n}\n\n.timeline-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: 13px;\n}\n\n.timeline-action {\n font-weight: 500;\n}\n\n.timeline-reason {\n color: var(--text-secondary, #6b7280);\n font-style: italic;\n}\n\n.timeline-meta {\n font-size: 11px;\n color: var(--text-dim);\n}\n\n/* ── Edit Form ── */\n.edit-form .form-row-inline {\n margin-bottom: 12px;\n}\n\n.form-group-wide {\n flex: 1 1 100% !important;\n}\n\n/* ── Responsive ── */\n@media (max-width: 768px) {\n .client-card-header { flex-direction: column; gap: 4px; }\n .client-card-details { grid-template-columns: 1fr; }\n .detail-grid { grid-template-columns: 1fr; }\n .client-search { width: 140px; }\n}\n",""]);const s=o},961(e,n,i){!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=i(551)},982(e,n,i){e.exports=i(463)}},n={};function i(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={id:t,exports:{}};return e[t](r,r.exports,i),r.exports}i.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return i.d(n,{a:n}),n},i.d=(e,n)=>{for(var t in n)i.o(n,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},i.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),i.nc=void 0;var t=i(540),a=i(338);const r={LIBRARY_NAME:"MSAL.JS",SKU:"msal.js.common",CACHE_PREFIX:"msal",DEFAULT_AUTHORITY:"https://login.microsoftonline.com/common/",DEFAULT_AUTHORITY_HOST:"login.microsoftonline.com",DEFAULT_COMMON_TENANT:"common",ADFS:"adfs",DSTS:"dstsv2",AAD_INSTANCE_DISCOVERY_ENDPT:"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=",CIAM_AUTH_URL:".ciamlogin.com",AAD_TENANT_DOMAIN_SUFFIX:".onmicrosoft.com",RESOURCE_DELIM:"|",NO_ACCOUNT:"NO_ACCOUNT",CLAIMS:"claims",CONSUMER_UTID:"9188040d-6c67-4c5b-b112-36a304b66dad",OPENID_SCOPE:"openid",PROFILE_SCOPE:"profile",OFFLINE_ACCESS_SCOPE:"offline_access",EMAIL_SCOPE:"email",CODE_RESPONSE_TYPE:"code",CODE_GRANT_TYPE:"authorization_code",RT_GRANT_TYPE:"refresh_token",FRAGMENT_RESPONSE_MODE:"fragment",S256_CODE_CHALLENGE_METHOD:"S256",URL_FORM_CONTENT_TYPE:"application/x-www-form-urlencoded;charset=utf-8",AUTHORIZATION_PENDING:"authorization_pending",NOT_DEFINED:"not_defined",EMPTY_STRING:"",NOT_APPLICABLE:"N/A",NOT_AVAILABLE:"Not Available",FORWARD_SLASH:"/",IMDS_ENDPOINT:"http://169.254.169.254/metadata/instance/compute/location",IMDS_VERSION:"2020-06-01",IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:"TryAutoDetect",REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:"login.microsoft.com",KNOWN_PUBLIC_CLOUDS:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"],TOKEN_RESPONSE_TYPE:"token",ID_TOKEN_RESPONSE_TYPE:"id_token",SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:"invalid_instance"},o=[r.OPENID_SCOPE,r.PROFILE_SCOPE,r.OFFLINE_ACCESS_SCOPE],s=[...o,r.EMAIL_SCOPE],d="Content-Type",l="Retry-After",c="X-AnchorMailbox",f="x-ms-request-id",u="x-ms-httpver",h="idtoken",m="client.info",p="adal.idtoken",g="error",v="error.description",y="active-account",k="active-account-filters",b="common",w="organizations",_="consumers",x="access_token",C={LOGIN:"login",SELECT_ACCOUNT:"select_account",CONSENT:"consent",NONE:"none",CREATE:"create",NO_SESSION:"no_session"},S={PLAIN:"plain",S256:"S256"},T={QUERY:"query",FRAGMENT:"fragment"},I={...T,FORM_POST:"form_post"},A="Generic",j="-",E={ID_TOKEN:"IdToken",ACCESS_TOKEN:"AccessToken",ACCESS_TOKEN_WITH_AUTH_SCHEME:"AccessToken_With_AuthScheme",REFRESH_TOKEN:"RefreshToken"},P="appmetadata",M="1",R="authority-metadata",N="config",O="cache",F="network",z="hardcoded_values",L={SCHEMA_VERSION:5,MAX_CUR_HEADER_BYTES:80,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:"server-telemetry",CATEGORY_SEPARATOR:"|",VALUE_SEPARATOR:",",OVERFLOW_TRUE:"1",OVERFLOW_FALSE:"0",UNKNOWN_ERROR:"unknown_error"},q={BEARER:"Bearer",POP:"pop",SSH:"ssh-cert"},B="throttling";var H;!function(e){e[e.Error=0]="Error",e[e.Warning=1]="Warning",e[e.Info=2]="Info",e[e.Verbose=3]="Verbose",e[e.Trace=4]="Trace"}(H||(H={}));class D{constructor(e,n,i){this.level=H.Info;const t=e||D.createDefaultLoggerOptions();this.localCallback=t.loggerCallback||(()=>{}),this.piiLoggingEnabled=t.piiLoggingEnabled||!1,this.level="number"==typeof t.logLevel?t.logLevel:H.Info,this.correlationId=t.correlationId||r.EMPTY_STRING,this.packageName=n||r.EMPTY_STRING,this.packageVersion=i||r.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:H.Info}}clone(e,n,i){return new D({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:i||this.correlationId},e,n)}logMessage(e,n){if(n.logLevel>this.level||!this.piiLoggingEnabled&&n.containsPii)return;const i=`[${(new Date).toUTCString()}] : [${n.correlationId||this.correlationId||""}] : ${this.packageName}@${this.packageVersion} : ${H[n.logLevel]} - ${e}`;this.executeCallback(n.logLevel,i,n.containsPii||!1)}executeCallback(e,n,i){this.localCallback&&this.localCallback(e,n,i)}error(e,n){this.logMessage(e,{logLevel:H.Error,containsPii:!1,correlationId:n||r.EMPTY_STRING})}errorPii(e,n){this.logMessage(e,{logLevel:H.Error,containsPii:!0,correlationId:n||r.EMPTY_STRING})}warning(e,n){this.logMessage(e,{logLevel:H.Warning,containsPii:!1,correlationId:n||r.EMPTY_STRING})}warningPii(e,n){this.logMessage(e,{logLevel:H.Warning,containsPii:!0,correlationId:n||r.EMPTY_STRING})}info(e,n){this.logMessage(e,{logLevel:H.Info,containsPii:!1,correlationId:n||r.EMPTY_STRING})}infoPii(e,n){this.logMessage(e,{logLevel:H.Info,containsPii:!0,correlationId:n||r.EMPTY_STRING})}verbose(e,n){this.logMessage(e,{logLevel:H.Verbose,containsPii:!1,correlationId:n||r.EMPTY_STRING})}verbosePii(e,n){this.logMessage(e,{logLevel:H.Verbose,containsPii:!0,correlationId:n||r.EMPTY_STRING})}trace(e,n){this.logMessage(e,{logLevel:H.Trace,containsPii:!1,correlationId:n||r.EMPTY_STRING})}tracePii(e,n){this.logMessage(e,{logLevel:H.Trace,containsPii:!0,correlationId:n||r.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}}const U="AAD",W="OIDC",K="none",G="unexpected_error",$="post_request_failed",V={[G]:"Unexpected error in authentication.",[$]:"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details."};class Q extends Error{constructor(e,n,i){super(n?`${e}: ${n}`:e),Object.setPrototypeOf(this,Q.prototype),this.errorCode=e||r.EMPTY_STRING,this.errorMessage=n||r.EMPTY_STRING,this.subError=i||r.EMPTY_STRING,this.name="AuthError"}setCorrelationId(e){this.correlationId=e}}function Y(e,n){return new Q(e,n?`${V[e]} ${n}`:V[e])}const J="client_info_decoding_error",X="client_info_empty_error",Z="token_parsing_error",ee="null_or_empty_token",ne="endpoints_resolution_error",ie="network_error",te="openid_config_error",ae="hash_not_deserialized",re="invalid_state",oe="state_mismatch",se="state_not_found",de="nonce_mismatch",le="auth_time_not_found",ce="max_age_transpired",fe="multiple_matching_tokens",ue="multiple_matching_accounts",he="multiple_matching_appMetadata",me="request_cannot_be_made",pe="cannot_remove_empty_scope",ge="cannot_append_scopeset",ve="empty_input_scopeset",ye="device_code_polling_cancelled",ke="device_code_expired",be="device_code_unknown_error",we="no_account_in_silent_request",_e="invalid_cache_record",xe="invalid_cache_environment",Ce="no_account_found",Se="no_crypto_object",Te="unexpected_credential_type",Ie="invalid_assertion",Ae="invalid_client_credential",je="token_refresh_required",Ee="user_timeout_reached",Pe="token_claims_cnf_required_for_signedjwt",Me="authorization_code_missing_from_server_response",Re="binding_key_not_removed",Ne="end_session_endpoint_not_supported",Oe="key_id_missing",Fe="no_network_connectivity",ze="user_canceled",Le="missing_tenant_id_error",qe="method_not_implemented",Be="nested_app_auth_bridge_disabled",He={[J]:"The client info could not be parsed/decoded correctly",[X]:"The client info was empty",[Z]:"Token cannot be parsed",[ee]:"The token is null or empty",[ne]:"Endpoints cannot be resolved",[ie]:"Network request failed",[te]:"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.",[ae]:"The hash parameters could not be deserialized",[re]:"State was not the expected format",[oe]:"State mismatch error",[se]:"State not found",[de]:"Nonce mismatch error",[le]:"Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.",[ce]:"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.",[fe]:"The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.",[ue]:"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account",[he]:"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata",[me]:"Token request cannot be made without authorization code or refresh token.",[pe]:"Cannot remove null or empty scope from ScopeSet",[ge]:"Cannot append ScopeSet",[ve]:"Empty input ScopeSet cannot be processed",[ye]:"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.",[ke]:"Device code is expired.",[be]:"Device code stopped polling for unknown reasons.",[we]:"Please pass an account object, silent flow is not supported without account information",[_e]:"Cache record object was null or undefined.",[xe]:"Invalid environment when attempting to create cache entry",[Ce]:"No account found in cache for given key.",[Se]:"No crypto object detected.",[Te]:"Unexpected credential type.",[Ie]:"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515",[Ae]:"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential",[je]:"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.",[Ee]:"User defined timeout for device code polling reached",[Pe]:"Cannot generate a POP jwt if the token_claims are not populated",[Me]:"Server response does not contain an authorization code to proceed",[Re]:"Could not remove the credential's binding key from storage.",[Ne]:"The provided authority does not support logout",[Oe]:"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.",[Fe]:"No network connectivity. Check your internet connection.",[ze]:"User cancelled the flow.",[Le]:"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.",[qe]:"This method has not been implemented",[Be]:"The nested app auth bridge is disabled"};class De extends Q{constructor(e,n){super(e,n?`${He[e]}: ${n}`:He[e]),this.name="ClientAuthError",Object.setPrototypeOf(this,De.prototype)}}function Ue(e,n){return new De(e,n)}const We={createNewGuid:()=>{throw Ue(qe)},base64Decode:()=>{throw Ue(qe)},base64Encode:()=>{throw Ue(qe)},base64UrlEncode:()=>{throw Ue(qe)},encodeKid:()=>{throw Ue(qe)},async getPublicKeyThumbprint(){throw Ue(qe)},async removeTokenBindingKey(){throw Ue(qe)},async clearKeystore(){throw Ue(qe)},async signJwt(){throw Ue(qe)},async hashString(){throw Ue(qe)}},Ke="@azure/msal-common",Ge="14.16.1";function $e(e,n){const i=function(e){if(!e)throw Ue(ee);const n=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!n||n.length<4)throw Ue(Z);return n[2]}(e);try{const e=n(i);return JSON.parse(e)}catch(e){throw Ue(Z)}}function Ve(e,n){if(0===n||Date.now()-3e5>e+n)throw Ue(ce)}function Qe(){return Math.round((new Date).getTime()/1e3)}function Ye(e,n){const i=Number(e)||0;return Qe()+n>i}function Je(e){return[on(e),sn(e),dn(e),ln(e),cn(e)].join(j).toLowerCase()}function Xe(e,n,i,t,a){return{credentialType:E.ID_TOKEN,homeAccountId:e,environment:n,clientId:t,secret:i,realm:a}}function Ze(e,n,i,t,a,r,o,s,d,l,c,f,u,h,m){const p={homeAccountId:e,credentialType:E.ACCESS_TOKEN,secret:i,cachedAt:Qe().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:n,clientId:t,realm:a,target:r,tokenType:c||q.BEARER};if(f&&(p.userAssertionHash=f),l&&(p.refreshOn=l.toString()),h&&(p.requestedClaims=h,p.requestedClaimsHash=m),p.tokenType?.toLowerCase()!==q.BEARER.toLowerCase())switch(p.credentialType=E.ACCESS_TOKEN_WITH_AUTH_SCHEME,p.tokenType){case q.POP:const e=$e(i,d);if(!e?.cnf?.kid)throw Ue(Pe);p.keyId=e.cnf.kid;break;case q.SSH:p.keyId=u}return p}function en(e,n,i,t,a,r,o){const s={credentialType:E.REFRESH_TOKEN,homeAccountId:e,environment:n,clientId:t,secret:i};return r&&(s.userAssertionHash=r),a&&(s.familyId=a),o&&(s.expiresOn=o.toString()),s}function nn(e){return e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")}function tn(e){return!!e&&nn(e)&&e.hasOwnProperty("realm")&&e.hasOwnProperty("target")&&(e.credentialType===E.ACCESS_TOKEN||e.credentialType===E.ACCESS_TOKEN_WITH_AUTH_SCHEME)}function an(e){return!!e&&nn(e)&&e.hasOwnProperty("realm")&&e.credentialType===E.ID_TOKEN}function rn(e){return!!e&&nn(e)&&e.credentialType===E.REFRESH_TOKEN}function on(e){return[e.homeAccountId,e.environment].join(j).toLowerCase()}function sn(e){const n=e.credentialType===E.REFRESH_TOKEN&&e.familyId||e.clientId;return[e.credentialType,n,e.realm||""].join(j).toLowerCase()}function dn(e){return(e.target||"").toLowerCase()}function ln(e){return(e.requestedClaimsHash||"").toLowerCase()}function cn(e){return e.tokenType&&e.tokenType.toLowerCase()!==q.BEARER.toLowerCase()?e.tokenType.toLowerCase():""}function fn(){return Qe()+86400}function un(e,n,i){e.authorization_endpoint=n.authorization_endpoint,e.token_endpoint=n.token_endpoint,e.end_session_endpoint=n.end_session_endpoint,e.issuer=n.issuer,e.endpointsFromNetwork=i,e.jwks_uri=n.jwks_uri}function hn(e,n,i){e.aliases=n.aliases,e.preferred_cache=n.preferred_cache,e.preferred_network=n.preferred_network,e.aliasesFromNetwork=i}function mn(e){return e.expiresAt<=Qe()}const pn="redirect_uri_empty",gn="claims_request_parsing_error",vn="authority_uri_insecure",yn="url_parse_error",kn="empty_url_error",bn="empty_input_scopes_error",wn="invalid_prompt_value",_n="invalid_claims",xn="token_request_empty",Cn="logout_request_empty",Sn="invalid_code_challenge_method",Tn="pkce_params_missing",In="invalid_cloud_discovery_metadata",An="invalid_authority_metadata",jn="untrusted_authority",En="missing_ssh_jwk",Pn="missing_ssh_kid",Mn="missing_nonce_authentication_header",Rn="invalid_authentication_header",Nn="cannot_set_OIDCOptions",On="cannot_allow_native_broker",Fn="authority_mismatch",zn={[pn]:"A redirect URI is required for all calls, and none has been set.",[gn]:"Could not parse the given claims request object.",[vn]:"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options",[yn]:"URL could not be parsed into appropriate segments.",[kn]:"URL was empty or null.",[bn]:"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.",[wn]:"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest",[_n]:"Given claims parameter must be a stringified JSON object.",[xn]:"Token request was empty and not found in cache.",[Cn]:"The logout request was null or undefined.",[Sn]:'code_challenge_method passed is invalid. Valid values are "plain" and "S256".',[Tn]:"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request",[In]:"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields",[An]:"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.",[jn]:"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.",[En]:"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.",[Pn]:"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.",[Mn]:"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.",[Rn]:"Invalid authentication header provided",[Nn]:"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.",[On]:"Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.",[Fn]:"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority."};class Ln extends Q{constructor(e){super(e,zn[e]),this.name="ClientConfigurationError",Object.setPrototypeOf(this,Ln.prototype)}}function qn(e){return new Ln(e)}class Bn{static isEmptyObj(e){if(e)try{const n=JSON.parse(e);return 0===Object.keys(n).length}catch(e){}return!0}static startsWith(e,n){return 0===e.indexOf(n)}static endsWith(e,n){return e.length>=n.length&&e.lastIndexOf(n)===e.length-n.length}static queryStringToObject(e){const n={},i=e.split("&"),t=e=>decodeURIComponent(e.replace(/\+/g," "));return i.forEach(e=>{if(e.trim()){const[i,a]=e.split(/=(.+)/g,2);i&&a&&(n[t(i)]=t(a))}}),n}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch(e){return null}}static matchPattern(e,n){return new RegExp(e.replace(/\\/g,"\\\\").replace(/\*/g,"[^ ]*").replace(/\?/g,"\\?")).test(n)}}class Hn{constructor(e){const n=e?Bn.trimArrayEntries([...e]):[],i=n?Bn.removeEmptyStringsFromArray(n):[];this.validateInputScopes(i),this.scopes=new Set,i.forEach(e=>this.scopes.add(e))}static fromString(e){const n=(e||r.EMPTY_STRING).split(" ");return new Hn(n)}static createSearchScopes(e){const n=new Hn(e);return n.containsOnlyOIDCScopes()?n.removeScope(r.OFFLINE_ACCESS_SCOPE):n.removeOIDCScopes(),n}validateInputScopes(e){if(!e||e.length<1)throw qn(bn)}containsScope(e){const n=this.printScopesLowerCase().split(" "),i=new Hn(n);return!!e&&i.scopes.has(e.toLowerCase())}containsScopeSet(e){return!(!e||e.scopes.size<=0)&&this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return s.forEach(n=>{this.containsScope(n)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch(e){throw Ue(ge)}}removeScope(e){if(!e)throw Ue(pe);this.scopes.delete(e.trim())}removeOIDCScopes(){s.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw Ue(ve);const n=new Set;return e.scopes.forEach(e=>n.add(e.toLowerCase())),this.scopes.forEach(e=>n.add(e.toLowerCase())),n}intersectingScopeSets(e){if(!e)throw Ue(ve);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();const n=this.unionScopeSets(e),i=e.getScopeCount(),t=this.getScopeCount();return n.size<t+i}getScopeCount(){return this.scopes.size}asArray(){const e=[];return this.scopes.forEach(n=>e.push(n)),e}printScopes(){return this.scopes?this.asArray().join(" "):r.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}}function Dn(e,n){if(!e)throw Ue(X);try{const i=n(e);return JSON.parse(i)}catch(e){throw Ue(J)}}function Un(e){if(!e)throw Ue(J);const n=e.split(".",2);return{uid:n[0],utid:n.length<2?r.EMPTY_STRING:n[1]}}function Wn(e,n){return!!e&&!!n&&e===n.split(".")[1]}function Kn(e,n,i,t){if(t){const{oid:n,sub:i,tid:a,name:r,tfp:o,acr:s}=t,d=a||o||s||"";return{tenantId:d,localAccountId:n||i||"",name:r,isHomeTenant:Wn(d,e)}}return{tenantId:i,localAccountId:n,isHomeTenant:Wn(i,e)}}function Gn(e,n,i,t){let a=e;if(n){const{isHomeTenant:i,...t}=n;a={...e,...t}}if(i){const{isHomeTenant:n,...r}=Kn(e.homeAccountId,e.localAccountId,e.tenantId,i);return a={...a,...r,idTokenClaims:i,idToken:t},a}return a}function $n(e){return e&&(e.tid||e.tfp||e.acr)||null}class Vn{generateAccountId(){return[this.homeAccountId,this.environment].join(j).toLowerCase()}generateAccountKey(){return Vn.generateAccountCacheKey({homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId})}getAccountInfo(){return{homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId,name:this.name,nativeAccountId:this.nativeAccountId,authorityType:this.authorityType,tenantProfiles:new Map((this.tenantProfiles||[]).map(e=>[e.tenantId,e]))}}isSingleTenant(){return!this.tenantProfiles}static generateAccountCacheKey(e){const n=e.homeAccountId.split(".")[1];return[e.homeAccountId,e.environment||"",n||e.tenantId||""].join(j).toLowerCase()}static createAccount(e,n,i){const t=new Vn;let a;1===n.authorityType?t.authorityType="ADFS":n.protocolMode===U?t.authorityType="MSSTS":t.authorityType=A,e.clientInfo&&i&&(a=Dn(e.clientInfo,i)),t.clientInfo=e.clientInfo,t.homeAccountId=e.homeAccountId,t.nativeAccountId=e.nativeAccountId;const r=e.environment||n&&n.getPreferredCache();if(!r)throw Ue(xe);t.environment=r,t.realm=a?.utid||$n(e.idTokenClaims)||"",t.localAccountId=a?.uid||e.idTokenClaims?.oid||e.idTokenClaims?.sub||"";const o=e.idTokenClaims?.preferred_username||e.idTokenClaims?.upn,s=e.idTokenClaims?.emails?e.idTokenClaims.emails[0]:null;if(t.username=o||s||"",t.name=e.idTokenClaims?.name||"",t.cloudGraphHostName=e.cloudGraphHostName,t.msGraphHost=e.msGraphHost,e.tenantProfiles)t.tenantProfiles=e.tenantProfiles;else{const n=Kn(e.homeAccountId,t.localAccountId,t.realm,e.idTokenClaims);t.tenantProfiles=[n]}return t}static createFromAccountInfo(e,n,i){const t=new Vn;return t.authorityType=e.authorityType||A,t.homeAccountId=e.homeAccountId,t.localAccountId=e.localAccountId,t.nativeAccountId=e.nativeAccountId,t.realm=e.tenantId,t.environment=e.environment,t.username=e.username,t.name=e.name,t.cloudGraphHostName=n,t.msGraphHost=i,t.tenantProfiles=Array.from(e.tenantProfiles?.values()||[]),t}static generateHomeAccountId(e,n,i,t,a){if(1!==n&&2!==n){if(e)try{const n=Dn(e,t.base64Decode);if(n.uid&&n.utid)return`${n.uid}.${n.utid}`}catch(e){}i.warning("No client info in response")}return a?.sub||""}static isAccountEntity(e){return!!e&&e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("localAccountId")&&e.hasOwnProperty("username")&&e.hasOwnProperty("authorityType")}static accountInfoIsEqual(e,n,i){if(!e||!n)return!1;let t=!0;if(i){const i=e.idTokenClaims||{},a=n.idTokenClaims||{};t=i.iat===a.iat&&i.nonce===a.nonce}return e.homeAccountId===n.homeAccountId&&e.localAccountId===n.localAccountId&&e.username===n.username&&e.tenantId===n.tenantId&&e.environment===n.environment&&e.nativeAccountId===n.nativeAccountId&&t}}function Qn(e){return e.startsWith("#/")?e.substring(2):e.startsWith("#")||e.startsWith("?")?e.substring(1):e}function Yn(e){if(!e||e.indexOf("=")<0)return null;try{const n=Qn(e),i=Object.fromEntries(new URLSearchParams(n));if(i.code||i.error||i.error_description||i.state)return i}catch(e){throw Ue(ae)}return null}class Jn{get urlString(){return this._urlString}constructor(e){if(this._urlString=e,!this._urlString)throw qn(kn);e.includes("#")||(this._urlString=Jn.canonicalizeUri(e))}static canonicalizeUri(e){if(e){let n=e.toLowerCase();return Bn.endsWith(n,"?")?n=n.slice(0,-1):Bn.endsWith(n,"?/")&&(n=n.slice(0,-2)),Bn.endsWith(n,"/")||(n+="/"),n}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch(e){throw qn(yn)}if(!e.HostNameAndPort||!e.PathSegments)throw qn(yn);if(!e.Protocol||"https:"!==e.Protocol.toLowerCase())throw qn(vn)}static appendQueryString(e,n){return n?e.indexOf("?")<0?`${e}?${n}`:`${e}&${n}`:e}static removeHashFromUrl(e){return Jn.canonicalizeUri(e.split("#")[0])}replaceTenantPath(e){const n=this.getUrlComponents(),i=n.PathSegments;return!e||0===i.length||i[0]!==b&&i[0]!==w||(i[0]=e),Jn.constructAuthorityUriFromObject(n)}getUrlComponents(){const e=RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),n=this.urlString.match(e);if(!n)throw qn(yn);const i={Protocol:n[1],HostNameAndPort:n[4],AbsolutePath:n[5],QueryString:n[7]};let t=i.AbsolutePath.split("/");return t=t.filter(e=>e&&e.length>0),i.PathSegments=t,i.QueryString&&i.QueryString.endsWith("/")&&(i.QueryString=i.QueryString.substring(0,i.QueryString.length-1)),i}static getDomainFromUrl(e){const n=RegExp("^([^:/?#]+://)?([^/?#]*)"),i=e.match(n);if(!i)throw qn(yn);return i[2]}static getAbsoluteUrl(e,n){if(e[0]===r.FORWARD_SLASH){const i=new Jn(n).getUrlComponents();return i.Protocol+"//"+i.HostNameAndPort+e}return e}static constructAuthorityUriFromObject(e){return new Jn(e.Protocol+"//"+e.HostNameAndPort+"/"+e.PathSegments.join("/"))}static hashContainsKnownProperties(e){return!!Yn(e)}}const Xn={"login.microsoftonline.com":{token_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.com/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout"},"login.chinacloudapi.cn":{token_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys",issuer:"https://login.partner.microsoftonline.cn/{tenantid}/v2.0",authorization_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout"},"login.microsoftonline.us":{token_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.us/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout"}},Zn={tenant_discovery_endpoint:"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration",metadata:[{preferred_network:"login.microsoftonline.com",preferred_cache:"login.windows.net",aliases:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{preferred_network:"login.partner.microsoftonline.cn",preferred_cache:"login.partner.microsoftonline.cn",aliases:["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{preferred_network:"login.microsoftonline.de",preferred_cache:"login.microsoftonline.de",aliases:["login.microsoftonline.de"]},{preferred_network:"login.microsoftonline.us",preferred_cache:"login.microsoftonline.us",aliases:["login.microsoftonline.us","login.usgovcloudapi.net"]},{preferred_network:"login-us.microsoftonline.com",preferred_cache:"login-us.microsoftonline.com",aliases:["login-us.microsoftonline.com"]}]},ei=new Set;function ni(e,n,i,t){if(t?.trace(`getAliasesFromMetadata called with source: ${i}`),e&&n){const a=ii(n,e);if(a)return t?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${i}, returning aliases`),a.aliases;t?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${i}`)}return null}function ii(e,n){for(let i=0;i<e.length;i++){const t=e[i];if(t.aliases.includes(n))return t}return null}Zn.metadata.forEach(e=>{e.aliases.forEach(e=>{ei.add(e)})});const ti="cache_quota_exceeded",ai="cache_error_unknown",ri={[ti]:"Exceeded cache storage capacity.",[ai]:"Unexpected error occurred when using cache storage."};class oi extends Error{constructor(e,n){const i=n||(ri[e]?ri[e]:ri[ai]);super(`${e}: ${i}`),Object.setPrototypeOf(this,oi.prototype),this.name="CacheError",this.errorCode=e,this.errorMessage=i}}function si(e){return e instanceof Error?"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name||e.message.includes("exceeded the quota")?new oi(ti):new oi(e.name,e.message):new oi(ai)}class di{constructor(e,n,i,t){this.clientId=e,this.cryptoImpl=n,this.commonLogger=i.clone(Ke,Ge),this.staticAuthorityOptions=t}getAllAccounts(e,n){return this.buildTenantProfiles(this.getAccountsFilteredBy(n||{},e),e,n)}getAccountInfoFilteredBy(e,n){const i=this.getAllAccounts(n,e);return i.length>1?i.sort(e=>e.idTokenClaims?-1:1)[0]:1===i.length?i[0]:null}getBaseAccountInfo(e,n){const i=this.getAccountsFilteredBy(e,n);return i.length>0?i[0].getAccountInfo():null}buildTenantProfiles(e,n,i){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,n,i?.tenantId,i))}getTenantedAccountInfoByFilter(e,n,i,t,a){let r,o=null;if(a&&!this.tenantProfileMatchesFilter(i,a))return null;const s=this.getIdToken(e,t,n,i.tenantId);return s&&(r=$e(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(r,a))?null:(o=Gn(e,i,r,s?.secret),o)}getTenantProfilesFromAccountEntity(e,n,i,t){const a=e.getAccountInfo();let r=a.tenantProfiles||new Map;const o=this.getTokenKeys();if(i){const e=r.get(i);if(!e)return[];r=new Map([[i,e]])}const s=[];return r.forEach(e=>{const i=this.getTenantedAccountInfoByFilter(a,o,e,n,t);i&&s.push(i)}),s}tenantProfileMatchesFilter(e,n){return!(n.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,n.localAccountId)||n.name&&e.name!==n.name||void 0!==n.isHomeTenant&&e.isHomeTenant!==n.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,n){if(n){if(n.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,n.localAccountId))return!1;if(n.loginHint&&!this.matchLoginHintFromTokenClaims(e,n.loginHint))return!1;if(n.username&&!this.matchUsername(e.preferred_username,n.username))return!1;if(n.name&&!this.matchName(e,n.name))return!1;if(n.sid&&!this.matchSid(e,n.sid))return!1}return!0}async saveCacheRecord(e,n,i){if(!e)throw Ue(_e);try{e.account&&this.setAccount(e.account,n),e.idToken&&!1!==i?.idToken&&this.setIdTokenCredential(e.idToken,n),e.accessToken&&!1!==i?.accessToken&&await this.saveAccessToken(e.accessToken,n),e.refreshToken&&!1!==i?.refreshToken&&this.setRefreshTokenCredential(e.refreshToken,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,n)}catch(e){throw this.commonLogger?.error("CacheManager.saveCacheRecord: failed"),e instanceof Q?e:si(e)}}async saveAccessToken(e,n){const i={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},t=this.getTokenKeys(),a=Hn.fromString(e.target);t.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,i,!1))return;const t=this.getAccessTokenCredential(e,n);t&&this.credentialMatchesFilter(t,i)&&Hn.fromString(t.target).intersectingScopeSets(a)&&this.removeAccessToken(e,n)}),this.setAccessTokenCredential(e,n)}getAccountsFilteredBy(e,n){const i=this.getAccountKeys(),t=[];return i.forEach(i=>{if(!this.isAccountKey(i,e.homeAccountId))return;const a=this.getAccount(i,n,this.commonLogger);if(!a)return;if(e.homeAccountId&&!this.matchHomeAccountId(a,e.homeAccountId))return;if(e.username&&!this.matchUsername(a.username,e.username))return;if(e.environment&&!this.matchEnvironment(a,e.environment))return;if(e.realm&&!this.matchRealm(a,e.realm))return;if(e.nativeAccountId&&!this.matchNativeAccountId(a,e.nativeAccountId))return;if(e.authorityType&&!this.matchAuthorityType(a,e.authorityType))return;const r={localAccountId:e?.localAccountId,name:e?.name},o=a.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,r));o&&0===o.length||t.push(a)}),t}isAccountKey(e,n,i){return!(e.split(j).length<3||n&&!e.toLowerCase().includes(n.toLowerCase())||i&&!e.toLowerCase().includes(i.toLowerCase()))}isCredentialKey(e){if(e.split(j).length<6)return!1;const n=e.toLowerCase();if(-1===n.indexOf(E.ID_TOKEN.toLowerCase())&&-1===n.indexOf(E.ACCESS_TOKEN.toLowerCase())&&-1===n.indexOf(E.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())&&-1===n.indexOf(E.REFRESH_TOKEN.toLowerCase()))return!1;if(n.indexOf(E.REFRESH_TOKEN.toLowerCase())>-1){const e=`${E.REFRESH_TOKEN}${j}${this.clientId}${j}`,i=`${E.REFRESH_TOKEN}${j}${M}${j}`;if(-1===n.indexOf(e.toLowerCase())&&-1===n.indexOf(i.toLowerCase()))return!1}else if(-1===n.indexOf(this.clientId.toLowerCase()))return!1;return!0}credentialMatchesFilter(e,n){if(n.clientId&&!this.matchClientId(e,n.clientId))return!1;if(n.userAssertionHash&&!this.matchUserAssertionHash(e,n.userAssertionHash))return!1;if("string"==typeof n.homeAccountId&&!this.matchHomeAccountId(e,n.homeAccountId))return!1;if(n.environment&&!this.matchEnvironment(e,n.environment))return!1;if(n.realm&&!this.matchRealm(e,n.realm))return!1;if(n.credentialType&&!this.matchCredentialType(e,n.credentialType))return!1;if(n.familyId&&!this.matchFamilyId(e,n.familyId))return!1;if(n.target&&!this.matchTarget(e,n.target))return!1;if((n.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==n.requestedClaimsHash)return!1;if(e.credentialType===E.ACCESS_TOKEN_WITH_AUTH_SCHEME){if(n.tokenType&&!this.matchTokenType(e,n.tokenType))return!1;if(n.tokenType===q.SSH&&n.keyId&&!this.matchKeyId(e,n.keyId))return!1}return!0}getAppMetadataFilteredBy(e){const n=this.getKeys(),i={};return n.forEach(n=>{if(!this.isAppMetadata(n))return;const t=this.getAppMetadata(n);t&&(e.environment&&!this.matchEnvironment(t,e.environment)||e.clientId&&!this.matchClientId(t,e.clientId)||(i[n]=t))}),i}getAuthorityMetadataByAlias(e){const n=this.getAuthorityMetadataKeys();let i=null;return n.forEach(n=>{if(!this.isAuthorityMetadata(n)||-1===n.indexOf(this.clientId))return;const t=this.getAuthorityMetadata(n);t&&-1!==t.aliases.indexOf(e)&&(i=t)}),i}async removeAllAccounts(e){const n=this.getAccountKeys(),i=[];n.forEach(n=>{i.push(this.removeAccount(n,e))}),await Promise.all(i)}async removeAccount(e,n){const i=this.getAccount(e,n,this.commonLogger);i&&(await this.removeAccountContext(i,n),this.removeItem(e,n))}async removeAccountContext(e,n){const i=this.getTokenKeys(),t=e.generateAccountId();i.idToken.forEach(e=>{0===e.indexOf(t)&&this.removeIdToken(e,n)}),i.accessToken.forEach(e=>{0===e.indexOf(t)&&this.removeAccessToken(e,n)}),i.refreshToken.forEach(e=>{0===e.indexOf(t)&&this.removeRefreshToken(e,n)}),this.getKeys().forEach(e=>{e.includes(t)&&this.removeItem(e,n)})}updateOutdatedCachedAccount(e,n,i,t){if(n&&n.isSingleTenant()){this.commonLogger?.verbose("updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity");const a=this.getAccountKeys().filter(e=>e.startsWith(n.homeAccountId)),r=[];a.forEach(e=>{const n=this.getCachedAccountEntity(e,i);n&&r.push(n)});const o=r.find(e=>Wn(e.realm,e.homeAccountId))||r[0];o.tenantProfiles=r.map(e=>({tenantId:e.realm,localAccountId:e.localAccountId,name:e.name,isHomeTenant:Wn(e.realm,e.homeAccountId)}));const s=di.toObject(new Vn,{...o}),d=s.generateAccountKey();return a.forEach(n=>{n!==d&&this.removeOutdatedAccount(e,i)}),this.setAccount(s,i),t?.verbose("Updated an outdated account entity in the cache"),s}return n}removeAccessToken(e,n){const i=this.getAccessTokenCredential(e,n);if(this.removeItem(e,n),!i||i.credentialType.toLowerCase()!==E.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||i.tokenType!==q.POP)return;const t=i.keyId;t&&this.cryptoImpl.removeTokenBindingKey(t).catch(()=>{this.commonLogger.error("Binding key could not be removed")})}removeAppMetadata(e){return this.getKeys().forEach(n=>{this.isAppMetadata(n)&&this.removeItem(n,e)}),!0}readAccountFromCache(e,n){const i=Vn.generateAccountCacheKey(e);return this.getAccount(i,n,this.commonLogger)}getIdToken(e,n,i,t,a){this.commonLogger.trace("CacheManager - getIdToken called");const r={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:E.ID_TOKEN,clientId:this.clientId,realm:t},o=this.getIdTokensByFilter(r,n,i),s=o.size;if(s<1)return this.commonLogger.info("CacheManager:getIdToken - No token found"),null;if(s>1){let i=o;if(!t){const n=new Map;o.forEach((i,t)=>{i.realm===e.tenantId&&n.set(t,i)});const t=n.size;if(t<1)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"),o.values().next().value;if(1===t)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"),n.values().next().value;i=n}return this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"),i.forEach((e,i)=>{this.removeIdToken(i,n)}),a&&n&&a.addFields({multiMatchedID:o.size},n),null}return this.commonLogger.info("CacheManager:getIdToken - Returning ID token"),o.values().next().value}getIdTokensByFilter(e,n,i){const t=i&&i.idToken||this.getTokenKeys().idToken,a=new Map;return t.forEach(i=>{if(!this.idTokenKeyMatchesFilter(i,{clientId:this.clientId,...e}))return;const t=this.getIdTokenCredential(i,n);t&&this.credentialMatchesFilter(t,e)&&a.set(i,t)}),a}idTokenKeyMatchesFilter(e,n){const i=e.toLowerCase();return!(n.clientId&&-1===i.indexOf(n.clientId.toLowerCase())||n.homeAccountId&&-1===i.indexOf(n.homeAccountId.toLowerCase()))}removeIdToken(e,n){this.removeItem(e,n)}removeRefreshToken(e,n){this.removeItem(e,n)}getAccessToken(e,n,i,t,a){this.commonLogger.trace("CacheManager - getAccessToken called");const r=Hn.createSearchScopes(n.scopes),o=n.authenticationScheme||q.BEARER,s=o&&o.toLowerCase()!==q.BEARER.toLowerCase()?E.ACCESS_TOKEN_WITH_AUTH_SCHEME:E.ACCESS_TOKEN,d={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:t||e.tenantId,target:r,tokenType:o,keyId:n.sshKid,requestedClaimsHash:n.requestedClaimsHash},l=i&&i.accessToken||this.getTokenKeys().accessToken,c=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,d,!0)){const i=this.getAccessTokenCredential(e,n.correlationId);i&&this.credentialMatchesFilter(i,d)&&c.push(i)}});const f=c.length;return f<1?(this.commonLogger.info("CacheManager:getAccessToken - No token found"),null):f>1?(this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"),c.forEach(e=>{this.removeAccessToken(Je(e),n.correlationId)}),a&&n.correlationId&&a.addFields({multiMatchedAT:c.length},n.correlationId),null):(this.commonLogger.info("CacheManager:getAccessToken - Returning access token"),c[0])}accessTokenKeyMatchesFilter(e,n,i){const t=e.toLowerCase();if(n.clientId&&-1===t.indexOf(n.clientId.toLowerCase()))return!1;if(n.homeAccountId&&-1===t.indexOf(n.homeAccountId.toLowerCase()))return!1;if(n.realm&&-1===t.indexOf(n.realm.toLowerCase()))return!1;if(n.requestedClaimsHash&&-1===t.indexOf(n.requestedClaimsHash.toLowerCase()))return!1;if(n.target){const e=n.target.asArray();for(let n=0;n<e.length;n++){if(i&&!t.includes(e[n].toLowerCase()))return!1;if(!i&&t.includes(e[n].toLowerCase()))return!0}}return!0}getAccessTokensByFilter(e,n){const i=this.getTokenKeys(),t=[];return i.accessToken.forEach(i=>{if(!this.accessTokenKeyMatchesFilter(i,e,!0))return;const a=this.getAccessTokenCredential(i,n);a&&this.credentialMatchesFilter(a,e)&&t.push(a)}),t}getRefreshToken(e,n,i,t,a){this.commonLogger.trace("CacheManager - getRefreshToken called");const r=n?M:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:E.REFRESH_TOKEN,clientId:this.clientId,familyId:r},s=t&&t.refreshToken||this.getTokenKeys().refreshToken,d=[];s.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,o)){const n=this.getRefreshTokenCredential(e,i);n&&this.credentialMatchesFilter(n,o)&&d.push(n)}});const l=d.length;return l<1?(this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."),null):(l>1&&a&&i&&a.addFields({multiMatchedRT:l},i),this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"),d[0])}refreshTokenKeyMatchesFilter(e,n){const i=e.toLowerCase();return!(n.familyId&&-1===i.indexOf(n.familyId.toLowerCase())||!n.familyId&&n.clientId&&-1===i.indexOf(n.clientId.toLowerCase())||n.homeAccountId&&-1===i.indexOf(n.homeAccountId.toLowerCase()))}readAppMetadataFromCache(e){const n={environment:e,clientId:this.clientId},i=this.getAppMetadataFilteredBy(n),t=Object.keys(i).map(e=>i[e]),a=t.length;if(a<1)return null;if(a>1)throw Ue(he);return t[0]}isAppMetadataFOCI(e){const n=this.readAppMetadataFromCache(e);return!(!n||n.familyId!==M)}matchHomeAccountId(e,n){return!("string"!=typeof e.homeAccountId||n!==e.homeAccountId)}matchLocalAccountIdFromTokenClaims(e,n){return n===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,n){return e.localAccountId===n}matchName(e,n){return!(n.toLowerCase()!==e.name?.toLowerCase())}matchUsername(e,n){return!(!e||"string"!=typeof e||n?.toLowerCase()!==e.toLowerCase())}matchUserAssertionHash(e,n){return!(!e.userAssertionHash||n!==e.userAssertionHash)}matchEnvironment(e,n){if(this.staticAuthorityOptions){const i=function(e,n){let i;const t=e.canonicalAuthority;if(t){const a=new Jn(t).getUrlComponents().HostNameAndPort;i=ni(a,e.cloudDiscoveryMetadata?.metadata,N,n)||ni(a,Zn.metadata,z,n)||e.knownAuthorities}return i||[]}(this.staticAuthorityOptions,this.commonLogger);if(i.includes(n)&&i.includes(e.environment))return!0}const i=this.getAuthorityMetadataByAlias(n);return!!(i&&i.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,n){return e.credentialType&&n.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,n){return!(!e.clientId||n!==e.clientId)}matchFamilyId(e,n){return!(!e.familyId||n!==e.familyId)}matchRealm(e,n){return!(e.realm?.toLowerCase()!==n.toLowerCase())}matchNativeAccountId(e,n){return!(!e.nativeAccountId||n!==e.nativeAccountId)}matchLoginHintFromTokenClaims(e,n){return e.login_hint===n||e.preferred_username===n||e.upn===n}matchSid(e,n){return e.sid===n}matchAuthorityType(e,n){return!(!e.authorityType||n.toLowerCase()!==e.authorityType.toLowerCase())}matchTarget(e,n){return!(e.credentialType!==E.ACCESS_TOKEN&&e.credentialType!==E.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target)&&Hn.fromString(e.target).containsScopeSet(n)}matchTokenType(e,n){return!(!e.tokenType||e.tokenType!==n)}matchKeyId(e,n){return!(!e.keyId||e.keyId!==n)}isAppMetadata(e){return-1!==e.indexOf(P)}isAuthorityMetadata(e){return-1!==e.indexOf(R)}generateAuthorityMetadataCacheKey(e){return`${R}-${this.clientId}-${e}`}static toObject(e,n){for(const i in n)e[i]=n[i];return e}}class li extends di{setAccount(){throw Ue(qe)}getAccount(){throw Ue(qe)}getCachedAccountEntity(){throw Ue(qe)}setIdTokenCredential(){throw Ue(qe)}getIdTokenCredential(){throw Ue(qe)}setAccessTokenCredential(){throw Ue(qe)}getAccessTokenCredential(){throw Ue(qe)}setRefreshTokenCredential(){throw Ue(qe)}getRefreshTokenCredential(){throw Ue(qe)}setAppMetadata(){throw Ue(qe)}getAppMetadata(){throw Ue(qe)}setServerTelemetry(){throw Ue(qe)}getServerTelemetry(){throw Ue(qe)}setAuthorityMetadata(){throw Ue(qe)}getAuthorityMetadata(){throw Ue(qe)}getAuthorityMetadataKeys(){throw Ue(qe)}setThrottlingCache(){throw Ue(qe)}getThrottlingCache(){throw Ue(qe)}removeItem(){throw Ue(qe)}getKeys(){throw Ue(qe)}getAccountKeys(){throw Ue(qe)}getTokenKeys(){throw Ue(qe)}updateCredentialCacheKey(){throw Ue(qe)}removeOutdatedAccount(){throw Ue(qe)}}const ci={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},fi={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:H.Info,correlationId:r.EMPTY_STRING},ui={claimsBasedCachingEnabled:!1},hi={async sendGetRequestAsync(){throw Ue(qe)},async sendPostRequestAsync(){throw Ue(qe)}},mi={sku:r.SKU,version:Ge,cpu:r.EMPTY_STRING,os:r.EMPTY_STRING},pi={clientSecret:r.EMPTY_STRING,clientAssertion:void 0},gi={azureCloudInstance:K,tenant:`${r.DEFAULT_COMMON_TENANT}`},vi={application:{appName:"",appVersion:""}};function yi(e){return e.authOptions.authority.options.protocolMode===W}const ki={sendGetRequestAsync:()=>Promise.reject(Ue(qe)),sendPostRequestAsync:()=>Promise.reject(Ue(qe))},bi="acquireTokenByCode",wi="acquireTokenByRefreshToken",_i="acquireTokenSilent",xi="acquireTokenSilentAsync",Ci="acquireTokenPopup",Si="acquireTokenRedirect",Ti="cryptoOptsGetPublicKeyThumbprint",Ii="cryptoOptsSignJwt",Ai="silentCacheClientAcquireToken",ji="silentIframeClientAcquireToken",Ei="silentRefreshClientAcquireToken",Pi="ssoSilent",Mi="standardInteractionClientGetDiscoveredAuthority",Ri="fetchAccountIdWithNativeBroker",Ni="nativeInteractionClientAcquireToken",Oi="networkClientSendPostRequestAsync",Fi="refreshTokenClientExecutePostToTokenEndpoint",zi="authorizationCodeClientExecutePostToTokenEndpoint",Li="refreshTokenClientExecuteTokenRequest",qi="refreshTokenClientAcquireToken",Bi="refreshTokenClientAcquireTokenWithCachedRefreshToken",Hi="refreshTokenClientAcquireTokenByRefreshToken",Di="refreshTokenClientCreateTokenRequestBody",Ui="acquireTokenFromCache",Wi="silentFlowClientAcquireCachedToken",Ki="silentFlowClientGenerateResultFromCacheRecord",Gi="acquireTokenBySilentIframe",$i="initializeBaseRequest",Vi="initializeSilentRequest",Qi="initializeClientApplication",Yi="silentIframeClientTokenHelper",Ji="silentHandlerInitiateAuthRequest",Xi="silentHandlerMonitorIframeForHash",Zi="silentHandlerLoadFrame",et="silentHandlerLoadFrameSync",nt="standardInteractionClientCreateAuthCodeClient",it="standardInteractionClientGetClientConfiguration",tt="standardInteractionClientInitializeAuthorizationRequest",at="standardInteractionClientInitializeAuthorizationCodeRequest",rt="getAuthCodeUrl",ot="handleCodeResponseFromServer",st="handleCodeResponse",dt="updateTokenEndpointAuthority",lt="authClientAcquireToken",ct="authClientExecuteTokenRequest",ft="authClientCreateTokenRequestBody",ut="authClientCreateQueryString",ht="popTokenGenerateCnf",mt="popTokenGenerateKid",pt="handleServerTokenResponse",gt="deserializeResponse",vt="authorityFactoryCreateDiscoveredInstance",yt="authorityResolveEndpointsAsync",kt="authorityGetCloudDiscoveryMetadataFromNetwork",bt="authorityUpdateCloudDiscoveryMetadata",wt="authorityGetEndpointMetadataFromNetwork",_t="authorityUpdateEndpointMetadata",xt="authorityUpdateMetadataWithRegionalInformation",Ct="regionDiscoveryDetectRegion",St="regionDiscoveryGetRegionFromIMDS",Tt="regionDiscoveryGetCurrentVersion",It="acquireTokenByCodeAsync",At="handleRedirectPromise",jt="handleNativeRedirectPromise",Et="nativeMessageHandlerHandshake",Pt="removeHiddenIframe",Mt="clearTokensAndKeysWithClaims",Rt="cacheManagerGetRefreshToken",Nt="generatePkceCodes",Ot="generateCodeVerifier",Ft="generateCodeChallengeFromVerifier",zt="sha256Digest",Lt="getRandomValues",qt=(new Map([[bi,"ATByCode"],[wi,"ATByRT"],[_i,"ATS"],[xi,"ATSAsync"],[Ci,"ATPopup"],[Si,"ATRedirect"],[Ti,"CryptoGetPKThumb"],[Ii,"CryptoSignJwt"],[Ai,"SltCacheClientAT"],[ji,"SltIframeClientAT"],[Ei,"SltRClientAT"],[Pi,"SsoSlt"],[Mi,"StdIntClientGetDiscAuth"],[Ri,"FetchAccIdWithNtvBroker"],[Ni,"NtvIntClientAT"],["baseClientCreateTokenRequestHeaders","BaseClientCreateTReqHead"],[Oi,"NetClientSendPost"],[Fi,"RTClientExecPost"],[zi,"AuthCodeClientExecPost"],["brokerHandshake","BrokerHandshake"],["acquireTokenByRefreshTokenInBroker","ATByRTInBroker"],["acquireTokenByBroker","ATByBroker"],[Li,"RTClientExecTReq"],[qi,"RTClientAT"],[Bi,"RTClientATWithCachedRT"],[Hi,"RTClientATByRT"],[Di,"RTClientCreateTReqBody"],[Ui,"ATFromCache"],[Wi,"SltFlowClientATCached"],[Ki,"SltFlowClientGenResFromCache"],[Gi,"ATBySltIframe"],[$i,"InitBaseReq"],[Vi,"InitSltReq"],[Qi,"InitClientApplication"],[Yi,"SIClientTHelper"],[Ji,"SHandlerInitAuthReq"],[Xi,"SltHandlerMonitorIframeForHash"],[Zi,"SHandlerLoadFrame"],[et,"SHandlerLoadFrameSync"],[nt,"StdIntClientCreateAuthCodeClient"],[it,"StdIntClientGetClientConf"],[tt,"StdIntClientInitAuthReq"],[at,"StdIntClientInitAuthCodeReq"],[rt,"GetAuthCodeUrl"],[ot,"HandleCodeResFromServer"],[st,"HandleCodeResp"],[dt,"UpdTEndpointAuth"],[lt,"AuthClientAT"],[ct,"AuthClientExecTReq"],[ft,"AuthClientCreateTReqBody"],[ut,"AuthClientCreateQueryStr"],[ht,"PopTGenCnf"],[mt,"PopTGenKid"],[pt,"HandleServerTRes"],[gt,"DeserializeRes"],[vt,"AuthFactCreateDiscInst"],[yt,"AuthResolveEndpointsAsync"],["authorityResolveEndpointsFromLocalSources","AuthResolveEndpointsFromLocal"],[kt,"AuthGetCDMetaFromNet"],[bt,"AuthUpdCDMeta"],[wt,"AuthUpdCDMetaFromNet"],[_t,"AuthUpdEndpointMeta"],[xt,"AuthUpdMetaWithRegInfo"],[Ct,"RegDiscDetectReg"],[St,"RegDiscGetRegFromIMDS"],[Tt,"RegDiscGetCurrentVer"],[It,"ATByCodeAsync"],["getEndpointMetadataFromNetwork","GetEndpointMetaFromNet"],["getCloudDiscoveryMetadataFromNetworkMeasurement","GetCDMetaFromNet"],[At,"HandleRedirectPromise"],[jt,"HandleNtvRedirectPromise"],["updateCloudDiscoveryMetadataMeasurement","UpdateCDMeta"],["usernamePasswordClientAcquireToken","UserPassClientAT"],[Et,"NtvMsgHandlerHandshake"],["nativeGenerateAuthResult","NtvGenAuthRes"],[Pt,"RemoveHiddenIframe"],[Mt,"ClearTAndKeysWithClaims"],[Rt,"CacheManagerGetRT"],[Nt,"GenPkceCodes"],[Ot,"GenCodeVerifier"],[Ft,"GenCodeChallengeFromVerifier"],[zt,"Sha256Digest"],[Lt,"GetRandomValues"]]),1);new Set(["accessTokenSize","durationMs","idTokenSize","matsSilentStatus","matsHttpStatus","refreshTokenSize","queuedTimeMs","startTimeMs","status","multiMatchedAT","multiMatchedID","multiMatchedRT"]);class Bt{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}}class Ht{generateId(){return"callback-id"}startMeasurement(e,n){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:qt,authority:"",libraryName:"",libraryVersion:"",clientId:"",name:e,startTimeMs:Date.now(),correlationId:n||""},measurement:new Bt}}startPerformanceMeasurement(){return new Bt}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return""}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}}const Dt="invalid_grant",Ut="msal",Wt="msal.js.browser",Kt="53ee284d-920a-4b59-9d30-a60315b26836",Gt="ppnbnpeolgkicgegkbkbjmhlideopiji",$t="Handshake",Vt="GetToken",Qt="localStorage",Yt="sessionStorage",Jt="memoryStorage",Xt="request.state",Zt="request.origin",ea="urlHash",na="request.params",ia="interaction.status",ta="ccs.credential",aa="request.correlationId",ra="request.native",oa="msal.account.keys",sa="msal.token.keys",da="msal.version",la="wrapper.sku",ca="wrapper.version",fa=861,ua=862;var ha,ma;(ma=ha||(ha={})).Redirect="redirect",ma.Popup="popup",ma.Silent="silent",ma.None="none";const pa="startup",ga="login",va="logout",ya="acquireToken",ka="ssoSilent",ba="handleRedirect",wa="none",_a={scopes:o},xa="msal.db",Ca=`${xa}.keys`,Sa=[0,5,4];class Ta{navigateInternal(e,n){return Ta.defaultNavigateWindow(e,n)}navigateExternal(e,n){return Ta.defaultNavigateWindow(e,n)}static defaultNavigateWindow(e,n){return n.noHistory?window.location.replace(e):window.location.assign(e),new Promise(e=>{setTimeout(()=>{e(!0)},n.timeout)})}}class Ia extends Q{constructor(e,n,i){super(e.errorCode,e.errorMessage,e.subError),Object.setPrototypeOf(this,Ia.prototype),this.name="NetworkError",this.error=e,this.httpStatus=n,this.responseHeaders=i}}function Aa(e,n,i){return new Ia(e,n,i)}const ja="pkce_not_created",Ea="crypto_nonexistent",Pa="empty_navigate_uri",Ma="hash_empty_error",Ra="no_state_in_hash",Na="hash_does_not_contain_known_properties",Oa="unable_to_parse_state",Fa="state_interaction_type_mismatch",za="interaction_in_progress",La="popup_window_error",qa="empty_window_error",Ba="user_cancelled",Ha="monitor_popup_timeout",Da="monitor_window_timeout",Ua="redirect_in_iframe",Wa="block_iframe_reload",Ka="block_nested_popups",Ga="iframe_closed_prematurely",$a="silent_logout_unsupported",Va="no_account_error",Qa="silent_prompt_value_error",Ya="no_token_request_cache_error",Ja="unable_to_parse_token_request_cache_error",Xa="no_cached_authority_error",Za="auth_request_not_set_error",er="invalid_cache_type",nr="non_browser_environment",ir="database_not_open",tr="no_network_connectivity",ar="post_request_failed",rr="get_request_failed",or="failed_to_parse_response",sr="unable_to_load_token",dr="crypto_key_not_found",lr="auth_code_required",cr="auth_code_or_nativeAccountId_required",fr="spa_code_and_nativeAccountId_present",ur="database_unavailable",hr="unable_to_acquire_token_from_native_platform",mr="native_handshake_timeout",pr="native_extension_not_installed",gr="native_connection_not_established",vr="uninitialized_public_client_application",yr="native_prompt_not_supported",kr="invalid_base64_string",br="invalid_pop_token_request",wr="failed_to_build_headers",_r="failed_to_parse_headers",xr="For more visit: aka.ms/msaljs/browser-errors",Cr={[ja]:"The PKCE code challenge and verifier could not be generated.",[Ea]:"The crypto object or function is not available.",[Pa]:"Navigation URI is empty. Please check stack trace for more info.",[Ma]:`Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${xr}`,[Ra]:"Hash does not contain state. Please verify that the request originated from msal.",[Na]:`Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${xr}`,[Oa]:"Unable to parse state. Please verify that the request originated from msal.",[Fa]:"Hash contains state but the interaction type does not match the caller.",[za]:`Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${xr}`,[La]:"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.",[qa]:"window.open returned null or undefined window object.",[Ba]:"User cancelled the flow.",[Ha]:`Token acquisition in popup failed due to timeout. ${xr}`,[Da]:`Token acquisition in iframe failed due to timeout. ${xr}`,[Ua]:"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.",[Wa]:`Request was blocked inside an iframe because MSAL detected an authentication response. ${xr}`,[Ka]:"Request was blocked inside a popup because MSAL detected it was running in a popup.",[Ga]:"The iframe being monitored was closed prematurely.",[$a]:"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.",[Va]:"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.",[Qa]:"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.",[Ya]:"No token request found in cache.",[Ja]:"The cached token request could not be parsed.",[Xa]:"No cached authority found.",[Za]:"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler",[er]:"Invalid cache type",[nr]:"Login and token requests are not supported in non-browser environments.",[ir]:"Database is not open!",[tr]:"No network connectivity. Check your internet connection.",[ar]:"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'",[rr]:"Network request failed. Please check the network trace to determine root cause.",[or]:"Failed to parse network response. Check network trace.",[sr]:"Error loading token to cache.",[dr]:"Cryptographic Key or Keypair not found in browser storage.",[lr]:"An authorization code must be provided (as the `code` property on the request) to this flow.",[cr]:"An authorization code or nativeAccountId must be provided to this flow.",[fr]:"Request cannot contain both spa code and native account id.",[ur]:"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.",[hr]:`Unable to acquire token from native platform. ${xr}`,[mr]:"Timed out while attempting to establish connection to browser extension",[pr]:"Native extension is not installed. If you think this is a mistake call the initialize function.",[gr]:`Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${xr}`,[vr]:`You must call and await the initialize function before attempting to call any other MSAL API. ${xr}`,[yr]:"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.",[kr]:"Invalid base64 encoded string.",[br]:"Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.",[wr]:"Failed to build request headers object.",[_r]:"Failed to parse response headers"};class Sr extends Q{constructor(e,n){super(e,Cr[e],n),Object.setPrototypeOf(this,Sr.prototype),this.name="BrowserAuthError"}}function Tr(e,n){return new Sr(e,n)}class Ir{async sendGetRequestAsync(e,n){let i,t={},a=0;const r=Ar(n);try{i=await fetch(e,{method:"GET",headers:r})}catch(e){throw Tr(window.navigator.onLine?rr:tr)}t=jr(i.headers);try{return a=i.status,{headers:t,body:await i.json(),status:a}}catch(e){throw Aa(Tr(or),a,t)}}async sendPostRequestAsync(e,n){const i=n&&n.body||"",t=Ar(n);let a,r=0,o={};try{a=await fetch(e,{method:"POST",headers:t,body:i})}catch(e){throw Tr(window.navigator.onLine?ar:tr)}o=jr(a.headers);try{return r=a.status,{headers:o,body:await a.json(),status:r}}catch(e){throw Aa(Tr(or),r,o)}}}function Ar(e){try{const n=new Headers;if(!e||!e.headers)return n;const i=e.headers;return Object.entries(i).forEach(([e,i])=>{n.append(e,i)}),n}catch(e){throw Tr(wr)}}function jr(e){try{const n={};return e.forEach((e,i)=>{n[i]=e}),n}catch(e){throw Tr(_r)}}function Er(e){return encodeURIComponent(Mr(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"))}function Pr(e){return Rr(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Mr(e){return Rr((new TextEncoder).encode(e))}function Rr(e){const n=Array.from(e,e=>String.fromCodePoint(e)).join("");return btoa(n)}const Nr="SHA-256",Or=new Uint8Array([1,0,1]),Fr="0123456789abcdef",zr=new Uint32Array(1),Lr={name:"RSASSA-PKCS1-v1_5",hash:Nr,modulusLength:2048,publicExponent:Or};async function qr(e,n,i){n?.addQueueMeasurement(zt,i);const t=(new TextEncoder).encode(e);return window.crypto.subtle.digest(Nr,t)}function Br(e){return window.crypto.getRandomValues(e)}function Hr(){return window.crypto.getRandomValues(zr),zr[0]}function Dr(){const e=Date.now(),n=1024*Hr()+(1023&Hr()),i=new Uint8Array(16),t=Math.trunc(n/2**30),a=n&2**30-1,r=Hr();i[0]=e/2**40,i[1]=e/2**32,i[2]=e/2**24,i[3]=e/65536,i[4]=e/256,i[5]=e,i[6]=112|t>>>8,i[7]=t,i[8]=128|a>>>24,i[9]=a>>>16,i[10]=a>>>8,i[11]=a,i[12]=r>>>24,i[13]=r>>>16,i[14]=r>>>8,i[15]=r;let o="";for(let e=0;e<i.length;e++)o+=Fr.charAt(i[e]>>>4),o+=Fr.charAt(15&i[e]),3!==e&&5!==e&&7!==e&&9!==e||(o+="-");return o}async function Ur(e){return window.crypto.subtle.exportKey("jwk",e)}async function Wr(e){const n=await qr(e);return Pr(new Uint8Array(n))}const Kr="storage_not_supported",Gr="stubbed_public_client_application_called",$r="in_mem_redirect_unavailable",Vr={[Kr]:"Given storage configuration option was not supported.",[Gr]:"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors",[$r]:"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true."};class Qr extends Q{constructor(e,n){super(e,n),this.name="BrowserConfigurationAuthError",Object.setPrototypeOf(this,Qr.prototype)}}function Yr(e){return new Qr(e,Vr[e])}function Jr(){return window.parent!==window}function Xr(){return"undefined"!=typeof window&&window.location?window.location.href.split("?")[0].split("#")[0]:""}function Zr(){if("undefined"==typeof window)throw Tr(nr)}function eo(e){if(!e)throw Tr(vr)}function no(e){Zr(),function(){if(Jn.hashContainsKnownProperties(window.location.hash)&&Jr())throw Tr(Wa)}(),function(){if("undefined"!=typeof window&&window.opener&&window.opener!==window&&"string"==typeof window.name&&0===window.name.indexOf(`${Ut}.`))throw Tr(Ka)}(),eo(e)}function io(e,n){if(no(e),function(e){if(Jr()&&!e)throw Tr(Ua)}(n.system.allowRedirectInIframe),n.cache.cacheLocation===Jt&&!n.cache.storeAuthStateInCookie)throw Yr($r)}function to(e){const n=document.createElement("link");n.rel="preconnect",n.href=new URL(e).origin,n.crossOrigin="anonymous",document.head.appendChild(n),window.setTimeout(()=>{try{document.head.removeChild(n)}catch{}},1e4)}const ao="3.30.0";class ro{static loggerCallback(e,n){switch(e){case H.Error:return void console.error(n);case H.Info:return void console.info(n);case H.Verbose:return void console.debug(n);case H.Warning:return void console.warn(n);default:return void console.log(n)}}constructor(e){let n;this.browserEnvironment="undefined"!=typeof window,this.config=function({auth:e,cache:n,system:i,telemetry:t},a){const o={clientId:r.EMPTY_STRING,authority:`${r.DEFAULT_AUTHORITY}`,knownAuthorities:[],cloudDiscoveryMetadata:r.EMPTY_STRING,authorityMetadata:r.EMPTY_STRING,redirectUri:"undefined"!=typeof window?Xr():"",postLogoutRedirectUri:r.EMPTY_STRING,navigateToLoginRequestUrl:!0,clientCapabilities:[],protocolMode:U,OIDCOptions:{serverResponseType:T.FRAGMENT,defaultScopes:[r.OPENID_SCOPE,r.PROFILE_SCOPE,r.OFFLINE_ACCESS_SCOPE]},azureCloudOptions:{azureCloudInstance:K,tenant:r.EMPTY_STRING},skipAuthorityMetadataCache:!1,supportsNestedAppAuth:!1,instanceAware:!1},s={cacheLocation:Yt,temporaryCacheLocation:Yt,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!(!n||n.cacheLocation!==Qt),claimsBasedCachingEnabled:!1},d={loggerCallback:()=>{},logLevel:H.Info,piiLoggingEnabled:!1},l={...{...ci,loggerOptions:d,networkClient:a?new Ir:ki,navigationClient:new Ta,loadFrameTimeout:0,windowHashTimeout:i?.loadFrameTimeout||6e4,iframeHashTimeout:i?.loadFrameTimeout||1e4,navigateFrameWait:0,redirectNavigationTimeout:3e4,asyncPopups:!1,allowRedirectInIframe:!1,allowNativeBroker:!1,nativeBrokerHandshakeTimeout:i?.nativeBrokerHandshakeTimeout||2e3,pollIntervalMilliseconds:30},...i,loggerOptions:i?.loggerOptions||d},c={application:{appName:r.EMPTY_STRING,appVersion:r.EMPTY_STRING},client:new Ht};if(e?.protocolMode!==W&&e?.OIDCOptions&&new D(l.loggerOptions).warning(JSON.stringify(qn(Nn))),e?.protocolMode&&e.protocolMode!==U&&l?.allowNativeBroker)throw qn(On);return{auth:{...o,...e,OIDCOptions:{...o.OIDCOptions,...e?.OIDCOptions}},cache:{...s,...n},system:l,telemetry:{...c,...t}}}(e,this.browserEnvironment);try{n=window[Yt]}catch(e){}const i=n?.getItem("msal.browser.log.level"),t=n?.getItem("msal.browser.log.pii")?.toLowerCase(),a="true"===t||"false"!==t&&void 0,o={...this.config.system.loggerOptions},s=i&&Object.keys(H).includes(i)?H[i]:void 0;s&&(o.loggerCallback=ro.loggerCallback,o.logLevel=s),void 0!==a&&(o.piiLoggingEnabled=a),this.logger=new D(o,"@azure/msal-browser",ao),this.available=!1}getConfig(){return this.config}getLogger(){return this.logger}isAvailable(){return this.available}isBrowserEnvironment(){return this.browserEnvironment}}class oo extends ro{getModuleName(){return oo.MODULE_NAME}getId(){return oo.ID}async initialize(){return this.available="undefined"!=typeof window,this.available}}oo.MODULE_NAME="",oo.ID="StandardOperatingContext";const so="missing_kid_error",lo="missing_alg_error",co={[so]:"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.",[lo]:"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided."};class fo extends Q{constructor(e,n){super(e,n),this.name="JoseHeaderError",Object.setPrototypeOf(this,fo.prototype)}}function uo(e){return new fo(e,co[e])}class ho{constructor(e){this.typ=e.typ,this.alg=e.alg,this.kid=e.kid}static getShrHeaderString(e){if(!e.kid)throw uo(so);if(!e.alg)throw uo(lo);const n=new ho({typ:e.typ||"pop",kid:e.kid,alg:e.alg});return JSON.stringify(n)}}function mo(e){return(new TextDecoder).decode(function(e){let n=e.replace(/-/g,"+").replace(/_/g,"/");switch(n.length%4){case 0:break;case 2:n+="==";break;case 3:n+="=";break;default:throw Tr(kr)}const i=atob(n);return Uint8Array.from(i,e=>e.codePointAt(0)||0)}(e))}class po{constructor(){this.dbName=xa,this.version=1,this.tableName=Ca,this.dbOpen=!1}async open(){return new Promise((e,n)=>{const i=window.indexedDB.open(this.dbName,this.version);i.addEventListener("upgradeneeded",e=>{e.target.result.createObjectStore(this.tableName)}),i.addEventListener("success",n=>{const i=n;this.db=i.target.result,this.dbOpen=!0,e()}),i.addEventListener("error",()=>n(Tr(ur)))})}closeConnection(){const e=this.db;e&&this.dbOpen&&(e.close(),this.dbOpen=!1)}async validateDbIsOpen(){if(!this.dbOpen)return this.open()}async getItem(e){return await this.validateDbIsOpen(),new Promise((n,i)=>{if(!this.db)return i(Tr(ir));const t=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).get(e);t.addEventListener("success",e=>{const i=e;this.closeConnection(),n(i.target.result)}),t.addEventListener("error",e=>{this.closeConnection(),i(e)})})}async setItem(e,n){return await this.validateDbIsOpen(),new Promise((i,t)=>{if(!this.db)return t(Tr(ir));const a=this.db.transaction([this.tableName],"readwrite").objectStore(this.tableName).put(n,e);a.addEventListener("success",()=>{this.closeConnection(),i()}),a.addEventListener("error",e=>{this.closeConnection(),t(e)})})}async removeItem(e){return await this.validateDbIsOpen(),new Promise((n,i)=>{if(!this.db)return i(Tr(ir));const t=this.db.transaction([this.tableName],"readwrite").objectStore(this.tableName).delete(e);t.addEventListener("success",()=>{this.closeConnection(),n()}),t.addEventListener("error",e=>{this.closeConnection(),i(e)})})}async getKeys(){return await this.validateDbIsOpen(),new Promise((e,n)=>{if(!this.db)return n(Tr(ir));const i=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).getAllKeys();i.addEventListener("success",n=>{const i=n;this.closeConnection(),e(i.target.result)}),i.addEventListener("error",e=>{this.closeConnection(),n(e)})})}async containsKey(e){return await this.validateDbIsOpen(),new Promise((n,i)=>{if(!this.db)return i(Tr(ir));const t=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).count(e);t.addEventListener("success",e=>{const i=e;this.closeConnection(),n(1===i.target.result)}),t.addEventListener("error",e=>{this.closeConnection(),i(e)})})}async deleteDatabase(){return this.db&&this.dbOpen&&this.closeConnection(),new Promise((e,n)=>{const i=window.indexedDB.deleteDatabase(xa),t=setTimeout(()=>n(!1),200);i.addEventListener("success",()=>(clearTimeout(t),e(!0))),i.addEventListener("blocked",()=>(clearTimeout(t),e(!0))),i.addEventListener("error",()=>(clearTimeout(t),n(!1)))})}}class go{constructor(){this.cache=new Map}getItem(e){return this.cache.get(e)||null}setItem(e,n){this.cache.set(e,n)}removeItem(e){this.cache.delete(e)}getKeys(){const e=[];return this.cache.forEach((n,i)=>{e.push(i)}),e}containsKey(e){return this.cache.has(e)}clear(){this.cache.clear()}}class vo{constructor(e){this.inMemoryCache=new go,this.indexedDBCache=new po,this.logger=e}handleDatabaseAccessError(e){if(!(e instanceof Sr&&e.errorCode===ur))throw e;this.logger.error("Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.")}async getItem(e){const n=this.inMemoryCache.getItem(e);if(!n)try{return this.logger.verbose("Queried item not found in in-memory cache, now querying persistent storage."),await this.indexedDBCache.getItem(e)}catch(e){this.handleDatabaseAccessError(e)}return n}async setItem(e,n){this.inMemoryCache.setItem(e,n);try{await this.indexedDBCache.setItem(e,n)}catch(e){this.handleDatabaseAccessError(e)}}async removeItem(e){this.inMemoryCache.removeItem(e);try{await this.indexedDBCache.removeItem(e)}catch(e){this.handleDatabaseAccessError(e)}}async getKeys(){const e=this.inMemoryCache.getKeys();if(0===e.length)try{return this.logger.verbose("In-memory cache is empty, now querying persistent storage."),await this.indexedDBCache.getKeys()}catch(e){this.handleDatabaseAccessError(e)}return e}async containsKey(e){const n=this.inMemoryCache.containsKey(e);if(!n)try{return this.logger.verbose("Key not found in in-memory cache, now querying persistent storage."),await this.indexedDBCache.containsKey(e)}catch(e){this.handleDatabaseAccessError(e)}return n}clearInMemory(){this.logger.verbose("Deleting in-memory keystore"),this.inMemoryCache.clear(),this.logger.verbose("In-memory keystore deleted")}async clearPersistent(){try{this.logger.verbose("Deleting persistent keystore");const e=await this.indexedDBCache.deleteDatabase();return e&&this.logger.verbose("Persistent keystore deleted"),e}catch(e){return this.handleDatabaseAccessError(e),!1}}}class yo{constructor(e,n,i){this.logger=e,function(e){if(!window)throw Tr(nr);if(!window.crypto)throw Tr(Ea);if(!e&&!window.crypto.subtle)throw Tr(Ea,"crypto_subtle_undefined")}(i??!1),this.cache=new vo(this.logger),this.performanceClient=n}createNewGuid(){return Dr()}base64Encode(e){return Mr(e)}base64Decode(e){return mo(e)}base64UrlEncode(e){return Er(e)}encodeKid(e){return this.base64UrlEncode(JSON.stringify({kid:e}))}async getPublicKeyThumbprint(e){const n=this.performanceClient?.startMeasurement(Ti,e.correlationId),i=await async function(e,n){return window.crypto.subtle.generateKey(Lr,e,n)}(yo.EXTRACTABLE,yo.POP_KEY_USAGES),t=await Ur(i.publicKey),a=ko({e:t.e,kty:t.kty,n:t.n}),r=await this.hashString(a),o=await Ur(i.privateKey),s=await async function(e){return window.crypto.subtle.importKey("jwk",e,Lr,!1,["sign"])}(o);return await this.cache.setItem(r,{privateKey:s,publicKey:i.publicKey,requestMethod:e.resourceRequestMethod,requestUri:e.resourceRequestUri}),n&&n.end({success:!0}),r}async removeTokenBindingKey(e){return await this.cache.removeItem(e),!await this.cache.containsKey(e)}async clearKeystore(){this.cache.clearInMemory();try{return await this.cache.clearPersistent(),!0}catch(e){return e instanceof Error?this.logger.error(`Clearing keystore failed with error: ${e.message}`):this.logger.error("Clearing keystore failed with unknown error"),!1}}async signJwt(e,n,i,t){const a=this.performanceClient?.startMeasurement(Ii,t),r=await this.cache.getItem(n);if(!r)throw Tr(dr);const o=await Ur(r.publicKey),s=ko(o),d=Er(JSON.stringify({kid:n})),l=Er(ho.getShrHeaderString({...i?.header,alg:o.alg,kid:d}));e.cnf={jwk:JSON.parse(s)};const c=`${l}.${Er(JSON.stringify(e))}`,f=(new TextEncoder).encode(c),u=await async function(e,n){return window.crypto.subtle.sign(Lr,e,n)}(r.privateKey,f),h=`${c}.${Pr(new Uint8Array(u))}`;return a&&a.end({success:!0}),h}async hashString(e){return Wr(e)}}function ko(e){return JSON.stringify(e,Object.keys(e).sort())}yo.POP_KEY_USAGES=["sign","verify"],yo.EXTRACTABLE=!0;const bo=(e,n,i,t,a)=>(...r)=>{i.trace(`Executing function ${n}`);const o=t?.startMeasurement(n,a);if(a){const e=n+"CallCount";t?.incrementFields({[e]:1},a)}try{const t=e(...r);return o?.end({success:!0}),i.trace(`Returning result from ${n}`),t}catch(e){i.trace(`Error occurred in ${n}`);try{i.trace(JSON.stringify(e))}catch(e){i.trace("Unable to print error message.")}throw o?.end({success:!1},e),e}},wo=(e,n,i,t,a)=>(...r)=>{i.trace(`Executing function ${n}`);const o=t?.startMeasurement(n,a);if(a){const e=n+"CallCount";t?.incrementFields({[e]:1},a)}return t?.setPreQueueTime(n,a),e(...r).then(e=>(i.trace(`Returning result from ${n}`),o?.end({success:!0}),e)).catch(e=>{i.trace(`Error occurred in ${n}`);try{i.trace(JSON.stringify(e))}catch(e){i.trace("Unable to print error message.")}throw o?.end({success:!1},e),e})};class _o{constructor(e,n,i,t){this.networkInterface=e,this.logger=n,this.performanceClient=i,this.correlationId=t}async detectRegion(e,n){this.performanceClient?.addQueueMeasurement(Ct,this.correlationId);let i=e;if(i)n.region_source="3";else{const e=_o.IMDS_OPTIONS;try{const t=await wo(this.getRegionFromIMDS.bind(this),St,this.logger,this.performanceClient,this.correlationId)(r.IMDS_VERSION,e);if(200===t.status&&(i=t.body,n.region_source="4"),400===t.status){const t=await wo(this.getCurrentVersion.bind(this),Tt,this.logger,this.performanceClient,this.correlationId)(e);if(!t)return n.region_source="1",null;const a=await wo(this.getRegionFromIMDS.bind(this),St,this.logger,this.performanceClient,this.correlationId)(t,e);200===a.status&&(i=a.body,n.region_source="4")}}catch(e){return n.region_source="1",null}}return i||(n.region_source="1"),i||null}async getRegionFromIMDS(e,n){return this.performanceClient?.addQueueMeasurement(St,this.correlationId),this.networkInterface.sendGetRequestAsync(`${r.IMDS_ENDPOINT}?api-version=${e}&format=text`,n,r.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(Tt,this.correlationId);try{const n=await this.networkInterface.sendGetRequestAsync(`${r.IMDS_ENDPOINT}?format=json`,e);return 400===n.status&&n.body&&n.body["newest-versions"]&&n.body["newest-versions"].length>0?n.body["newest-versions"][0]:null}catch(e){return null}}}_o.IMDS_OPTIONS={headers:{Metadata:"true"}};class xo{constructor(e,n,i,t,a,r,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=n,this.cacheManager=i,this.authorityOptions=t,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=a,this.performanceClient=o,this.correlationId=r,this.managedIdentity=s||!1,this.regionDiscovery=new _o(n,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(r.CIAM_AUTH_URL))return 3;const n=e.PathSegments;if(n.length)switch(n[0].toLowerCase()){case r.ADFS:return 1;case r.DSTS:return 2}return 0}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Jn(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||(this._canonicalAuthorityUrlComponents=this._canonicalAuthority.getUrlComponents()),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw Ue(ne)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw Ue(ne)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace("/token","/devicecode"));throw Ue(ne)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw Ue(Ne);return this.replacePath(this.metadata.end_session_endpoint)}throw Ue(ne)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw Ue(ne)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw Ue(ne)}canReplaceTenant(e){return 1===e.PathSegments.length&&!xo.reservedTenantDomains.has(e.PathSegments[0])&&0===this.getAuthorityType(e)&&this.protocolMode===U}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let n=e;const i=new Jn(this.metadata.canonical_authority).getUrlComponents(),t=i.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,a)=>{let r=t[a];if(0===a&&this.canReplaceTenant(i)){const e=new Jn(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];r!==e&&(this.logger.verbose(`Replacing tenant domain name ${r} with id ${e}`),r=e)}e!==r&&(n=n.replace(`/${r}/`,`/${e}/`))}),this.replaceTenant(n)}get defaultOpenIdConfigurationEndpoint(){const e=this.hostnameAndPort;return this.canonicalAuthority.endsWith("v2.0/")||1===this.authorityType||this.protocolMode!==U&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(yt,this.correlationId);const e=this.getCurrentMetadataEntity(),n=await wo(this.updateCloudDiscoveryMetadata.bind(this),bt,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);const i=await wo(this.updateEndpointMetadata.bind(this),_t,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,n,{source:i}),this.performanceClient?.addFields({cloudDiscoverySource:n,authorityEndpointSource:i},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||(e={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:"",token_endpoint:"",end_session_endpoint:"",issuer:"",aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:fn(),jwks_uri:""}),e}updateCachedMetadata(e,n,i){n!==O&&i?.source!==O&&(e.expiresAt=fn(),e.canonical_authority=this.canonicalAuthority);const t=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(t,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(_t,this.correlationId);const n=this.updateEndpointMetadataFromLocalSources(e);if(n)return n.source===z&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&n.metadata&&(un(e,await wo(this.updateMetadataWithRegionalInformation.bind(this),xt,this.logger,this.performanceClient,this.correlationId)(n.metadata),!1),e.canonical_authority=this.canonicalAuthority),n.source;let i=await wo(this.getEndpointMetadataFromNetwork.bind(this),wt,this.logger,this.performanceClient,this.correlationId)();if(i)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(i=await wo(this.updateMetadataWithRegionalInformation.bind(this),xt,this.logger,this.performanceClient,this.correlationId)(i)),un(e,i,!0),F;throw Ue(te,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose("Attempting to get endpoint metadata from authority configuration");const n=this.getEndpointMetadataFromConfig();if(n)return this.logger.verbose("Found endpoint metadata in authority configuration"),un(e,n,!1),{source:N};if(this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.");else{const n=this.getEndpointMetadataFromHardcodedValues();if(n)return un(e,n,!1),{source:z,metadata:n};this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.")}const i=mn(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!i?(this.logger.verbose("Found endpoint metadata in the cache."),{source:O}):(i&&this.logger.verbose("The metadata entity is expired."),null)}isAuthoritySameType(e){return new Jn(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch(e){throw qn(An)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(wt,this.correlationId);const e={},n=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${n}`);try{const i=await this.networkInterface.sendGetRequestAsync(n,e),t=function(e){return e.hasOwnProperty("authorization_endpoint")&&e.hasOwnProperty("token_endpoint")&&e.hasOwnProperty("issuer")&&e.hasOwnProperty("jwks_uri")}(i.body);return t?i.body:(this.logger.verbose("Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration"),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Xn?Xn[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(e){this.performanceClient?.addQueueMeasurement(xt,this.correlationId);const n=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(n){if(n!==r.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome="2",this.regionDiscoveryMetadata.region_used=n,xo.replaceWithRegionalInformation(e,n);const i=await wo(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),Ct,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(i)return this.regionDiscoveryMetadata.region_outcome="4",this.regionDiscoveryMetadata.region_used=i,xo.replaceWithRegionalInformation(e,i);this.regionDiscoveryMetadata.region_outcome="5"}return e}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(bt,this.correlationId);const n=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(n)return n;const i=await wo(this.getCloudDiscoveryMetadataFromNetwork.bind(this),kt,this.logger,this.performanceClient,this.correlationId)();if(i)return hn(e,i,!0),F;throw qn(jn)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||r.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||r.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||r.NOT_APPLICABLE}`);const n=this.getCloudDiscoveryMetadataFromConfig();if(n)return this.logger.verbose("Found cloud discovery metadata in authority configuration"),hn(e,n,!1),N;if(this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."),this.options.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.");else{const n=(i=this.hostnameAndPort,ii(Zn.metadata,i));if(n)return this.logger.verbose("Found cloud discovery metadata from hardcoded values."),hn(e,n,!1),z;this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.")}var i;const t=mn(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!t?(this.logger.verbose("Found cloud discovery metadata in the cache."),O):(t&&this.logger.verbose("The metadata entity is expired."),null)}getCloudDiscoveryMetadataFromConfig(){if(3===this.authorityType)return this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."),xo.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config.");try{this.logger.verbose("Attempting to parse the cloud discovery metadata.");const e=ii(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose("Parsed the cloud discovery metadata."),e)return this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."),e;this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata.")}catch(e){throw this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."),qn(In)}}return this.isInKnownAuthorities()?(this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."),xo.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(kt,this.correlationId);const e=`${r.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,n={};let i=null;try{const t=await this.networkInterface.sendGetRequestAsync(e,n);let a,o;if(function(e){return e.hasOwnProperty("tenant_discovery_endpoint")&&e.hasOwnProperty("metadata")}(t.body))a=t.body,o=a.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${a.tenant_discovery_endpoint}`);else{if(!function(e){return e.hasOwnProperty("error")&&e.hasOwnProperty("error_description")}(t.body))return this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"),null;if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${t.status}`),a=t.body,a.error===r.INVALID_INSTANCE)return this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${a.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${a.error_description}`),this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"),o=[]}this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."),i=ii(o,this.hostnameAndPort)}catch(e){if(e instanceof Q)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{const n=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${n.name}\nError Description: ${n.message}`)}return null}return i||(this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."),this.logger.verbose("Creating custom Authority for custom domain scenario."),i=xo.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),i}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&Jn.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,n){let i;if(n&&n.azureCloudInstance!==K){const e=n.tenant?n.tenant:r.DEFAULT_COMMON_TENANT;i=`${n.azureCloudInstance}/${e}/`}return i||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return r.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw Ue(ne)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return ei.has(e)}static isPublicCloudAuthority(e){return r.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,n,i){const t=new Jn(e);t.validateAsUri();const a=t.getUrlComponents();let o=`${n}.${a.HostNameAndPort}`;this.isPublicCloudAuthority(a.HostNameAndPort)&&(o=`${n}.${r.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);const s=Jn.constructAuthorityUriFromObject({...t.getUrlComponents(),HostNameAndPort:o}).urlString;return i?`${s}?${i}`:s}static replaceWithRegionalInformation(e,n){const i={...e};return i.authorization_endpoint=xo.buildRegionalAuthorityString(i.authorization_endpoint,n),i.token_endpoint=xo.buildRegionalAuthorityString(i.token_endpoint,n),i.end_session_endpoint&&(i.end_session_endpoint=xo.buildRegionalAuthorityString(i.end_session_endpoint,n)),i}static transformCIAMAuthority(e){let n=e;const i=new Jn(e).getUrlComponents();return 0===i.PathSegments.length&&i.HostNameAndPort.endsWith(r.CIAM_AUTH_URL)&&(n=`${n}${i.HostNameAndPort.split(".")[0]}${r.AAD_TENANT_DOMAIN_SUFFIX}`),n}}function Co(e){return e.endsWith(r.FORWARD_SLASH)?e:`${e}${r.FORWARD_SLASH}`}xo.reservedTenantDomains=new Set(["{tenant}","{tenantid}",b,_,w]);const So="no_tokens_found",To="native_account_unavailable",Io="refresh_token_expired",Ao="bad_token",jo=["interaction_required","consent_required","login_required",Ao],Eo=["message_only","additional_action","basic_action","user_password_expired","consent_required","bad_token"],Po={[So]:"No refresh token found in the cache. Please sign-in.",[To]:"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",[Io]:"Refresh token has expired.",[Ao]:"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve."};class Mo extends Q{constructor(e,n,i,t,a,o,s,d){super(e,n,i),Object.setPrototypeOf(this,Mo.prototype),this.timestamp=t||r.EMPTY_STRING,this.traceId=a||r.EMPTY_STRING,this.correlationId=o||r.EMPTY_STRING,this.claims=s||r.EMPTY_STRING,this.name="InteractionRequiredAuthError",this.errorNo=d}}function Ro(e,n,i){const t=!!e&&jo.indexOf(e)>-1,a=!!i&&Eo.indexOf(i)>-1,r=!!n&&jo.some(e=>n.indexOf(e)>-1);return t||r||a}function No(e){return new Mo(e,Po[e])}class Oo{static setRequestState(e,n,i){const t=Oo.generateLibraryState(e,i);return n?`${t}${r.RESOURCE_DELIM}${n}`:t}static generateLibraryState(e,n){if(!e)throw Ue(Se);const i={id:e.createNewGuid()};n&&(i.meta=n);const t=JSON.stringify(i);return e.base64Encode(t)}static parseRequestState(e,n){if(!e)throw Ue(Se);if(!n)throw Ue(re);try{const i=n.split(r.RESOURCE_DELIM),t=i[0],a=i.length>1?i.slice(1).join(r.RESOURCE_DELIM):r.EMPTY_STRING,o=e.base64Decode(t),s=JSON.parse(o);return{userRequestState:a||r.EMPTY_STRING,libraryState:s}}catch(e){throw Ue(re)}}}const Fo="home_account_id",zo="UPN";class Lo{constructor(){if(!window.localStorage)throw Yr(Kr)}getItem(e){return window.localStorage.getItem(e)}setItem(e,n){window.localStorage.setItem(e,n)}removeItem(e){window.localStorage.removeItem(e)}getKeys(){return Object.keys(window.localStorage)}containsKey(e){return window.localStorage.hasOwnProperty(e)}}class qo{constructor(){if(!window.sessionStorage)throw Yr(Kr)}getItem(e){return window.sessionStorage.getItem(e)}setItem(e,n){window.sessionStorage.setItem(e,n)}removeItem(e){window.sessionStorage.removeItem(e)}getKeys(){return Object.keys(window.sessionStorage)}containsKey(e){return window.sessionStorage.hasOwnProperty(e)}}function Bo(e,n){if(!n)return null;try{return Oo.parseRequestState(e,n).libraryState.meta}catch(e){throw Ue(re)}}class Ho{getItem(e){const n=`${encodeURIComponent(e)}`,i=document.cookie.split(";");for(let e=0;e<i.length;e++){const t=i[e],[a,...r]=decodeURIComponent(t).trim().split("="),o=r.join("=");if(a===n)return o}return""}setItem(e,n,i,t=!0){let a=`${encodeURIComponent(e)}=${encodeURIComponent(n)};path=/;SameSite=Lax;`;if(i){const e=function(e){const n=new Date;return new Date(n.getTime()+864e5*e).toUTCString()}(i);a+=`expires=${e};`}t&&(a+="Secure;"),document.cookie=a}removeItem(e){this.setItem(e,"",-1)}getKeys(){const e=document.cookie.split(";"),n=[];return e.forEach(e=>{const i=decodeURIComponent(e).trim().split("=");n.push(i[0])}),n}containsKey(e){return this.getKeys().includes(e)}}class Do extends di{constructor(e,n,i,t,a,r){super(e,i,t,a),this.cacheConfig=n,this.logger=t,this.internalStorage=new go,this.browserStorage=this.setupBrowserStorage(this.cacheConfig.cacheLocation),this.temporaryCacheStorage=this.setupBrowserStorage(this.cacheConfig.temporaryCacheLocation),this.cookieStorage=new Ho,n.cacheMigrationEnabled&&(this.migrateCacheEntries(),this.createKeyMaps()),this.performanceClient=r}setupBrowserStorage(e){try{switch(e){case Qt:return new Lo;case Yt:return new qo}}catch(e){this.logger.error(e)}return this.cacheConfig.cacheLocation=Jt,new go}migrateCacheEntries(){const e=this.browserStorage.getItem(da);e&&this.logger.info(`MSAL.js was last initialized with version ${e}`),e!==ao&&this.browserStorage.setItem(da,ao);const n=`${r.CACHE_PREFIX}.${h}`,i=`${r.CACHE_PREFIX}.${m}`,t=`${r.CACHE_PREFIX}.${g}`,a=`${r.CACHE_PREFIX}.${v}`,o=[this.browserStorage.getItem(n),this.browserStorage.getItem(i),this.browserStorage.getItem(t),this.browserStorage.getItem(a)];[h,m,g,v].forEach((e,n)=>{const i=o[n];i&&this.setTemporaryCache(e,i,!0)})}createKeyMaps(){this.logger.trace("BrowserCacheManager - createKeyMaps called.");const e=this.cryptoImpl.createNewGuid(),n=this.getItem(oa),i=this.getItem(`${sa}.${this.clientId}`);n&&i?this.logger.verbose("BrowserCacheManager:createKeyMaps - account and token key maps already exist, skipping migration."):this.browserStorage.getKeys().forEach(n=>{if(this.isCredentialKey(n)){const i=this.getItem(n);if(i){const t=this.validateAndParseJson(i);if(t&&t.hasOwnProperty("credentialType"))switch(t.credentialType){case E.ID_TOKEN:if(an(t)){this.logger.trace("BrowserCacheManager:createKeyMaps - idToken found, saving key to token key map"),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - idToken with key: ${n} found, saving key to token key map`);const i=t,a=this.updateCredentialCacheKey(n,i,e);return void this.addTokenKey(a,E.ID_TOKEN,e)}this.logger.trace("BrowserCacheManager:createKeyMaps - key found matching idToken schema with value containing idToken credentialType field but value failed IdTokenEntity validation, skipping."),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed idToken validation on key: ${n}`);break;case E.ACCESS_TOKEN:case E.ACCESS_TOKEN_WITH_AUTH_SCHEME:if(tn(t)){this.logger.trace("BrowserCacheManager:createKeyMaps - accessToken found, saving key to token key map"),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - accessToken with key: ${n} found, saving key to token key map`);const i=t,a=this.updateCredentialCacheKey(n,i,e);return void this.addTokenKey(a,E.ACCESS_TOKEN,e)}this.logger.trace("BrowserCacheManager:createKeyMaps - key found matching accessToken schema with value containing accessToken credentialType field but value failed AccessTokenEntity validation, skipping."),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed accessToken validation on key: ${n}`);break;case E.REFRESH_TOKEN:if(rn(t)){this.logger.trace("BrowserCacheManager:createKeyMaps - refreshToken found, saving key to token key map"),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - refreshToken with key: ${n} found, saving key to token key map`);const i=t,a=this.updateCredentialCacheKey(n,i,e);return void this.addTokenKey(a,E.REFRESH_TOKEN,e)}this.logger.trace("BrowserCacheManager:createKeyMaps - key found matching refreshToken schema with value containing refreshToken credentialType field but value failed RefreshTokenEntity validation, skipping."),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed refreshToken validation on key: ${n}`)}}}if(this.isAccountKey(n)){const i=this.getItem(n);if(i){const t=this.validateAndParseJson(i);t&&Vn.isAccountEntity(t)&&(this.logger.trace("BrowserCacheManager:createKeyMaps - account found, saving key to account key map"),this.logger.tracePii(`BrowserCacheManager:createKeyMaps - account with key: ${n} found, saving key to account key map`),this.addAccountKeyToMap(n,e))}}})}validateAndParseJson(e){try{const n=JSON.parse(e);return n&&"object"==typeof n?n:null}catch(e){return null}}getItem(e){return this.browserStorage.getItem(e)}setItem(e,n,i){let t=[];for(let a=0;a<=20;a++)try{this.browserStorage.setItem(e,n),a>0&&this.removeAccessTokenKeys(t.slice(0,a),i);break}catch(r){const o=si(r);if(!(o.errorCode===ti&&a<20))throw o;if(t.length||(t=e===`${sa}.${this.clientId}`?JSON.parse(n).accessToken:this.getTokenKeys().accessToken),t.length<=a)throw o;this.removeAccessToken(t[a],i,!1)}}getAccount(e,n,i){this.logger.trace("BrowserCacheManager.getAccount called");const t=this.getCachedAccountEntity(e,n);return this.updateOutdatedCachedAccount(e,t,n,i)}getCachedAccountEntity(e,n){const i=this.getItem(e);if(!i)return this.removeAccountKeyFromMap(e,n),null;const t=this.validateAndParseJson(i);return t&&Vn.isAccountEntity(t)?di.toObject(new Vn,t):null}setAccount(e,n){this.logger.trace("BrowserCacheManager.setAccount called");const i=e.generateAccountKey();e.lastUpdatedAt=Date.now().toString(),this.setItem(i,JSON.stringify(e),n),this.addAccountKeyToMap(i,n)}getAccountKeys(){this.logger.trace("BrowserCacheManager.getAccountKeys called");const e=this.getItem(oa);return e?JSON.parse(e):(this.logger.verbose("BrowserCacheManager.getAccountKeys - No account keys found"),[])}addAccountKeyToMap(e,n){this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"),this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${e}`);const i=this.getAccountKeys();-1===i.indexOf(e)?(i.push(e),this.setItem(oa,JSON.stringify(i),n),this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key added")):this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key already exists in map")}removeAccountKeyFromMap(e,n){this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"),this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${e}`);const i=this.getAccountKeys(),t=i.indexOf(e);if(t>-1){if(i.splice(t,1),0===i.length)return void this.removeItem(oa);this.setItem(oa,JSON.stringify(i),n),this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap account key removed")}else this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap key not found in existing map")}async removeAccount(e,n){super.removeAccount(e,n),this.removeAccountKeyFromMap(e,n)}removeOutdatedAccount(e,n){this.removeItem(e),this.removeAccountKeyFromMap(e,n)}removeIdToken(e,n){super.removeIdToken(e,n),this.removeTokenKey(e,E.ID_TOKEN,n)}removeAccessToken(e,n,i=!0){super.removeAccessToken(e,n),this.performanceClient?.incrementFields({accessTokensRemoved:1},n),i&&this.removeTokenKey(e,E.ACCESS_TOKEN,n)}removeAccessTokenKeys(e,n){this.logger.trace("removeAccessTokenKey called");const i=this.getTokenKeys();let t=0;if(e.forEach(e=>{const n=i.accessToken.indexOf(e);n>-1&&(i.accessToken.splice(n,1),t++)}),t>0)return this.logger.info(`removed ${t} accessToken keys from tokenKeys map`),void this.setTokenKeys(i,n)}removeRefreshToken(e,n){super.removeRefreshToken(e,n),this.removeTokenKey(e,E.REFRESH_TOKEN,n)}getTokenKeys(){this.logger.trace("BrowserCacheManager.getTokenKeys called");const e=this.getItem(`${sa}.${this.clientId}`);if(e){const n=this.validateAndParseJson(e);if(n&&n.hasOwnProperty("idToken")&&n.hasOwnProperty("accessToken")&&n.hasOwnProperty("refreshToken"))return n;this.logger.error("BrowserCacheManager.getTokenKeys - Token keys found but in an unknown format. Returning empty key map.")}else this.logger.verbose("BrowserCacheManager.getTokenKeys - No token keys found");return{idToken:[],accessToken:[],refreshToken:[]}}setTokenKeys(e,n){0!==e.idToken.length||0!==e.accessToken.length||0!==e.refreshToken.length?this.setItem(`${sa}.${this.clientId}`,JSON.stringify(e),n):this.removeItem(`${sa}.${this.clientId}`)}addTokenKey(e,n,i){this.logger.trace("BrowserCacheManager addTokenKey called");const t=this.getTokenKeys();switch(n){case E.ID_TOKEN:-1===t.idToken.indexOf(e)&&(this.logger.info("BrowserCacheManager: addTokenKey - idToken added to map"),t.idToken.push(e));break;case E.ACCESS_TOKEN:const i=t.accessToken.indexOf(e);-1!==i&&t.accessToken.splice(i,1),this.logger.trace(`access token ${-1===i?"added to":"updated in"} map`),t.accessToken.push(e);break;case E.REFRESH_TOKEN:-1===t.refreshToken.indexOf(e)&&(this.logger.info("BrowserCacheManager: addTokenKey - refreshToken added to map"),t.refreshToken.push(e));break;default:throw this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${n}`),Ue(Te)}this.setTokenKeys(t,i)}removeTokenKey(e,n,i,t=this.getTokenKeys()){switch(this.logger.trace("BrowserCacheManager removeTokenKey called"),n){case E.ID_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${e} from map`);const i=t.idToken.indexOf(e);i>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - idToken removed from map"),t.idToken.splice(i,1)):this.logger.info("BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.");break;case E.ACCESS_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${e} from map`);const a=t.accessToken.indexOf(e);a>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - accessToken removed from map"),t.accessToken.splice(a,1)):this.logger.info("BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.");break;case E.REFRESH_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${e} from map`);const r=t.refreshToken.indexOf(e);r>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken removed from map"),t.refreshToken.splice(r,1)):this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.");break;default:throw this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${n}`),Ue(Te)}this.setTokenKeys(t,i)}getIdTokenCredential(e,n){const i=this.getItem(e);if(!i)return this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"),this.removeIdToken(e,n),null;const t=this.validateAndParseJson(i);return t&&an(t)?(this.logger.trace("BrowserCacheManager.getIdTokenCredential: cache hit"),t):(this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"),null)}setIdTokenCredential(e,n){this.logger.trace("BrowserCacheManager.setIdTokenCredential called");const i=Je(e);e.lastUpdatedAt=Date.now().toString(),this.setItem(i,JSON.stringify(e),n),this.addTokenKey(i,E.ID_TOKEN,n)}getAccessTokenCredential(e,n){const i=this.getItem(e);if(!i)return this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"),this.removeTokenKey(e,E.ACCESS_TOKEN,n),null;const t=this.validateAndParseJson(i);return t&&tn(t)?(this.logger.trace("BrowserCacheManager.getAccessTokenCredential: cache hit"),t):(this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"),null)}setAccessTokenCredential(e,n){this.logger.trace("BrowserCacheManager.setAccessTokenCredential called");const i=Je(e);e.lastUpdatedAt=Date.now().toString(),this.setItem(i,JSON.stringify(e),n),this.addTokenKey(i,E.ACCESS_TOKEN,n)}getRefreshTokenCredential(e,n){const i=this.getItem(e);if(!i)return this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"),this.removeTokenKey(e,E.REFRESH_TOKEN,n),null;const t=this.validateAndParseJson(i);return t&&rn(t)?(this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: cache hit"),t):(this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"),null)}setRefreshTokenCredential(e,n){this.logger.trace("BrowserCacheManager.setRefreshTokenCredential called");const i=Je(e);e.lastUpdatedAt=Date.now().toString(),this.setItem(i,JSON.stringify(e),n),this.addTokenKey(i,E.REFRESH_TOKEN,n)}getAppMetadata(e){const n=this.getItem(e);if(!n)return this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"),null;const i=this.validateAndParseJson(n);return i&&((t=i)&&0===e.indexOf(P)&&t.hasOwnProperty("clientId")&&t.hasOwnProperty("environment"))?(this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"),i):(this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"),null);var t}setAppMetadata(e,n){this.logger.trace("BrowserCacheManager.setAppMetadata called");const i=function({environment:e,clientId:n}){return[P,e,n].join(j).toLowerCase()}(e);this.setItem(i,JSON.stringify(e),n)}getServerTelemetry(e){const n=this.getItem(e);if(!n)return this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"),null;const i=this.validateAndParseJson(n);return i&&function(e,n){const i=0===e.indexOf(L.CACHE_KEY);let t=!0;return n&&(t=n.hasOwnProperty("failedRequests")&&n.hasOwnProperty("errors")&&n.hasOwnProperty("cacheHits")),i&&t}(e,i)?(this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"),i):(this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"),null)}setServerTelemetry(e,n,i){this.logger.trace("BrowserCacheManager.setServerTelemetry called"),this.setItem(e,JSON.stringify(n),i)}getAuthorityMetadata(e){const n=this.internalStorage.getItem(e);if(!n)return this.logger.trace("BrowserCacheManager.getAuthorityMetadata: called, no cache hit"),null;const i=this.validateAndParseJson(n);return i&&function(e,n){return!!n&&0===e.indexOf(R)&&n.hasOwnProperty("aliases")&&n.hasOwnProperty("preferred_cache")&&n.hasOwnProperty("preferred_network")&&n.hasOwnProperty("canonical_authority")&&n.hasOwnProperty("authorization_endpoint")&&n.hasOwnProperty("token_endpoint")&&n.hasOwnProperty("issuer")&&n.hasOwnProperty("aliasesFromNetwork")&&n.hasOwnProperty("endpointsFromNetwork")&&n.hasOwnProperty("expiresAt")&&n.hasOwnProperty("jwks_uri")}(e,i)?(this.logger.trace("BrowserCacheManager.getAuthorityMetadata: cache hit"),i):null}getAuthorityMetadataKeys(){return this.internalStorage.getKeys().filter(e=>this.isAuthorityMetadata(e))}setWrapperMetadata(e,n){this.internalStorage.setItem(la,e),this.internalStorage.setItem(ca,n)}getWrapperMetadata(){return[this.internalStorage.getItem(la)||r.EMPTY_STRING,this.internalStorage.getItem(ca)||r.EMPTY_STRING]}setAuthorityMetadata(e,n){this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"),this.internalStorage.setItem(e,JSON.stringify(n))}getActiveAccount(e){const n=this.generateCacheKey(k),i=this.getItem(n);if(!i){this.logger.trace("BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema");const n=this.generateCacheKey(y),i=this.getItem(n);if(!i)return this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"),null;const t=this.getAccountInfoFilteredBy({localAccountId:i},e);return t?(this.logger.trace("BrowserCacheManager.getActiveAccount: Legacy active account cache schema found"),this.logger.trace("BrowserCacheManager.getActiveAccount: Adding active account filters cache schema"),this.setActiveAccount(t,e),t):null}const t=this.validateAndParseJson(i);return t?(this.logger.trace("BrowserCacheManager.getActiveAccount: Active account filters schema found"),this.getAccountInfoFilteredBy({homeAccountId:t.homeAccountId,localAccountId:t.localAccountId,tenantId:t.tenantId},e)):(this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"),null)}setActiveAccount(e,n){const i=this.generateCacheKey(k),t=this.generateCacheKey(y);if(e){this.logger.verbose("setActiveAccount: Active account set");const a={homeAccountId:e.homeAccountId,localAccountId:e.localAccountId,tenantId:e.tenantId,lastUpdatedAt:Date.now().toString()};this.setItem(i,JSON.stringify(a),n),this.setItem(t,e.localAccountId,n)}else this.logger.verbose("setActiveAccount: No account passed, active account not set"),this.browserStorage.removeItem(i),this.browserStorage.removeItem(t)}getThrottlingCache(e){const n=this.getItem(e);if(!n)return this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"),null;const i=this.validateAndParseJson(n);return i&&function(e,n){let i=!1;e&&(i=0===e.indexOf(B));let t=!0;return n&&(t=n.hasOwnProperty("throttleTime")),i&&t}(e,i)?(this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"),i):(this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"),null)}setThrottlingCache(e,n,i){this.logger.trace("BrowserCacheManager.setThrottlingCache called"),this.setItem(e,JSON.stringify(n),i)}getTemporaryCache(e,n){const i=n?this.generateCacheKey(e):e;if(this.cacheConfig.storeAuthStateInCookie){const e=this.cookieStorage.getItem(i);if(e)return this.logger.trace("BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies"),e}const t=this.temporaryCacheStorage.getItem(i);if(!t){if(this.cacheConfig.cacheLocation===Qt){const e=this.browserStorage.getItem(i);if(e)return this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage"),e}return this.logger.trace("BrowserCacheManager.getTemporaryCache: No cache item found in local storage"),null}return this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item returned"),t}setTemporaryCache(e,n,i){const t=i?this.generateCacheKey(e):e;this.temporaryCacheStorage.setItem(t,n),this.cacheConfig.storeAuthStateInCookie&&(this.logger.trace("BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie"),this.cookieStorage.setItem(t,n,void 0,this.cacheConfig.secureCookies))}removeItem(e){this.browserStorage.removeItem(e)}removeTemporaryItem(e){this.temporaryCacheStorage.removeItem(e),this.cacheConfig.storeAuthStateInCookie&&(this.logger.trace("BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie"),this.cookieStorage.removeItem(e))}getKeys(){return this.browserStorage.getKeys()}async clear(e){await this.removeAllAccounts(e),this.removeAppMetadata(e),this.temporaryCacheStorage.getKeys().forEach(e=>{-1===e.indexOf(r.CACHE_PREFIX)&&-1===e.indexOf(this.clientId)||this.removeTemporaryItem(e)}),this.browserStorage.getKeys().forEach(e=>{-1===e.indexOf(r.CACHE_PREFIX)&&-1===e.indexOf(this.clientId)||this.browserStorage.removeItem(e)}),this.internalStorage.clear()}async clearTokensAndKeysWithClaims(e,n){e.addQueueMeasurement(Mt,n);const i=this.getTokenKeys();let t=0;i.accessToken.forEach(e=>{const i=this.getAccessTokenCredential(e,n);i?.requestedClaimsHash&&e.includes(i.requestedClaimsHash.toLowerCase())&&(this.removeAccessToken(e,n),t++)}),t>0&&this.logger.warning(`${t} access tokens with claims in the cache keys have been removed from the cache.`)}generateCacheKey(e){return this.validateAndParseJson(e)?JSON.stringify(e):Bn.startsWith(e,r.CACHE_PREFIX)||Bn.startsWith(e,p)?e:`${r.CACHE_PREFIX}.${this.clientId}.${e}`}generateAuthorityKey(e){const{libraryState:{id:n}}=Oo.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`authority.${n}`)}generateNonceKey(e){const{libraryState:{id:n}}=Oo.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`nonce.id_token.${n}`)}generateStateKey(e){const{libraryState:{id:n}}=Oo.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`${Xt}.${n}`)}getCachedAuthority(e){const n=this.generateStateKey(e),i=this.getTemporaryCache(n);if(!i)return null;const t=this.generateAuthorityKey(i);return this.getTemporaryCache(t)}updateCacheEntries(e,n,i,t,a){this.logger.trace("BrowserCacheManager.updateCacheEntries called");const r=this.generateStateKey(e);this.setTemporaryCache(r,e,!1);const o=this.generateNonceKey(e);this.setTemporaryCache(o,n,!1);const s=this.generateAuthorityKey(e);if(this.setTemporaryCache(s,i,!1),a){const e={credential:a.homeAccountId,type:Fo};this.setTemporaryCache(ta,JSON.stringify(e),!0)}else if(t){const e={credential:t,type:zo};this.setTemporaryCache(ta,JSON.stringify(e),!0)}}resetRequestCache(e){this.logger.trace("BrowserCacheManager.resetRequestCache called"),e&&(this.temporaryCacheStorage.getKeys().forEach(n=>{-1!==n.indexOf(e)&&this.removeTemporaryItem(n)}),this.removeTemporaryItem(this.generateStateKey(e)),this.removeTemporaryItem(this.generateNonceKey(e)),this.removeTemporaryItem(this.generateAuthorityKey(e))),this.removeTemporaryItem(this.generateCacheKey(na)),this.removeTemporaryItem(this.generateCacheKey(Zt)),this.removeTemporaryItem(this.generateCacheKey(ea)),this.removeTemporaryItem(this.generateCacheKey(aa)),this.removeTemporaryItem(this.generateCacheKey(ta)),this.removeTemporaryItem(this.generateCacheKey(ra)),this.setInteractionInProgress(!1)}cleanRequestByState(e){if(this.logger.trace("BrowserCacheManager.cleanRequestByState called"),e){const n=this.generateStateKey(e),i=this.temporaryCacheStorage.getItem(n);this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${i}`),this.resetRequestCache(i||r.EMPTY_STRING)}}cleanRequestByInteractionType(e){this.logger.trace("BrowserCacheManager.cleanRequestByInteractionType called"),this.temporaryCacheStorage.getKeys().forEach(n=>{if(-1===n.indexOf(Xt))return;const i=this.temporaryCacheStorage.getItem(n);if(!i)return;const t=Bo(this.cryptoImpl,i);t&&t.interactionType===e&&(this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${i}`),this.resetRequestCache(i))}),this.setInteractionInProgress(!1)}cacheCodeRequest(e){this.logger.trace("BrowserCacheManager.cacheCodeRequest called");const n=Mr(JSON.stringify(e));this.setTemporaryCache(na,n,!0)}getCachedRequest(e){this.logger.trace("BrowserCacheManager.getCachedRequest called");const n=this.getTemporaryCache(na,!0);if(!n)throw Tr(Ya);let i;try{i=JSON.parse(mo(n))}catch(e){throw this.logger.errorPii(`Attempted to parse: ${n}`),this.logger.error(`Parsing cached token request threw with error: ${e}`),Tr(Ja)}if(this.removeTemporaryItem(this.generateCacheKey(na)),!i.authority){const n=this.generateAuthorityKey(e),t=this.getTemporaryCache(n);if(!t)throw Tr(Xa);i.authority=t}return i}getCachedNativeRequest(){this.logger.trace("BrowserCacheManager.getCachedNativeRequest called");const e=this.getTemporaryCache(ra,!0);if(!e)return this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found"),null;return this.validateAndParseJson(e)||(this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request"),null)}isInteractionInProgress(e){const n=this.getInteractionInProgress();return e?n===this.clientId:!!n}getInteractionInProgress(){const e=`${r.CACHE_PREFIX}.${ia}`;return this.getTemporaryCache(e,!1)}setInteractionInProgress(e){const n=`${r.CACHE_PREFIX}.${ia}`;if(e){if(this.getInteractionInProgress())throw Tr(za);this.setTemporaryCache(n,this.clientId,!1)}else e||this.getInteractionInProgress()!==this.clientId||this.removeTemporaryItem(n)}getLegacyLoginHint(){const e=this.getTemporaryCache(p);e&&(this.browserStorage.removeItem(p),this.logger.verbose("Cached ADAL id token retrieved."));const n=this.getTemporaryCache(h,!0);n&&(this.browserStorage.removeItem(this.generateCacheKey(h)),this.logger.verbose("Cached MSAL.js v1 id token retrieved"));const i=n||e;if(i){const e=$e(i,mo);if(e.preferred_username)return this.logger.verbose("No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint"),e.preferred_username;if(e.upn)return this.logger.verbose("No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint"),e.upn;this.logger.verbose("No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.")}return null}updateCredentialCacheKey(e,n,i){const t=Je(n);if(e!==t){const a=this.getItem(e);if(a)return this.browserStorage.removeItem(e),this.setItem(t,a,i),this.logger.verbose(`Updated an outdated ${n.credentialType} cache key`),t;this.logger.error(`Attempted to update an outdated ${n.credentialType} cache key but no item matching the outdated key was found in storage`)}return e}async hydrateCache(e,n){const i=Xe(e.account?.homeAccountId,e.account?.environment,e.idToken,this.clientId,e.tenantId);let t;n.claims&&(t=await this.cryptoImpl.hashString(n.claims));const a={idToken:i,accessToken:Ze(e.account?.homeAccountId,e.account.environment,e.accessToken,this.clientId,e.tenantId,e.scopes.join(" "),e.expiresOn?e.expiresOn.getTime()/1e3:0,e.extExpiresOn?e.extExpiresOn.getTime()/1e3:0,mo,void 0,e.tokenType,void 0,n.sshKid,n.claims,t)};return this.saveCacheRecord(a,e.correlationId)}async saveCacheRecord(e,n,i){try{await super.saveCacheRecord(e,n,i)}catch(e){if(e instanceof oi&&this.performanceClient&&n)try{const e=this.getTokenKeys();this.performanceClient.addFields({cacheRtCount:e.refreshToken.length,cacheIdCount:e.idToken.length,cacheAtCount:e.accessToken.length},n)}catch(e){}throw e}}}const Uo="msal:initializeEnd",Wo="msal:loginStart",Ko="msal:loginSuccess",Go="msal:loginFailure",$o="msal:acquireTokenStart",Vo="msal:acquireTokenSuccess",Qo="msal:acquireTokenFailure",Yo="msal:ssoSilentStart",Jo="msal:ssoSilentSuccess",Xo="msal:ssoSilentFailure",Zo="msal:acquireTokenByCodeFailure",es="msal:handleRedirectStart",ns="msal:handleRedirectEnd",is="msal:popupOpened",ts="msal:logoutStart",as="msal:logoutSuccess",rs="msal:logoutFailure",os="msal:logoutEnd",ss="msal:restoreFromBFCache";class ds{constructor(e){this.eventCallbacks=new Map,this.logger=e||new D({})}addEventCallback(e,n,i){if("undefined"!=typeof window){const t=i||Dr();return this.eventCallbacks.has(t)?(this.logger.error(`Event callback with id: ${t} is already registered. Please provide a unique id or remove the existing callback and try again.`),null):(this.eventCallbacks.set(t,[e,n||[]]),this.logger.verbose(`Event callback registered with id: ${t}`),t)}return null}removeEventCallback(e){this.eventCallbacks.delete(e),this.logger.verbose(`Event callback ${e} removed.`)}emitEvent(e,n,i,t){if("undefined"!=typeof window){const a={eventType:e,interactionType:n||null,payload:i||null,error:t||null,timestamp:Date.now()};this.eventCallbacks.forEach(([n,i],t)=>{(0===i.length||i.includes(e))&&(this.logger.verbose(`Emitting event to callback ${t}: ${e}`),n.apply(null,[a]))})}}}class ls extends Q{constructor(e,n,i,t,a){super(e,n,i),this.name="ServerError",this.errorNo=t,this.status=a,Object.setPrototypeOf(this,ls.prototype)}}class cs{static generateThrottlingStorageKey(e){return`${B}.${JSON.stringify(e)}`}static preProcess(e,n,i){const t=cs.generateThrottlingStorageKey(n),a=e.getThrottlingCache(t);if(a){if(a.throttleTime<Date.now())return void e.removeItem(t,i);throw new ls(a.errorCodes?.join(" ")||r.EMPTY_STRING,a.errorMessage,a.subError)}}static postProcess(e,n,i,t){if(cs.checkResponseStatus(i)||cs.checkResponseForRetryAfter(i)){const a={throttleTime:cs.calculateThrottleTime(parseInt(i.headers[l])),error:i.body.error,errorCodes:i.body.error_codes,errorMessage:i.body.error_description,subError:i.body.suberror};e.setThrottlingCache(cs.generateThrottlingStorageKey(n),a,t)}}static checkResponseStatus(e){return 429===e.status||e.status>=500&&e.status<600}static checkResponseForRetryAfter(e){return!!e.headers&&e.headers.hasOwnProperty(l)&&(e.status<200||e.status>=300)}static calculateThrottleTime(e){const n=e<=0?0:e,i=Date.now()/1e3;return Math.floor(1e3*Math.min(i+(n||60),i+3600))}static removeThrottle(e,n,i,t){const a={clientId:n,authority:i.authority,scopes:i.scopes,homeAccountIdentifier:t,claims:i.claims,authenticationScheme:i.authenticationScheme,resourceRequestMethod:i.resourceRequestMethod,resourceRequestUri:i.resourceRequestUri,shrClaims:i.shrClaims,sshKid:i.sshKid},r=this.generateThrottlingStorageKey(a);e.removeItem(r,i.correlationId)}}const fs="client_id",us="redirect_uri",hs="response_type",ms="token_type",ps="req_cnf",gs="return_spa_code",vs="x-client-xtra-sku",ys="brk_client_id",ks="brk_redirect_uri";class bs{static validateRedirectUri(e){if(!e)throw qn(pn)}static validatePrompt(e){const n=[];for(const e in C)n.push(C[e]);if(n.indexOf(e)<0)throw qn(wn)}static validateClaims(e){try{JSON.parse(e)}catch(e){throw qn(_n)}}static validateCodeChallengeParams(e,n){if(!e||!n)throw qn(Tn);this.validateCodeChallengeMethod(n)}static validateCodeChallengeMethod(e){if([S.PLAIN,S.S256].indexOf(e)<0)throw qn(Sn)}}class ws{constructor(e,n){this.parameters=new Map,this.performanceClient=n,this.correlationId=e}addResponseTypeCode(){this.parameters.set(hs,encodeURIComponent(r.CODE_RESPONSE_TYPE))}addResponseTypeForTokenAndIdToken(){this.parameters.set(hs,encodeURIComponent(`${r.TOKEN_RESPONSE_TYPE} ${r.ID_TOKEN_RESPONSE_TYPE}`))}addResponseMode(e){this.parameters.set("response_mode",encodeURIComponent(e||I.QUERY))}addNativeBroker(){this.parameters.set("nativebroker",encodeURIComponent("1"))}addScopes(e,n=!0,i=o){!n||i.includes("openid")||e.includes("openid")||i.push("openid");const t=n?[...e||[],...i]:e||[],a=new Hn(t);this.parameters.set("scope",encodeURIComponent(a.printScopes()))}addClientId(e){this.parameters.set(fs,encodeURIComponent(e))}addRedirectUri(e){bs.validateRedirectUri(e),this.parameters.set(us,encodeURIComponent(e))}addPostLogoutRedirectUri(e){bs.validateRedirectUri(e),this.parameters.set("post_logout_redirect_uri",encodeURIComponent(e))}addIdTokenHint(e){this.parameters.set("id_token_hint",encodeURIComponent(e))}addDomainHint(e){this.parameters.set("domain_hint",encodeURIComponent(e))}addLoginHint(e){this.parameters.set("login_hint",encodeURIComponent(e))}addCcsUpn(e){this.parameters.set(c,encodeURIComponent(`UPN:${e}`))}addCcsOid(e){this.parameters.set(c,encodeURIComponent(`Oid:${e.uid}@${e.utid}`))}addSid(e){this.parameters.set("sid",encodeURIComponent(e))}addClaims(e,n){const i=this.addClientCapabilitiesToClaims(e,n);bs.validateClaims(i),this.parameters.set("claims",encodeURIComponent(i))}addCorrelationId(e){this.parameters.set("client-request-id",encodeURIComponent(e))}addLibraryInfo(e){this.parameters.set("x-client-SKU",e.sku),this.parameters.set("x-client-VER",e.version),e.os&&this.parameters.set("x-client-OS",e.os),e.cpu&&this.parameters.set("x-client-CPU",e.cpu)}addApplicationTelemetry(e){e?.appName&&this.parameters.set("x-app-name",e.appName),e?.appVersion&&this.parameters.set("x-app-ver",e.appVersion)}addPrompt(e){bs.validatePrompt(e),this.parameters.set("prompt",encodeURIComponent(e))}addState(e){e&&this.parameters.set("state",encodeURIComponent(e))}addNonce(e){this.parameters.set("nonce",encodeURIComponent(e))}addCodeChallengeParams(e,n){if(bs.validateCodeChallengeParams(e,n),!e||!n)throw qn(Tn);this.parameters.set("code_challenge",encodeURIComponent(e)),this.parameters.set("code_challenge_method",encodeURIComponent(n))}addAuthorizationCode(e){this.parameters.set("code",encodeURIComponent(e))}addDeviceCode(e){this.parameters.set("device_code",encodeURIComponent(e))}addRefreshToken(e){this.parameters.set("refresh_token",encodeURIComponent(e))}addCodeVerifier(e){this.parameters.set("code_verifier",encodeURIComponent(e))}addClientSecret(e){this.parameters.set("client_secret",encodeURIComponent(e))}addClientAssertion(e){e&&this.parameters.set("client_assertion",encodeURIComponent(e))}addClientAssertionType(e){e&&this.parameters.set("client_assertion_type",encodeURIComponent(e))}addOboAssertion(e){this.parameters.set("assertion",encodeURIComponent(e))}addRequestTokenUse(e){this.parameters.set("requested_token_use",encodeURIComponent(e))}addGrantType(e){this.parameters.set("grant_type",encodeURIComponent(e))}addClientInfo(){this.parameters.set("client_info","1")}addExtraQueryParameters(e){Object.entries(e).forEach(([e,n])=>{!this.parameters.has(e)&&n&&this.parameters.set(e,n)})}addClientCapabilitiesToClaims(e,n){let i;if(e)try{i=JSON.parse(e)}catch(e){throw qn(_n)}else i={};return n&&n.length>0&&(i.hasOwnProperty(x)||(i[x]={}),i[x].xms_cc={values:n}),JSON.stringify(i)}addUsername(e){this.parameters.set("username",encodeURIComponent(e))}addPassword(e){this.parameters.set("password",encodeURIComponent(e))}addPopToken(e){e&&(this.parameters.set(ms,q.POP),this.parameters.set(ps,encodeURIComponent(e)))}addSshJwk(e){e&&(this.parameters.set(ms,q.SSH),this.parameters.set(ps,encodeURIComponent(e)))}addServerTelemetry(e){this.parameters.set("x-client-current-telemetry",e.generateCurrentRequestHeaderValue()),this.parameters.set("x-client-last-telemetry",e.generateLastRequestHeaderValue())}addThrottling(){this.parameters.set("x-ms-lib-capability","retry-after, h429")}addLogoutHint(e){this.parameters.set("logout_hint",encodeURIComponent(e))}addBrokerParameters(e){const n={};n[ys]=e.brokerClientId,n[ks]=e.brokerRedirectUri,this.addExtraQueryParameters(n)}createQueryString(){const e=new Array;return this.parameters.forEach((n,i)=>{e.push(`${i}=${n}`)}),function(e,n,i){if(!n)return;const t=e.get(fs);t&&e.has(ys)&&i?.addFields({embeddedClientId:t,embeddedRedirectUri:e.get(us)},n)}(this.parameters,this.correlationId,this.performanceClient),e.join("&")}}async function _s(e,n,i,t,a,r,o){o?.addQueueMeasurement(vt,r);const s=xo.transformCIAMAuthority(Co(e)),d=new xo(s,n,i,t,a,r,o);try{return await wo(d.resolveEndpointsAsync.bind(d),yt,a,o,r)(),d}catch(e){throw Ue(ne)}}class xs{constructor(e,n){this.config=function({authOptions:e,systemOptions:n,loggerOptions:i,cacheOptions:t,storageInterface:a,networkInterface:r,cryptoInterface:o,clientCredentials:s,libraryInfo:d,telemetry:l,serverTelemetryManager:c,persistencePlugin:f,serializableCache:u}){const h={...fi,...i};return{authOptions:(m=e,{clientCapabilities:[],azureCloudOptions:gi,skipAuthorityMetadataCache:!1,instanceAware:!1,...m}),systemOptions:{...ci,...n},loggerOptions:h,cacheOptions:{...ui,...t},storageInterface:a||new li(e.clientId,We,new D(h)),networkInterface:r||hi,cryptoInterface:o||We,clientCredentials:s||pi,libraryInfo:{...mi,...d},telemetry:{...vi,...l},serverTelemetryManager:c||null,persistencePlugin:f||null,serializableCache:u||null};var m}(e),this.logger=new D(this.config.loggerOptions,Ke,Ge),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=n}createTokenRequestHeaders(e){const n={};if(n[d]=r.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case Fo:try{const i=Un(e.credential);n[c]=`Oid:${i.uid}@${i.utid}`}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case zo:n[c]=`UPN: ${e.credential}`}return n}async executePostToTokenEndpoint(e,n,i,t,a,r){r&&this.performanceClient?.addQueueMeasurement(r,a);const o=await this.sendPostRequest(t,e,{body:n,headers:i},a);return this.config.serverTelemetryManager&&o.status<500&&429!==o.status&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,n,i,t){let a;cs.preProcess(this.cacheManager,e,t);try{a=await wo(this.networkClient.sendPostRequestAsync.bind(this.networkClient),Oi,this.logger,this.performanceClient,t)(n,i);const e=a.headers||{};this.performanceClient?.addFields({refreshTokenSize:a.body.refresh_token?.length||0,httpVerToken:e[u]||"",requestId:e[f]||""},t)}catch(e){if(e instanceof Ia){const n=e.responseHeaders;throw n&&this.performanceClient?.addFields({httpVerToken:n[u]||"",requestId:n[f]||"",contentTypeHeader:n[d]||void 0,contentLengthHeader:n["Content-Length"]||void 0,httpStatus:e.httpStatus},t),e.error}throw e instanceof Q?e:Ue(ie)}return cs.postProcess(this.cacheManager,e,a,t),a}async updateAuthority(e,n){this.performanceClient?.addQueueMeasurement(dt,n);const i=`https://${e}/${this.authority.tenant}/`,t=await _s(i,this.networkClient,this.cacheManager,this.authority.options,this.logger,n,this.performanceClient);this.authority=t}createTokenQueryParameters(e){const n=new ws(e.correlationId,this.performanceClient);return e.embeddedClientId&&n.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenQueryParameters&&n.addExtraQueryParameters(e.tokenQueryParameters),n.addCorrelationId(e.correlationId),n.createQueryString()}}class Cs{constructor(e,n){this.cryptoUtils=e,this.performanceClient=n}async generateCnf(e,n){this.performanceClient?.addQueueMeasurement(ht,e.correlationId);const i=await wo(this.generateKid.bind(this),ht,n,this.performanceClient,e.correlationId)(e),t=this.cryptoUtils.base64UrlEncode(JSON.stringify(i));return{kid:i.kid,reqCnfString:t}}async generateKid(e){return this.performanceClient?.addQueueMeasurement(mt,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:"sw"}}async signPopToken(e,n,i){return this.signPayload(e,n,i)}async signPayload(e,n,i,t){const{resourceRequestMethod:a,resourceRequestUri:r,shrClaims:o,shrNonce:s,shrOptions:d}=i,l=r?new Jn(r):void 0,c=l?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:Qe(),m:a?.toUpperCase(),u:c?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:c?.AbsolutePath,q:c?.QueryString?[[],c.QueryString]:void 0,client_claims:o||void 0,...t},n,d,i.correlationId)}}class Ss{constructor(e,n){this.cache=e,this.hasChanged=n}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}}class Ts{constructor(e,n,i,t,a,r,o){this.clientId=e,this.cacheStorage=n,this.cryptoObj=i,this.logger=t,this.serializableCache=a,this.persistencePlugin=r,this.performanceClient=o}validateServerAuthorizationCodeResponse(e,n){if(!e.state||!n)throw e.state?Ue(se,"Cached State"):Ue(se,"Server State");let i,t;try{i=decodeURIComponent(e.state)}catch(n){throw Ue(re,e.state)}try{t=decodeURIComponent(n)}catch(n){throw Ue(re,e.state)}if(i!==t)throw Ue(oe);if(e.error||e.error_description||e.suberror){const n=function(e){const n=e.error_uri?.lastIndexOf("code=");return n&&n>=0?e.error_uri?.substring(n+5):void 0}(e);if(Ro(e.error,e.error_description,e.suberror))throw new Mo(e.error||"",e.error_description,e.suberror,e.timestamp||"",e.trace_id||"",e.correlation_id||"",e.claims||"",n);throw new ls(e.error||"",e.error_description,e.suberror,n)}}validateTokenResponse(e,n){if(e.error||e.error_description||e.suberror){const i=`Error(s): ${e.error_codes||r.NOT_AVAILABLE} - Timestamp: ${e.timestamp||r.NOT_AVAILABLE} - Description: ${e.error_description||r.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||r.NOT_AVAILABLE} - Trace ID: ${e.trace_id||r.NOT_AVAILABLE}`,t=e.error_codes?.length?e.error_codes[0]:void 0,a=new ls(e.error,i,e.suberror,t,e.status);if(n&&e.status&&e.status>=500&&e.status<=599)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${a}`);if(n&&e.status&&e.status>=400&&e.status<=499)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${a}`);if(Ro(e.error,e.error_description,e.suberror))throw new Mo(e.error,e.error_description,e.suberror,e.timestamp||r.EMPTY_STRING,e.trace_id||r.EMPTY_STRING,e.correlation_id||r.EMPTY_STRING,e.claims||r.EMPTY_STRING,t);throw a}}async handleServerTokenResponse(e,n,i,t,a,o,s,d,l){let c,f;if(this.performanceClient?.addQueueMeasurement(pt,e.correlation_id),e.id_token){if(c=$e(e.id_token||r.EMPTY_STRING,this.cryptoObj.base64Decode),a&&a.nonce&&c.nonce!==a.nonce)throw Ue(de);if(t.maxAge||0===t.maxAge){const e=c.auth_time;if(!e)throw Ue(le);Ve(e,t.maxAge)}}this.homeAccountIdentifier=Vn.generateHomeAccountId(e.client_info||r.EMPTY_STRING,n.authorityType,this.logger,this.cryptoObj,c),a&&a.state&&(f=Oo.parseRequestState(this.cryptoObj,a.state)),e.key_id=e.key_id||t.sshKid||void 0;const u=this.generateCacheRecord(e,n,i,t,c,o,a);let h;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose("Persistence enabled, calling beforeCacheAccess"),h=new Ss(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(h)),s&&!d&&u.account){const e=u.account.generateAccountKey();if(!this.cacheStorage.getAccount(e,t.correlationId,this.logger))return this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"),await Ts.generateAuthenticationResult(this.cryptoObj,n,u,!1,t,c,f,void 0,l)}await this.cacheStorage.saveCacheRecord(u,t.correlationId,t.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&h&&(this.logger.verbose("Persistence enabled, calling afterCacheAccess"),await this.persistencePlugin.afterCacheAccess(h))}return Ts.generateAuthenticationResult(this.cryptoObj,n,u,!1,t,c,f,e,l)}generateCacheRecord(e,n,i,t,a,r,o){const s=n.getPreferredCache();if(!s)throw Ue(xe);const d=$n(a);let l,c;e.id_token&&a&&(l=Xe(this.homeAccountIdentifier,s,e.id_token,this.clientId,d||""),c=Is(this.cacheStorage,n,this.homeAccountIdentifier,this.cryptoObj.base64Decode,t.correlationId,a,e.client_info,s,d,o,void 0,this.logger));let f=null;if(e.access_token){const a=e.scope?Hn.fromString(e.scope):new Hn(t.scopes||[]),o=("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0,l=("string"==typeof e.ext_expires_in?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,c=("string"==typeof e.refresh_in?parseInt(e.refresh_in,10):e.refresh_in)||void 0,u=i+o,h=u+l,m=c&&c>0?i+c:void 0;f=Ze(this.homeAccountIdentifier,s,e.access_token,this.clientId,d||n.tenant||"",a.printScopes(),u,h,this.cryptoObj.base64Decode,m,e.token_type,r,e.key_id,t.claims,t.requestedClaimsHash)}let u=null;if(e.refresh_token){let n;e.refresh_token_expires_in&&(n=i+("string"==typeof e.refresh_token_expires_in?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)),u=en(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,r,n)}let h=null;return e.foci&&(h={clientId:this.clientId,environment:s,familyId:e.foci}),{account:c,idToken:l,accessToken:f,refreshToken:u,appMetadata:h}}static async generateAuthenticationResult(e,n,i,t,a,o,s,d,l){let c,f,u=r.EMPTY_STRING,h=[],m=null,p=r.EMPTY_STRING;if(i.accessToken){if(i.accessToken.tokenType!==q.POP||a.popKid)u=i.accessToken.secret;else{const n=new Cs(e),{secret:t,keyId:r}=i.accessToken;if(!r)throw Ue(Oe);u=await n.signPopToken(t,r,a)}h=Hn.fromString(i.accessToken.target).asArray(),m=new Date(1e3*Number(i.accessToken.expiresOn)),c=new Date(1e3*Number(i.accessToken.extendedExpiresOn)),i.accessToken.refreshOn&&(f=new Date(1e3*Number(i.accessToken.refreshOn)))}i.appMetadata&&(p=i.appMetadata.familyId===M?M:"");const g=o?.oid||o?.sub||"",v=o?.tid||"";d?.spa_accountid&&i.account&&(i.account.nativeAccountId=d?.spa_accountid);const y=i.account?Gn(i.account.getAccountInfo(),void 0,o,i.idToken?.secret):null;return{authority:n.canonicalAuthority,uniqueId:g,tenantId:v,scopes:h,account:y,idToken:i?.idToken?.secret||"",idTokenClaims:o||{},accessToken:u,fromCache:t,expiresOn:m,extExpiresOn:c,refreshOn:f,correlationId:a.correlationId,requestId:l||r.EMPTY_STRING,familyId:p,tokenType:i.accessToken?.tokenType||r.EMPTY_STRING,state:s?s.userRequestState:r.EMPTY_STRING,cloudGraphHostName:i.account?.cloudGraphHostName||r.EMPTY_STRING,msGraphHost:i.account?.msGraphHost||r.EMPTY_STRING,code:d?.spa_code,fromNativeBroker:!1}}}function Is(e,n,i,t,a,r,o,s,d,l,c,f){f?.verbose("setCachedAccount called");const u=e.getAccountKeys().find(e=>e.startsWith(i));let h=null;u&&(h=e.getAccount(u,a,f));const m=h||Vn.createAccount({homeAccountId:i,idTokenClaims:r,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:c},n,t),p=m.tenantProfiles||[],g=d||m.realm;if(g&&!p.find(e=>e.tenantId===g)){const e=Kn(i,m.localAccountId,g,r);p.push(e)}return m.tenantProfiles=p,m}async function As(e,n,i){return"string"==typeof e?e:e({clientId:n,tokenEndpoint:i})}class js extends xs{constructor(e,n){super(e,n),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async getAuthCodeUrl(e){this.performanceClient?.addQueueMeasurement(rt,e.correlationId);const n=await wo(this.createAuthCodeUrlQueryString.bind(this),ut,this.logger,this.performanceClient,e.correlationId)(e);return Jn.appendQueryString(this.authority.authorizationEndpoint,n)}async acquireToken(e,n){if(this.performanceClient?.addQueueMeasurement(lt,e.correlationId),!e.code)throw Ue(me);const i=Qe(),t=await wo(this.executeTokenRequest.bind(this),ct,this.logger,this.performanceClient,e.correlationId)(this.authority,e),a=t.headers?.[f],r=new Ts(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return r.validateTokenResponse(t.body),wo(r.handleServerTokenResponse.bind(r),pt,this.logger,this.performanceClient,e.correlationId)(t.body,this.authority,i,e,n,void 0,void 0,void 0,a)}handleFragmentResponse(e,n){if(new Ts(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,null,null).validateServerAuthorizationCodeResponse(e,n),!e.code)throw Ue(Me);return e}getLogoutUri(e){if(!e)throw qn(Cn);const n=this.createLogoutUrlQueryString(e);return Jn.appendQueryString(this.authority.endSessionEndpoint,n)}async executeTokenRequest(e,n){this.performanceClient?.addQueueMeasurement(ct,n.correlationId);const i=this.createTokenQueryParameters(n),t=Jn.appendQueryString(e.tokenEndpoint,i),a=await wo(this.createTokenRequestBody.bind(this),ft,this.logger,this.performanceClient,n.correlationId)(n);let r;if(n.clientInfo)try{const e=Dn(n.clientInfo,this.cryptoUtils.base64Decode);r={credential:`${e.uid}.${e.utid}`,type:Fo}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}const o=this.createTokenRequestHeaders(r||n.ccsCredential),s={clientId:n.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:e.canonicalAuthority,scopes:n.scopes,claims:n.claims,authenticationScheme:n.authenticationScheme,resourceRequestMethod:n.resourceRequestMethod,resourceRequestUri:n.resourceRequestUri,shrClaims:n.shrClaims,sshKid:n.sshKid};return wo(this.executePostToTokenEndpoint.bind(this),zi,this.logger,this.performanceClient,n.correlationId)(t,a,o,s,n.correlationId,zi)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(ft,e.correlationId);const n=new ws(e.correlationId,this.performanceClient);if(n.addClientId(e.embeddedClientId||e.tokenBodyParameters?.[fs]||this.config.authOptions.clientId),this.includeRedirectUri?n.addRedirectUri(e.redirectUri):bs.validateRedirectUri(e.redirectUri),n.addScopes(e.scopes,!0,this.oidcDefaultScopes),n.addAuthorizationCode(e.code),n.addLibraryInfo(this.config.libraryInfo),n.addApplicationTelemetry(this.config.telemetry.application),n.addThrottling(),this.serverTelemetryManager&&!yi(this.config)&&n.addServerTelemetry(this.serverTelemetryManager),e.codeVerifier&&n.addCodeVerifier(e.codeVerifier),this.config.clientCredentials.clientSecret&&n.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const i=this.config.clientCredentials.clientAssertion;n.addClientAssertion(await As(i.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),n.addClientAssertionType(i.assertionType)}if(n.addGrantType("authorization_code"),n.addClientInfo(),e.authenticationScheme===q.POP){const i=new Cs(this.cryptoUtils,this.performanceClient);let t;t=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await wo(i.generateCnf.bind(i),ht,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,n.addPopToken(t)}else if(e.authenticationScheme===q.SSH){if(!e.sshJwk)throw qn(En);n.addSshJwk(e.sshJwk)}let i;if((!Bn.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&n.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.clientInfo)try{const n=Dn(e.clientInfo,this.cryptoUtils.base64Decode);i={credential:`${n.uid}.${n.utid}`,type:Fo}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}else i=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&i)switch(i.type){case Fo:try{const e=Un(i.credential);n.addCcsOid(e)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case zo:n.addCcsUpn(i.credential)}return e.embeddedClientId&&n.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenBodyParameters&&n.addExtraQueryParameters(e.tokenBodyParameters),!e.enableSpaAuthorizationCode||e.tokenBodyParameters&&e.tokenBodyParameters[gs]||n.addExtraQueryParameters({[gs]:"1"}),n.createQueryString()}async createAuthCodeUrlQueryString(e){const n=e.correlationId||this.config.cryptoInterface.createNewGuid();this.performanceClient?.addQueueMeasurement(ut,n);const i=new ws(n,this.performanceClient);i.addClientId(e.embeddedClientId||e.extraQueryParameters?.[fs]||this.config.authOptions.clientId);const t=[...e.scopes||[],...e.extraScopesToConsent||[]];if(i.addScopes(t,!0,this.oidcDefaultScopes),i.addRedirectUri(e.redirectUri),i.addCorrelationId(n),i.addResponseMode(e.responseMode),i.addResponseTypeCode(),i.addLibraryInfo(this.config.libraryInfo),yi(this.config)||i.addApplicationTelemetry(this.config.telemetry.application),i.addClientInfo(),e.codeChallenge&&e.codeChallengeMethod&&i.addCodeChallengeParams(e.codeChallenge,e.codeChallengeMethod),e.prompt&&i.addPrompt(e.prompt),e.domainHint&&i.addDomainHint(e.domainHint),e.prompt!==C.SELECT_ACCOUNT)if(e.sid&&e.prompt===C.NONE)this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"),i.addSid(e.sid);else if(e.account){const n=this.extractAccountSid(e.account);let t=this.extractLoginHint(e.account);if(t&&e.domainHint&&(this.logger.warning('AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint'),t=null),t){this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"),i.addLoginHint(t);try{const n=Un(e.account.homeAccountId);i.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(n&&e.prompt===C.NONE){this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"),i.addSid(n);try{const n=Un(e.account.homeAccountId);i.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(e.loginHint)this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"),i.addLoginHint(e.loginHint),i.addCcsUpn(e.loginHint);else if(e.account.username){this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"),i.addLoginHint(e.account.username);try{const n=Un(e.account.homeAccountId);i.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}}else e.loginHint&&(this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"),i.addLoginHint(e.loginHint),i.addCcsUpn(e.loginHint));else this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints");if(e.nonce&&i.addNonce(e.nonce),e.state&&i.addState(e.state),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&i.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.embeddedClientId&&i.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),this.addExtraQueryParams(e,i),e.nativeBroker&&(i.addNativeBroker(),e.authenticationScheme===q.POP)){const n=new Cs(this.cryptoUtils);let t;t=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await wo(n.generateCnf.bind(n),ht,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,i.addPopToken(t)}return i.createQueryString()}createLogoutUrlQueryString(e){const n=new ws(e.correlationId,this.performanceClient);return e.postLogoutRedirectUri&&n.addPostLogoutRedirectUri(e.postLogoutRedirectUri),e.correlationId&&n.addCorrelationId(e.correlationId),e.idTokenHint&&n.addIdTokenHint(e.idTokenHint),e.state&&n.addState(e.state),e.logoutHint&&n.addLogoutHint(e.logoutHint),this.addExtraQueryParams(e,n),n.createQueryString()}addExtraQueryParams(e,n){!(e.extraQueryParameters&&e.extraQueryParameters.hasOwnProperty("instance_aware"))&&this.config.authOptions.instanceAware&&(e.extraQueryParameters=e.extraQueryParameters||{},e.extraQueryParameters.instance_aware="true"),e.extraQueryParameters&&n.addExtraQueryParameters(e.extraQueryParameters)}extractAccountSid(e){return e.idTokenClaims?.sid||null}extractLoginHint(e){return e.idTokenClaims?.login_hint||null}}class Es{constructor(e,n){this.cacheOutcome="0",this.cacheManager=n,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||r.EMPTY_STRING,this.wrapperVer=e.wrapperVer||r.EMPTY_STRING,this.telemetryCacheKey=L.CACHE_KEY+j+e.clientId}generateCurrentRequestHeaderValue(){const e=`${this.apiId}${L.VALUE_SEPARATOR}${this.cacheOutcome}`,n=[this.wrapperSKU,this.wrapperVer],i=this.getNativeBrokerErrorCode();i?.length&&n.push(`broker_error=${i}`);const t=n.join(L.VALUE_SEPARATOR),a=[e,this.getRegionDiscoveryFields()].join(L.VALUE_SEPARATOR);return[L.SCHEMA_VERSION,a,t].join(L.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){const e=this.getLastRequests(),n=Es.maxErrorsToSend(e),i=e.failedRequests.slice(0,2*n).join(L.VALUE_SEPARATOR),t=e.errors.slice(0,n).join(L.VALUE_SEPARATOR),a=e.errors.length,r=[a,n<a?L.OVERFLOW_TRUE:L.OVERFLOW_FALSE].join(L.VALUE_SEPARATOR);return[L.SCHEMA_VERSION,e.cacheHits,i,t,r].join(L.CATEGORY_SEPARATOR)}cacheFailedRequest(e){const n=this.getLastRequests();n.errors.length>=L.MAX_CACHED_ERRORS&&(n.failedRequests.shift(),n.failedRequests.shift(),n.errors.shift()),n.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof Q?e.subError?n.errors.push(e.subError):e.errorCode?n.errors.push(e.errorCode):n.errors.push(e.toString()):n.errors.push(e.toString()):n.errors.push(L.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,n,this.correlationId)}incrementCacheHits(){const e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){const e=this.getLastRequests(),n=Es.maxErrorsToSend(e);if(n===e.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{const i={failedRequests:e.failedRequests.slice(2*n),errors:e.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,i,this.correlationId)}}static maxErrorsToSend(e){let n,i=0,t=0;const a=e.errors.length;for(n=0;n<a;n++){const a=e.failedRequests[2*n]||r.EMPTY_STRING,o=e.failedRequests[2*n+1]||r.EMPTY_STRING,s=e.errors[n]||r.EMPTY_STRING;if(t+=a.toString().length+o.toString().length+s.length+3,!(t<L.MAX_LAST_HEADER_BYTES))break;i+=1}return i}getRegionDiscoveryFields(){const e=[];return e.push(this.regionUsed||r.EMPTY_STRING),e.push(this.regionSource||r.EMPTY_STRING),e.push(this.regionOutcome||r.EMPTY_STRING),e.join(",")}updateRegionDiscoveryMetadata(e){this.regionUsed=e.region_used,this.regionSource=e.region_source,this.regionOutcome=e.region_outcome}setCacheOutcome(e){this.cacheOutcome=e}setNativeBrokerErrorCode(e){const n=this.getLastRequests();n.nativeBrokerErrorCode=e,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,n,this.correlationId)}getNativeBrokerErrorCode(){return this.getLastRequests().nativeBrokerErrorCode}clearNativeBrokerErrorCode(){const e=this.getLastRequests();delete e.nativeBrokerErrorCode,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}static makeExtraSkuString(e){return function(e){const{skus:n,libraryName:i,libraryVersion:t,extensionName:a,extensionVersion:r}=e,o=new Map([[0,[i,t]],[2,[a,r]]]);let s=[];if(n?.length){if(s=n.split(","),s.length<4)return n}else s=Array.from({length:4},()=>"|");return o.forEach((e,n)=>{2===e.length&&e[0]?.length&&e[1]?.length&&function(e){const{skuArr:n,index:i,skuName:t,skuVersion:a}=e;i>=n.length||(n[i]=[t,a].join("|"))}({skuArr:s,index:n,skuName:e[0],skuVersion:e[1]})}),s.join(",")}(e)}}class Ps{constructor(e,n,i,t,a,r,o,s,d){this.config=e,this.browserStorage=n,this.browserCrypto=i,this.networkClient=this.config.system.networkClient,this.eventHandler=a,this.navigationClient=r,this.nativeMessageHandler=s,this.correlationId=d||Dr(),this.logger=t.clone(Wt,ao,this.correlationId),this.performanceClient=o}async clearCacheOnLogout(e){if(e){Vn.accountInfoIsEqual(e,this.browserStorage.getActiveAccount(this.correlationId),!1)&&(this.logger.verbose("Setting active account to null"),this.browserStorage.setActiveAccount(null,this.correlationId));try{await this.browserStorage.removeAccount(Vn.generateAccountCacheKey(e),this.correlationId),this.logger.verbose("Cleared cache items belonging to the account provided in the logout request.")}catch(e){this.logger.error("Account provided in logout request was not found. Local cache unchanged.")}}else try{this.logger.verbose("No account provided in logout request, clearing all cache items.",this.correlationId),await this.browserStorage.clear(this.correlationId),await this.browserCrypto.clearKeystore()}catch(e){this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged.")}}getRedirectUri(e){this.logger.verbose("getRedirectUri called");const n=e||this.config.auth.redirectUri;return Jn.getAbsoluteUrl(n,Xr())}initializeServerTelemetryManager(e,n){this.logger.verbose("initializeServerTelemetryManager called");const i={clientId:this.config.auth.clientId,correlationId:this.correlationId,apiId:e,forceRefresh:n||!1,wrapperSKU:this.browserStorage.getWrapperMetadata()[0],wrapperVer:this.browserStorage.getWrapperMetadata()[1]};return new Es(i,this.browserStorage)}async getDiscoveredAuthority(e){const{account:n}=e,i=e.requestExtraQueryParameters&&e.requestExtraQueryParameters.hasOwnProperty("instance_aware")?e.requestExtraQueryParameters.instance_aware:void 0;this.performanceClient.addQueueMeasurement(Mi,this.correlationId);const t={protocolMode:this.config.auth.protocolMode,OIDCOptions:this.config.auth.OIDCOptions,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache},a=e.requestAuthority||this.config.auth.authority,r=i?.length?"true"===i:this.config.auth.instanceAware,o=n&&r?this.config.auth.authority.replace(Jn.getDomainFromUrl(a),n.environment):a,s=xo.generateAuthority(o,e.requestAzureCloudOptions||this.config.auth.azureCloudOptions),d=await wo(_s,vt,this.logger,this.performanceClient,this.correlationId)(s,this.config.system.networkClient,this.browserStorage,t,this.logger,this.correlationId,this.performanceClient);if(n&&!d.isAlias(n.environment))throw qn(Fn);return d}}async function Ms(e,n,i){e.addQueueMeasurement(Nt,i);const t=bo(Rs,Ot,n,e,i)(e,n,i);return{verifier:t,challenge:await wo(Ns,Ft,n,e,i)(t,e,n,i)}}function Rs(e,n,i){try{const t=new Uint8Array(32);return bo(Br,Lt,n,e,i)(t),Pr(t)}catch(e){throw Tr(ja)}}async function Ns(e,n,i,t){n.addQueueMeasurement(Ft,t);try{const a=await wo(qr,zt,i,n,t)(e,n,t);return Pr(new Uint8Array(a))}catch(e){throw Tr(ja)}}async function Os(e,n,i,t){i.addQueueMeasurement($i,e.correlationId);const a=e.authority||n.auth.authority,r=[...e&&e.scopes||[]],o={...e,correlationId:e.correlationId,authority:a,scopes:r};if(o.authenticationScheme){if(o.authenticationScheme===q.SSH){if(!e.sshJwk)throw qn(En);if(!e.sshKid)throw qn(Pn)}t.verbose(`Authentication Scheme set to "${o.authenticationScheme}" as configured in Auth request`)}else o.authenticationScheme=q.BEARER,t.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request');return n.cache.claimsBasedCachingEnabled&&e.claims&&!Bn.isEmptyObj(e.claims)&&(o.requestedClaimsHash=await Wr(e.claims)),o}async function Fs(e,n,i,t,a){t.addQueueMeasurement(Vi,e.correlationId);const r=await wo(Os,$i,a,t,e.correlationId)(e,i,t,a);return{...e,...r,account:n,forceRefresh:e.forceRefresh||!1}}class zs extends Ps{async initializeAuthorizationCodeRequest(e){this.performanceClient.addQueueMeasurement(at,this.correlationId);const n=await wo(Ms,Nt,this.logger,this.performanceClient,this.correlationId)(this.performanceClient,this.logger,this.correlationId),i={...e,redirectUri:e.redirectUri,code:r.EMPTY_STRING,codeVerifier:n.verifier};return e.codeChallenge=n.challenge,e.codeChallengeMethod=r.S256_CODE_CHALLENGE_METHOD,i}initializeLogoutRequest(e){this.logger.verbose("initializeLogoutRequest called",e?.correlationId);const n={correlationId:this.correlationId||Dr(),...e};if(e)if(e.logoutHint)this.logger.verbose("logoutHint has already been set in logoutRequest");else if(e.account){const i=this.getLogoutHintFromIdTokenClaims(e.account);i&&(this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided"),n.logoutHint=i)}else this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set");else this.logger.verbose("logoutHint will not be set since no logout request was configured");return e&&null===e.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri",n.correlationId):e&&e.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request",n.correlationId),n.postLogoutRedirectUri=Jn.getAbsoluteUrl(e.postLogoutRedirectUri,Xr())):null===this.config.auth.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect",n.correlationId):this.config.auth.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to configured uri",n.correlationId),n.postLogoutRedirectUri=Jn.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri,Xr())):(this.logger.verbose("Setting postLogoutRedirectUri to current page",n.correlationId),n.postLogoutRedirectUri=Jn.getAbsoluteUrl(Xr(),Xr())),n}getLogoutHintFromIdTokenClaims(e){const n=e.idTokenClaims;if(n){if(n.login_hint)return n.login_hint;this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request")}else this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request");return null}async createAuthCodeClient(e){this.performanceClient.addQueueMeasurement(nt,this.correlationId);const n=await wo(this.getClientConfiguration.bind(this),it,this.logger,this.performanceClient,this.correlationId)(e);return new js(n,this.performanceClient)}async getClientConfiguration(e){const{serverTelemetryManager:n,requestAuthority:i,requestAzureCloudOptions:t,requestExtraQueryParameters:a,account:o}=e;this.performanceClient.addQueueMeasurement(it,this.correlationId);const s=await wo(this.getDiscoveredAuthority.bind(this),Mi,this.logger,this.performanceClient,this.correlationId)({requestAuthority:i,requestAzureCloudOptions:t,requestExtraQueryParameters:a,account:o}),d=this.config.system.loggerOptions;return{authOptions:{clientId:this.config.auth.clientId,authority:s,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:this.config.auth.redirectUri},systemOptions:{tokenRenewalOffsetSeconds:this.config.system.tokenRenewalOffsetSeconds,preventCorsPreflight:!0},loggerOptions:{loggerCallback:d.loggerCallback,piiLoggingEnabled:d.piiLoggingEnabled,logLevel:d.logLevel,correlationId:this.correlationId},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.browserCrypto,networkInterface:this.networkClient,storageInterface:this.browserStorage,serverTelemetryManager:n,libraryInfo:{sku:Wt,version:ao,cpu:r.EMPTY_STRING,os:r.EMPTY_STRING},telemetry:this.config.telemetry}}async initializeAuthorizationRequest(e,n){this.performanceClient.addQueueMeasurement(tt,this.correlationId);const i=this.getRedirectUri(e.redirectUri),t={interactionType:n},a=Oo.setRequestState(this.browserCrypto,e&&e.state||r.EMPTY_STRING,t),o={...await wo(Os,$i,this.logger,this.performanceClient,this.correlationId)({...e,correlationId:this.correlationId},this.config,this.performanceClient,this.logger),redirectUri:i,state:a,nonce:e.nonce||Dr(),responseMode:this.config.auth.OIDCOptions.serverResponseType};if(e.loginHint||e.sid)return o;const s=e.account||this.browserStorage.getActiveAccount(this.correlationId);if(s&&(this.logger.verbose("Setting validated request account",this.correlationId),this.logger.verbosePii(`Setting validated request account: ${s.homeAccountId}`,this.correlationId),o.account=s),!o.loginHint&&!s){const e=this.browserStorage.getLegacyLoginHint();e&&(o.loginHint=e)}return o}}const Ls="user_switch",qs={[Ls]:"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again."};class Bs extends Q{constructor(e,n,i){super(e,n),Object.setPrototypeOf(this,Bs.prototype),this.name="NativeAuthError",this.ext=i}}function Hs(e){return!(!e.ext||!e.ext.status||"PERSISTENT_ERROR"!==e.ext.status&&"DISABLED"!==e.ext.status)||!(!e.ext||!e.ext.error||-2147186943!==e.ext.error)||"ContentError"===e.errorCode}function Ds(e,n,i){if(i&&i.status)switch(i.status){case"ACCOUNT_UNAVAILABLE":return No(To);case"USER_INTERACTION_REQUIRED":return new Mo(e,n);case"USER_CANCEL":return Tr(Ba);case"NO_NETWORK":return Tr(tr)}return new Bs(e,qs[e]||n,i)}class Us extends xs{constructor(e,n){super(e,n)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(qi,e.correlationId);const n=Qe(),i=await wo(this.executeTokenRequest.bind(this),Li,this.logger,this.performanceClient,e.correlationId)(e,this.authority),t=i.headers?.[f],a=new Ts(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return a.validateTokenResponse(i.body),wo(a.handleServerTokenResponse.bind(a),pt,this.logger,this.performanceClient,e.correlationId)(i.body,this.authority,n,e,void 0,void 0,!0,e.forceCache,t)}async acquireTokenByRefreshToken(e){if(!e)throw qn(xn);if(this.performanceClient?.addQueueMeasurement(Hi,e.correlationId),!e.account)throw Ue(we);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await wo(this.acquireTokenWithCachedRefreshToken.bind(this),Bi,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(n){const i=n instanceof Mo&&n.errorCode===So,t=n instanceof ls&&"invalid_grant"===n.errorCode&&"client_mismatch"===n.subError;if(i||t)return wo(this.acquireTokenWithCachedRefreshToken.bind(this),Bi,this.logger,this.performanceClient,e.correlationId)(e,!1);throw n}return wo(this.acquireTokenWithCachedRefreshToken.bind(this),Bi,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,n){this.performanceClient?.addQueueMeasurement(Bi,e.correlationId);const i=bo(this.cacheManager.getRefreshToken.bind(this.cacheManager),Rt,this.logger,this.performanceClient,e.correlationId)(e.account,n,e.correlationId,void 0,this.performanceClient);if(!i)throw No(So);if(i.expiresOn&&Ye(i.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw No(Io);const t={...e,refreshToken:i.secret,authenticationScheme:e.authenticationScheme||q.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:Fo}};try{return await wo(this.acquireToken.bind(this),qi,this.logger,this.performanceClient,e.correlationId)(t)}catch(n){if(n instanceof Mo&&n.subError===Ao){this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache");const n=Je(i);this.cacheManager.removeRefreshToken(n,e.correlationId)}throw n}}async executeTokenRequest(e,n){this.performanceClient?.addQueueMeasurement(Li,e.correlationId);const i=this.createTokenQueryParameters(e),t=Jn.appendQueryString(n.tokenEndpoint,i),a=await wo(this.createTokenRequestBody.bind(this),Di,this.logger,this.performanceClient,e.correlationId)(e),r=this.createTokenRequestHeaders(e.ccsCredential),o={clientId:e.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:n.canonicalAuthority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return wo(this.executePostToTokenEndpoint.bind(this),Fi,this.logger,this.performanceClient,e.correlationId)(t,a,r,o,e.correlationId,Fi)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Di,e.correlationId);const n=e.correlationId,i=new ws(n,this.performanceClient);if(i.addClientId(e.embeddedClientId||e.tokenBodyParameters?.[fs]||this.config.authOptions.clientId),e.redirectUri&&i.addRedirectUri(e.redirectUri),i.addScopes(e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),i.addGrantType("refresh_token"),i.addClientInfo(),i.addLibraryInfo(this.config.libraryInfo),i.addApplicationTelemetry(this.config.telemetry.application),i.addThrottling(),this.serverTelemetryManager&&!yi(this.config)&&i.addServerTelemetry(this.serverTelemetryManager),i.addRefreshToken(e.refreshToken),this.config.clientCredentials.clientSecret&&i.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const n=this.config.clientCredentials.clientAssertion;i.addClientAssertion(await As(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),i.addClientAssertionType(n.assertionType)}if(e.authenticationScheme===q.POP){const n=new Cs(this.cryptoUtils,this.performanceClient);let t;t=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await wo(n.generateCnf.bind(n),ht,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,i.addPopToken(t)}else if(e.authenticationScheme===q.SSH){if(!e.sshJwk)throw qn(En);i.addSshJwk(e.sshJwk)}if((!Bn.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&i.addClaims(e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case Fo:try{const n=Un(e.ccsCredential.credential);i.addCcsOid(n)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case zo:i.addCcsUpn(e.ccsCredential.credential)}return e.embeddedClientId&&i.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenBodyParameters&&i.addExtraQueryParameters(e.tokenBodyParameters),i.createQueryString()}}class Ws extends xs{constructor(e,n){super(e,n)}async acquireToken(e){try{const[n,i]=await this.acquireCachedToken({...e,scopes:e.scopes?.length?e.scopes:[...o]});return"4"===i&&(this.logger.info("SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."),new Us(this.config,this.performanceClient).acquireTokenByRefreshToken(e).catch(()=>{})),n}catch(n){if(n instanceof De&&n.errorCode===je)return new Us(this.config,this.performanceClient).acquireTokenByRefreshToken(e);throw n}}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(Wi,e.correlationId);let n="0";if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!Bn.isEmptyObj(e.claims))throw this.setCacheOutcome("1",e.correlationId),Ue(je);if(!e.account)throw Ue(we);const i=e.account.tenantId||function(e){const n=new Jn(e).getUrlComponents(),i=n.PathSegments.slice(-1)[0]?.toLowerCase();switch(i){case b:case w:case _:return;default:return i}}(e.authority),t=this.cacheManager.getTokenKeys(),a=this.cacheManager.getAccessToken(e.account,e,t,i,this.performanceClient);if(!a)throw this.setCacheOutcome("2",e.correlationId),Ue(je);if(r=a.cachedAt,Number(r)>Qe()||Ye(a.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome("3",e.correlationId),Ue(je);var r;a.refreshOn&&Ye(a.refreshOn,0)&&(n="4");const o=e.authority||this.authority.getPreferredCache(),s={account:this.cacheManager.readAccountFromCache(e.account,e.correlationId),accessToken:a,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,t,i,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(o)};return this.setCacheOutcome(n,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await wo(this.generateResultFromCacheRecord.bind(this),Ki,this.logger,this.performanceClient,e.correlationId)(s,e),n]}setCacheOutcome(e,n){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},n),"0"!==e&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,n){let i;if(this.performanceClient?.addQueueMeasurement(Ki,n.correlationId),e.idToken&&(i=$e(e.idToken.secret,this.config.cryptoInterface.base64Decode)),n.maxAge||0===n.maxAge){const e=i?.auth_time;if(!e)throw Ue(le);Ve(e,n.maxAge)}return Ts.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,n,i)}}class Ks extends zs{async acquireToken(e){this.performanceClient.addQueueMeasurement(Ai,e.correlationId);const n=this.initializeServerTelemetryManager(61),i=await wo(this.getClientConfiguration.bind(this),it,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,account:e.account}),t=new Ws(i,this.performanceClient);this.logger.verbose("Silent auth client created");try{const n=(await wo(t.acquireCachedToken.bind(t),Wi,this.logger,this.performanceClient,e.correlationId)(e))[0];return this.performanceClient.addFields({fromCache:!0},e.correlationId),n}catch(e){throw e instanceof Sr&&e.errorCode===dr&&this.logger.verbose("Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair."),e}}logout(e){this.logger.verbose("logoutRedirect called");const n=this.initializeLogoutRequest(e);return this.clearCacheOnLogout(n?.account)}}class Gs extends Ps{constructor(e,n,i,t,a,r,o,s,d,l,c,f){super(e,n,i,t,a,r,s,d,f),this.apiId=o,this.accountId=l,this.nativeMessageHandler=d,this.nativeStorageManager=c,this.silentCacheClient=new Ks(e,this.nativeStorageManager,i,t,a,r,s,d,f),this.serverTelemetryManager=this.initializeServerTelemetryManager(this.apiId);const u=this.nativeMessageHandler.getExtensionId()===Gt?"chrome":this.nativeMessageHandler.getExtensionId()?.length?"unknown":void 0;this.skus=Es.makeExtraSkuString({libraryName:Wt,libraryVersion:ao,extensionName:u,extensionVersion:this.nativeMessageHandler.getExtensionVersion()})}addRequestSKUs(e){e.extraParameters={...e.extraParameters,[vs]:this.skus}}async acquireToken(e){this.performanceClient.addQueueMeasurement(Ni,e.correlationId),this.logger.trace("NativeInteractionClient - acquireToken called.");const n=this.performanceClient.startMeasurement(Ni,e.correlationId),i=Qe();try{const t=await this.initializeNativeRequest(e);try{const e=await this.acquireTokensFromCache(this.accountId,t);return n.end({success:!0,isNativeBroker:!1,fromCache:!0}),e}catch(e){this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call")}const{...a}=t,r={method:Vt,request:a},o=await this.nativeMessageHandler.sendMessage(r),s=this.validateNativeResponse(o);return await this.handleNativeResponse(s,t,i).then(e=>(n.end({success:!0,isNativeBroker:!0,requestId:e.requestId}),this.serverTelemetryManager.clearNativeBrokerErrorCode(),e)).catch(e=>{throw n.end({success:!1,errorCode:e.errorCode,subErrorCode:e.subError,isNativeBroker:!0}),e})}catch(e){throw e instanceof Bs&&this.serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode),e}}createSilentCacheRequest(e,n){return{authority:e.authority,correlationId:this.correlationId,scopes:Hn.fromString(e.scope).asArray(),account:n,forceRefresh:!1}}async acquireTokensFromCache(e,n){if(!e)throw this.logger.warning("NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided"),Ue(Ce);const i=this.browserStorage.getBaseAccountInfo({nativeAccountId:e},n.correlationId);if(!i)throw Ue(Ce);try{const e=this.createSilentCacheRequest(n,i),t=await this.silentCacheClient.acquireToken(e),a={...i,idTokenClaims:t?.idTokenClaims,idToken:t?.idToken};return{...t,account:a}}catch(e){throw e}}async acquireTokenRedirect(e,n){this.logger.trace("NativeInteractionClient - acquireTokenRedirect called.");const{...i}=e;delete i.onRedirectNavigate;const t=await this.initializeNativeRequest(i),a={method:Vt,request:t};try{const e=await this.nativeMessageHandler.sendMessage(a);this.validateNativeResponse(e)}catch(e){if(e instanceof Bs&&(this.serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode),Hs(e)))throw e}this.browserStorage.setTemporaryCache(ra,JSON.stringify(t),!0);const r={apiId:fa,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},o=this.config.auth.navigateToLoginRequestUrl?window.location.href:this.getRedirectUri(e.redirectUri);n.end({success:!0}),await this.navigationClient.navigateExternal(o,r)}async handleRedirectPromise(e,n){if(this.logger.trace("NativeInteractionClient - handleRedirectPromise called."),!this.browserStorage.isInteractionInProgress(!0))return this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."),null;const i=this.browserStorage.getCachedNativeRequest();if(!i)return this.logger.verbose("NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null."),e&&n&&e?.addFields({errorCode:"no_cached_request"},n),null;const{prompt:t,...a}=i;t&&this.logger.verbose("NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window."),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(ra));const r={method:Vt,request:a},o=Qe();try{this.logger.verbose("NativeInteractionClient - handleRedirectPromise sending message to native broker.");const e=await this.nativeMessageHandler.sendMessage(r);this.validateNativeResponse(e);const n=this.handleNativeResponse(e,a,o);this.browserStorage.setInteractionInProgress(!1);const i=await n;return this.serverTelemetryManager.clearNativeBrokerErrorCode(),i}catch(e){throw this.browserStorage.setInteractionInProgress(!1),e}}logout(){return this.logger.trace("NativeInteractionClient - logout called."),Promise.reject("Logout not implemented yet")}async handleNativeResponse(e,n,i){this.logger.trace("NativeInteractionClient - handleNativeResponse called.");const t=$e(e.id_token,mo),a=this.createHomeAccountIdentifier(e,t),r=this.browserStorage.getAccountInfoFilteredBy({nativeAccountId:n.accountId},this.correlationId)?.homeAccountId;if(a!==r&&e.account.id!==n.accountId)throw Ds(Ls);const o=await this.getDiscoveredAuthority({requestAuthority:n.authority}),s=Is(this.browserStorage,o,a,mo,this.correlationId,t,e.client_info,void 0,t.tid,void 0,e.account.id,this.logger),d=await this.generateAuthenticationResult(e,n,t,s,o.canonicalAuthority,i);return this.cacheAccount(s),this.cacheNativeTokens(e,n,a,t,e.access_token,d.tenantId,i),d}createHomeAccountIdentifier(e,n){return Vn.generateHomeAccountId(e.client_info||r.EMPTY_STRING,0,this.logger,this.browserCrypto,n)}generateScopes(e,n){return e.scope?Hn.fromString(e.scope):Hn.fromString(n.scope)}async generatePopAccessToken(e,n){if(n.tokenType===q.POP&&n.signPopToken){if(e.shr)return this.logger.trace("handleNativeServerResponse: SHR is enabled in native layer"),e.shr;const i=new Cs(this.browserCrypto),t={resourceRequestMethod:n.resourceRequestMethod,resourceRequestUri:n.resourceRequestUri,shrClaims:n.shrClaims,shrNonce:n.shrNonce};if(!n.keyId)throw Ue(Oe);return i.signPopToken(e.access_token,n.keyId,t)}return e.access_token}async generateAuthenticationResult(e,n,i,t,a,o){const s=this.addTelemetryFromNativeResponse(e),d=e.scope?Hn.fromString(e.scope):Hn.fromString(n.scope),l=e.account.properties||{},c=l.UID||i.oid||i.sub||r.EMPTY_STRING,f=l.TenantId||i.tid||r.EMPTY_STRING,u=Gn(t.getAccountInfo(),void 0,i,e.id_token);u.nativeAccountId!==e.account.id&&(u.nativeAccountId=e.account.id);const h=await this.generatePopAccessToken(e,n),m=n.tokenType===q.POP?q.POP:q.BEARER;return{authority:a,uniqueId:c,tenantId:f,scopes:d.asArray(),account:u,idToken:e.id_token,idTokenClaims:i,accessToken:h,fromCache:!!s&&this.isResponseFromCache(s),expiresOn:new Date(1e3*Number(o+e.expires_in)),tokenType:m,correlationId:this.correlationId,state:e.state,fromNativeBroker:!0}}cacheAccount(e){this.browserStorage.setAccount(e,this.correlationId),this.browserStorage.removeAccountContext(e,this.correlationId).catch(e=>{this.logger.error(`Error occurred while removing account context from browser storage. ${e}`)})}cacheNativeTokens(e,n,i,t,a,o,s){const d=Xe(i,n.authority,e.id_token||"",n.clientId,t.tid||""),l=s+(n.tokenType===q.POP?r.SHR_NONCE_VALIDITY:("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0),c=this.generateScopes(e,n),f={idToken:d,accessToken:Ze(i,n.authority,a,n.clientId,t.tid||o,c.printScopes(),l,0,mo,void 0,n.tokenType,void 0,n.keyId)};this.nativeStorageManager.saveCacheRecord(f,n.correlationId,n.storeInCache)}addTelemetryFromNativeResponse(e){const n=this.getMATSFromResponse(e);return n?(this.performanceClient.addFields({extensionId:this.nativeMessageHandler.getExtensionId(),extensionVersion:this.nativeMessageHandler.getExtensionVersion(),matsBrokerVersion:n.broker_version,matsAccountJoinOnStart:n.account_join_on_start,matsAccountJoinOnEnd:n.account_join_on_end,matsDeviceJoin:n.device_join,matsPromptBehavior:n.prompt_behavior,matsApiErrorCode:n.api_error_code,matsUiVisible:n.ui_visible,matsSilentCode:n.silent_code,matsSilentBiSubCode:n.silent_bi_sub_code,matsSilentMessage:n.silent_message,matsSilentStatus:n.silent_status,matsHttpStatus:n.http_status,matsHttpEventCount:n.http_event_count},this.correlationId),n):null}validateNativeResponse(e){if(e.hasOwnProperty("access_token")&&e.hasOwnProperty("id_token")&&e.hasOwnProperty("client_info")&&e.hasOwnProperty("account")&&e.hasOwnProperty("scope")&&e.hasOwnProperty("expires_in"))return e;throw Y(G,"Response missing expected properties.")}getMATSFromResponse(e){if(e.properties.MATS)try{return JSON.parse(e.properties.MATS)}catch(e){this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead")}return null}isResponseFromCache(e){return void 0===e.is_cached?(this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false."),!1):!!e.is_cached}async initializeNativeRequest(e){this.logger.trace("NativeInteractionClient - initializeNativeRequest called");const n=e.authority||this.config.auth.authority;e.account&&await this.getDiscoveredAuthority({requestAuthority:n,requestAzureCloudOptions:e.azureCloudOptions,account:e.account});const i=new Jn(n);i.validateAsUri();const{scopes:t,...a}=e,r=new Hn(t||[]);r.appendScopes(o);const s={...a,accountId:this.accountId,clientId:this.config.auth.clientId,authority:i.urlString,scope:r.printScopes(),redirectUri:this.getRedirectUri(e.redirectUri),prompt:(()=>{switch(this.apiId){case 863:case 61:return this.logger.trace("initializeNativeRequest: silent request sets prompt to none"),C.NONE}if(e.prompt)switch(e.prompt){case C.NONE:case C.CONSENT:case C.LOGIN:return this.logger.trace("initializeNativeRequest: prompt is compatible with native flow"),e.prompt;default:throw this.logger.trace(`initializeNativeRequest: prompt = ${e.prompt} is not compatible with native flow`),Tr(yr)}else this.logger.trace("initializeNativeRequest: prompt was not provided")})(),correlationId:this.correlationId,tokenType:e.authenticationScheme,windowTitleSubstring:document.title,extraParameters:{...e.extraQueryParameters,...e.tokenQueryParameters},extendedExpiryToken:!1,keyId:e.popKid};if(s.signPopToken&&e.popKid)throw Tr(br);if(this.handleExtraBrokerParams(s),s.extraParameters=s.extraParameters||{},s.extraParameters.telemetry="MATS",e.authenticationScheme===q.POP){const n={resourceRequestUri:e.resourceRequestUri,resourceRequestMethod:e.resourceRequestMethod,shrClaims:e.shrClaims,shrNonce:e.shrNonce},i=new Cs(this.browserCrypto);let t;if(s.keyId)t=this.browserCrypto.base64UrlEncode(JSON.stringify({kid:s.keyId})),s.signPopToken=!1;else{const a=await wo(i.generateCnf.bind(i),ht,this.logger,this.performanceClient,e.correlationId)(n,this.logger);t=a.reqCnfString,s.keyId=a.kid,s.signPopToken=!0}s.reqCnf=t}return this.addRequestSKUs(s),s}handleExtraBrokerParams(e){const n=e.extraParameters&&e.extraParameters.hasOwnProperty(ys)&&e.extraParameters.hasOwnProperty(ks)&&e.extraParameters.hasOwnProperty(fs);if(!e.embeddedClientId&&!n)return;let i="";const t=e.redirectUri;e.embeddedClientId?(e.redirectUri=this.config.auth.redirectUri,i=e.embeddedClientId):e.extraParameters&&(e.redirectUri=e.extraParameters[ks],i=e.extraParameters[fs]),e.extraParameters={child_client_id:i,child_redirect_uri:t},this.performanceClient?.addFields({embeddedClientId:i,embeddedRedirectUri:t},e.correlationId)}}class $s{constructor(e,n,i,t){this.logger=e,this.handshakeTimeoutMs=n,this.extensionId=t,this.resolvers=new Map,this.handshakeResolvers=new Map,this.messageChannel=new MessageChannel,this.windowListener=this.onWindowMessage.bind(this),this.performanceClient=i,this.handshakeEvent=i.startMeasurement(Et)}async sendMessage(e){this.logger.trace("NativeMessageHandler - sendMessage called.");const n={channel:Kt,extensionId:this.extensionId,responseId:Dr(),body:e};return this.logger.trace("NativeMessageHandler - Sending request to browser extension"),this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(n)}`),this.messageChannel.port1.postMessage(n),new Promise((e,i)=>{this.resolvers.set(n.responseId,{resolve:e,reject:i})})}static async createProvider(e,n,i){e.trace("NativeMessageHandler - createProvider called.");try{const t=new $s(e,n,i,Gt);return await t.sendHandshakeRequest(),t}catch(t){const a=new $s(e,n,i);return await a.sendHandshakeRequest(),a}}async sendHandshakeRequest(){this.logger.trace("NativeMessageHandler - sendHandshakeRequest called."),window.addEventListener("message",this.windowListener,!1);const e={channel:Kt,extensionId:this.extensionId,responseId:Dr(),body:{method:$t}};return this.handshakeEvent.add({extensionId:this.extensionId,extensionHandshakeTimeoutMs:this.handshakeTimeoutMs}),this.messageChannel.port1.onmessage=e=>{this.onChannelMessage(e)},window.postMessage(e,window.origin,[this.messageChannel.port2]),new Promise((n,i)=>{this.handshakeResolvers.set(e.responseId,{resolve:n,reject:i}),this.timeoutId=window.setTimeout(()=>{window.removeEventListener("message",this.windowListener,!1),this.messageChannel.port1.close(),this.messageChannel.port2.close(),this.handshakeEvent.end({extensionHandshakeTimedOut:!0,success:!1}),i(Tr(mr)),this.handshakeResolvers.delete(e.responseId)},this.handshakeTimeoutMs)})}onWindowMessage(e){if(this.logger.trace("NativeMessageHandler - onWindowMessage called"),e.source!==window)return;const n=e.data;if(n.channel&&n.channel===Kt&&(!n.extensionId||n.extensionId===this.extensionId)&&n.body.method===$t){const e=this.handshakeResolvers.get(n.responseId);if(!e)return void this.logger.trace(`NativeMessageHandler.onWindowMessage - resolver can't be found for request ${n.responseId}`);this.logger.verbose(n.extensionId?`Extension with id: ${n.extensionId} not installed`:"No extension installed"),clearTimeout(this.timeoutId),this.messageChannel.port1.close(),this.messageChannel.port2.close(),window.removeEventListener("message",this.windowListener,!1),this.handshakeEvent.end({success:!1,extensionInstalled:!1}),e.reject(Tr(pr))}}onChannelMessage(e){this.logger.trace("NativeMessageHandler - onChannelMessage called.");const n=e.data,i=this.resolvers.get(n.responseId),t=this.handshakeResolvers.get(n.responseId);try{const e=n.body.method;if("Response"===e){if(!i)return;const e=n.body.response;if(this.logger.trace("NativeMessageHandler - Received response from browser extension"),this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(e)}`),"Success"!==e.status)i.reject(Ds(e.code,e.description,e.ext));else{if(!e.result)throw Y(G,"Event does not contain result.");e.result.code&&e.result.description?i.reject(Ds(e.result.code,e.result.description,e.result.ext)):i.resolve(e.result)}this.resolvers.delete(n.responseId)}else if("HandshakeResponse"===e){if(!t)return void this.logger.trace(`NativeMessageHandler.onChannelMessage - resolver can't be found for request ${n.responseId}`);clearTimeout(this.timeoutId),window.removeEventListener("message",this.windowListener,!1),this.extensionId=n.extensionId,this.extensionVersion=n.body.version,this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`),this.handshakeEvent.end({extensionInstalled:!0,success:!0}),t.resolve(),this.handshakeResolvers.delete(n.responseId)}}catch(n){this.logger.error("Error parsing response from WAM Extension"),this.logger.errorPii(`Error parsing response from WAM Extension: ${n}`),this.logger.errorPii(`Unable to parse ${e}`),i?i.reject(n):t&&t.reject(n)}}getExtensionId(){return this.extensionId}getExtensionVersion(){return this.extensionVersion}static isNativeAvailable(e,n,i,t){if(n.trace("isNativeAvailable called"),!e.system.allowNativeBroker)return n.trace("isNativeAvailable: allowNativeBroker is not enabled, returning false"),!1;if(!i)return n.trace("isNativeAvailable: WAM extension provider is not initialized, returning false"),!1;if(t)switch(t){case q.BEARER:case q.POP:return n.trace("isNativeAvailable: authenticationScheme is supported, returning true"),!0;default:return n.trace("isNativeAvailable: authenticationScheme is not supported, returning false"),!1}return!0}}class Vs{constructor(e,n,i,t,a){this.authModule=e,this.browserStorage=n,this.authCodeRequest=i,this.logger=t,this.performanceClient=a}async handleCodeResponse(e,n){let i;this.performanceClient.addQueueMeasurement(st,n.correlationId);try{i=this.authModule.handleFragmentResponse(e,n.state)}catch(e){throw e instanceof ls&&e.subError===Ba?Tr(Ba):e}return wo(this.handleCodeResponseFromServer.bind(this),ot,this.logger,this.performanceClient,n.correlationId)(i,n)}async handleCodeResponseFromServer(e,n,i=!0){if(this.performanceClient.addQueueMeasurement(ot,n.correlationId),this.logger.trace("InteractionHandler.handleCodeResponseFromServer called"),this.authCodeRequest.code=e.code,e.cloud_instance_host_name&&await wo(this.authModule.updateAuthority.bind(this.authModule),dt,this.logger,this.performanceClient,n.correlationId)(e.cloud_instance_host_name,n.correlationId),i&&(e.nonce=n.nonce||void 0),e.state=n.state,e.client_info)this.authCodeRequest.clientInfo=e.client_info;else{const e=this.createCcsCredentials(n);e&&(this.authCodeRequest.ccsCredential=e)}return await wo(this.authModule.acquireToken.bind(this.authModule),lt,this.logger,this.performanceClient,n.correlationId)(this.authCodeRequest,e)}createCcsCredentials(e){return e.account?{credential:e.account.homeAccountId,type:Fo}:e.loginHint?{credential:e.loginHint,type:zo}:null}}function Qs(e,n,i){const t=Yn(e);if(!t)throw Qn(e)?(i.error(`A ${n} is present in the iframe but it does not contain known properties. It's likely that the ${n} has been replaced by code running on the redirectUri page.`),i.errorPii(`The ${n} detected is: ${e}`),Tr(Na)):(i.error(`The request has returned to the redirectUri but a ${n} is not present. It's likely that the ${n} has been removed or the page has been redirected by code running on the redirectUri page.`),Tr(Ma));return t}class Ys extends zs{constructor(e,n,i,t,a,r,o,s,d,l){super(e,n,i,t,a,r,o,d,l),this.unloadWindow=this.unloadWindow.bind(this),this.nativeStorage=s}acquireToken(e){try{const n={popupName:this.generatePopupName(e.scopes||o,e.authority||this.config.auth.authority),popupWindowAttributes:e.popupWindowAttributes||{},popupWindowParent:e.popupWindowParent??window};return this.config.system.asyncPopups?(this.logger.verbose("asyncPopups set to true, acquiring token"),this.acquireTokenPopupAsync(e,n)):(this.logger.verbose("asyncPopup set to false, opening popup before acquiring token"),n.popup=this.openSizedPopup("about:blank",n),this.acquireTokenPopupAsync(e,n))}catch(e){return Promise.reject(e)}}logout(e){try{this.logger.verbose("logoutPopup called");const n=this.initializeLogoutRequest(e),i={popupName:this.generateLogoutPopupName(n),popupWindowAttributes:e?.popupWindowAttributes||{},popupWindowParent:e?.popupWindowParent??window},t=e&&e.authority,a=e&&e.mainWindowRedirectUri;return this.config.system.asyncPopups?(this.logger.verbose("asyncPopups set to true"),this.logoutPopupAsync(n,i,t,a)):(this.logger.verbose("asyncPopup set to false, opening popup"),i.popup=this.openSizedPopup("about:blank",i),this.logoutPopupAsync(n,i,t,a))}catch(e){return Promise.reject(e)}}async acquireTokenPopupAsync(e,n){this.logger.verbose("acquireTokenPopupAsync called");const i=this.initializeServerTelemetryManager(ua),t=await wo(this.initializeAuthorizationRequest.bind(this),tt,this.logger,this.performanceClient,this.correlationId)(e,ha.Popup);to(t.authority);try{const a=await wo(this.initializeAuthorizationCodeRequest.bind(this),at,this.logger,this.performanceClient,this.correlationId)(t),r=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:i,requestAuthority:t.authority,requestAzureCloudOptions:t.azureCloudOptions,requestExtraQueryParameters:t.extraQueryParameters,account:t.account}),o=$s.isNativeAvailable(this.config,this.logger,this.nativeMessageHandler,e.authenticationScheme);let s;o&&(s=this.performanceClient.startMeasurement(Ri,e.correlationId));const d=await r.getAuthCodeUrl({...t,nativeBroker:o}),l=new Vs(r,this.browserStorage,a,this.logger,this.performanceClient),c=this.initiateAuthRequest(d,n);this.eventHandler.emitEvent(is,ha.Popup,{popupWindow:c},null);const f=await this.monitorPopupForHash(c,n.popupWindowParent),u=bo(Qs,gt,this.logger,this.performanceClient,this.correlationId)(f,this.config.auth.OIDCOptions.serverResponseType,this.logger);if(cs.removeThrottle(this.browserStorage,this.config.auth.clientId,a),u.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),s&&s.end({success:!0,isNativeBroker:!0}),!this.nativeMessageHandler)throw Tr(gr);const e=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,ua,this.performanceClient,this.nativeMessageHandler,u.accountId,this.nativeStorage,t.correlationId),{userRequestState:n}=Oo.parseRequestState(this.browserCrypto,t.state);return await e.acquireToken({...t,state:n,prompt:void 0})}return await l.handleCodeResponse(u,t)}catch(e){throw n.popup?.close(),e instanceof Q&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),e}}async logoutPopupAsync(e,n,i,t){this.logger.verbose("logoutPopupAsync called"),this.eventHandler.emitEvent(ts,ha.Popup,e);const a=this.initializeServerTelemetryManager(962);try{await this.clearCacheOnLogout(e.account);const r=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:a,requestAuthority:i,account:e.account||void 0});try{r.authority.endSessionEndpoint}catch{if(e.account?.homeAccountId&&e.postLogoutRedirectUri&&r.authority.protocolMode===W){if(this.browserStorage.removeAccount(e.account?.homeAccountId,this.correlationId),this.eventHandler.emitEvent(as,ha.Popup,e),t){const e={apiId:962,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},n=Jn.getAbsoluteUrl(t,Xr());await this.navigationClient.navigateInternal(n,e)}return void n.popup?.close()}}const o=r.getLogoutUri(e);this.eventHandler.emitEvent(as,ha.Popup,e);const s=this.openPopup(o,n);if(this.eventHandler.emitEvent(is,ha.Popup,{popupWindow:s},null),await this.monitorPopupForHash(s,n.popupWindowParent).catch(()=>{}),t){const e={apiId:962,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},n=Jn.getAbsoluteUrl(t,Xr());this.logger.verbose("Redirecting main window to url specified in the request"),this.logger.verbosePii(`Redirecting main window to: ${n}`),await this.navigationClient.navigateInternal(n,e)}else this.logger.verbose("No main window navigation requested")}catch(e){throw n.popup?.close(),e instanceof Q&&(e.setCorrelationId(this.correlationId),a.cacheFailedRequest(e)),this.browserStorage.setInteractionInProgress(!1),this.eventHandler.emitEvent(rs,ha.Popup,null,e),this.eventHandler.emitEvent(os,ha.Popup),e}this.eventHandler.emitEvent(os,ha.Popup)}initiateAuthRequest(e,n){if(e)return this.logger.infoPii(`Navigate to: ${e}`),this.openPopup(e,n);throw this.logger.error("Navigate url is empty"),Tr(Pa)}monitorPopupForHash(e,n){return new Promise((n,i)=>{this.logger.verbose("PopupHandler.monitorPopupForHash - polling started");const t=setInterval(()=>{if(e.closed)return this.logger.error("PopupHandler.monitorPopupForHash - window closed"),clearInterval(t),void i(Tr(Ba));let a="";try{a=e.location.href}catch(e){}if(!a||"about:blank"===a)return;clearInterval(t);let r="";const o=this.config.auth.OIDCOptions.serverResponseType;e&&(r=o===T.QUERY?e.location.search:e.location.hash),this.logger.verbose("PopupHandler.monitorPopupForHash - popup window is on same origin as caller"),n(r)},this.config.system.pollIntervalMilliseconds)}).finally(()=>{this.cleanPopup(e,n)})}openPopup(e,n){try{let i;if(n.popup?(i=n.popup,this.logger.verbosePii(`Navigating popup window to: ${e}`),i.location.assign(e)):void 0===n.popup&&(this.logger.verbosePii(`Opening popup window to: ${e}`),i=this.openSizedPopup(e,n)),!i)throw Tr(qa);return i.focus&&i.focus(),this.currentWindow=i,n.popupWindowParent.addEventListener("beforeunload",this.unloadWindow),i}catch(e){throw this.logger.error("error opening popup "+e.message),this.browserStorage.setInteractionInProgress(!1),Tr(La)}}openSizedPopup(e,{popupName:n,popupWindowAttributes:i,popupWindowParent:t}){const a=t.screenLeft?t.screenLeft:t.screenX,r=t.screenTop?t.screenTop:t.screenY,o=t.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,s=t.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;let d=i.popupSize?.width,l=i.popupSize?.height,c=i.popupPosition?.top,f=i.popupPosition?.left;return(!d||d<0||d>o)&&(this.logger.verbose("Default popup window width used. Window width not configured or invalid."),d=483),(!l||l<0||l>s)&&(this.logger.verbose("Default popup window height used. Window height not configured or invalid."),l=600),(!c||c<0||c>s)&&(this.logger.verbose("Default popup window top position used. Window top not configured or invalid."),c=Math.max(0,s/2-300+r)),(!f||f<0||f>o)&&(this.logger.verbose("Default popup window left position used. Window left not configured or invalid."),f=Math.max(0,o/2-241.5+a)),t.open(e,n,`width=${d}, height=${l}, top=${c}, left=${f}, scrollbars=yes`)}unloadWindow(e){this.browserStorage.cleanRequestByInteractionType(ha.Popup),this.currentWindow&&this.currentWindow.close(),e.preventDefault()}cleanPopup(e,n){e.close(),n.removeEventListener("beforeunload",this.unloadWindow),this.browserStorage.setInteractionInProgress(!1)}generatePopupName(e,n){return`${Ut}.${this.config.auth.clientId}.${e.join("-")}.${n}.${this.correlationId}`}generateLogoutPopupName(e){const n=e.account&&e.account.homeAccountId;return`${Ut}.${this.config.auth.clientId}.${n}.${this.correlationId}`}}class Js{constructor(e,n,i,t,a){this.authModule=e,this.browserStorage=n,this.authCodeRequest=i,this.logger=t,this.performanceClient=a}async initiateAuthRequest(e,n){if(this.logger.verbose("RedirectHandler.initiateAuthRequest called"),e){n.redirectStartPage&&(this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"),this.browserStorage.setTemporaryCache(Zt,n.redirectStartPage,!0)),this.browserStorage.setTemporaryCache(aa,this.authCodeRequest.correlationId,!0),this.browserStorage.cacheCodeRequest(this.authCodeRequest),this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${e}`);const i={apiId:fa,timeout:n.redirectTimeout,noHistory:!1};return"function"==typeof n.onRedirectNavigate?(this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback"),!1!==n.onRedirectNavigate(e)?(this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"),void await n.navigationClient.navigateExternal(e,i)):void this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation")):(this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"),void await n.navigationClient.navigateExternal(e,i))}throw this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"),Tr(Pa)}async handleCodeResponse(e,n){this.logger.verbose("RedirectHandler.handleCodeResponse called"),this.browserStorage.setInteractionInProgress(!1);const i=this.browserStorage.generateStateKey(n),t=this.browserStorage.getTemporaryCache(i);if(!t)throw Ue(se,"Cached State");let a;try{a=this.authModule.handleFragmentResponse(e,t)}catch(e){throw e instanceof ls&&e.subError===Ba?Tr(Ba):e}const r=this.browserStorage.generateNonceKey(t),o=this.browserStorage.getTemporaryCache(r);if(this.authCodeRequest.code=a.code,a.cloud_instance_host_name&&await wo(this.authModule.updateAuthority.bind(this.authModule),dt,this.logger,this.performanceClient,this.authCodeRequest.correlationId)(a.cloud_instance_host_name,this.authCodeRequest.correlationId),a.nonce=o||void 0,a.state=t,a.client_info)this.authCodeRequest.clientInfo=a.client_info;else{const e=this.checkCcsCredentials();e&&(this.authCodeRequest.ccsCredential=e)}const s=await this.authModule.acquireToken(this.authCodeRequest,a);return this.browserStorage.cleanRequestByState(n),s}checkCcsCredentials(){const e=this.browserStorage.getTemporaryCache(ta,!0);if(e)try{return JSON.parse(e)}catch(n){this.authModule.logger.error("Cache credential could not be parsed"),this.authModule.logger.errorPii(`Cache credential could not be parsed: ${e}`)}return null}}class Xs extends zs{constructor(e,n,i,t,a,r,o,s,d,l){super(e,n,i,t,a,r,o,d,l),this.nativeStorage=s}async acquireToken(e){const n=await wo(this.initializeAuthorizationRequest.bind(this),tt,this.logger,this.performanceClient,this.correlationId)(e,ha.Redirect);this.browserStorage.updateCacheEntries(n.state,n.nonce,n.authority,n.loginHint||"",n.account||null);const i=this.initializeServerTelemetryManager(fa),t=e=>{e.persisted&&(this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache."),this.browserStorage.cleanRequestByState(n.state),this.eventHandler.emitEvent(ss,ha.Redirect))};try{const a=await wo(this.initializeAuthorizationCodeRequest.bind(this),at,this.logger,this.performanceClient,this.correlationId)(n),r=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:i,requestAuthority:n.authority,requestAzureCloudOptions:n.azureCloudOptions,requestExtraQueryParameters:n.extraQueryParameters,account:n.account}),o=new Js(r,this.browserStorage,a,this.logger,this.performanceClient),s=await r.getAuthCodeUrl({...n,nativeBroker:$s.isNativeAvailable(this.config,this.logger,this.nativeMessageHandler,e.authenticationScheme)}),d=this.getRedirectStartPage(e.redirectStartPage);return this.logger.verbosePii(`Redirect start page: ${d}`),window.addEventListener("pageshow",t),await o.initiateAuthRequest(s,{navigationClient:this.navigationClient,redirectTimeout:this.config.system.redirectNavigationTimeout,redirectStartPage:d,onRedirectNavigate:e.onRedirectNavigate||this.config.auth.onRedirectNavigate})}catch(e){throw e instanceof Q&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),window.removeEventListener("pageshow",t),this.browserStorage.cleanRequestByState(n.state),e}}async handleRedirectPromise(e="",n){const i=this.initializeServerTelemetryManager(865);try{if(!this.browserStorage.isInteractionInProgress(!0))return this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."),null;const[t,a]=this.getRedirectResponse(e||"");if(!t)return this.logger.info("handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache."),this.browserStorage.cleanRequestByInteractionType(ha.Redirect),"back_forward"!==function(){if("undefined"==typeof window||void 0===window.performance||"function"!=typeof window.performance.getEntriesByType)return;const e=window.performance.getEntriesByType("navigation"),n=e.length?e[0]:void 0;return n?.type}()?n.event.errorCode="no_server_response":this.logger.verbose("Back navigation event detected. Muting no_server_response error"),null;const o=this.browserStorage.getTemporaryCache(Zt,!0)||r.EMPTY_STRING;if(Jn.removeHashFromUrl(o)===Jn.removeHashFromUrl(window.location.href)&&this.config.auth.navigateToLoginRequestUrl)return this.logger.verbose("Current page is loginRequestUrl, handling response"),o.indexOf("#")>-1&&function(e){const n=e.split("#");n.shift(),window.location.hash=n.length>0?n.join("#"):""}(o),await this.handleResponse(t,i);if(!this.config.auth.navigateToLoginRequestUrl)return this.logger.verbose("NavigateToLoginRequestUrl set to false, handling response"),await this.handleResponse(t,i);if(!Jr()||this.config.system.allowRedirectInIframe){this.browserStorage.setTemporaryCache(ea,a,!0);const e={apiId:865,timeout:this.config.system.redirectNavigationTimeout,noHistory:!0};let n=!0;if(o&&"null"!==o)this.logger.verbose(`Navigating to loginRequestUrl: ${o}`),n=await this.navigationClient.navigateInternal(o,e);else{const i=function(){const e=new Jn(window.location.href).getUrlComponents();return`${e.Protocol}//${e.HostNameAndPort}/`}();this.browserStorage.setTemporaryCache(Zt,i,!0),this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"),n=await this.navigationClient.navigateInternal(i,e)}if(!n)return await this.handleResponse(t,i)}return null}catch(e){throw e instanceof Q&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),this.browserStorage.cleanRequestByInteractionType(ha.Redirect),e}}getRedirectResponse(e){this.logger.verbose("getRedirectResponseHash called");let n=e;n||(n=this.config.auth.OIDCOptions.serverResponseType===T.QUERY?window.location.search:window.location.hash);let i=Yn(n);if(i){try{!function(e,n,i){if(!e.state)throw Tr(Ra);const t=Bo(n,e.state);if(!t)throw Tr(Oa);if(t.interactionType!==i)throw Tr(Fa)}(i,this.browserCrypto,ha.Redirect)}catch(e){return e instanceof Q&&this.logger.error(`Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`),[null,""]}return(t=window).location.hash="","function"==typeof t.history.replaceState&&t.history.replaceState(null,"",`${t.location.origin}${t.location.pathname}${t.location.search}`),this.logger.verbose("Hash contains known properties, returning response hash"),[i,n]}var t;const a=this.browserStorage.getTemporaryCache(ea,!0);return this.browserStorage.removeItem(this.browserStorage.generateCacheKey(ea)),a&&(i=Yn(a),i)?(this.logger.verbose("Hash does not contain known properties, returning cached hash"),[i,a]):[null,""]}async handleResponse(e,n){const i=e.state;if(!i)throw Tr(Ra);const t=this.browserStorage.getCachedRequest(i);if(this.logger.verbose("handleResponse called, retrieved cached request"),e.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),!this.nativeMessageHandler)throw Tr(gr);const n=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,ua,this.performanceClient,this.nativeMessageHandler,e.accountId,this.nativeStorage,t.correlationId),{userRequestState:a}=Oo.parseRequestState(this.browserCrypto,i);return n.acquireToken({...t,state:a,prompt:void 0}).finally(()=>{this.browserStorage.cleanRequestByState(i)})}const a=this.browserStorage.getCachedAuthority(i);if(!a)throw Tr(Xa);const r=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:a});return cs.removeThrottle(this.browserStorage,this.config.auth.clientId,t),new Js(r,this.browserStorage,t,this.logger,this.performanceClient).handleCodeResponse(e,i)}async logout(e){this.logger.verbose("logoutRedirect called");const n=this.initializeLogoutRequest(e),i=this.initializeServerTelemetryManager(961);try{this.eventHandler.emitEvent(ts,ha.Redirect,e),await this.clearCacheOnLogout(n.account);const t={apiId:961,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},a=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:i,requestAuthority:e&&e.authority,requestExtraQueryParameters:e?.extraQueryParameters,account:e&&e.account||void 0});if(a.authority.protocolMode===W)try{a.authority.endSessionEndpoint}catch{if(n.account?.homeAccountId)return this.browserStorage.removeAccount(n.account?.homeAccountId,this.correlationId),void this.eventHandler.emitEvent(as,ha.Redirect,n)}const r=a.getLogoutUri(n);if(this.eventHandler.emitEvent(as,ha.Redirect,n),!e||"function"!=typeof e.onRedirectNavigate)return this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0),void await this.navigationClient.navigateExternal(r,t);if(!1!==e.onRedirectNavigate(r))return this.logger.verbose("Logout onRedirectNavigate did not return false, navigating"),this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0),void await this.navigationClient.navigateExternal(r,t);this.browserStorage.setInteractionInProgress(!1),this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation")}catch(e){throw e instanceof Q&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),this.eventHandler.emitEvent(rs,ha.Redirect,null,e),this.eventHandler.emitEvent(os,ha.Redirect),e}this.eventHandler.emitEvent(os,ha.Redirect)}getRedirectStartPage(e){const n=e||window.location.href;return Jn.getAbsoluteUrl(n,Xr())}}async function Zs(e,n,i,t,a){if(n.addQueueMeasurement(Ji,t),!e)throw i.info("Navigate url is empty"),Tr(Pa);return a?wo(nd,Zi,i,n,t)(e,a,n,t):bo(id,et,i,n,t)(e)}async function ed(e,n,i,t,a,r,o){return t.addQueueMeasurement(Xi,r),new Promise((t,r)=>{n<1e4&&a.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${n}ms) than the default (10000ms). This may result in timeouts.`);const s=window.setTimeout(()=>{window.clearInterval(d),r(Tr(Da))},n),d=window.setInterval(()=>{let n="";const i=e.contentWindow;try{n=i?i.location.href:""}catch(e){}if(!n||"about:blank"===n)return;let a="";i&&(a=o===T.QUERY?i.location.search:i.location.hash),window.clearTimeout(s),window.clearInterval(d),t(a)},i)}).finally(()=>{bo(ad,Pt,a,t,r)(e)})}function nd(e,n,i,t){return i.addQueueMeasurement(Zi,t),new Promise((i,t)=>{const a=td();window.setTimeout(()=>{a?(a.src=e,i(a)):t("Unable to load iframe")},n)})}function id(e){const n=td();return n.src=e,n}function td(){const e=document.createElement("iframe");return e.className="msalSilentIframe",e.style.visibility="hidden",e.style.position="absolute",e.style.width=e.style.height="0",e.style.border="0",e.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),document.body.appendChild(e),e}function ad(e){document.body===e.parentNode&&document.body.removeChild(e)}class rd extends zs{constructor(e,n,i,t,a,r,o,s,d,l,c){super(e,n,i,t,a,r,s,l,c),this.apiId=o,this.nativeStorage=d}async acquireToken(e){this.performanceClient.addQueueMeasurement(ji,e.correlationId),e.loginHint||e.sid||e.account&&e.account.username||this.logger.warning("No user hint provided. The authorization server may need more information to complete this request.");const n={...e};n.prompt?n.prompt!==C.NONE&&n.prompt!==C.NO_SESSION&&(this.logger.warning(`SilentIframeClient. Replacing invalid prompt ${n.prompt} with ${C.NONE}`),n.prompt=C.NONE):n.prompt=C.NONE;const i=await wo(this.initializeAuthorizationRequest.bind(this),tt,this.logger,this.performanceClient,e.correlationId)(n,ha.Silent);to(i.authority);const t=this.initializeServerTelemetryManager(this.apiId);let a;try{return a=await wo(this.createAuthCodeClient.bind(this),nt,this.logger,this.performanceClient,e.correlationId)({serverTelemetryManager:t,requestAuthority:i.authority,requestAzureCloudOptions:i.azureCloudOptions,requestExtraQueryParameters:i.extraQueryParameters,account:i.account}),await wo(this.silentTokenHelper.bind(this),Yi,this.logger,this.performanceClient,e.correlationId)(a,i)}catch(i){if(i instanceof Q&&(i.setCorrelationId(this.correlationId),t.cacheFailedRequest(i)),!(a&&i instanceof Q&&i.errorCode===Dt))throw i;this.performanceClient.addFields({retryError:i.errorCode},this.correlationId);const r=await wo(this.initializeAuthorizationRequest.bind(this),tt,this.logger,this.performanceClient,e.correlationId)(n,ha.Silent);return await wo(this.silentTokenHelper.bind(this),Yi,this.logger,this.performanceClient,this.correlationId)(a,r)}}logout(){return Promise.reject(Tr($a))}async silentTokenHelper(e,n){const i=n.correlationId;this.performanceClient.addQueueMeasurement(Yi,i);const t=await wo(this.initializeAuthorizationCodeRequest.bind(this),at,this.logger,this.performanceClient,i)(n),a=await wo(e.getAuthCodeUrl.bind(e),rt,this.logger,this.performanceClient,i)({...n,nativeBroker:$s.isNativeAvailable(this.config,this.logger,this.nativeMessageHandler,n.authenticationScheme)}),r=new Vs(e,this.browserStorage,t,this.logger,this.performanceClient),o=await wo(Zs,Ji,this.logger,this.performanceClient,i)(a,this.performanceClient,this.logger,i,this.config.system.navigateFrameWait),s=this.config.auth.OIDCOptions.serverResponseType,d=await wo(ed,Xi,this.logger,this.performanceClient,i)(o,this.config.system.iframeHashTimeout,this.config.system.pollIntervalMilliseconds,this.performanceClient,this.logger,i,s),l=bo(Qs,gt,this.logger,this.performanceClient,this.correlationId)(d,s,this.logger);if(l.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),!this.nativeMessageHandler)throw Tr(gr);const e=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.apiId,this.performanceClient,this.nativeMessageHandler,l.accountId,this.browserStorage,i),{userRequestState:t}=Oo.parseRequestState(this.browserCrypto,n.state);return wo(e.acquireToken.bind(e),Ni,this.logger,this.performanceClient,i)({...n,state:t,prompt:n.prompt||C.NONE})}return wo(r.handleCodeResponse.bind(r),st,this.logger,this.performanceClient,i)(l,n)}}class od extends zs{async acquireToken(e){this.performanceClient.addQueueMeasurement(Ei,e.correlationId);const n=await wo(Os,$i,this.logger,this.performanceClient,e.correlationId)(e,this.config,this.performanceClient,this.logger),i={...e,...n};e.redirectUri&&(i.redirectUri=this.getRedirectUri(e.redirectUri));const t=this.initializeServerTelemetryManager(61),a=await this.createRefreshTokenClient({serverTelemetryManager:t,authorityUrl:i.authority,azureCloudOptions:i.azureCloudOptions,account:i.account});return wo(a.acquireTokenByRefreshToken.bind(a),Hi,this.logger,this.performanceClient,e.correlationId)(i).catch(e=>{throw e.setCorrelationId(this.correlationId),t.cacheFailedRequest(e),e})}logout(){return Promise.reject(Tr($a))}async createRefreshTokenClient(e){const n=await wo(this.getClientConfiguration.bind(this),it,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:e.serverTelemetryManager,requestAuthority:e.authorityUrl,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account});return new Us(n,this.performanceClient)}}class sd{constructor(e,n,i,t){this.isBrowserEnvironment="undefined"!=typeof window,this.config=e,this.storage=n,this.logger=i,this.cryptoObj=t}loadExternalTokens(e,n,i){if(!this.isBrowserEnvironment)throw Tr(nr);const t=e.correlationId||Dr(),a=n.id_token?$e(n.id_token,mo):void 0,r={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache},o=e.authority?new xo(xo.generateAuthority(e.authority,e.azureCloudOptions),this.config.system.networkClient,this.storage,r,this.logger,e.correlationId||Dr()):void 0,s=this.loadAccount(e,i.clientInfo||n.client_info||"",t,a,o),d=this.loadIdToken(n,s.homeAccountId,s.environment,s.realm,t),l=this.loadAccessToken(e,n,s.homeAccountId,s.environment,s.realm,i,t),c=this.loadRefreshToken(n,s.homeAccountId,s.environment,t);return this.generateAuthenticationResult(e,{account:s,idToken:d,accessToken:l,refreshToken:c},a,o)}loadAccount(e,n,i,t,a){if(this.logger.verbose("TokenCache - loading account"),e.account){const n=Vn.createFromAccountInfo(e.account);return this.storage.setAccount(n,i),n}if(!a||!n&&!t)throw this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead."),Tr(sr);const r=Vn.generateHomeAccountId(n,a.authorityType,this.logger,this.cryptoObj,t),o=t?.tid,s=Is(this.storage,a,r,mo,i,t,n,a.hostnameAndPort,o,void 0,void 0,this.logger);return this.storage.setAccount(s,i),s}loadIdToken(e,n,i,t,a){if(!e.id_token)return this.logger.verbose("TokenCache - no id token found in response"),null;this.logger.verbose("TokenCache - loading id token");const r=Xe(n,i,e.id_token,this.config.auth.clientId,t);return this.storage.setIdTokenCredential(r,a),r}loadAccessToken(e,n,i,t,a,r,o){if(!n.access_token)return this.logger.verbose("TokenCache - no access token found in response"),null;if(!n.expires_in)return this.logger.error("TokenCache - no expiration set on the access token. Cannot add it to the cache."),null;if(!(n.scope||e.scopes&&e.scopes.length))return this.logger.error("TokenCache - scopes not specified in the request or response. Cannot add token to the cache."),null;this.logger.verbose("TokenCache - loading access token");const s=n.scope?Hn.fromString(n.scope):new Hn(e.scopes),d=r.expiresOn||n.expires_in+(new Date).getTime()/1e3,l=r.extendedExpiresOn||(n.ext_expires_in||n.expires_in)+(new Date).getTime()/1e3,c=Ze(i,t,n.access_token,this.config.auth.clientId,a,s.printScopes(),d,l,mo);return this.storage.setAccessTokenCredential(c,o),c}loadRefreshToken(e,n,i,t){if(!e.refresh_token)return this.logger.verbose("TokenCache - no refresh token found in response"),null;this.logger.verbose("TokenCache - loading refresh token");const a=en(n,i,e.refresh_token,this.config.auth.clientId,e.foci,void 0,e.refresh_token_expires_in);return this.storage.setRefreshTokenCredential(a,t),a}generateAuthenticationResult(e,n,i,t){let a,r="",o=[],s=null;n?.accessToken&&(r=n.accessToken.secret,o=Hn.fromString(n.accessToken.target).asArray(),s=new Date(1e3*Number(n.accessToken.expiresOn)),a=new Date(1e3*Number(n.accessToken.extendedExpiresOn)));const d=n.account;return{authority:t?t.canonicalAuthority:"",uniqueId:n.account.localAccountId,tenantId:n.account.realm,scopes:o,account:d.getAccountInfo(),idToken:n.idToken?.secret||"",idTokenClaims:i||{},accessToken:r,fromCache:!0,expiresOn:s,correlationId:e.correlationId||"",requestId:"",extExpiresOn:a,familyId:n.refreshToken?.familyId||"",tokenType:n?.accessToken?.tokenType||"",state:e.state||"",cloudGraphHostName:d.cloudGraphHostName||"",msGraphHost:d.msGraphHost||"",fromNativeBroker:!1}}}class dd extends js{constructor(e){super(e),this.includeRedirectUri=!1}}class ld extends zs{constructor(e,n,i,t,a,r,o,s,d,l){super(e,n,i,t,a,r,s,d,l),this.apiId=o}async acquireToken(e){if(!e.code)throw Tr(lr);const n=await wo(this.initializeAuthorizationRequest.bind(this),tt,this.logger,this.performanceClient,e.correlationId)(e,ha.Silent),i=this.initializeServerTelemetryManager(this.apiId);try{const t={...n,code:e.code},a=await wo(this.getClientConfiguration.bind(this),it,this.logger,this.performanceClient,e.correlationId)({serverTelemetryManager:i,requestAuthority:n.authority,requestAzureCloudOptions:n.azureCloudOptions,requestExtraQueryParameters:n.extraQueryParameters,account:n.account}),r=new dd(a);this.logger.verbose("Auth code client created");const o=new Vs(r,this.browserStorage,t,this.logger,this.performanceClient);return await wo(o.handleCodeResponseFromServer.bind(o),ot,this.logger,this.performanceClient,e.correlationId)({code:e.code,msgraph_host:e.msGraphHost,cloud_graph_host_name:e.cloudGraphHostName,cloud_instance_host_name:e.cloudInstanceHostName},n,!1)}catch(e){throw e instanceof Q&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),e}}logout(){return Promise.reject(Tr($a))}}function cd(e){const n=e?.idTokenClaims;return n?.tfp||n?.acr?"B2C":n?.tid?"9188040d-6c67-4c5b-b112-36a304b66dad"===n?.tid?"MSA":"AAD":void 0}function fd(e,n){try{no(e)}catch(e){throw n.end({success:!1},e),e}}class ud{constructor(e){var n,i;this.operatingContext=e,this.isBrowserEnvironment=this.operatingContext.isBrowserEnvironment(),this.config=e.getConfig(),this.initialized=!1,this.logger=this.operatingContext.getLogger(),this.networkClient=this.config.system.networkClient,this.navigationClient=this.config.system.navigationClient,this.redirectResponse=new Map,this.hybridAuthCodeResponses=new Map,this.performanceClient=this.config.telemetry.client,this.browserCrypto=this.isBrowserEnvironment?new yo(this.logger,this.performanceClient):We,this.eventHandler=new ds(this.logger),this.browserStorage=this.isBrowserEnvironment?new Do(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger,function(e){const n=e.cloudDiscoveryMetadata;let i;if(n)try{i=JSON.parse(n)}catch(e){throw qn(In)}return{canonicalAuthority:e.authority?Co(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:i}}(this.config.auth),this.performanceClient):(n=this.config.auth.clientId,i=this.logger,new Do(n,{cacheLocation:Jt,temporaryCacheLocation:Jt,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!1,claimsBasedCachingEnabled:!1},We,i));const t={cacheLocation:Jt,temporaryCacheLocation:Jt,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!1,claimsBasedCachingEnabled:!1};this.nativeInternalStorage=new Do(this.config.auth.clientId,t,this.browserCrypto,this.logger,void 0,this.performanceClient),this.tokenCache=new sd(this.config,this.browserStorage,this.logger,this.browserCrypto),this.activeSilentTokenRequests=new Map,this.trackPageVisibility=this.trackPageVisibility.bind(this),this.trackPageVisibilityWithMeasurement=this.trackPageVisibilityWithMeasurement.bind(this),this.listeningToStorageEvents=!1,this.handleAccountCacheChange=this.handleAccountCacheChange.bind(this)}static async createController(e,n){const i=new ud(e);return await i.initialize(n),i}trackPageVisibility(e){e&&(this.logger.info("Perf: Visibility change detected"),this.performanceClient.incrementFields({visibilityChangeCount:1},e))}async initialize(e){if(this.logger.trace("initialize called"),this.initialized)return void this.logger.info("initialize has already been called, exiting early.");if(!this.isBrowserEnvironment)return this.logger.info("in non-browser environment, exiting early."),this.initialized=!0,void this.eventHandler.emitEvent(Uo);const n=e?.correlationId||this.getRequestCorrelationId(),i=this.config.system.allowNativeBroker,t=this.performanceClient.startMeasurement(Qi,n);if(this.eventHandler.emitEvent("msal:initializeStart"),i)try{this.nativeExtensionProvider=await $s.createProvider(this.logger,this.config.system.nativeBrokerHandshakeTimeout,this.performanceClient)}catch(e){this.logger.verbose(e)}this.config.cache.claimsBasedCachingEnabled||(this.logger.verbose("Claims-based caching is disabled. Clearing the previous cache with claims"),await wo(this.browserStorage.clearTokensAndKeysWithClaims.bind(this.browserStorage),Mt,this.logger,this.performanceClient,n)(this.performanceClient,n)),this.initialized=!0,this.eventHandler.emitEvent(Uo),t.end({allowNativeBroker:i,success:!0})}async handleRedirectPromise(e){if(this.logger.verbose("handleRedirectPromise called"),eo(this.initialized),this.isBrowserEnvironment){const n=e||"";let i=this.redirectResponse.get(n);return void 0===i?(i=this.handleRedirectPromiseInternal(e),this.redirectResponse.set(n,i),this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise")):this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"),i}return this.logger.verbose("handleRedirectPromise returns null, not browser environment"),null}async handleRedirectPromiseInternal(e){const n=this.getAllAccounts(),i=this.browserStorage.getCachedNativeRequest(),t=i&&$s.isNativeAvailable(this.config,this.logger,this.nativeExtensionProvider)&&this.nativeExtensionProvider&&!e,a=t?i?.correlationId:this.browserStorage.getTemporaryCache(aa,!0)||"",r=this.performanceClient.startMeasurement(Si,a);let o;if(this.eventHandler.emitEvent(es,ha.Redirect),t&&this.nativeExtensionProvider){this.logger.trace("handleRedirectPromise - acquiring token from native platform");const e=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,865,this.performanceClient,this.nativeExtensionProvider,i.accountId,this.nativeInternalStorage,i.correlationId);o=wo(e.handleRedirectPromise.bind(e),jt,this.logger,this.performanceClient,r.event.correlationId)(this.performanceClient,r.event.correlationId)}else{this.logger.trace("handleRedirectPromise - acquiring token from web flow");const n=this.createRedirectClient(a);o=wo(n.handleRedirectPromise.bind(n),At,this.logger,this.performanceClient,r.event.correlationId)(e,r)}return o.then(e=>(e?(n.length<this.getAllAccounts().length?(this.eventHandler.emitEvent(Ko,ha.Redirect,e),this.logger.verbose("handleRedirectResponse returned result, login success")):(this.eventHandler.emitEvent(Vo,ha.Redirect,e),this.logger.verbose("handleRedirectResponse returned result, acquire token success")),r.end({success:!0,accountType:cd(e.account)})):r.event.errorCode?r.end({success:!1}):r.discard(),this.eventHandler.emitEvent(ns,ha.Redirect),e)).catch(e=>{const i=e;throw n.length>0?this.eventHandler.emitEvent(Qo,ha.Redirect,null,i):this.eventHandler.emitEvent(Go,ha.Redirect,null,i),this.eventHandler.emitEvent(ns,ha.Redirect),r.end({success:!1},i),e})}async acquireTokenRedirect(e){const n=this.getRequestCorrelationId(e);this.logger.verbose("acquireTokenRedirect called",n);const i=this.performanceClient.startMeasurement("acquireTokenPreRedirect",n);i.add({accountType:cd(e.account),scenarioId:e.scenarioId});const t=e.onRedirectNavigate;if(t)e.onRedirectNavigate=e=>{const n="function"==typeof t?t(e):void 0;return!1!==n?i.end({success:!0}):i.discard(),n};else{const e=this.config.auth.onRedirectNavigate;this.config.auth.onRedirectNavigate=n=>{const t="function"==typeof e?e(n):void 0;return!1!==t?i.end({success:!0}):i.discard(),t}}const a=this.getAllAccounts().length>0;try{let t;return io(this.initialized,this.config),this.browserStorage.setInteractionInProgress(!0),a?this.eventHandler.emitEvent($o,ha.Redirect,e):this.eventHandler.emitEvent(Wo,ha.Redirect,e),t=this.nativeExtensionProvider&&this.canUseNative(e)?new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,fa,this.performanceClient,this.nativeExtensionProvider,this.getNativeAccountId(e),this.nativeInternalStorage,n).acquireTokenRedirect(e,i).catch(i=>{if(i instanceof Bs&&Hs(i))return this.nativeExtensionProvider=void 0,this.createRedirectClient(n).acquireToken(e);if(i instanceof Mo)return this.logger.verbose("acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow"),this.createRedirectClient(n).acquireToken(e);throw this.browserStorage.setInteractionInProgress(!1),i}):this.createRedirectClient(n).acquireToken(e),await t}catch(e){throw i.end({success:!1},e),a?this.eventHandler.emitEvent(Qo,ha.Redirect,null,e):this.eventHandler.emitEvent(Go,ha.Redirect,null,e),e}}acquireTokenPopup(e){const n=this.getRequestCorrelationId(e),i=this.performanceClient.startMeasurement(Ci,n);i.add({scenarioId:e.scenarioId,accountType:cd(e.account)});try{this.logger.verbose("acquireTokenPopup called",n),fd(this.initialized,i),this.browserStorage.setInteractionInProgress(!0)}catch(e){return Promise.reject(e)}const t=this.getAllAccounts();let a;return t.length>0?this.eventHandler.emitEvent($o,ha.Popup,e):this.eventHandler.emitEvent(Wo,ha.Popup,e),a=this.canUseNative(e)?this.acquireTokenNative({...e,correlationId:n},ua).then(e=>(this.browserStorage.setInteractionInProgress(!1),i.end({success:!0,isNativeBroker:!0,accountType:cd(e.account)}),e)).catch(i=>{if(i instanceof Bs&&Hs(i))return this.nativeExtensionProvider=void 0,this.createPopupClient(n).acquireToken(e);if(i instanceof Mo)return this.logger.verbose("acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow"),this.createPopupClient(n).acquireToken(e);throw this.browserStorage.setInteractionInProgress(!1),i}):this.createPopupClient(n).acquireToken(e),a.then(e=>(t.length<this.getAllAccounts().length?this.eventHandler.emitEvent(Ko,ha.Popup,e):this.eventHandler.emitEvent(Vo,ha.Popup,e),i.end({success:!0,accessTokenSize:e.accessToken.length,idTokenSize:e.idToken.length,accountType:cd(e.account)}),e)).catch(e=>(t.length>0?this.eventHandler.emitEvent(Qo,ha.Popup,null,e):this.eventHandler.emitEvent(Go,ha.Popup,null,e),i.end({success:!1},e),Promise.reject(e)))}trackPageVisibilityWithMeasurement(){const e=this.ssoSilentMeasurement||this.acquireTokenByCodeAsyncMeasurement;e&&(this.logger.info("Perf: Visibility change detected in ",e.event.name),e.increment({visibilityChangeCount:1}))}async ssoSilent(e){const n=this.getRequestCorrelationId(e),i={...e,prompt:e.prompt,correlationId:n};let t;return this.ssoSilentMeasurement=this.performanceClient.startMeasurement(Pi,n),this.ssoSilentMeasurement?.add({scenarioId:e.scenarioId,accountType:cd(e.account)}),fd(this.initialized,this.ssoSilentMeasurement),this.ssoSilentMeasurement?.increment({visibilityChangeCount:0}),document.addEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement),this.logger.verbose("ssoSilent called",n),this.eventHandler.emitEvent(Yo,ha.Silent,i),t=this.canUseNative(i)?this.acquireTokenNative(i,863).catch(e=>{if(e instanceof Bs&&Hs(e))return this.nativeExtensionProvider=void 0,this.createSilentIframeClient(i.correlationId).acquireToken(i);throw e}):this.createSilentIframeClient(i.correlationId).acquireToken(i),t.then(e=>(this.eventHandler.emitEvent(Jo,ha.Silent,e),this.ssoSilentMeasurement?.end({success:!0,isNativeBroker:e.fromNativeBroker,accessTokenSize:e.accessToken.length,idTokenSize:e.idToken.length,accountType:cd(e.account)}),e)).catch(e=>{throw this.eventHandler.emitEvent(Xo,ha.Silent,null,e),this.ssoSilentMeasurement?.end({success:!1},e),e}).finally(()=>{document.removeEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement)})}async acquireTokenByCode(e){const n=this.getRequestCorrelationId(e);this.logger.trace("acquireTokenByCode called",n);const i=this.performanceClient.startMeasurement(bi,n);fd(this.initialized,i),this.eventHandler.emitEvent("msal:acquireTokenByCodeStart",ha.Silent,e),i.add({scenarioId:e.scenarioId});try{if(e.code&&e.nativeAccountId)throw Tr(fr);if(e.code){const t=e.code;let a=this.hybridAuthCodeResponses.get(t);return a?(this.logger.verbose("Existing acquireTokenByCode request found",n),i.discard()):(this.logger.verbose("Initiating new acquireTokenByCode request",n),a=this.acquireTokenByCodeAsync({...e,correlationId:n}).then(e=>(this.eventHandler.emitEvent("msal:acquireTokenByCodeSuccess",ha.Silent,e),this.hybridAuthCodeResponses.delete(t),i.end({success:!0,isNativeBroker:e.fromNativeBroker,accessTokenSize:e.accessToken.length,idTokenSize:e.idToken.length,accountType:cd(e.account)}),e)).catch(e=>{throw this.hybridAuthCodeResponses.delete(t),this.eventHandler.emitEvent(Zo,ha.Silent,null,e),i.end({success:!1},e),e}),this.hybridAuthCodeResponses.set(t,a)),await a}if(e.nativeAccountId){if(this.canUseNative(e,e.nativeAccountId)){const t=await this.acquireTokenNative({...e,correlationId:n},866,e.nativeAccountId).catch(e=>{throw e instanceof Bs&&Hs(e)&&(this.nativeExtensionProvider=void 0),e});return i.end({accountType:cd(t.account),success:!0}),t}throw Tr(hr)}throw Tr(cr)}catch(e){throw this.eventHandler.emitEvent(Zo,ha.Silent,null,e),i.end({success:!1},e),e}}async acquireTokenByCodeAsync(e){this.logger.trace("acquireTokenByCodeAsync called",e.correlationId),this.acquireTokenByCodeAsyncMeasurement=this.performanceClient.startMeasurement(It,e.correlationId),this.acquireTokenByCodeAsyncMeasurement?.increment({visibilityChangeCount:0}),document.addEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement);const n=this.createSilentAuthCodeClient(e.correlationId);return await n.acquireToken(e).then(e=>(this.acquireTokenByCodeAsyncMeasurement?.end({success:!0,fromCache:e.fromCache,isNativeBroker:e.fromNativeBroker}),e)).catch(e=>{throw this.acquireTokenByCodeAsyncMeasurement?.end({success:!1},e),e}).finally(()=>{document.removeEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement)})}async acquireTokenFromCache(e,n){switch(this.performanceClient.addQueueMeasurement(Ui,e.correlationId),n){case 0:case 1:case 2:const n=this.createSilentCacheClient(e.correlationId);return wo(n.acquireToken.bind(n),Ai,this.logger,this.performanceClient,e.correlationId)(e);default:throw Ue(je)}}async acquireTokenByRefreshToken(e,n){switch(this.performanceClient.addQueueMeasurement(wi,e.correlationId),n){case 0:case 2:case 3:case 4:const n=this.createSilentRefreshClient(e.correlationId);return wo(n.acquireToken.bind(n),Ei,this.logger,this.performanceClient,e.correlationId)(e);default:throw Ue(je)}}async acquireTokenBySilentIframe(e){this.performanceClient.addQueueMeasurement(Gi,e.correlationId);const n=this.createSilentIframeClient(e.correlationId);return wo(n.acquireToken.bind(n),ji,this.logger,this.performanceClient,e.correlationId)(e)}async logout(e){const n=this.getRequestCorrelationId(e);return this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.",n),this.logoutRedirect({correlationId:n,...e})}async logoutRedirect(e){const n=this.getRequestCorrelationId(e);return io(this.initialized,this.config),this.browserStorage.setInteractionInProgress(!0),this.createRedirectClient(n).logout(e)}logoutPopup(e){try{const n=this.getRequestCorrelationId(e);return no(this.initialized),this.browserStorage.setInteractionInProgress(!0),this.createPopupClient(n).logout(e)}catch(e){return Promise.reject(e)}}async clearCache(e){if(!this.isBrowserEnvironment)return void this.logger.info("in non-browser environment, returning early.");const n=this.getRequestCorrelationId(e);return this.createSilentCacheClient(n).logout(e)}getAllAccounts(e){const n=this.getRequestCorrelationId();return function(e,n,i,t,a){return e.verbose("getAllAccounts called"),i?n.getAllAccounts(t,a):[]}(this.logger,this.browserStorage,this.isBrowserEnvironment,n,e)}getAccount(e){const n=this.getRequestCorrelationId();return function(e,n,i,t){if(n.trace("getAccount called"),0===Object.keys(e).length)return n.warning("getAccount: No accountFilter provided"),null;const a=i.getAccountInfoFilteredBy(e,t);return a?(n.verbose("getAccount: Account matching provided filter found, returning"),a):(n.verbose("getAccount: No matching account found, returning null"),null)}(e,this.logger,this.browserStorage,n)}getAccountByUsername(e){const n=this.getRequestCorrelationId();return function(e,n,i,t){if(n.trace("getAccountByUsername called"),!e)return n.warning("getAccountByUsername: No username provided"),null;const a=i.getAccountInfoFilteredBy({username:e},t);return a?(n.verbose("getAccountByUsername: Account matching username found, returning"),n.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${e}`),a):(n.verbose("getAccountByUsername: No matching account found, returning null"),null)}(e,this.logger,this.browserStorage,n)}getAccountByHomeId(e){const n=this.getRequestCorrelationId();return function(e,n,i,t){if(n.trace("getAccountByHomeId called"),!e)return n.warning("getAccountByHomeId: No homeAccountId provided"),null;const a=i.getAccountInfoFilteredBy({homeAccountId:e},t);return a?(n.verbose("getAccountByHomeId: Account matching homeAccountId found, returning"),n.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${e}`),a):(n.verbose("getAccountByHomeId: No matching account found, returning null"),null)}(e,this.logger,this.browserStorage,n)}getAccountByLocalId(e){const n=this.getRequestCorrelationId();return function(e,n,i,t){if(n.trace("getAccountByLocalId called"),!e)return n.warning("getAccountByLocalId: No localAccountId provided"),null;const a=i.getAccountInfoFilteredBy({localAccountId:e},t);return a?(n.verbose("getAccountByLocalId: Account matching localAccountId found, returning"),n.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${e}`),a):(n.verbose("getAccountByLocalId: No matching account found, returning null"),null)}(e,this.logger,this.browserStorage,n)}setActiveAccount(e){const n=this.getRequestCorrelationId();!function(e,n,i){n.setActiveAccount(e,i)}(e,this.browserStorage,n)}getActiveAccount(){const e=this.getRequestCorrelationId();return function(e,n){return e.getActiveAccount(n)}(this.browserStorage,e)}async hydrateCache(e,n){this.logger.verbose("hydrateCache called");const i=Vn.createFromAccountInfo(e.account,e.cloudGraphHostName,e.msGraphHost);return this.browserStorage.setAccount(i,e.correlationId),e.fromNativeBroker?(this.logger.verbose("Response was from native broker, storing in-memory"),this.nativeInternalStorage.hydrateCache(e,n)):this.browserStorage.hydrateCache(e,n)}async acquireTokenNative(e,n,i){if(this.logger.trace("acquireTokenNative called"),!this.nativeExtensionProvider)throw Tr(gr);return new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,n,this.performanceClient,this.nativeExtensionProvider,i||this.getNativeAccountId(e),this.nativeInternalStorage,e.correlationId).acquireToken(e)}canUseNative(e,n){if(this.logger.trace("canUseNative called"),!$s.isNativeAvailable(this.config,this.logger,this.nativeExtensionProvider,e.authenticationScheme))return this.logger.trace("canUseNative: isNativeAvailable returned false, returning false"),!1;if(e.prompt)switch(e.prompt){case C.NONE:case C.CONSENT:case C.LOGIN:this.logger.trace("canUseNative: prompt is compatible with native flow");break;default:return this.logger.trace(`canUseNative: prompt = ${e.prompt} is not compatible with native flow, returning false`),!1}return!(!n&&!this.getNativeAccountId(e)&&(this.logger.trace("canUseNative: nativeAccountId is not available, returning false"),1))}getNativeAccountId(e){const n=e.account||this.getAccount({loginHint:e.loginHint,sid:e.sid})||this.getActiveAccount();return n&&n.nativeAccountId||""}createPopupClient(e){return new Ys(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createRedirectClient(e){return new Xs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createSilentIframeClient(e){return new rd(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,863,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createSilentCacheClient(e){return new Ks(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeExtensionProvider,e)}createSilentRefreshClient(e){return new od(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeExtensionProvider,e)}createSilentAuthCodeClient(e){return new ld(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,866,this.performanceClient,this.nativeExtensionProvider,e)}addEventCallback(e,n){return this.eventHandler.addEventCallback(e,n)}removeEventCallback(e){this.eventHandler.removeEventCallback(e)}addPerformanceCallback(e){return Zr(),this.performanceClient.addPerformanceCallback(e)}removePerformanceCallback(e){return this.performanceClient.removePerformanceCallback(e)}enableAccountStorageEvents(){"undefined"!=typeof window&&(this.listeningToStorageEvents?this.logger.verbose("Account storage listener already registered."):(this.logger.verbose("Adding account storage listener."),this.listeningToStorageEvents=!0,window.addEventListener("storage",this.handleAccountCacheChange)))}disableAccountStorageEvents(){"undefined"!=typeof window&&(this.listeningToStorageEvents?(this.logger.verbose("Removing account storage listener."),window.removeEventListener("storage",this.handleAccountCacheChange),this.listeningToStorageEvents=!1):this.logger.verbose("No account storage listener registered."))}handleAccountCacheChange(e){try{e.key?.includes(k)&&this.eventHandler.emitEvent("msal:activeAccountChanged");const n=e.newValue||e.oldValue;if(!n)return;const i=JSON.parse(n);if("object"!=typeof i||!Vn.isAccountEntity(i))return;const t=di.toObject(new Vn,i).getAccountInfo();!e.oldValue&&e.newValue?(this.logger.info("Account was added to cache in a different window"),this.eventHandler.emitEvent("msal:accountAdded",void 0,t)):!e.newValue&&e.oldValue&&(this.logger.info("Account was removed from cache in a different window"),this.eventHandler.emitEvent("msal:accountRemoved",void 0,t))}catch(e){return}}getTokenCache(){return this.tokenCache}getLogger(){return this.logger}setLogger(e){this.logger=e}initializeWrapperLibrary(e,n){this.browserStorage.setWrapperMetadata(e,n)}setNavigationClient(e){this.navigationClient=e}getConfiguration(){return this.config}getPerformanceClient(){return this.performanceClient}isBrowserEnv(){return this.isBrowserEnvironment}getRequestCorrelationId(e){return e?.correlationId?e.correlationId:this.isBrowserEnvironment?Dr():r.EMPTY_STRING}async loginRedirect(e){const n=this.getRequestCorrelationId(e);return this.logger.verbose("loginRedirect called",n),this.acquireTokenRedirect({correlationId:n,...e||_a})}loginPopup(e){const n=this.getRequestCorrelationId(e);return this.logger.verbose("loginPopup called",n),this.acquireTokenPopup({correlationId:n,...e||_a})}async acquireTokenSilent(e){const n=this.getRequestCorrelationId(e),i=this.performanceClient.startMeasurement(_i,n);i.add({cacheLookupPolicy:e.cacheLookupPolicy,scenarioId:e.scenarioId}),fd(this.initialized,i),this.logger.verbose("acquireTokenSilent called",n);const t=e.account||this.getActiveAccount();if(!t)throw Tr(Va);i.add({accountType:cd(t)});const a={clientId:this.config.auth.clientId,authority:e.authority||r.EMPTY_STRING,scopes:e.scopes,homeAccountIdentifier:t.homeAccountId,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid,shrOptions:e.shrOptions},o=JSON.stringify(a),s=this.activeSilentTokenRequests.get(o);if(void 0===s){this.logger.verbose("acquireTokenSilent called for the first time, storing active request",n);const a=wo(this.acquireTokenSilentAsync.bind(this),xi,this.logger,this.performanceClient,n)({...e,correlationId:n},t).then(n=>(this.activeSilentTokenRequests.delete(o),i.end({success:!0,fromCache:n.fromCache,isNativeBroker:n.fromNativeBroker,cacheLookupPolicy:e.cacheLookupPolicy,accessTokenSize:n.accessToken.length,idTokenSize:n.idToken.length}),n)).catch(e=>{throw this.activeSilentTokenRequests.delete(o),i.end({success:!1},e),e});return this.activeSilentTokenRequests.set(o,a),{...await a,state:e.state}}return this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call",n),i.discard(),{...await s,state:e.state}}async acquireTokenSilentAsync(e,n){const i=()=>this.trackPageVisibility(e.correlationId);this.performanceClient.addQueueMeasurement(xi,e.correlationId),this.eventHandler.emitEvent($o,ha.Silent,e),e.correlationId&&this.performanceClient.incrementFields({visibilityChangeCount:0},e.correlationId),document.addEventListener("visibilitychange",i);const t=await wo(Fs,Vi,this.logger,this.performanceClient,e.correlationId)(e,n,this.config,this.performanceClient,this.logger),a=e.cacheLookupPolicy||0;return this.acquireTokenSilentNoIframe(t,a).catch(async e=>{const n=function(e,n){const i=!(e instanceof Mo&&e.subError!==Ao),t=e.errorCode===Dt||e.errorCode===je,a=i&&t||e.errorCode===So||e.errorCode===Io,r=Sa.includes(n);return a&&r}(e,a);if(n){if(this.activeIframeRequest){if(5!==a){const[n,i]=this.activeIframeRequest;this.logger.verbose(`Iframe request is already in progress, awaiting resolution for request with correlationId: ${i}`,t.correlationId);const r=this.performanceClient.startMeasurement("awaitConcurrentIframe",t.correlationId);r.add({awaitIframeCorrelationId:i});const o=await n;if(r.end({success:o}),o)return this.logger.verbose(`Parallel iframe request with correlationId: ${i} succeeded. Retrying cache and/or RT redemption`,t.correlationId),this.acquireTokenSilentNoIframe(t,a);throw this.logger.info(`Iframe request with correlationId: ${i} failed. Interaction is required.`),e}return this.logger.warning("Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.",t.correlationId),wo(this.acquireTokenBySilentIframe.bind(this),Gi,this.logger,this.performanceClient,t.correlationId)(t)}{let e;return this.activeIframeRequest=[new Promise(n=>{e=n}),t.correlationId],this.logger.verbose("Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.",t.correlationId),wo(this.acquireTokenBySilentIframe.bind(this),Gi,this.logger,this.performanceClient,t.correlationId)(t).then(n=>(e(!0),n)).catch(n=>{throw e(!1),n}).finally(()=>{this.activeIframeRequest=void 0})}}throw e}).then(n=>(this.eventHandler.emitEvent(Vo,ha.Silent,n),e.correlationId&&this.performanceClient.addFields({fromCache:n.fromCache,isNativeBroker:n.fromNativeBroker},e.correlationId),n)).catch(e=>{throw this.eventHandler.emitEvent(Qo,ha.Silent,null,e),e}).finally(()=>{document.removeEventListener("visibilitychange",i)})}async acquireTokenSilentNoIframe(e,n){return $s.isNativeAvailable(this.config,this.logger,this.nativeExtensionProvider,e.authenticationScheme)&&e.account.nativeAccountId?(this.logger.verbose("acquireTokenSilent - attempting to acquire token from native platform"),this.acquireTokenNative(e,61).catch(async e=>{if(e instanceof Bs&&Hs(e))throw this.logger.verbose("acquireTokenSilent - native platform unavailable, falling back to web flow"),this.nativeExtensionProvider=void 0,Ue(je);throw e})):(this.logger.verbose("acquireTokenSilent - attempting to acquire token from web flow"),wo(this.acquireTokenFromCache.bind(this),Ui,this.logger,this.performanceClient,e.correlationId)(e,n).catch(i=>{if(1===n)throw i;return this.eventHandler.emitEvent("msal:acquireTokenFromNetworkStart",ha.Silent,e),wo(this.acquireTokenByRefreshToken.bind(this),wi,this.logger,this.performanceClient,e.correlationId)(e,n)}))}}class hd{static async createPublicClientApplication(e){const n=await async function(e){const n=new oo(e);return await n.initialize(),ud.createController(n,void 0)}(e);return new hd(e,n)}constructor(e,n){this.controller=n||new ud(new oo(e))}async initialize(e){return this.controller.initialize(e)}async acquireTokenPopup(e){return this.controller.acquireTokenPopup(e)}acquireTokenRedirect(e){return this.controller.acquireTokenRedirect(e)}acquireTokenSilent(e){return this.controller.acquireTokenSilent(e)}acquireTokenByCode(e){return this.controller.acquireTokenByCode(e)}addEventCallback(e,n){return this.controller.addEventCallback(e,n)}removeEventCallback(e){return this.controller.removeEventCallback(e)}addPerformanceCallback(e){return this.controller.addPerformanceCallback(e)}removePerformanceCallback(e){return this.controller.removePerformanceCallback(e)}enableAccountStorageEvents(){this.controller.enableAccountStorageEvents()}disableAccountStorageEvents(){this.controller.disableAccountStorageEvents()}getAccount(e){return this.controller.getAccount(e)}getAccountByHomeId(e){return this.controller.getAccountByHomeId(e)}getAccountByLocalId(e){return this.controller.getAccountByLocalId(e)}getAccountByUsername(e){return this.controller.getAccountByUsername(e)}getAllAccounts(e){return this.controller.getAllAccounts(e)}handleRedirectPromise(e){return this.controller.handleRedirectPromise(e)}loginPopup(e){return this.controller.loginPopup(e)}loginRedirect(e){return this.controller.loginRedirect(e)}logout(e){return this.controller.logout(e)}logoutRedirect(e){return this.controller.logoutRedirect(e)}logoutPopup(e){return this.controller.logoutPopup(e)}ssoSilent(e){return this.controller.ssoSilent(e)}getTokenCache(){return this.controller.getTokenCache()}getLogger(){return this.controller.getLogger()}setLogger(e){this.controller.setLogger(e)}setActiveAccount(e){this.controller.setActiveAccount(e)}getActiveAccount(){return this.controller.getActiveAccount()}initializeWrapperLibrary(e,n){return this.controller.initializeWrapperLibrary(e,n)}setNavigationClient(e){this.controller.setNavigationClient(e)}getConfiguration(){return this.controller.getConfiguration()}async hydrateCache(e,n){return this.controller.hydrateCache(e,n)}clearCache(e){return this.controller.clearCache(e)}}const md={instance:{initialize:()=>Promise.reject(Yr(Gr)),acquireTokenPopup:()=>Promise.reject(Yr(Gr)),acquireTokenRedirect:()=>Promise.reject(Yr(Gr)),acquireTokenSilent:()=>Promise.reject(Yr(Gr)),acquireTokenByCode:()=>Promise.reject(Yr(Gr)),getAllAccounts:()=>[],getAccount:()=>null,getAccountByHomeId:()=>null,getAccountByUsername:()=>null,getAccountByLocalId:()=>null,handleRedirectPromise:()=>Promise.reject(Yr(Gr)),loginPopup:()=>Promise.reject(Yr(Gr)),loginRedirect:()=>Promise.reject(Yr(Gr)),logout:()=>Promise.reject(Yr(Gr)),logoutRedirect:()=>Promise.reject(Yr(Gr)),logoutPopup:()=>Promise.reject(Yr(Gr)),ssoSilent:()=>Promise.reject(Yr(Gr)),addEventCallback:()=>null,removeEventCallback:()=>{},addPerformanceCallback:()=>"",removePerformanceCallback:()=>!1,enableAccountStorageEvents:()=>{},disableAccountStorageEvents:()=>{},getTokenCache:()=>{throw Yr(Gr)},getLogger:()=>{throw Yr(Gr)},setLogger:()=>{},setActiveAccount:()=>{},getActiveAccount:()=>null,initializeWrapperLibrary:()=>{},setNavigationClient:()=>{},getConfiguration:()=>{throw Yr(Gr)},hydrateCache:()=>Promise.reject(Yr(Gr)),clearCache:()=>Promise.reject(Yr(Gr))},inProgress:wa,accounts:[],logger:new D({})},pd=t.createContext(md);pd.Consumer;class gd{static getInteractionStatusFromEvent(e,n){switch(e.eventType){case Wo:return ga;case Yo:return ka;case $o:if(e.interactionType===ha.Redirect||e.interactionType===ha.Popup)return ya;break;case es:return ba;case ts:return va;case Jo:case Xo:if(n&&n!==ka)break;return wa;case os:if(n&&n!==va)break;return wa;case ns:if(n&&n!==ba)break;return wa;case Ko:case Go:case Vo:case Qo:case ss:if(e.interactionType===ha.Redirect||e.interactionType===ha.Popup){if(n&&n!==ga&&n!==ya)break;return wa}}return null}}function vd(e,n){if(e.length!==n.length)return!1;const i=[...n];return e.every(e=>{const n=i.shift();return!(!e||!n)&&e.homeAccountId===n.homeAccountId&&e.localAccountId===n.localAccountId&&e.username===n.username})}const yd="2.2.0",kd="UNBLOCK_INPROGRESS",bd="EVENT",wd=(e,n)=>{const{type:i,payload:t}=n;let a=e.inProgress;switch(i){case kd:e.inProgress===pa&&(a=wa,t.logger.info("MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'"));break;case bd:const n=t.message,r=gd.getInteractionStatusFromEvent(n,e.inProgress);r&&(t.logger.info(`MsalProvider - ${n.eventType} results in setting inProgress from ${e.inProgress} to ${r}`),a=r);break;default:throw new Error(`Unknown action type: ${i}`)}const r=t.instance.getAllAccounts();return a===e.inProgress||vd(r,e.accounts)?a!==e.inProgress?{...e,inProgress:a}:vd(r,e.accounts)?e:{...e,accounts:r}:{...e,inProgress:a,accounts:r}};function _d({instance:e,children:n}){(0,t.useEffect)(()=>{e.initializeWrapperLibrary("@azure/msal-react",yd)},[e]);const i=(0,t.useMemo)(()=>e.getLogger().clone("@azure/msal-react",yd),[e]),[a,r]=(0,t.useReducer)(wd,void 0,()=>({inProgress:pa,accounts:e.getAllAccounts()}));(0,t.useEffect)(()=>{const n=e.addEventCallback(n=>{r({payload:{instance:e,logger:i,message:n},type:bd})});return i.verbose(`MsalProvider - Registered event callback with id: ${n}`),e.initialize().then(()=>{e.handleRedirectPromise().catch(()=>{}).finally(()=>{r({payload:{instance:e,logger:i},type:kd})})}).catch(()=>{}),()=>{n&&(i.verbose(`MsalProvider - Removing event callback ${n}`),e.removeEventCallback(n))}},[e,i]);const o={instance:e,inProgress:a.inProgress,accounts:a.accounts,logger:i};return t.createElement(pd.Provider,{value:o},n)}const xd=()=>(0,t.useContext)(pd);var Cd={auth:{clientId:"154c9111-14a0-4c0f-8132-7bc68254a74e",authority:"https://login.microsoftonline.com/891f98f1-ed34-42a1-9b6c-28b0554d92c2",redirectUri:window.location.origin,postLogoutRedirectUri:window.location.origin},cache:{cacheLocation:"sessionStorage",storeAuthStateInCookie:!1}},Sd={scopes:["openid","profile","email"]},Td="https://adpmgmt.usimdev.com",Id="https://adsapi.usimdev.com",Ad=i(848);function jd(e){return jd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},jd(e)}function Ed(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,t)}return i}function Pd(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?Ed(Object(i),!0).forEach(function(n){Md(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):Ed(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Md(e,n,i){return(n=function(e){var n=function(e){if("object"!=jd(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=jd(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==jd(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function Rd(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Nd(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Nd(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Nd(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Nd(f,"constructor",l),Nd(l,"constructor",d),d.displayName="GeneratorFunction",Nd(l,a,"GeneratorFunction"),Nd(f),Nd(f,a,"Generator"),Nd(f,t,function(){return this}),Nd(f,"toString",function(){return"[object Generator]"}),(Rd=function(){return{w:r,m:u}})()}function Nd(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Nd=function(e,n,i,t){function r(n,i){Nd(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Nd(e,n,i,t)}function Od(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function Fd(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Od(r,t,a,o,s,"next",e)}function s(e){Od(r,t,a,o,s,"throw",e)}o(void 0)})}}function zd(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Ld(e,n);var i={}.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)?Ld(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ld(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var qd=new hd(Cd),Bd=(0,t.createContext)(null);function Hd(){return(0,t.useContext)(Bd)}function Dd(e){var n=e.children,i=xd(),a=i.instance,r=i.accounts,o=i.inProgress,s=function(e){const{accounts:n,inProgress:i}=xd(),a=(0,t.useMemo)(()=>i!==pa&&function(e,n){return n&&(n.username||n.homeAccountId||n.localAccountId)?!!function(e,n){return e.length>0&&(n.homeAccountId||n.localAccountId||n.username)&&e.filter(e=>!(n.username&&n.username.toLowerCase()!==e.username.toLowerCase()||n.homeAccountId&&n.homeAccountId.toLowerCase()!==e.homeAccountId.toLowerCase()||n.localAccountId&&n.localAccountId.toLowerCase()!==e.localAccountId.toLowerCase()))[0]||null}(e,n):e.length>0}(n,e),[n,i,e]);return a}(),d=zd((0,t.useState)(!1),2),l=d[0],c=d[1],f=zd((0,t.useState)({isLoading:!0,isSignedIn:!1,isRegistered:!1,needsRegistration:!1,user:null,session:null,clients:[],error:null}),2),u=f[0],h=f[1];(0,t.useEffect)(function(){var e=function(){var e=Fd(Rd().m(function e(){var n;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,a.initialize();case 1:return e.n=2,a.handleRedirectPromise();case 2:console.log("[Auth] MSAL initialized"),e.n=4;break;case 3:e.p=3,n=e.v,console.warn("[Auth] MSAL init:",n.message);case 4:c(!0);case 5:return e.a(2)}},e,null,[[0,3]])}));return function(){return e.apply(this,arguments)}}();e()},[a]);var m=(0,t.useCallback)(Fd(Rd().m(function e(){var n,i;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:if(0!==r.length){e.n=1;break}return e.a(2,null);case 1:return e.p=1,e.n=2,a.acquireTokenSilent(Pd(Pd({},Sd),{},{account:r[0]}));case 2:return n=e.v,e.a(2,n.idToken);case 3:return e.p=3,i=e.v,console.error("[Auth] Token acquisition failed:",i),e.a(2,null)}},e,null,[[1,3]])})),[a,r]),p=(0,t.useCallback)(Fd(Rd().m(function e(){var n,i,t,a,r;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,m();case 1:if(n=e.v){e.n=2;break}return e.a(2,null);case 2:return e.p=2,console.log("[Auth] Checking registration at:","".concat(Td,"/api/onboarding/status")),e.n=3,fetch("".concat(Td,"/api/onboarding/status"),{headers:{Authorization:"Bearer ".concat(n)}});case 3:return i=e.v,e.n=4,i.json();case 4:return t=e.v,console.log("[Auth] Registration status RAW:",JSON.stringify(t,null,2)),a=Pd({},t),t.data&&"object"===jd(t.data)&&Object.assign(a,t.data),console.log("[Auth] Registration status normalized:",JSON.stringify(a,null,2)),e.a(2,a);case 5:return e.p=5,r=e.v,console.error("[Auth] Registration check failed:",r),e.a(2,null)}},e,null,[[2,5]])})),[m]),g=(0,t.useCallback)(function(){var e=Fd(Rd().m(function e(n){var i,t,a;return Rd().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,m();case 1:if(i=e.v){e.n=2;break}throw new Error("Not authenticated");case 2:return e.n=3,fetch("".concat(Td,"/api/onboarding/register"),{method:"POST",headers:{Authorization:"Bearer ".concat(i),"Content-Type":"application/json"},body:JSON.stringify({clientName:n})});case 3:return t=e.v,e.n=4,t.json();case 4:if((a=e.v).ok){e.n=5;break}throw new Error(a.error||"Registration failed");case 5:return e.a(2,a)}},e)}));return function(n){return e.apply(this,arguments)}}(),[m]),v=(0,t.useCallback)(Fd(Rd().m(function e(){var n,i,t,a,r;return Rd().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,m();case 1:if(n=e.v){e.n=2;break}throw new Error("Not authenticated");case 2:return console.log("[Auth] Creating session at:","".concat(Id,"/api/auth/session")),e.n=3,fetch("".concat(Id,"/api/auth/session"),{method:"POST",headers:{Authorization:"Bearer ".concat(n),"Content-Type":"application/json"},body:JSON.stringify({})});case 3:return i=e.v,e.n=4,i.json();case 4:if(t=e.v,console.log("[Auth] Gateway session RAW response:",JSON.stringify(t,null,2)),t.ok){e.n=5;break}throw new Error(t.error||"Session creation failed");case 5:if(a=t.data||t,console.log("[Auth] Session raw payload keys:",Object.keys(a)),r={sessionToken:a.sessionToken||a.token||a.session_token||a.sesToken,sessionId:a.sessionId||a.session_id||a.sesId,clientId:a.clientId||a.client_id||a.cltId,clientName:a.clientName||a.client_name||a.cltName,userId:a.userId||a.user_id||a.usrId,userEmail:a.userEmail||a.user_email||a.email||a.usrEmail,role:a.role||a.userRole||a.sesRole},console.log("[Auth] Normalized session:",JSON.stringify(r,null,2)),r.sessionToken){e.n=6;break}throw console.error("[Auth] ⚠ No sessionToken found! Raw keys:",Object.keys(a)),console.error("[Auth] ⚠ Full raw data:",JSON.stringify(a,null,2)),new Error("Session created but no token in response. Check browser console for raw Gateway response.");case 6:return e.a(2,r)}},e)})),[m]),y=(0,t.useCallback)(Fd(Rd().m(function e(){var n;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,a.loginPopup(Sd);case 1:e.n=3;break;case 2:e.p=2,n=e.v,console.error("[Auth] Login failed:",n),h(function(e){return Pd(Pd({},e),{},{error:n.message})});case 3:return e.a(2)}},e,null,[[0,2]])})),[a]),k=(0,t.useCallback)(Fd(Rd().m(function e(){return Rd().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,a.logoutPopup();case 1:h({isLoading:!1,isSignedIn:!1,isRegistered:!1,needsRegistration:!1,user:null,session:null,clients:[],error:null});case 2:return e.a(2)}},e)})),[a]);(0,t.useEffect)(function(){if(l&&o===wa){var e=function(){var e=Fd(Rd().m(function e(){var n,i,t,a;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:if(s&&0!==r.length){e.n=1;break}return h(function(e){return Pd(Pd({},e),{},{isLoading:!1,isSignedIn:!1})}),e.a(2);case 1:return n=r[0],console.log("[Auth] Authenticated as:",n.username),h(function(e){return Pd(Pd({},e),{},{isSignedIn:!0,user:{name:n.name,email:n.username}})}),e.n=2,p();case 2:if(null==(i=e.v)||!i.ok){e.n=9;break}if(!i.isRegistered){e.n=7;break}return e.p=3,e.n=4,v();case 4:t=e.v,console.log("[Auth] ✓ Session ready. Token present:",!!t.sessionToken,"Role:",t.role),h(function(e){return Pd(Pd({},e),{},{isLoading:!1,isRegistered:!0,needsRegistration:!1,session:t,clients:i.clients||[]})}),e.n=6;break;case 5:e.p=5,a=e.v,console.error("[Auth] Session creation error:",a),h(function(e){return Pd(Pd({},e),{},{isLoading:!1,isRegistered:!0,error:a.message})});case 6:e.n=8;break;case 7:h(function(e){return Pd(Pd({},e),{},{isLoading:!1,isRegistered:!1,needsRegistration:!0})});case 8:e.n=10;break;case 9:console.error("[Auth] Registration check failed:",i),h(function(e){return Pd(Pd({},e),{},{isLoading:!1,error:"Failed to check registration status"})});case 10:return e.a(2)}},e,null,[[3,5]])}));return function(){return e.apply(this,arguments)}}();e()}},[s,r,o,l,p,v]);var b=(0,t.useCallback)(function(){var e=Fd(Rd().m(function e(n){var i,t;return Rd().w(function(e){for(;;)switch(e.p=e.n){case 0:return h(function(e){return Pd(Pd({},e),{},{isLoading:!0,error:null})}),e.p=1,e.n=2,g(n);case 2:return e.n=3,v();case 3:return i=e.v,h(function(e){return Pd(Pd({},e),{},{isLoading:!1,isRegistered:!0,needsRegistration:!1,session:i})}),e.a(2,!0);case 4:return e.p=4,t=e.v,h(function(e){return Pd(Pd({},e),{},{isLoading:!1,error:t.message})}),e.a(2,!1)}},e,null,[[1,4]])}));return function(n){return e.apply(this,arguments)}}(),[g,v]),w=Pd(Pd({},u),{},{signIn:y,signOut:k,getIdToken:m,completeRegistration:b});return(0,Ad.jsx)(Bd.Provider,{value:w,children:n})}function Ud(e){var n=e.children;return(0,Ad.jsx)(_d,{instance:qd,children:(0,Ad.jsx)(Dd,{children:n})})}function Wd(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Kd(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Kd(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Kd(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Kd(f,"constructor",l),Kd(l,"constructor",d),d.displayName="GeneratorFunction",Kd(l,a,"GeneratorFunction"),Kd(f),Kd(f,a,"Generator"),Kd(f,t,function(){return this}),Kd(f,"toString",function(){return"[object Generator]"}),(Wd=function(){return{w:r,m:u}})()}function Kd(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Kd=function(e,n,i,t){function r(n,i){Kd(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Kd(e,n,i,t)}function Gd(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function $d(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Gd(r,t,a,o,s,"next",e)}function s(e){Gd(r,t,a,o,s,"throw",e)}o(void 0)})}}function Vd(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Qd(e,n);var i={}.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)?Qd(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qd(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var Yd={dashboard:[{id:"overview",label:"Overview"},{id:"sessions",label:"Sessions"}],clients:[{id:"pending",label:"Pending"},{id:"allClients",label:"All Clients"},{id:"users",label:"All Users"}],campaigns:[{id:"campaigns",label:"All Campaigns"}],config:[{id:"objectives",label:"Objective Mapping"},{id:"templates",label:"Allocation Templates"},{id:"modifiers",label:"Audience Modifiers"}]},Jd={overview:"/api/monitoring/health",sessions:"/api/admin/sessions",users:"/api/admin/users",templates:"/api/admin/templates",objectives:"/api/admin/objectives",campaigns:"/api/admin/campaigns"},Xd={dashboard:"Dashboard",clients:"Clients",campaigns:"Campaigns",config:"Configuration",billing:"Billing",settings:"Settings"},Zd=(0,t.createContext)(null);function el(){var e=(0,t.useContext)(Zd);if(!e)throw new Error("useAdmin must be used within <AdminProvider>");return e}function nl(e){var n=e.children,i=Hd(),a=i.session,r=i.user,o=i.signOut,s=Vd((0,t.useState)("dashboard"),2),d=s[0],l=s[1],c=Vd((0,t.useState)("overview"),2),f=c[0],u=c[1],h=Vd((0,t.useState)(!1),2),m=h[0],p=h[1],g=Vd((0,t.useState)(null),2),v=g[0],y=g[1],k=Vd((0,t.useState)(!1),2),b=k[0],w=k[1],_=Vd((0,t.useState)(null),2),x=_[0],C=_[1],S=Vd((0,t.useState)(0),2),T=S[0],I=S[1],A=(null==a?void 0:a.sessionToken)||null,j=(0,t.useCallback)(function(){var e=$d(Wd().m(function e(n){var i,t,a,r,o,s,d,l=arguments;return Wd().w(function(e){for(;;)switch(e.p=e.n){case 0:if(i=l.length>1&&void 0!==l[1]?l[1]:"GET",t=l.length>2&&void 0!==l[2]?l[2]:null,A){e.n=1;break}return console.warn("[Admin] apiCall: no sessionToken"),e.a(2,{ok:!1,error:"No session token"});case 1:return a=n.startsWith("http")?n:"".concat(Td).concat(n),r={method:i,headers:{"X-Session-Token":A,"Content-Type":"application/json"}},t&&(r.body=JSON.stringify(t)),e.p=2,e.n=3,fetch(a,r);case 3:if((o=e.v).ok){e.n=5;break}return e.n=4,o.text();case 4:return s=e.v,404===o.status?console.info("[Admin] 404 Not Found: ".concat(n)):console.error("[Admin] HTTP ".concat(o.status,":"),s.substring(0,200)),e.a(2,{ok:!1,error:"HTTP ".concat(o.status,": ").concat(s.substring(0,100))});case 5:return e.n=6,o.json();case 6:return e.a(2,e.v);case 7:return e.p=7,d=e.v,console.error("[Admin] Network error:",d.message),e.a(2,{ok:!1,error:"Network error: "+d.message})}},e,null,[[2,7]])}));return function(n){return e.apply(this,arguments)}}(),[A]),E=(0,t.useCallback)(function(e){l(e);var n=Yd[e];(null==n?void 0:n.length)>0&&u(n[0].id),y(null),C(null)},[]),P=(0,t.useCallback)(function(e){u(e),y(null),C(null)},[]),M=(0,t.useCallback)(function(){var e=$d(Wd().m(function e(n){var i,t,a,r,o;return Wd().w(function(e){for(;;)switch(e.p=e.n){case 0:if(A){e.n=1;break}return e.a(2,null);case 1:return w(!0),C(null),e.p=2,i="".concat(Td).concat(n),console.log("[Admin] Fetching:",i),e.n=3,fetch(i,{headers:{"X-Session-Token":A}});case 3:if(t=e.v,console.log("[Admin] Response status:",t.status),t.ok){e.n=5;break}return e.n=4,t.text();case 4:throw a=e.v,new Error("API returned ".concat(t.status,": ").concat(a.substring(0,200)));case 5:return e.n=6,t.json();case 6:if(r=e.v,console.log("[Admin] Response data:",JSON.stringify(r,null,2).substring(0,500)),r.ok){e.n=7;break}throw new Error(r.error||"Request failed");case 7:return e.a(2,r);case 8:return e.p=8,o=e.v,console.error("[Admin] Fetch error:",o),C(o.message),e.a(2,null);case 9:return e.p=9,w(!1),e.f(9);case 10:return e.a(2)}},e,null,[[2,8,9,10]])}));return function(n){return e.apply(this,arguments)}}(),[A]),R=(0,t.useCallback)(function(){return I(function(e){return e+1})},[]);(0,t.useEffect)(function(){var e=Jd[f];if(!e)return y(null),void w(!1);var n=function(){var n=$d(Wd().m(function n(){var i;return Wd().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(e);case 1:i=n.v,y(i);case 2:return n.a(2)}},n)}));return function(){return n.apply(this,arguments)}}();n()},[f,M,T]);var N=(0,t.useMemo)(function(){return{session:a,user:r,sessionToken:A,signOut:o,activeCategory:d,activeTab:f,collapsed:m,setActiveCategory:E,setActiveTab:P,setCollapsed:p,tabs:Yd[d]||[],data:v,loading:b,error:x,refresh:R,apiCall:j}},[a,r,A,o,d,f,m,E,P,v,b,x,R,j]);return(0,Ad.jsx)(Zd.Provider,{value:N,children:n})}function il(e){var n=e.children,i=Hd(),t=i.isSignedIn,a=i.user,r=i.signOut;return(0,Ad.jsxs)("div",{className:"shell",children:[(0,Ad.jsxs)("header",{className:"shell-header",children:[(0,Ad.jsxs)("div",{className:"shell-logo",children:[(0,Ad.jsx)("span",{className:"logo-icon",children:"◆"}),(0,Ad.jsx)("span",{className:"logo-text",children:"AdPlatform"}),(0,Ad.jsx)("span",{className:"logo-badge",children:"Management"})]}),t&&a&&(0,Ad.jsxs)("div",{className:"shell-user",children:[(0,Ad.jsx)("span",{className:"user-name",children:a.name||a.email}),(0,Ad.jsx)("button",{onClick:r,className:"btn-signout",children:"Sign Out"})]})]}),(0,Ad.jsx)("main",{className:"shell-content",children:n}),(0,Ad.jsx)("footer",{className:"shell-footer",children:(0,Ad.jsx)("span",{children:"AdPlatform Management Console v1.0"})})]})}function tl(){var e=Hd(),n=e.signIn,i=e.error;return(0,Ad.jsx)("div",{className:"signin-overlay",children:(0,Ad.jsxs)("div",{className:"signin-card",children:[(0,Ad.jsx)("div",{className:"signin-icon",children:"◆"}),(0,Ad.jsx)("h1",{children:"AdPlatform Management"}),(0,Ad.jsx)("p",{className:"signin-subtitle",children:"Sign in to manage your advertising platform"}),i&&(0,Ad.jsx)("div",{className:"error-message",children:i}),(0,Ad.jsx)("button",{onClick:n,className:"btn-signin",children:"Sign in with Microsoft"}),(0,Ad.jsx)("p",{className:"signin-help",children:"Use your organization account to sign in"})]})})}function al(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return rl(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(rl(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,rl(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,rl(f,"constructor",l),rl(l,"constructor",d),d.displayName="GeneratorFunction",rl(l,a,"GeneratorFunction"),rl(f),rl(f,a,"Generator"),rl(f,t,function(){return this}),rl(f,"toString",function(){return"[object Generator]"}),(al=function(){return{w:r,m:u}})()}function rl(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}rl=function(e,n,i,t){function r(n,i){rl(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},rl(e,n,i,t)}function ol(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function sl(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return dl(e,n);var i={}.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)?dl(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dl(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}function ll(){var e=Hd(),n=e.user,i=e.completeRegistration,a=e.error,r=sl((0,t.useState)(""),2),o=r[0],s=r[1],d=sl((0,t.useState)(!1),2),l=d[0],c=d[1],f=sl((0,t.useState)(null),2),u=f[0],h=f[1],m=function(){var e,n=(e=al().m(function e(n){return al().w(function(e){for(;;)switch(e.n){case 0:if(n.preventDefault(),o.trim()){e.n=1;break}return h("Organization name is required"),e.a(2);case 1:return c(!0),h(null),e.n=2,i(o.trim());case 2:e.v||c(!1);case 3:return e.a(2)}},e)}),function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){ol(r,t,a,o,s,"next",e)}function s(e){ol(r,t,a,o,s,"throw",e)}o(void 0)})});return function(e){return n.apply(this,arguments)}}();return(0,Ad.jsx)("div",{className:"registration-container",children:(0,Ad.jsxs)("div",{className:"registration-card",children:[(0,Ad.jsx)("h1",{children:"Complete Registration"}),(0,Ad.jsxs)("p",{className:"registration-subtitle",children:["Welcome, ",(null==n?void 0:n.name)||(null==n?void 0:n.email),"! Set up your organization to get started."]}),(u||a)&&(0,Ad.jsx)("div",{className:"error-message",children:u||a}),(0,Ad.jsxs)("form",{onSubmit:m,children:[(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{htmlFor:"clientName",children:"Organization Name"}),(0,Ad.jsx)("input",{type:"text",id:"clientName",value:o,onChange:function(e){return s(e.target.value)},placeholder:"e.g., Acme Corporation",disabled:l,autoFocus:!0}),(0,Ad.jsx)("span",{className:"form-help",children:"This is the name that will appear on your advertising accounts"})]}),(0,Ad.jsx)("button",{type:"submit",className:"btn-primary",disabled:l,children:l?"Creating...":"Create Organization"})]})]})})}function cl(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return fl(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(fl(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,fl(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,fl(f,"constructor",l),fl(l,"constructor",d),d.displayName="GeneratorFunction",fl(l,a,"GeneratorFunction"),fl(f),fl(f,a,"Generator"),fl(f,t,function(){return this}),fl(f,"toString",function(){return"[object Generator]"}),(cl=function(){return{w:r,m:u}})()}function fl(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}fl=function(e,n,i,t){function r(n,i){fl(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},fl(e,n,i,t)}function ul(e){return function(e){if(Array.isArray(e))return vl(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||gl(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function hl(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function ml(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){hl(r,t,a,o,s,"next",e)}function s(e){hl(r,t,a,o,s,"throw",e)}o(void 0)})}}function pl(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||gl(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function gl(e,n){if(e){if("string"==typeof e)return vl(e,n);var i={}.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)?vl(e,n):void 0}}function vl(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var yl=["google_ads","meta","tiktok"],kl={google_ads:{color:"#4285F4",label:"Google Ads"},meta:{color:"#8B5CF6",label:"Meta"},tiktok:{color:"#FF004F",label:"TikTok"}},bl={restaurant:"🍽️",retail:"🛍️",b2b_services:"💼",local_services:"🏠",health_wellness:"🏥",general:"📋",automotive:"🚗",education:"🎓",legal_services:"⚖️",fitness:"🏋️",real_estate:"🏢",pet_services:"🐾",travel:"✈️"},wl={awareness:"#7dca7d",traffic:"#4fc3f7",leads:"#ffb74d",conversions:"#ce93d8",sales:"#ef5350"},_l=(0,t.createContext)(null);function xl(){var e=(0,t.useContext)(_l);if(!e)throw new Error("useTemplates must be used within <TemplatesProvider>");return e}function Cl(e){var n=e.children,i=el(),a=i.data,r=i.sessionToken,o=i.apiCall,s=i.refresh,d=(null==a?void 0:a.templates)||[],l=pl((0,t.useState)([]),2),c=l[0],f=l[1],u=pl((0,t.useState)([]),2),h=u[0],m=u[1],p=pl((0,t.useState)(!0),2),g=p[0],v=p[1],y=pl((0,t.useState)(null),2),k=y[0],b=y[1],w=pl((0,t.useState)(null),2),_=w[0],x=w[1],C=pl((0,t.useState)(!1),2),S=C[0],T=C[1],I=pl((0,t.useState)(!1),2),A=I[0],j=I[1],E=pl((0,t.useState)(null),2),P=E[0],M=E[1],R=pl((0,t.useState)(null),2),N=R[0],O=R[1],F=pl((0,t.useState)(!1),2),z=F[0],L=F[1],q=pl((0,t.useState)(""),2),B=q[0],H=q[1],D=pl((0,t.useState)(""),2),U=D[0],W=D[1],K=(0,t.useCallback)(ml(cl().m(function e(){var n,i,t,a,o,s,l,c,u,h,p,g,y;return cl().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r){e.n=1;break}return e.a(2);case 1:return v(!0),e.p=2,e.n=3,Promise.all([fetch("".concat(Td,"/api/admin/template-config/categories"),{headers:{"X-Session-Token":r}}).catch(function(){return null}),fetch("".concat(Td,"/api/admin/template-config/objectives"),{headers:{"X-Session-Token":r}}).catch(function(){return null})]);case 3:if(n=e.v,i=pl(n,2),t=i[0],a=i[1],!t){e.n=5;break}return e.n=4,t.json().catch(function(){return null});case 4:p=e.v,e.n=6;break;case 5:p=null;case 6:if(o=p,!a){e.n=8;break}return e.n=7,a.json().catch(function(){return null});case 7:g=e.v,e.n=9;break;case 8:g=null;case 9:s=g,null!=o&&o.ok&&o.categories?f(ul(o.categories).sort(function(e,n){return e.name.localeCompare(n.name)})):(l=ul(new Set(d.map(function(e){return e.businessCategory}))).sort(),f(l.map(function(e,n){var i;return{categoryId:n+1,name:e,icon:(null===(i=d.find(function(n){return n.businessCategory===e}))||void 0===i?void 0:i.categoryIcon)||bl[e]||"📋",isActive:!0,templateCount:d.filter(function(n){return n.businessCategory===e}).length}}))),null!=s&&s.ok&&s.objectives?m(ul(s.objectives).sort(function(e,n){return e.name.localeCompare(n.name)})):(c=ul(new Set(d.map(function(e){return e.objective}))).sort(),m(c.map(function(e,n){var i;return{objectiveId:n+1,name:e,color:(null===(i=d.find(function(n){return n.objective===e}))||void 0===i?void 0:i.objectiveColor)||wl[e]||"#999",isActive:!0,templateCount:d.filter(function(n){return n.objective===e}).length}}))),e.n=11;break;case 10:e.p=10,y=e.v,console.warn("[Templates] Metadata fetch failed, using fallbacks:",y.message),u=ul(new Set(d.map(function(e){return e.businessCategory}))).sort(),f(u.map(function(e,n){return{categoryId:n+1,name:e,icon:bl[e]||"📋",isActive:!0,templateCount:d.filter(function(n){return n.businessCategory===e}).length}})),h=ul(new Set(d.map(function(e){return e.objective}))).sort(),m(h.map(function(e,n){return{objectiveId:n+1,name:e,color:wl[e]||"#999",isActive:!0,templateCount:d.filter(function(n){return n.objective===e}).length}}));case 11:return e.p=11,v(!1),e.f(11);case 12:return e.a(2)}},e,null,[[2,10,11,12]])})),[r,d]);(0,t.useEffect)(function(){K()},[K]),(0,t.useEffect)(function(){!k&&c.length>0&&b(c[0].name)},[c,k]);var G=(0,t.useMemo)(function(){var e={};return c.forEach(function(n){e[n.name]=n.icon}),e},[c]),$=(0,t.useMemo)(function(){var e={};return h.forEach(function(n){e[n.name]=n.color}),e},[h]),V=(0,t.useMemo)(function(){return d.filter(function(e){return!(k&&e.businessCategory!==k||_&&e.objective!==_)})},[d,k,_]),Q=(0,t.useMemo)(function(){var e={};return V.forEach(function(n){var i="".concat(n.businessCategory,"|").concat(n.objective);e[i]||(e[i]=[]),e[i].push(n)}),e},[V]),Y=(0,t.useMemo)(function(){var e={};return d.forEach(function(n){e[n.businessCategory]=(e[n.businessCategory]||0)+1}),e},[d]),J=(0,t.useCallback)(function(){var e=ml(cl().m(function e(n,i){var t;return cl().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o("/api/admin/template-config/categories/".concat(n),"PUT",i);case 1:(t=e.v).ok?(K(),s()):alert(t.error||"Update failed");case 2:return e.a(2)}},e)}));return function(n,i){return e.apply(this,arguments)}}(),[o,K,s]),X=(0,t.useCallback)(function(){var e=ml(cl().m(function e(n,i){var t;return cl().w(function(e){for(;;)switch(e.n){case 0:if(confirm('Delete category "'.concat(i,'"? This cannot be undone.'))){e.n=1;break}return e.a(2);case 1:return e.n=2,o("/api/admin/template-config/categories/".concat(n),"DELETE");case 2:(t=e.v).ok?(k===i&&b(null),K(),s()):alert(t.error||"Delete failed");case 3:return e.a(2)}},e)}));return function(n,i){return e.apply(this,arguments)}}(),[o,K,s,k]),Z=(0,t.useCallback)(ml(cl().m(function e(){var n;return cl().w(function(e){for(;;)switch(e.n){case 0:if(B.trim()){e.n=1;break}return e.a(2);case 1:return e.n=2,o("/api/admin/template-config/categories","POST",{name:B.trim().toLowerCase().replace(/\s+/g,"_"),icon:U||"📋"});case 2:(n=e.v).ok?(H(""),W(""),L(!1),K()):alert(n.error||"Create failed");case 3:return e.a(2)}},e)})),[o,K,B,U]),ee=(0,t.useCallback)(function(){var e=ml(cl().m(function e(n,i){var t;return cl().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o("/api/admin/template-config/objectives/".concat(n),"PUT",i);case 1:(t=e.v).ok?K():alert(t.error||"Update failed");case 2:return e.a(2)}},e)}));return function(n,i){return e.apply(this,arguments)}}(),[o,K]),ne=(0,t.useCallback)(function(){var e=ml(cl().m(function e(n){var i;return cl().w(function(e){for(;;)switch(e.n){case 0:if(confirm("Delete this allocation template?")){e.n=1;break}return e.a(2);case 1:return e.n=2,o("/api/admin/templates/".concat(n),"DELETE");case 2:(i=e.v).ok?s():alert(i.error||"Delete failed");case 3:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}(),[o,s]),ie=(0,t.useMemo)(function(){return{templates:d,categories:c,objectives:h,metaLoading:g,catIconMap:G,objColorMap:$,catCounts:Y,filtered:V,grouped:Q,selectedCategory:k,setSelectedCategory:b,selectedObjective:_,setSelectedObjective:x,editMode:S,setEditMode:T,showForm:A,setShowForm:j,editingId:P,setEditingId:M,addingToGroup:N,setAddingToGroup:O,showNewCat:z,setShowNewCat:L,newCatName:B,setNewCatName:H,newCatIcon:U,setNewCatIcon:W,fetchMetadata:K,handleUpdateCategory:J,handleDeleteCategory:X,handleCreateCategory:Z,handleUpdateObjective:ee,handleDeleteTemplate:ne}},[d,c,h,g,G,$,Y,V,Q,k,_,S,A,P,N,z,B,U,K,J,X,Z,ee,ne]);return(0,Ad.jsx)(_l.Provider,{value:ie,children:n})}function Sl(e){return function(e){if(Array.isArray(e))return Ml(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Pl(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tl(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Il(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Il(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Il(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Il(f,"constructor",l),Il(l,"constructor",d),d.displayName="GeneratorFunction",Il(l,a,"GeneratorFunction"),Il(f),Il(f,a,"Generator"),Il(f,t,function(){return this}),Il(f,"toString",function(){return"[object Generator]"}),(Tl=function(){return{w:r,m:u}})()}function Il(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Il=function(e,n,i,t){function r(n,i){Il(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Il(e,n,i,t)}function Al(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function jl(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Al(r,t,a,o,s,"next",e)}function s(e){Al(r,t,a,o,s,"throw",e)}o(void 0)})}}function El(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||Pl(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pl(e,n){if(e){if("string"==typeof e)return Ml(e,n);var i={}.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)?Ml(e,n):void 0}}function Ml(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var Rl={google_ads:[{value:"MAXIMIZE_CONVERSIONS",label:"Maximize Conversions"},{value:"MAXIMIZE_CONVERSION_VALUE",label:"Maximize Conversion Value"},{value:"TARGET_CPA",label:"Target CPA"},{value:"TARGET_ROAS",label:"Target ROAS"},{value:"MAXIMIZE_CLICKS",label:"Maximize Clicks"},{value:"TARGET_IMPRESSION_SHARE",label:"Target Impression Share"},{value:"MANUAL_CPC",label:"Manual CPC"}],meta:[{value:"OUTCOME_AWARENESS",label:"Awareness"},{value:"OUTCOME_TRAFFIC",label:"Traffic"},{value:"OUTCOME_ENGAGEMENT",label:"Engagement"},{value:"OUTCOME_LEADS",label:"Leads"},{value:"OUTCOME_SALES",label:"Sales"},{value:"CONVERSIONS",label:"Conversions"}],tiktok:[{value:"REACH",label:"Reach"},{value:"TRAFFIC",label:"Traffic"},{value:"VIDEO_VIEWS",label:"Video Views"},{value:"CONVERSION",label:"Conversion"},{value:"APP_INSTALL",label:"App Install"}]},Nl=(0,t.createContext)(null);function Ol(e){var n=e.children,i=el(),a=i.data,r=i.apiCall,o=i.refresh,s=i.loading,d=El((0,t.useState)([]),2),l=d[0],c=d[1],f=El((0,t.useState)([]),2),u=f[0],h=f[1],m=El((0,t.useState)(!0),2),p=m[0],g=m[1],v=El((0,t.useState)(null),2),y=v[0],k=v[1],b=El((0,t.useState)(!1),2),w=b[0],_=b[1],x=El((0,t.useState)(!1),2),C=x[0],S=x[1];(0,t.useEffect)(function(){var e=!1,n=function(){var n=jl(Tl().m(function n(){var i,t,a,o,s;return Tl().w(function(n){for(;;)switch(n.p=n.n){case 0:return g(!0),k(null),n.p=1,n.n=2,Promise.all([r("/api/admin/template-config/channels","GET"),r("/api/admin/template-config/objectives","GET")]);case 2:i=n.v,t=El(i,2),a=t[0],o=t[1],e||(null!=a&&a.ok&&a.channels?c(a.channels):_(!0),null!=o&&o.ok&&o.objectives?h(o.objectives):S(!0)),n.n=4;break;case 3:n.p=3,s=n.v,e||k(s.message);case 4:return n.p=4,e||g(!1),n.f(4);case 5:return n.a(2)}},n,null,[[1,3,4,5]])}));return function(){return n.apply(this,arguments)}}();return n(),function(){e=!0}},[r]),(0,t.useEffect)(function(){null!=a&&a.mappings&&(w&&0===l.length&&(console.info("[ObjectiveMappings] Deriving channels from mapping data"),c(function(e){if(null==e||!e.mappings)return[];var n=Sl(new Set(e.mappings.map(function(e){return e.channelType}))).sort(),i={google_ads:{label:"Google Ads",color:"#4285F4",icon:"🔵"},meta:{label:"Meta",color:"#8B5CF6",icon:"🟣"},tiktok:{label:"TikTok",color:"#FF004F",icon:"🔴"}};return n.map(function(e,n){var t,a,r;return{channelId:n+1,code:e,label:(null===(t=i[e])||void 0===t?void 0:t.label)||e,color:(null===(a=i[e])||void 0===a?void 0:a.color)||"#6B7280",icon:(null===(r=i[e])||void 0===r?void 0:r.icon)||"📢",sortOrder:n,isActive:!0}})}(a))),C&&0===u.length&&(console.info("[ObjectiveMappings] Deriving objectives from mapping data"),h(function(e){if(null==e||!e.mappings)return[];var n=Sl(new Set(e.mappings.map(function(e){return e.platformObjective}))).sort(),i={awareness:"#3B82F6",traffic:"#F59E0B",leads:"#8B5CF6",conversions:"#10B981",sales:"#EF4444"};return n.map(function(e,n){return{objectiveId:n+1,name:e,color:i[e]||"#6B7280",sortOrder:n,isActive:!0}})}(a))))},[a,w,C,l.length,u.length]);var T=(0,t.useMemo)(function(){return null!=a&&a.mappings?a.mappings:[]},[a]),I=(0,t.useMemo)(function(){var e={};return l.forEach(function(n){e[n.code]=n}),e},[l]),A=(0,t.useMemo)(function(){var e={};return u.forEach(function(n){e[n.name]=n.color||"#6B7280"}),e},[u]),j=(0,t.useMemo)(function(){var e=u.filter(function(e){return e.isActive}),n=l.filter(function(e){return e.isActive}),i={};return e.forEach(function(e){i[e.name]={},n.forEach(function(n){var t=T.find(function(i){return i.platformObjective===e.name&&i.channelType===n.code&&i.isActive});i[e.name][n.code]=t||null})}),i},[u,l,T]),E=(0,t.useMemo)(function(){var e=u.filter(function(e){return e.isActive}),n=l.filter(function(e){return e.isActive}),i=e.length*n.length,t=0;return e.forEach(function(e){n.forEach(function(n){var i;null!==(i=j[e.name])&&void 0!==i&&i[n.code]&&t++})}),{total:i,filled:t,gaps:i-t,pct:i>0?Math.round(t/i*100):0}},[j,u,l]),P=(0,t.useCallback)(function(){var e=jl(Tl().m(function e(n){var i;return Tl().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,r("/api/admin/objectives","POST",n);case 1:return null!=(i=e.v)&&i.ok&&o(),e.a(2,i)}},e)}));return function(n){return e.apply(this,arguments)}}(),[r,o]),M=(0,t.useCallback)(function(){var e=jl(Tl().m(function e(n,i){var t;return Tl().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,r("/api/admin/objectives/".concat(n),"PUT",i);case 1:return null!=(t=e.v)&&t.ok&&o(),e.a(2,t)}},e)}));return function(n,i){return e.apply(this,arguments)}}(),[r,o]),R=(0,t.useCallback)(function(){var e=jl(Tl().m(function e(n){var i;return Tl().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,r("/api/admin/objectives/".concat(n),"DELETE");case 1:return null!=(i=e.v)&&i.ok&&o(),e.a(2,i)}},e)}));return function(n){return e.apply(this,arguments)}}(),[r,o]),N=(0,t.useCallback)(function(e){return Rl[e]||[]},[]),O=(0,t.useMemo)(function(){return{channels:l,objectives:u,mappings:T,channelMap:I,objectiveColorMap:A,coverageMatrix:j,coverageStats:E,loading:s||p,metaLoading:p,metaError:y,createMapping:P,updateMapping:M,deleteMapping:R,getProviderObjectives:N,refresh:o}},[l,u,T,I,A,j,E,s,p,y,P,M,R,N,o]);return(0,Ad.jsx)(Nl.Provider,{value:O,children:n})}var Fl={dashboard:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("rect",{x:"2",y:"2",width:"7",height:"8",rx:"1.5"}),(0,Ad.jsx)("rect",{x:"11",y:"2",width:"7",height:"5",rx:"1.5"}),(0,Ad.jsx)("rect",{x:"2",y:"12",width:"7",height:"6",rx:"1.5"}),(0,Ad.jsx)("rect",{x:"11",y:"9",width:"7",height:"9",rx:"1.5"})]}),clients:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("circle",{cx:"7",cy:"6",r:"3"}),(0,Ad.jsx)("circle",{cx:"14",cy:"7",r:"2.5"}),(0,Ad.jsx)("path",{d:"M1.5 17c0-3 2.5-5 5.5-5s5.5 2 5.5 5"}),(0,Ad.jsx)("path",{d:"M12.5 12c1.5 0 4 1 4 3.5"})]}),campaigns:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("path",{d:"M16 3L8 7H4a1 1 0 00-1 1v4a1 1 0 001 1h1l2 4h2l-2-4h1l8 4V3z"}),(0,Ad.jsx)("path",{d:"M16 3v14"})]}),config:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("path",{d:"M3 5h14M3 10h14M3 15h14"}),(0,Ad.jsx)("circle",{cx:"7",cy:"5",r:"1.5",fill:"currentColor"}),(0,Ad.jsx)("circle",{cx:"13",cy:"10",r:"1.5",fill:"currentColor"}),(0,Ad.jsx)("circle",{cx:"9",cy:"15",r:"1.5",fill:"currentColor"})]}),billing:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("rect",{x:"2",y:"4",width:"16",height:"12",rx:"2"}),(0,Ad.jsx)("path",{d:"M2 8h16"}),(0,Ad.jsx)("path",{d:"M6 12h3"})]}),settings:(0,Ad.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Ad.jsx)("circle",{cx:"10",cy:"10",r:"2.5"}),(0,Ad.jsx)("path",{d:"M10 2v2.5M10 15.5V18M18 10h-2.5M4.5 10H2M15.66 4.34l-1.77 1.77M6.11 13.89l-1.77 1.77M15.66 15.66l-1.77-1.77M6.11 6.11L4.34 4.34"})]}),chevron:(0,Ad.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,Ad.jsx)("path",{d:"M5 3l4 4-4 4"})})},zl=[{id:"dashboard",label:"Dashboard",icon:"dashboard"},{id:"clients",label:"Clients",icon:"clients",badge:null},{id:"campaigns",label:"Campaigns",icon:"campaigns"},{id:"config",label:"Configuration",icon:"config"},{divider:!0},{id:"billing",label:"Billing",icon:"billing",disabled:!0},{id:"settings",label:"Settings",icon:"settings",disabled:!0}];function Ll(e){var n=e.activeCategory,i=e.onSelectCategory,t=e.collapsed,a=e.onToggleCollapse,r=Hd(),o=r.user,s=r.signOut;return(0,Ad.jsxs)("aside",{className:"sidebar ".concat(t?"sidebar-collapsed":""),children:[(0,Ad.jsxs)("div",{className:"sidebar-logo",children:[(0,Ad.jsx)("span",{className:"sidebar-logo-icon",children:"◆"}),!t&&(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("span",{className:"sidebar-logo-text",children:"AdPlatform"}),(0,Ad.jsx)("span",{className:"sidebar-logo-badge",children:"Mgmt"})]})]}),(0,Ad.jsx)("nav",{className:"sidebar-nav",children:zl.map(function(e,a){if(e.divider)return(0,Ad.jsx)("div",{className:"sidebar-divider"},"d-".concat(a));var r=n===e.id,o=e.disabled;return(0,Ad.jsxs)("button",{className:"sidebar-item ".concat(r?"sidebar-item-active":""," ").concat(o?"sidebar-item-disabled":""),onClick:function(){return!o&&i(e.id)},title:t?e.label:void 0,children:[(0,Ad.jsx)("span",{className:"sidebar-item-icon",children:Fl[e.icon]}),!t&&(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("span",{className:"sidebar-item-label",children:e.label}),null!=e.badge&&(0,Ad.jsx)("span",{className:"sidebar-badge",children:e.badge}),o&&(0,Ad.jsx)("span",{className:"sidebar-soon",children:"Soon"})]})]},e.id)})}),(0,Ad.jsxs)("div",{className:"sidebar-footer",children:[!t&&o&&(0,Ad.jsxs)("div",{className:"sidebar-user",children:[(0,Ad.jsx)("div",{className:"sidebar-user-avatar",children:(o.name||o.email||"?")[0].toUpperCase()}),(0,Ad.jsxs)("div",{className:"sidebar-user-info",children:[(0,Ad.jsx)("span",{className:"sidebar-user-name",children:o.name||o.email}),(0,Ad.jsx)("button",{onClick:s,className:"sidebar-user-signout",children:"Sign Out"})]})]}),t&&o&&(0,Ad.jsx)("div",{className:"sidebar-user-collapsed",title:o.name||o.email,children:(0,Ad.jsx)("div",{className:"sidebar-user-avatar",children:(o.name||o.email||"?")[0].toUpperCase()})}),(0,Ad.jsxs)("button",{className:"sidebar-collapse-btn",onClick:a,title:t?"Expand":"Collapse",children:[(0,Ad.jsx)("span",{className:"sidebar-collapse-icon ".concat(t?"":"sidebar-collapse-icon-flip"),children:Fl.chevron}),!t&&(0,Ad.jsx)("span",{children:"Collapse"})]})]})]})}function ql(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Bl(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Bl(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Bl(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Bl(f,"constructor",l),Bl(l,"constructor",d),d.displayName="GeneratorFunction",Bl(l,a,"GeneratorFunction"),Bl(f),Bl(f,a,"Generator"),Bl(f,t,function(){return this}),Bl(f,"toString",function(){return"[object Generator]"}),(ql=function(){return{w:r,m:u}})()}function Bl(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Bl=function(e,n,i,t){function r(n,i){Bl(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Bl(e,n,i,t)}function Hl(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function Dl(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Hl(r,t,a,o,s,"next",e)}function s(e){Hl(r,t,a,o,s,"throw",e)}o(void 0)})}}function Ul(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Wl(e,n);var i={}.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)?Wl(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wl(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}function Kl(){var e=el(),n=e.data,i=e.apiCall,a=e.refresh,r=Ul((0,t.useState)(!1),2),o=r[0],s=r[1],d=n.users||[],l=function(){var e=Dl(ql().m(function e(n){var t;return ql().w(function(e){for(;;)switch(e.n){case 0:if(confirm("Are you sure you want to deactivate this user?")){e.n=1;break}return e.a(2);case 1:return e.n=2,i("/api/admin/users/".concat(n),"DELETE");case 2:(t=e.v).ok?a():alert(t.error||"Failed to deactivate user");case 3:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}();return(0,Ad.jsxs)("div",{className:"table-panel",children:[(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsxs)("h2",{children:["Users (",n.totalCount,")"]}),(0,Ad.jsx)("button",{className:"btn-action",onClick:function(){return s(!o)},children:o?"Cancel":"+ Add User"})]}),o&&(0,Ad.jsx)(Gl,{onSuccess:function(){s(!1),a()},onCancel:function(){return s(!1)}}),(0,Ad.jsxs)("table",{className:"data-table",children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{children:"Email"}),(0,Ad.jsx)("th",{children:"Name"}),(0,Ad.jsx)("th",{children:"Status"}),(0,Ad.jsx)("th",{children:"Clients"}),(0,Ad.jsx)("th",{children:"Created"}),(0,Ad.jsx)("th",{children:"Actions"})]})}),(0,Ad.jsxs)("tbody",{children:[d.map(function(e){var n;return(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("td",{children:e.email}),(0,Ad.jsx)("td",{children:e.displayName||"-"}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)($l,{status:e.status})}),(0,Ad.jsx)("td",{children:(null===(n=e.clients)||void 0===n?void 0:n.map(function(e){return"".concat(e.clientName," (").concat(e.role,")")}).join(", "))||"-"}),(0,Ad.jsx)("td",{children:new Date(e.createdAt).toLocaleDateString()}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return l(e.userId)},children:"Deactivate"})})]},e.userId)}),0===d.length&&(0,Ad.jsx)("tr",{children:(0,Ad.jsx)("td",{colSpan:"6",className:"empty-row",children:"No users found"})})]})]})]})}function Gl(e){var n=e.onSuccess,i=e.onCancel,a=el().apiCall,r=Ul((0,t.useState)(""),2),o=r[0],s=r[1],d=Ul((0,t.useState)(""),2),l=d[0],c=d[1],f=Ul((0,t.useState)(""),2),u=f[0],h=f[1],m=Ul((0,t.useState)("User"),2),p=m[0],g=m[1],v=Ul((0,t.useState)([]),2),y=v[0],k=v[1],b=Ul((0,t.useState)(!1),2),w=b[0],_=b[1],x=Ul((0,t.useState)(!0),2),C=x[0],S=x[1],T=Ul((0,t.useState)(null),2),I=T[0],A=T[1];(0,t.useEffect)(function(){var e=function(){var e=Dl(ql().m(function e(){var n;return ql().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,a("/api/admin/clients?pageSize=100");case 1:(n=e.v).ok&&k(n.clients||[]),S(!1);case 2:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();e()},[a]);var j=function(){var e=Dl(ql().m(function e(i){var t;return ql().w(function(e){for(;;)switch(e.n){case 0:return i.preventDefault(),_(!0),A(null),e.n=1,a("/api/admin/users","POST",{email:o,displayName:l||null,clientId:u||null,role:p});case 1:(t=e.v).ok?n():A(t.error||"Failed to create user"),_(!1);case 2:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}();return(0,Ad.jsxs)("div",{className:"admin-form",children:[(0,Ad.jsx)("h3",{children:"Create User"}),I&&(0,Ad.jsx)("div",{className:"error-message",children:I}),(0,Ad.jsxs)("form",{onSubmit:j,children:[(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Email *"}),(0,Ad.jsx)("input",{type:"email",value:o,onChange:function(e){return s(e.target.value)},placeholder:"user@example.com",disabled:w,required:!0,autoFocus:!0})]}),(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Display Name"}),(0,Ad.jsx)("input",{type:"text",value:l,onChange:function(e){return c(e.target.value)},placeholder:"John Smith",disabled:w})]}),(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Assign to Client"}),(0,Ad.jsxs)("select",{value:u,onChange:function(e){return h(e.target.value)},disabled:w||C,children:[(0,Ad.jsx)("option",{value:"",children:"-- No client (invite later) --"}),y.filter(function(e){return"Active"===e.status}).map(function(e){return(0,Ad.jsx)("option",{value:e.clientId,children:e.clientName},e.clientId)})]})]}),u&&(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Role"}),(0,Ad.jsxs)("select",{value:p,onChange:function(e){return g(e.target.value)},disabled:w,children:[(0,Ad.jsx)("option",{value:"Admin",children:"Admin"}),(0,Ad.jsx)("option",{value:"User",children:"User"}),(0,Ad.jsx)("option",{value:"ReadOnly",children:"Read Only"})]})]}),(0,Ad.jsxs)("div",{className:"form-buttons",children:[(0,Ad.jsx)("button",{type:"button",className:"btn-cancel",onClick:i,disabled:w,children:"Cancel"}),(0,Ad.jsx)("button",{type:"submit",className:"btn-primary",disabled:w||!o.trim(),children:w?"Creating...":"Create User"})]})]})]})}function $l(e){var n=e.status,i={Active:"status-active",Inactive:"status-inactive"}[n]||"status-default";return(0,Ad.jsx)("span",{className:"status-badge ".concat(i),children:n})}function Vl(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Ql(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Ql(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Ql(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Ql(f,"constructor",l),Ql(l,"constructor",d),d.displayName="GeneratorFunction",Ql(l,a,"GeneratorFunction"),Ql(f),Ql(f,a,"Generator"),Ql(f,t,function(){return this}),Ql(f,"toString",function(){return"[object Generator]"}),(Vl=function(){return{w:r,m:u}})()}function Ql(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Ql=function(e,n,i,t){function r(n,i){Ql(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Ql(e,n,i,t)}function Yl(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function Jl(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Yl(r,t,a,o,s,"next",e)}function s(e){Yl(r,t,a,o,s,"throw",e)}o(void 0)})}}function Xl(){var e=el(),n=e.data,i=e.apiCall,t=e.refresh,a=n.sessions||[],r=function(){var e=Jl(Vl().m(function e(n){var a;return Vl().w(function(e){for(;;)switch(e.n){case 0:if(confirm("Are you sure you want to revoke this session?")){e.n=1;break}return e.a(2);case 1:return e.n=2,i("/api/admin/sessions/".concat(n,"/revoke"),"POST");case 2:(a=e.v).ok?t():alert(a.error||"Failed to revoke session");case 3:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}(),o=function(){var e=Jl(Vl().m(function e(){var n;return Vl().w(function(e){for(;;)switch(e.n){case 0:if(confirm("This will delete all expired sessions older than 30 days. Continue?")){e.n=1;break}return e.a(2);case 1:return e.n=2,i("/api/admin/sessions/cleanup?daysOld=30","POST");case 2:(n=e.v).ok?(alert("Cleaned up ".concat(n.rowsDeleted," expired sessions")),t()):alert(n.error||"Failed to cleanup sessions");case 3:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();return(0,Ad.jsxs)("div",{className:"table-panel",children:[(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsx)("h2",{children:"Active Sessions"}),(0,Ad.jsx)("button",{className:"btn-action",onClick:o,children:"Cleanup Expired"})]}),(0,Ad.jsxs)("table",{className:"data-table",children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{children:"User"}),(0,Ad.jsx)("th",{children:"Client"}),(0,Ad.jsx)("th",{children:"Last Activity"}),(0,Ad.jsx)("th",{children:"Expires"}),(0,Ad.jsx)("th",{children:"IP Address"}),(0,Ad.jsx)("th",{children:"Actions"})]})}),(0,Ad.jsxs)("tbody",{children:[a.map(function(e){return(0,Ad.jsxs)("tr",{children:[(0,Ad.jsxs)("td",{children:[(0,Ad.jsx)("div",{children:e.userEmail}),(0,Ad.jsx)("small",{className:"text-muted",children:e.displayName})]}),(0,Ad.jsx)("td",{children:e.clientName}),(0,Ad.jsx)("td",{children:new Date(e.lastActivity).toLocaleString()}),(0,Ad.jsx)("td",{children:new Date(e.expiresAt).toLocaleString()}),(0,Ad.jsx)("td",{children:e.ipAddress||"-"}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return r(e.sessionId)},children:"Revoke"})})]},e.sessionId)}),0===a.length&&(0,Ad.jsx)("tr",{children:(0,Ad.jsx)("td",{colSpan:"6",className:"empty-row",children:"No active sessions"})})]})]})]})}function Zl(e){return e&&e.__esModule?e.default:e}function ec(e,n,i){return n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}var nc,ic,tc,ac,rc,oc,sc={},dc=[],lc=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function cc(e,n){for(var i in n)e[i]=n[i];return e}function fc(e){var n=e.parentNode;n&&n.removeChild(e)}function uc(e,n,i){var t,a,r,o={};for(r in n)"key"==r?t=n[r]:"ref"==r?a=n[r]:o[r]=n[r];if(arguments.length>2&&(o.children=arguments.length>3?nc.call(arguments,2):i),"function"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===o[r]&&(o[r]=e.defaultProps[r]);return hc(e,o,t,a,null)}function hc(e,n,i,t,a){var r={type:e,props:n,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++tc:a};return null==a&&null!=ic.vnode&&ic.vnode(r),r}function mc(){return{current:null}}function pc(e){return e.children}function gc(e,n){this.props=e,this.context=n}function vc(e,n){if(null==n)return e.__?vc(e.__,e.__.__k.indexOf(e)+1):null;for(var i;n<e.__k.length;n++)if(null!=(i=e.__k[n])&&null!=i.__e)return i.__e;return"function"==typeof e.type?vc(e):null}function yc(e){var n,i;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,n=0;n<e.__k.length;n++)if(null!=(i=e.__k[n])&&null!=i.__e){e.__e=e.__c.base=i.__e;break}return yc(e)}}function kc(e){(!e.__d&&(e.__d=!0)&&ac.push(e)&&!bc.__r++||oc!==ic.debounceRendering)&&((oc=ic.debounceRendering)||rc)(bc)}function bc(){for(var e;bc.__r=ac.length;)e=ac.sort(function(e,n){return e.__v.__b-n.__v.__b}),ac=[],e.some(function(e){var n,i,t,a,r,o;e.__d&&(r=(a=(n=e).__v).__e,(o=n.__P)&&(i=[],(t=cc({},a)).__v=a.__v+1,jc(o,a,t,n.__n,void 0!==o.ownerSVGElement,null!=a.__h?[r]:null,i,null==r?vc(a):r,a.__h),Ec(i,a),a.__e!=r&&yc(a)))})}function wc(e,n,i,t,a,r,o,s,d,l){var c,f,u,h,m,p,g,v=t&&t.__k||dc,y=v.length;for(i.__k=[],c=0;c<n.length;c++)if(null!=(h=i.__k[c]=null==(h=n[c])||"boolean"==typeof h?null:"string"==typeof h||"number"==typeof h||"bigint"==typeof h?hc(null,h,null,null,h):Array.isArray(h)?hc(pc,{children:h},null,null,null):h.__b>0?hc(h.type,h.props,h.key,null,h.__v):h)){if(h.__=i,h.__b=i.__b+1,null===(u=v[c])||u&&h.key==u.key&&h.type===u.type)v[c]=void 0;else for(f=0;f<y;f++){if((u=v[f])&&h.key==u.key&&h.type===u.type){v[f]=void 0;break}u=null}jc(e,h,u=u||sc,a,r,o,s,d,l),m=h.__e,(f=h.ref)&&u.ref!=f&&(g||(g=[]),u.ref&&g.push(u.ref,null,h),g.push(f,h.__c||m,h)),null!=m?(null==p&&(p=m),"function"==typeof h.type&&h.__k===u.__k?h.__d=d=_c(h,d,e):d=Cc(e,h,u,v,m,d),"function"==typeof i.type&&(i.__d=d)):d&&u.__e==d&&d.parentNode!=e&&(d=vc(u))}for(i.__e=p,c=y;c--;)null!=v[c]&&("function"==typeof i.type&&null!=v[c].__e&&v[c].__e==i.__d&&(i.__d=vc(t,c+1)),Mc(v[c],v[c]));if(g)for(c=0;c<g.length;c++)Pc(g[c],g[++c],g[++c])}function _c(e,n,i){for(var t,a=e.__k,r=0;a&&r<a.length;r++)(t=a[r])&&(t.__=e,n="function"==typeof t.type?_c(t,n,i):Cc(i,t,t,a,t.__e,n));return n}function xc(e,n){return n=n||[],null==e||"boolean"==typeof e||(Array.isArray(e)?e.some(function(e){xc(e,n)}):n.push(e)),n}function Cc(e,n,i,t,a,r){var o,s,d;if(void 0!==n.__d)o=n.__d,n.__d=void 0;else if(null==i||a!=r||null==a.parentNode)e:if(null==r||r.parentNode!==e)e.appendChild(a),o=null;else{for(s=r,d=0;(s=s.nextSibling)&&d<t.length;d+=2)if(s==a)break e;e.insertBefore(a,r),o=r}return void 0!==o?o:a.nextSibling}function Sc(e,n,i){"-"===n[0]?e.setProperty(n,i):e[n]=null==i?"":"number"!=typeof i||lc.test(n)?i:i+"px"}function Tc(e,n,i,t,a){var r;e:if("style"===n)if("string"==typeof i)e.style.cssText=i;else{if("string"==typeof t&&(e.style.cssText=t=""),t)for(n in t)i&&n in i||Sc(e.style,n,"");if(i)for(n in i)t&&i[n]===t[n]||Sc(e.style,n,i[n])}else if("o"===n[0]&&"n"===n[1])r=n!==(n=n.replace(/Capture$/,"")),n=n.toLowerCase()in e?n.toLowerCase().slice(2):n.slice(2),e.l||(e.l={}),e.l[n+r]=i,i?t||e.addEventListener(n,r?Ac:Ic,r):e.removeEventListener(n,r?Ac:Ic,r);else if("dangerouslySetInnerHTML"!==n){if(a)n=n.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if("href"!==n&&"list"!==n&&"form"!==n&&"tabIndex"!==n&&"download"!==n&&n in e)try{e[n]=null==i?"":i;break e}catch(e){}"function"==typeof i||(null!=i&&(!1!==i||"a"===n[0]&&"r"===n[1])?e.setAttribute(n,i):e.removeAttribute(n))}}function Ic(e){this.l[e.type+!1](ic.event?ic.event(e):e)}function Ac(e){this.l[e.type+!0](ic.event?ic.event(e):e)}function jc(e,n,i,t,a,r,o,s,d){var l,c,f,u,h,m,p,g,v,y,k,b=n.type;if(void 0!==n.constructor)return null;null!=i.__h&&(d=i.__h,s=n.__e=i.__e,n.__h=null,r=[s]),(l=ic.__b)&&l(n);try{e:if("function"==typeof b){if(g=n.props,v=(l=b.contextType)&&t[l.__c],y=l?v?v.props.value:l.__:t,i.__c?p=(c=n.__c=i.__c).__=c.__E:("prototype"in b&&b.prototype.render?n.__c=c=new b(g,y):(n.__c=c=new gc(g,y),c.constructor=b,c.render=Rc),v&&v.sub(c),c.props=g,c.state||(c.state={}),c.context=y,c.__n=t,f=c.__d=!0,c.__h=[]),null==c.__s&&(c.__s=c.state),null!=b.getDerivedStateFromProps&&(c.__s==c.state&&(c.__s=cc({},c.__s)),cc(c.__s,b.getDerivedStateFromProps(g,c.__s))),u=c.props,h=c.state,f)null==b.getDerivedStateFromProps&&null!=c.componentWillMount&&c.componentWillMount(),null!=c.componentDidMount&&c.__h.push(c.componentDidMount);else{if(null==b.getDerivedStateFromProps&&g!==u&&null!=c.componentWillReceiveProps&&c.componentWillReceiveProps(g,y),!c.__e&&null!=c.shouldComponentUpdate&&!1===c.shouldComponentUpdate(g,c.__s,y)||n.__v===i.__v){c.props=g,c.state=c.__s,n.__v!==i.__v&&(c.__d=!1),c.__v=n,n.__e=i.__e,n.__k=i.__k,n.__k.forEach(function(e){e&&(e.__=n)}),c.__h.length&&o.push(c);break e}null!=c.componentWillUpdate&&c.componentWillUpdate(g,c.__s,y),null!=c.componentDidUpdate&&c.__h.push(function(){c.componentDidUpdate(u,h,m)})}c.context=y,c.props=g,c.state=c.__s,(l=ic.__r)&&l(n),c.__d=!1,c.__v=n,c.__P=e,l=c.render(c.props,c.state,c.context),c.state=c.__s,null!=c.getChildContext&&(t=cc(cc({},t),c.getChildContext())),f||null==c.getSnapshotBeforeUpdate||(m=c.getSnapshotBeforeUpdate(u,h)),k=null!=l&&l.type===pc&&null==l.key?l.props.children:l,wc(e,Array.isArray(k)?k:[k],n,i,t,a,r,o,s,d),c.base=n.__e,n.__h=null,c.__h.length&&o.push(c),p&&(c.__E=c.__=null),c.__e=!1}else null==r&&n.__v===i.__v?(n.__k=i.__k,n.__e=i.__e):n.__e=function(e,n,i,t,a,r,o,s){var d,l,c,f=i.props,u=n.props,h=n.type,m=0;if("svg"===h&&(a=!0),null!=r)for(;m<r.length;m++)if((d=r[m])&&"setAttribute"in d==!!h&&(h?d.localName===h:3===d.nodeType)){e=d,r[m]=null;break}if(null==e){if(null===h)return document.createTextNode(u);e=a?document.createElementNS("http://www.w3.org/2000/svg",h):document.createElement(h,u.is&&u),r=null,s=!1}if(null===h)f===u||s&&e.data===u||(e.data=u);else{if(r=r&&nc.call(e.childNodes),l=(f=i.props||sc).dangerouslySetInnerHTML,c=u.dangerouslySetInnerHTML,!s){if(null!=r)for(f={},m=0;m<e.attributes.length;m++)f[e.attributes[m].name]=e.attributes[m].value;(c||l)&&(c&&(l&&c.__html==l.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(function(e,n,i,t,a){var r;for(r in i)"children"===r||"key"===r||r in n||Tc(e,r,null,i[r],t);for(r in n)a&&"function"!=typeof n[r]||"children"===r||"key"===r||"value"===r||"checked"===r||i[r]===n[r]||Tc(e,r,n[r],i[r],t)}(e,u,f,a,s),c)n.__k=[];else if(m=n.props.children,wc(e,Array.isArray(m)?m:[m],n,i,t,a&&"foreignObject"!==h,r,o,r?r[0]:i.__k&&vc(i,0),s),null!=r)for(m=r.length;m--;)null!=r[m]&&fc(r[m]);s||("value"in u&&void 0!==(m=u.value)&&(m!==f.value||m!==e.value||"progress"===h&&!m)&&Tc(e,"value",m,f.value,!1),"checked"in u&&void 0!==(m=u.checked)&&m!==e.checked&&Tc(e,"checked",m,f.checked,!1))}return e}(i.__e,n,i,t,a,r,o,d);(l=ic.diffed)&&l(n)}catch(e){n.__v=null,(d||null!=r)&&(n.__e=s,n.__h=!!d,r[r.indexOf(s)]=null),ic.__e(e,n,i)}}function Ec(e,n){ic.__c&&ic.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){ic.__e(e,n.__v)}})}function Pc(e,n,i){try{"function"==typeof e?e(n):e.current=n}catch(e){ic.__e(e,i)}}function Mc(e,n,i){var t,a;if(ic.unmount&&ic.unmount(e),(t=e.ref)&&(t.current&&t.current!==e.__e||Pc(t,null,n)),null!=(t=e.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(e){ic.__e(e,n)}t.base=t.__P=null}if(t=e.__k)for(a=0;a<t.length;a++)t[a]&&Mc(t[a],n,"function"!=typeof e.type);i||null==e.__e||fc(e.__e),e.__e=e.__d=void 0}function Rc(e,n,i){return this.constructor(e,i)}function Nc(e,n,i){var t,a,r;ic.__&&ic.__(e,n),a=(t="function"==typeof i)?null:i&&i.__k||n.__k,r=[],jc(n,e=(!t&&i||n).__k=uc(pc,null,[e]),a||sc,sc,void 0!==n.ownerSVGElement,!t&&i?[i]:a?null:n.firstChild?nc.call(n.childNodes):null,r,!t&&i?i:a?a.__e:n.firstChild,t),Ec(r,e)}nc=dc.slice,ic={__e:function(e,n){for(var i,t,a;n=n.__;)if((i=n.__c)&&!i.__)try{if((t=i.constructor)&&null!=t.getDerivedStateFromError&&(i.setState(t.getDerivedStateFromError(e)),a=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e),a=i.__d),a)return i.__E=i}catch(n){e=n}throw e}},tc=0,gc.prototype.setState=function(e,n){var i;i=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=cc({},this.state),"function"==typeof e&&(e=e(cc({},i),this.props)),e&&cc(i,e),null!=e&&this.__v&&(n&&this.__h.push(n),kc(this))},gc.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),kc(this))},gc.prototype.render=pc,ac=[],rc="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,bc.__r=0;var Oc=0;function Fc(e,n,i,t,a){var r,o,s={};for(o in n)"ref"==o?r=n[o]:s[o]=n[o];var d={type:e,props:s,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--Oc,__source:t,__self:a};if("function"==typeof e&&(r=e.defaultProps))for(o in r)void 0===s[o]&&(s[o]=r[o]);return ic.vnode&&ic.vnode(d),d}var zc=function(e,n){try{window.localStorage[`emoji-mart.${e}`]=JSON.stringify(n)}catch(e){}},Lc=function(e){try{const n=window.localStorage[`emoji-mart.${e}`];if(n)return JSON.parse(n)}catch(e){}};const qc=new Map,Bc=[{v:15,emoji:"🫨"},{v:14,emoji:"🫠"},{v:13.1,emoji:"😶🌫️"},{v:13,emoji:"🥸"},{v:12.1,emoji:"🧑🦰"},{v:12,emoji:"🥱"},{v:11,emoji:"🥰"},{v:5,emoji:"🤩"},{v:4,emoji:"👱♀️"},{v:3,emoji:"🤣"},{v:2,emoji:"👋🏻"},{v:1,emoji:"🙃"}];function Hc(e){if(qc.has(e))return qc.get(e);const n=Dc(e);return qc.set(e,n),n}const Dc=(()=>{let e=null;try{navigator.userAgent.includes("jsdom")||(e=document.createElement("canvas").getContext("2d",{willReadFrequently:!0}))}catch{}if(!e)return()=>!1;const n=20,i=Math.floor(12.5);return e.font=i+"px Arial, Sans-Serif",e.textBaseline="top",e.canvas.width=40,e.canvas.height=25,i=>{e.clearRect(0,0,40,25),e.fillStyle="#FF0000",e.fillText(i,0,22),e.fillStyle="#0000FF",e.fillText(i,n,22);const t=e.getImageData(0,0,n,25).data,a=t.length;let r=0;for(;r<a&&!t[r+3];r+=4);if(r>=a)return!1;const o=n+r/4%n,s=Math.floor(r/4/n),d=e.getImageData(o,s,1,1).data;return t[r]===d[0]&&t[r+2]===d[2]&&!(e.measureText(i).width>=n)}})();var Uc=function(){for(const{v:e,emoji:n}of Bc)if(Hc(n))return e},Wc=function(){return!Hc("🇨🇦")};const Kc=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart"];let Gc=null;var $c,Vc=function(e){Gc||(Gc=Lc("frequently")||{});const n=e.id||e;n&&(Gc[n]||(Gc[n]=0),Gc[n]+=1,zc("last",n),zc("frequently",Gc))},Qc=function({maxFrequentRows:e,perLine:n}){if(!e)return[];Gc||(Gc=Lc("frequently"));let i=[];if(!Gc){Gc={};for(let e in Kc.slice(0,n)){const t=Kc[e];Gc[t]=n-e,i.push(t)}return i}const t=e*n,a=Lc("last");for(let e in Gc)i.push(e);if(i.sort((e,n)=>{const i=Gc[n],t=Gc[e];return i==t?e.localeCompare(n):i-t}),i.length>t){const e=i.slice(t);i=i.slice(0,t);for(let n of e)n!=a&&delete Gc[n];a&&-1==i.indexOf(a)&&(delete Gc[i[i.length-1]],i.splice(-1,1,a)),zc("frequently",Gc)}return i};$c=JSON.parse('{"search":"Search","search_no_results_1":"Oh no!","search_no_results_2":"That emoji couldn’t be found","pick":"Pick an emoji…","add_custom":"Add custom emoji","categories":{"activity":"Activity","custom":"Custom","flags":"Flags","foods":"Food & Drink","frequent":"Frequently used","nature":"Animals & Nature","objects":"Objects","people":"Smileys & People","places":"Travel & Places","search":"Search Results","symbols":"Symbols"},"skins":{"1":"Default","2":"Light","3":"Medium-Light","4":"Medium","5":"Medium-Dark","6":"Dark","choose":"Choose default skin tone"}}');var Yc={autoFocus:{value:!1},dynamicWidth:{value:!1},emojiButtonColors:{value:null},emojiButtonRadius:{value:"100%"},emojiButtonSize:{value:36},emojiSize:{value:24},emojiVersion:{value:15,choices:[1,2,3,4,5,11,12,12.1,13,13.1,14,15]},exceptEmojis:{value:[]},icons:{value:"auto",choices:["auto","outline","solid"]},locale:{value:"en",choices:["en","ar","be","cs","de","es","fa","fi","fr","hi","it","ja","ko","nl","pl","pt","ru","sa","tr","uk","vi","zh"]},maxFrequentRows:{value:4},navPosition:{value:"top",choices:["top","bottom","none"]},noCountryFlags:{value:!1},noResultsEmoji:{value:null},perLine:{value:9},previewEmoji:{value:null},previewPosition:{value:"bottom",choices:["top","bottom","none"]},searchPosition:{value:"sticky",choices:["sticky","static","none"]},set:{value:"native",choices:["native","apple","facebook","google","twitter"]},skin:{value:1,choices:[1,2,3,4,5,6]},skinTonePosition:{value:"preview",choices:["preview","search","none"]},theme:{value:"auto",choices:["auto","light","dark"]},categories:null,categoryIcons:null,custom:null,data:null,i18n:null,getImageURL:null,getSpritesheetURL:null,onAddCustomEmoji:null,onClickOutside:null,onEmojiSelect:null,stickySearch:{deprecated:!0,value:!0}};let Jc=null,Xc=null;const Zc={};async function ef(e){if(Zc[e])return Zc[e];const n=await fetch(e),i=await n.json();return Zc[e]=i,i}let nf=null,tf=null,af=!1;function rf(e,{caller:n}={}){return nf||(nf=new Promise(e=>{tf=e})),e?async function(e){af=!0;let{emojiVersion:n,set:i,locale:t}=e;if(n||(n=Yc.emojiVersion.value),i||(i=Yc.set.value),t||(t=Yc.locale.value),Xc)Xc.categories=Xc.categories.filter(e=>!e.name);else{Xc=("function"==typeof e.data?await e.data():e.data)||await ef(`https://cdn.jsdelivr.net/npm/@emoji-mart/data@latest/sets/${n}/${i}.json`),Xc.emoticons={},Xc.natives={},Xc.categories.unshift({id:"frequent",emojis:[]});for(const e in Xc.aliases){const n=Xc.aliases[e],i=Xc.emojis[n];i&&(i.aliases||(i.aliases=[]),i.aliases.push(e))}Xc.originalCategories=Xc.categories}if(Jc=("function"==typeof e.i18n?await e.i18n():e.i18n)||("en"==t?Zl($c):await ef(`https://cdn.jsdelivr.net/npm/@emoji-mart/data@latest/i18n/${t}.json`)),e.custom)for(let n in e.custom){n=parseInt(n);const i=e.custom[n],t=e.custom[n-1];if(i.emojis&&i.emojis.length){i.id||(i.id=`custom_${n+1}`),i.name||(i.name=Jc.categories.custom),t&&!i.icon&&(i.target=t.target||t),Xc.categories.push(i);for(const e of i.emojis)Xc.emojis[e.id]=e}}e.categories&&(Xc.categories=Xc.originalCategories.filter(n=>-1!=e.categories.indexOf(n.id)).sort((n,i)=>e.categories.indexOf(n.id)-e.categories.indexOf(i.id)));let a=null,r=null;"native"==i&&(a=Uc(),r=e.noCountryFlags||Wc());let o=Xc.categories.length,s=!1;for(;o--;){const n=Xc.categories[o];if("frequent"==n.id){let{maxFrequentRows:i,perLine:t}=e;i=i>=0?i:Yc.maxFrequentRows.value,t||(t=Yc.perLine.value),n.emojis=Qc({maxFrequentRows:i,perLine:t})}if(!n.emojis||!n.emojis.length){Xc.categories.splice(o,1);continue}const{categoryIcons:i}=e;if(i){const e=i[n.id];e&&!n.icon&&(n.icon=e)}let t=n.emojis.length;for(;t--;){const i=n.emojis[t],o=i.id?i:Xc.emojis[i],d=()=>{n.emojis.splice(t,1)};if(!o||e.exceptEmojis&&e.exceptEmojis.includes(o.id))d();else if(a&&o.version>a)d();else if(!r||"flags"!=n.id||cf.includes(o.id)){if(!o.search){if(s=!0,o.search=","+[[o.id,!1],[o.name,!0],[o.keywords,!1],[o.emoticons,!1]].map(([e,n])=>{if(e)return(Array.isArray(e)?e:[e]).map(e=>(n?e.split(/[-|_|\s]+/):[e]).map(e=>e.toLowerCase())).flat()}).flat().filter(e=>e&&e.trim()).join(","),o.emoticons)for(const e of o.emoticons)Xc.emoticons[e]||(Xc.emoticons[e]=o.id);let e=0;for(const n of o.skins){if(!n)continue;e++;const{native:i}=n;i&&(Xc.natives[i]=o.id,o.search+=`,${i}`);const t=1==e?"":`:skin-tone-${e}:`;n.shortcodes=`:${o.id}:${t}`}}}else d()}}s&&lf.reset(),tf()}(e):n&&!af&&console.warn(`\`${n}\` requires data to be initialized first. Promise will be pending until \`init\` is called.`),nf}function of(e,n,i){e||(e={});const t={};for(let a in n)t[a]=sf(a,e,n,i);return t}function sf(e,n,i,t){const a=i[e];let r=t&&t.getAttribute(e)||(null!=n[e]&&null!=n[e]?n[e]:null);return a?(null!=r&&a.value&&typeof a.value!=typeof r&&(r="boolean"==typeof a.value?"false"!=r:a.value.constructor(r)),a.transform&&r&&(r=a.transform(r)),(null==r||a.choices&&-1==a.choices.indexOf(r))&&(r=a.value),r):r}let df=null;var lf={search:async function(e,{maxResults:n,caller:i}={}){if(!e||!e.trim().length)return null;n||(n=90),await rf(null,{caller:i||"SearchIndex.search"});const t=e.toLowerCase().replace(/(\w)-/,"$1 ").split(/[\s|,]+/).filter((e,n,i)=>e.trim()&&i.indexOf(e)==n);if(!t.length)return;let a,r,o=df||(df=Object.values(Xc.emojis));for(const e of t){if(!o.length)break;a=[],r={};for(const n of o){if(!n.search)continue;const i=n.search.indexOf(`,${e}`);-1!=i&&(a.push(n),r[n.id]||(r[n.id]=0),r[n.id]+=n.id==e?0:i+1)}o=a}return a.length<2||(a.sort((e,n)=>{const i=r[e.id],t=r[n.id];return i==t?e.id.localeCompare(n.id):i-t}),a.length>n&&(a=a.slice(0,n))),a},get:function(e){return e.id?e:Xc.emojis[e]||Xc.emojis[Xc.aliases[e]]||Xc.emojis[Xc.natives[e]]},reset:function(){df=null},SHORTCODES_REGEX:/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/};const cf=["checkered_flag","crossed_flags","pirate_flag","rainbow-flag","transgender_flag","triangular_flag_on_post","waving_black_flag","waving_white_flag"];var ff={categories:{activity:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fc("path",{d:"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113"})}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M16.17 337.5c0 44.98 7.565 83.54 13.98 107.9C35.22 464.3 50.46 496 174.9 496c9.566 0 19.59-.4707 29.84-1.271L17.33 307.3C16.53 317.6 16.17 327.7 16.17 337.5zM495.8 174.5c0-44.98-7.565-83.53-13.98-107.9c-4.688-17.54-18.34-31.23-36.04-35.95C435.5 27.91 392.9 16 337 16c-9.564 0-19.59 .4707-29.84 1.271l187.5 187.5C495.5 194.4 495.8 184.3 495.8 174.5zM26.77 248.8l236.3 236.3c142-36.1 203.9-150.4 222.2-221.1L248.9 26.87C106.9 62.96 45.07 177.2 26.77 248.8zM256 335.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L164.7 283.3C161.6 280.2 160 276.1 160 271.1c0-8.529 6.865-16 16-16c4.095 0 8.189 1.562 11.31 4.688l64.01 64C254.4 327.8 256 331.9 256 335.1zM304 287.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L212.7 235.3C209.6 232.2 208 228.1 208 223.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01C302.5 279.8 304 283.9 304 287.1zM256 175.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01c3.125 3.125 4.688 7.219 4.688 11.31c0 9.133-7.468 16-16 16c-4.094 0-8.189-1.562-11.31-4.688l-64.01-64.01C257.6 184.2 256 180.1 256 175.1z"})})},custom:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",children:Fc("path",{d:"M417.1 368c-5.937 10.27-16.69 16-27.75 16c-5.422 0-10.92-1.375-15.97-4.281L256 311.4V448c0 17.67-14.33 32-31.1 32S192 465.7 192 448V311.4l-118.3 68.29C68.67 382.6 63.17 384 57.75 384c-11.06 0-21.81-5.734-27.75-16c-8.828-15.31-3.594-34.88 11.72-43.72L159.1 256L41.72 187.7C26.41 178.9 21.17 159.3 29.1 144C36.63 132.5 49.26 126.7 61.65 128.2C65.78 128.7 69.88 130.1 73.72 132.3L192 200.6V64c0-17.67 14.33-32 32-32S256 46.33 256 64v136.6l118.3-68.29c3.838-2.213 7.939-3.539 12.07-4.051C398.7 126.7 411.4 132.5 417.1 144c8.828 15.31 3.594 34.88-11.72 43.72L288 256l118.3 68.28C421.6 333.1 426.8 352.7 417.1 368z"})}),flags:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fc("path",{d:"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z"})}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M64 496C64 504.8 56.75 512 48 512h-32C7.25 512 0 504.8 0 496V32c0-17.75 14.25-32 32-32s32 14.25 32 32V496zM476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87C160.9 .3055 131.6 4.867 96 15.75v350.5c32-9.984 59.87-14.1 84.85-14.1c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0z"})})},foods:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fc("path",{d:"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9"})}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M481.9 270.1C490.9 279.1 496 291.3 496 304C496 316.7 490.9 328.9 481.9 337.9C472.9 346.9 460.7 352 448 352H64C51.27 352 39.06 346.9 30.06 337.9C21.06 328.9 16 316.7 16 304C16 291.3 21.06 279.1 30.06 270.1C39.06 261.1 51.27 256 64 256H448C460.7 256 472.9 261.1 481.9 270.1zM475.3 388.7C478.3 391.7 480 395.8 480 400V416C480 432.1 473.3 449.3 461.3 461.3C449.3 473.3 432.1 480 416 480H96C79.03 480 62.75 473.3 50.75 461.3C38.74 449.3 32 432.1 32 416V400C32 395.8 33.69 391.7 36.69 388.7C39.69 385.7 43.76 384 48 384H464C468.2 384 472.3 385.7 475.3 388.7zM50.39 220.8C45.93 218.6 42.03 215.5 38.97 211.6C35.91 207.7 33.79 203.2 32.75 198.4C31.71 193.5 31.8 188.5 32.99 183.7C54.98 97.02 146.5 32 256 32C365.5 32 457 97.02 479 183.7C480.2 188.5 480.3 193.5 479.2 198.4C478.2 203.2 476.1 207.7 473 211.6C469.1 215.5 466.1 218.6 461.6 220.8C457.2 222.9 452.3 224 447.3 224H64.67C59.73 224 54.84 222.9 50.39 220.8zM372.7 116.7C369.7 119.7 368 123.8 368 128C368 131.2 368.9 134.3 370.7 136.9C372.5 139.5 374.1 141.6 377.9 142.8C380.8 143.1 384 144.3 387.1 143.7C390.2 143.1 393.1 141.6 395.3 139.3C397.6 137.1 399.1 134.2 399.7 131.1C400.3 128 399.1 124.8 398.8 121.9C397.6 118.1 395.5 116.5 392.9 114.7C390.3 112.9 387.2 111.1 384 111.1C379.8 111.1 375.7 113.7 372.7 116.7V116.7zM244.7 84.69C241.7 87.69 240 91.76 240 96C240 99.16 240.9 102.3 242.7 104.9C244.5 107.5 246.1 109.6 249.9 110.8C252.8 111.1 256 112.3 259.1 111.7C262.2 111.1 265.1 109.6 267.3 107.3C269.6 105.1 271.1 102.2 271.7 99.12C272.3 96.02 271.1 92.8 270.8 89.88C269.6 86.95 267.5 84.45 264.9 82.7C262.3 80.94 259.2 79.1 256 79.1C251.8 79.1 247.7 81.69 244.7 84.69V84.69zM116.7 116.7C113.7 119.7 112 123.8 112 128C112 131.2 112.9 134.3 114.7 136.9C116.5 139.5 118.1 141.6 121.9 142.8C124.8 143.1 128 144.3 131.1 143.7C134.2 143.1 137.1 141.6 139.3 139.3C141.6 137.1 143.1 134.2 143.7 131.1C144.3 128 143.1 124.8 142.8 121.9C141.6 118.1 139.5 116.5 136.9 114.7C134.3 112.9 131.2 111.1 128 111.1C123.8 111.1 119.7 113.7 116.7 116.7L116.7 116.7z"})})},frequent:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fc("path",{d:"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z"}),Fc("path",{d:"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"})]}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512zM232 256C232 264 236 271.5 242.7 275.1L338.7 339.1C349.7 347.3 364.6 344.3 371.1 333.3C379.3 322.3 376.3 307.4 365.3 300L280 243.2V120C280 106.7 269.3 96 255.1 96C242.7 96 231.1 106.7 231.1 120L232 256z"})})},nature:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fc("path",{d:"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8"}),Fc("path",{d:"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235"})]}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",children:Fc("path",{d:"M332.7 19.85C334.6 8.395 344.5 0 356.1 0C363.6 0 370.6 3.52 375.1 9.502L392 32H444.1C456.8 32 469.1 37.06 478.1 46.06L496 64H552C565.3 64 576 74.75 576 88V112C576 156.2 540.2 192 496 192H426.7L421.6 222.5L309.6 158.5L332.7 19.85zM448 64C439.2 64 432 71.16 432 80C432 88.84 439.2 96 448 96C456.8 96 464 88.84 464 80C464 71.16 456.8 64 448 64zM416 256.1V480C416 497.7 401.7 512 384 512H352C334.3 512 320 497.7 320 480V364.8C295.1 377.1 268.8 384 240 384C211.2 384 184 377.1 160 364.8V480C160 497.7 145.7 512 128 512H96C78.33 512 64 497.7 64 480V249.8C35.23 238.9 12.64 214.5 4.836 183.3L.9558 167.8C-3.331 150.6 7.094 133.2 24.24 128.1C41.38 124.7 58.76 135.1 63.05 152.2L66.93 167.8C70.49 182 83.29 191.1 97.97 191.1H303.8L416 256.1z"})})},objects:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fc("path",{d:"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z"}),Fc("path",{d:"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789"})]}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",children:Fc("path",{d:"M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"})})},people:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fc("path",{d:"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"}),Fc("path",{d:"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0"})]}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM176.4 160C158.7 160 144.4 174.3 144.4 192C144.4 209.7 158.7 224 176.4 224C194 224 208.4 209.7 208.4 192C208.4 174.3 194 160 176.4 160zM336.4 224C354 224 368.4 209.7 368.4 192C368.4 174.3 354 160 336.4 160C318.7 160 304.4 174.3 304.4 192C304.4 209.7 318.7 224 336.4 224z"})})},places:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fc("path",{d:"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5"}),Fc("path",{d:"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z"})]}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M39.61 196.8L74.8 96.29C88.27 57.78 124.6 32 165.4 32H346.6C387.4 32 423.7 57.78 437.2 96.29L472.4 196.8C495.6 206.4 512 229.3 512 256V448C512 465.7 497.7 480 480 480H448C430.3 480 416 465.7 416 448V400H96V448C96 465.7 81.67 480 64 480H32C14.33 480 0 465.7 0 448V256C0 229.3 16.36 206.4 39.61 196.8V196.8zM109.1 192H402.9L376.8 117.4C372.3 104.6 360.2 96 346.6 96H165.4C151.8 96 139.7 104.6 135.2 117.4L109.1 192zM96 256C78.33 256 64 270.3 64 288C64 305.7 78.33 320 96 320C113.7 320 128 305.7 128 288C128 270.3 113.7 256 96 256zM416 320C433.7 320 448 305.7 448 288C448 270.3 433.7 256 416 256C398.3 256 384 270.3 384 288C384 305.7 398.3 320 416 320z"})})},symbols:{outline:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fc("path",{d:"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76"})}),solid:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",children:Fc("path",{d:"M500.3 7.251C507.7 13.33 512 22.41 512 31.1V175.1C512 202.5 483.3 223.1 447.1 223.1C412.7 223.1 383.1 202.5 383.1 175.1C383.1 149.5 412.7 127.1 447.1 127.1V71.03L351.1 90.23V207.1C351.1 234.5 323.3 255.1 287.1 255.1C252.7 255.1 223.1 234.5 223.1 207.1C223.1 181.5 252.7 159.1 287.1 159.1V63.1C287.1 48.74 298.8 35.61 313.7 32.62L473.7 .6198C483.1-1.261 492.9 1.173 500.3 7.251H500.3zM74.66 303.1L86.5 286.2C92.43 277.3 102.4 271.1 113.1 271.1H174.9C185.6 271.1 195.6 277.3 201.5 286.2L213.3 303.1H239.1C266.5 303.1 287.1 325.5 287.1 351.1V463.1C287.1 490.5 266.5 511.1 239.1 511.1H47.1C21.49 511.1-.0019 490.5-.0019 463.1V351.1C-.0019 325.5 21.49 303.1 47.1 303.1H74.66zM143.1 359.1C117.5 359.1 95.1 381.5 95.1 407.1C95.1 434.5 117.5 455.1 143.1 455.1C170.5 455.1 191.1 434.5 191.1 407.1C191.1 381.5 170.5 359.1 143.1 359.1zM440.3 367.1H496C502.7 367.1 508.6 372.1 510.1 378.4C513.3 384.6 511.6 391.7 506.5 396L378.5 508C372.9 512.1 364.6 513.3 358.6 508.9C352.6 504.6 350.3 496.6 353.3 489.7L391.7 399.1H336C329.3 399.1 323.4 395.9 321 389.6C318.7 383.4 320.4 376.3 325.5 371.1L453.5 259.1C459.1 255 467.4 254.7 473.4 259.1C479.4 263.4 481.6 271.4 478.7 278.3L440.3 367.1zM116.7 219.1L19.85 119.2C-8.112 90.26-6.614 42.31 24.85 15.34C51.82-8.137 93.26-3.642 118.2 21.83L128.2 32.32L137.7 21.83C162.7-3.642 203.6-8.137 231.6 15.34C262.6 42.31 264.1 90.26 236.1 119.2L139.7 219.1C133.2 225.6 122.7 225.6 116.7 219.1H116.7z"})})}},search:{loupe:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:Fc("path",{d:"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"})}),delete:Fc("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:Fc("path",{d:"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z"})})}};function uf(e){let{id:n,skin:i,emoji:t}=e;if(e.shortcodes){const t=e.shortcodes.match(lf.SHORTCODES_REGEX);t&&(n=t[1],t[2]&&(i=t[2]))}if(t||(t=lf.get(n||e.native)),!t)return e.fallback;const a=t.skins[i-1]||t.skins[0],r=a.src||("native"==e.set||e.spritesheet?void 0:"function"==typeof e.getImageURL?e.getImageURL(e.set,a.unified):`https://cdn.jsdelivr.net/npm/emoji-datasource-${e.set}@15.0.1/img/${e.set}/64/${a.unified}.png`),o="function"==typeof e.getSpritesheetURL?e.getSpritesheetURL(e.set):`https://cdn.jsdelivr.net/npm/emoji-datasource-${e.set}@15.0.1/img/${e.set}/sheets-256/64.png`;return Fc("span",{class:"emoji-mart-emoji","data-emoji-set":e.set,children:r?Fc("img",{style:{maxWidth:e.size||"1em",maxHeight:e.size||"1em",display:"inline-block"},alt:a.native||a.shortcodes,src:r}):"native"==e.set?Fc("span",{style:{fontSize:e.size,fontFamily:'"EmojiMart", "Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "Android Emoji"'},children:a.native}):Fc("span",{style:{display:"block",width:e.size,height:e.size,backgroundImage:`url(${o})`,backgroundSize:`${100*Xc.sheet.cols}% ${100*Xc.sheet.rows}%`,backgroundPosition:`${100/(Xc.sheet.cols-1)*a.x}% ${100/(Xc.sheet.rows-1)*a.y}%`}})})}const hf="undefined"!=typeof window&&window.HTMLElement?window.HTMLElement:Object;class mf extends hf{static get observedAttributes(){return Object.keys(this.Props)}update(e={}){for(let n in e)this.attributeChangedCallback(n,null,e[n])}attributeChangedCallback(e,n,i){if(!this.component)return;const t=sf(e,{[e]:i},this.constructor.Props,this);this.component.componentWillReceiveProps?this.component.componentWillReceiveProps({[e]:t}):(this.component.props[e]=t,this.component.forceUpdate())}disconnectedCallback(){this.disconnected=!0,this.component&&this.component.unregister&&this.component.unregister()}constructor(e={}){if(super(),this.props=e,e.parent||e.ref){let n=null;const i=e.parent||(n=e.ref&&e.ref.current);n&&(n.innerHTML=""),i&&i.appendChild(this)}}}class pf extends mf{setShadow(){this.attachShadow({mode:"open"})}injectStyles(e){if(!e)return;const n=document.createElement("style");n.textContent=e,this.shadowRoot.insertBefore(n,this.shadowRoot.firstChild)}constructor(e,{styles:n}={}){super(e),this.setShadow(),this.injectStyles(n)}}var gf={fallback:"",id:"",native:"",shortcodes:"",size:{value:"",transform:e=>/\D/.test(e)?e:`${e}px`},set:Yc.set,skin:Yc.skin};class vf extends mf{async connectedCallback(){const e=of(this.props,gf,this);e.element=this,e.ref=e=>{this.component=e},await rf(),this.disconnected||Nc(Fc(uf,{...e}),this)}constructor(e){super(e)}}ec(vf,"Props",gf),"undefined"==typeof customElements||customElements.get("em-emoji")||customElements.define("em-emoji",vf);var yf,kf,bf=[],wf=ic.__b,_f=ic.__r,xf=ic.diffed,Cf=ic.__c,Sf=ic.unmount;function Tf(){var e;for(bf.sort(function(e,n){return e.__v.__b-n.__v.__b});e=bf.pop();)if(e.__P)try{e.__H.__h.forEach(Af),e.__H.__h.forEach(jf),e.__H.__h=[]}catch(n){e.__H.__h=[],ic.__e(n,e.__v)}}ic.__b=function(e){yf=null,wf&&wf(e)},ic.__r=function(e){_f&&_f(e);var n=(yf=e.__c).__H;n&&(n.__h.forEach(Af),n.__h.forEach(jf),n.__h=[])},ic.diffed=function(e){xf&&xf(e);var n=e.__c;n&&n.__H&&n.__H.__h.length&&(1!==bf.push(n)&&kf===ic.requestAnimationFrame||((kf=ic.requestAnimationFrame)||function(e){var n,i=function(){clearTimeout(t),If&&cancelAnimationFrame(n),setTimeout(e)},t=setTimeout(i,100);If&&(n=requestAnimationFrame(i))})(Tf)),yf=null},ic.__c=function(e,n){n.some(function(e){try{e.__h.forEach(Af),e.__h=e.__h.filter(function(e){return!e.__||jf(e)})}catch(i){n.some(function(e){e.__h&&(e.__h=[])}),n=[],ic.__e(i,e.__v)}}),Cf&&Cf(e,n)},ic.unmount=function(e){Sf&&Sf(e);var n,i=e.__c;i&&i.__H&&(i.__H.__.forEach(function(e){try{Af(e)}catch(e){n=e}}),n&&ic.__e(n,i.__v))};var If="function"==typeof requestAnimationFrame;function Af(e){var n=yf,i=e.__c;"function"==typeof i&&(e.__c=void 0,i()),yf=n}function jf(e){var n=yf;e.__c=e.__(),yf=n}function Ef(e,n){for(var i in e)if("__source"!==i&&!(i in n))return!0;for(var t in n)if("__source"!==t&&e[t]!==n[t])return!0;return!1}function Pf(e){this.props=e}(Pf.prototype=new gc).isPureReactComponent=!0,Pf.prototype.shouldComponentUpdate=function(e,n){return Ef(this.props,e)||Ef(this.state,n)};var Mf=ic.__b;ic.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Mf&&Mf(e)},"undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref");var Rf=ic.__e;ic.__e=function(e,n,i){if(e.then)for(var t,a=n;a=a.__;)if((t=a.__c)&&t.__c)return null==n.__e&&(n.__e=i.__e,n.__k=i.__k),t.__c(e,n);Rf(e,n,i)};var Nf=ic.unmount;function Of(){this.__u=0,this.t=null,this.__b=null}function Ff(e){var n=e.__.__c;return n&&n.__e&&n.__e(e)}function zf(){this.u=null,this.o=null}ic.unmount=function(e){var n=e.__c;n&&n.__R&&n.__R(),n&&!0===e.__h&&(e.type=null),Nf&&Nf(e)},(Of.prototype=new gc).__c=function(e,n){var i=n.__c,t=this;null==t.t&&(t.t=[]),t.t.push(i);var a=Ff(t.__v),r=!1,o=function(){r||(r=!0,i.__R=null,a?a(s):s())};i.__R=o;var s=function(){if(! --t.__u){if(t.state.__e){var e=t.state.__e;t.__v.__k[0]=function e(n,i,t){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return e(n,i,t)}),n.__c&&n.__c.__P===i&&(n.__e&&t.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=t)),n}(e,e.__c.__P,e.__c.__O)}var n;for(t.setState({__e:t.__b=null});n=t.t.pop();)n.forceUpdate()}},d=!0===n.__h;t.__u++||d||t.setState({__e:t.__b=t.__v.__k[0]}),e.then(o,o)},Of.prototype.componentWillUnmount=function(){this.t=[]},Of.prototype.render=function(e,n){if(this.__b){if(this.__v.__k){var i=document.createElement("div"),t=this.__v.__k[0].__c;this.__v.__k[0]=function e(n,i,t){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(e){"function"==typeof e.__c&&e.__c()}),n.__c.__H=null),null!=(n=function(e,n){for(var i in n)e[i]=n[i];return e}({},n)).__c&&(n.__c.__P===t&&(n.__c.__P=i),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return e(n,i,t)})),n}(this.__b,i,t.__O=t.__P)}this.__b=null}var a=n.__e&&uc(pc,null,e.fallback);return a&&(a.__h=null),[uc(pc,null,n.__e?null:e.children),a]};var Lf=function(e,n,i){if(++i[1]===i[0]&&e.o.delete(n),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(i=e.u;i;){for(;i.length>3;)i.pop()();if(i[1]<i[0])break;e.u=i=i[2]}};(zf.prototype=new gc).__e=function(e){var n=this,i=Ff(n.__v),t=n.o.get(e);return t[0]++,function(a){var r=function(){n.props.revealOrder?(t.push(a),Lf(n,e,t)):a()};i?i(r):r()}},zf.prototype.render=function(e){this.u=null,this.o=new Map;var n=xc(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&n.reverse();for(var i=n.length;i--;)this.o.set(n[i],this.u=[1,0,this.u]);return e.children},zf.prototype.componentDidUpdate=zf.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(n,i){Lf(e,i,n)})};var qf="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,Bf=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Hf="undefined"!=typeof document,Df=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(e)};gc.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(gc.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(n){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:n})}})});var Uf=ic.event;function Wf(){}function Kf(){return this.cancelBubble}function Gf(){return this.defaultPrevented}ic.event=function(e){return Uf&&(e=Uf(e)),e.persist=Wf,e.isPropagationStopped=Kf,e.isDefaultPrevented=Gf,e.nativeEvent=e};var $f={configurable:!0,get:function(){return this.class}},Vf=ic.vnode;ic.vnode=function(e){var n=e.type,i=e.props,t=i;if("string"==typeof n){var a=-1===n.indexOf("-");for(var r in t={},i){var o=i[r];Hf&&"children"===r&&"noscript"===n||"value"===r&&"defaultValue"in i&&null==o||("defaultValue"===r&&"value"in i&&null==i.value?r="value":"download"===r&&!0===o?o="":/ondoubleclick/i.test(r)?r="ondblclick":/^onchange(textarea|input)/i.test(r+n)&&!Df(i.type)?r="oninput":/^onfocus$/i.test(r)?r="onfocusin":/^onblur$/i.test(r)?r="onfocusout":/^on(Ani|Tra|Tou|BeforeInp)/.test(r)?r=r.toLowerCase():a&&Bf.test(r)?r=r.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===o&&(o=void 0),t[r]=o)}"select"==n&&t.multiple&&Array.isArray(t.value)&&(t.value=xc(i.children).forEach(function(e){e.props.selected=-1!=t.value.indexOf(e.props.value)})),"select"==n&&null!=t.defaultValue&&(t.value=xc(i.children).forEach(function(e){e.props.selected=t.multiple?-1!=t.defaultValue.indexOf(e.props.value):t.defaultValue==e.props.value})),e.props=t,i.class!=i.className&&($f.enumerable="className"in i,null!=i.className&&(t.class=i.className),Object.defineProperty(t,"className",$f))}e.$$typeof=qf,Vf&&Vf(e)};var Qf=ic.__r;ic.__r=function(e){Qf&&Qf(e),e.__c};const Yf={light:"outline",dark:"solid"};class Jf extends Pf{renderIcon(e){const{icon:n}=e;if(n){if(n.svg)return Fc("span",{class:"flex",dangerouslySetInnerHTML:{__html:n.svg}});if(n.src)return Fc("img",{src:n.src})}const i=ff.categories[e.id]||ff.categories.custom;return i["auto"==this.props.icons?Yf[this.props.theme]:this.props.icons]||i}render(){let e=null;return Fc("nav",{id:"nav",class:"padding","data-position":this.props.position,dir:this.props.dir,children:Fc("div",{class:"flex relative",children:[this.categories.map((n,i)=>{const t=n.name||Jc.categories[n.id],a=!this.props.unfocused&&n.id==this.state.categoryId;return a&&(e=i),Fc("button",{"aria-label":t,"aria-selected":a||void 0,title:t,type:"button",class:"flex flex-grow flex-center",onMouseDown:e=>e.preventDefault(),onClick:()=>{this.props.onClick({category:n,i})},children:this.renderIcon(n)})}),Fc("div",{class:"bar",style:{width:100/this.categories.length+"%",opacity:null==e?0:1,transform:"rtl"===this.props.dir?`scaleX(-1) translateX(${100*e}%)`:`translateX(${100*e}%)`}})]})})}constructor(){super(),this.categories=Xc.categories.filter(e=>!e.target),this.state={categoryId:this.categories[0].id}}}class Xf extends Pf{shouldComponentUpdate(e){for(let n in e)if("children"!=n&&e[n]!=this.props[n])return!0;return!1}render(){return this.props.children}}class Zf extends gc{getInitialState(e=this.props){return{skin:Lc("skin")||e.skin,theme:this.initTheme(e.theme)}}componentWillMount(){this.dir=Jc.rtl?"rtl":"ltr",this.refs={menu:{current:null},navigation:{current:null},scroll:{current:null},search:{current:null},searchInput:{current:null},skinToneButton:{current:null},skinToneRadio:{current:null}},this.initGrid(),0==this.props.stickySearch&&"sticky"==this.props.searchPosition&&(console.warn("[EmojiMart] Deprecation warning: `stickySearch` has been renamed `searchPosition`."),this.props.searchPosition="static")}componentDidMount(){if(this.register(),this.shadowRoot=this.base.parentNode,this.props.autoFocus){const{searchInput:e}=this.refs;e.current&&e.current.focus()}}componentWillReceiveProps(e){this.nextState||(this.nextState={});for(const n in e)this.nextState[n]=e[n];clearTimeout(this.nextStateTimer),this.nextStateTimer=setTimeout(()=>{let e=!1;for(const n in this.nextState)this.props[n]=this.nextState[n],"custom"!==n&&"categories"!==n||(e=!0);delete this.nextState;const n=this.getInitialState();if(e)return this.reset(n);this.setState(n)})}componentWillUnmount(){this.unregister()}async reset(e={}){await rf(this.props),this.initGrid(),this.unobserve(),this.setState(e,()=>{this.observeCategories(),this.observeRows()})}register(){document.addEventListener("click",this.handleClickOutside),this.observe()}unregister(){document.removeEventListener("click",this.handleClickOutside),this.darkMedia?.removeEventListener("change",this.darkMediaCallback),this.unobserve()}observe(){this.observeCategories(),this.observeRows()}unobserve({except:e=[]}={}){Array.isArray(e)||(e=[e]);for(const n of this.observers)e.includes(n)||n.disconnect();this.observers=[].concat(e)}initGrid(){const{categories:e}=Xc;this.refs.categories=new Map;const n=Xc.categories.map(e=>e.id).join(",");this.navKey&&this.navKey!=n&&this.refs.scroll.current&&(this.refs.scroll.current.scrollTop=0),this.navKey=n,this.grid=[],this.grid.setsize=0;const i=(e,n)=>{const i=[];i.__categoryId=n.id,i.__index=e.length,this.grid.push(i);const t=this.grid.length-1,a=t%10?{}:{current:null};return a.index=t,a.posinset=this.grid.setsize+1,e.push(a),i};for(let n of e){const e=[];let t=i(e,n);for(let a of n.emojis)t.length==this.getPerLine()&&(t=i(e,n)),this.grid.setsize+=1,t.push(a);this.refs.categories.set(n.id,{root:mc(),rows:e})}}initTheme(e){if("auto"!=e)return e;if(!this.darkMedia){if(this.darkMedia=matchMedia("(prefers-color-scheme: dark)"),this.darkMedia.media.match(/^not/))return"light";this.darkMedia.addEventListener("change",this.darkMediaCallback)}return this.darkMedia.matches?"dark":"light"}initDynamicPerLine(e=this.props){if(!e.dynamicWidth)return;const{element:n,emojiButtonSize:i}=e,t=()=>{const{width:e}=n.getBoundingClientRect();return Math.floor(e/i)},a=new ResizeObserver(()=>{this.unobserve({except:a}),this.setState({perLine:t()},()=>{this.initGrid(),this.forceUpdate(()=>{this.observeCategories(),this.observeRows()})})});return a.observe(n),this.observers.push(a),t()}getPerLine(){return this.state.perLine||this.props.perLine}getEmojiByPos([e,n]){const i=this.state.searchResults||this.grid,t=i[e]&&i[e][n];if(t)return lf.get(t)}observeCategories(){const e=this.refs.navigation.current;if(!e)return;const n=new Map,i=n=>{n!=e.state.categoryId&&e.setState({categoryId:n})},t={root:this.refs.scroll.current,threshold:[0,1]},a=new IntersectionObserver(e=>{for(const i of e){const e=i.target.dataset.id;n.set(e,i.intersectionRatio)}const t=[...n];for(const[e,n]of t)if(n){i(e);break}},t);for(const{root:e}of this.refs.categories.values())a.observe(e.current);this.observers.push(a)}observeRows(){const e={...this.state.visibleRows},n=new IntersectionObserver(n=>{for(const i of n){const n=parseInt(i.target.dataset.index);i.isIntersecting?e[n]=!0:delete e[n]}this.setState({visibleRows:e})},{root:this.refs.scroll.current,rootMargin:`${15*this.props.emojiButtonSize}px 0px ${10*this.props.emojiButtonSize}px`});for(const{rows:e}of this.refs.categories.values())for(const i of e)i.current&&n.observe(i.current);this.observers.push(n)}preventDefault(e){e.preventDefault()}unfocusSearch(){const e=this.refs.searchInput.current;e&&e.blur()}navigate({e,input:n,left:i,right:t,up:a,down:r}){const o=this.state.searchResults||this.grid;if(!o.length)return;let[s,d]=this.state.pos;const l=(()=>{if(0==s&&0==d&&!e.repeat&&(i||a))return null;if(-1==s)return e.repeat||!t&&!r||n.selectionStart!=n.value.length?null:[0,0];if(i||t){let e=o[s];const n=i?-1:1;if(d+=n,!e[d]){if(s+=n,e=o[s],!e)return s=i?0:o.length-1,d=i?0:o[s].length-1,[s,d];d=i?e.length-1:0}return[s,d]}if(a||r){s+=a?-1:1;const e=o[s];return e?(e[d]||(d=e.length-1),[s,d]):(s=a?0:o.length-1,d=a?0:o[s].length-1,[s,d])}})();l?(e.preventDefault(),this.setState({pos:l,keyboard:!0},()=>{this.scrollTo({row:l[0]})})):this.state.pos[0]>-1&&this.setState({pos:[-1,-1]})}scrollTo({categoryId:e,row:n}){const i=this.state.searchResults||this.grid;if(!i.length)return;const t=this.refs.scroll.current,a=t.getBoundingClientRect();let r=0;if(n>=0&&(e=i[n].__categoryId),e&&(r=(this.refs[e]||this.refs.categories.get(e).root).current.getBoundingClientRect().top-(a.top-t.scrollTop)+1),n>=0)if(n){const e=r+i[n].__index*this.props.emojiButtonSize,o=e+this.props.emojiButtonSize+.88*this.props.emojiButtonSize;if(e<t.scrollTop)r=e;else{if(!(o>t.scrollTop+a.height))return;r=o-a.height}}else r=0;this.ignoreMouse(),t.scrollTop=r}ignoreMouse(){this.mouseIsIgnored=!0,clearTimeout(this.ignoreMouseTimer),this.ignoreMouseTimer=setTimeout(()=>{delete this.mouseIsIgnored},100)}handleEmojiOver(e){this.mouseIsIgnored||this.state.showSkins||this.setState({pos:e||[-1,-1],keyboard:!1})}handleEmojiClick({e,emoji:n,pos:i}){if(this.props.onEmojiSelect&&(!n&&i&&(n=this.getEmojiByPos(i)),n)){const i=function(e,{skinIndex:n=0}={}){const i=e.skins[n]||(n=0,e.skins[n]),t={id:e.id,name:e.name,native:i.native,unified:i.unified,keywords:e.keywords,shortcodes:i.shortcodes||e.shortcodes};return e.skins.length>1&&(t.skin=n+1),i.src&&(t.src=i.src),e.aliases&&e.aliases.length&&(t.aliases=e.aliases),e.emoticons&&e.emoticons.length&&(t.emoticons=e.emoticons),t}(n,{skinIndex:this.state.skin-1});this.props.maxFrequentRows&&Vc(i,this.props),this.props.onEmojiSelect(i,e)}}closeSkins(){this.state.showSkins&&(this.setState({showSkins:null,tempSkin:null}),this.base.removeEventListener("click",this.handleBaseClick),this.base.removeEventListener("keydown",this.handleBaseKeydown))}handleSkinMouseOver(e){this.setState({tempSkin:e})}handleSkinClick(e){this.ignoreMouse(),this.closeSkins(),this.setState({skin:e,tempSkin:null}),zc("skin",e)}renderNav(){return Fc(Jf,{ref:this.refs.navigation,icons:this.props.icons,theme:this.state.theme,dir:this.dir,unfocused:!!this.state.searchResults,position:this.props.navPosition,onClick:this.handleCategoryClick},this.navKey)}renderPreview(){const e=this.getEmojiByPos(this.state.pos),n=this.state.searchResults&&!this.state.searchResults.length;return Fc("div",{id:"preview",class:"flex flex-middle",dir:this.dir,"data-position":this.props.previewPosition,children:[Fc("div",{class:"flex flex-middle flex-grow",children:[Fc("div",{class:"flex flex-auto flex-middle flex-center",style:{height:this.props.emojiButtonSize,fontSize:this.props.emojiButtonSize},children:Fc(uf,{emoji:e,id:n?this.props.noResultsEmoji||"cry":this.props.previewEmoji||("top"==this.props.previewPosition?"point_down":"point_up"),set:this.props.set,size:this.props.emojiButtonSize,skin:this.state.tempSkin||this.state.skin,spritesheet:!0,getSpritesheetURL:this.props.getSpritesheetURL})}),Fc("div",{class:`margin-${this.dir[0]}`,children:Fc("div",e||n?{class:`padding-${this.dir[2]} align-${this.dir[0]}`,children:[Fc("div",{class:"preview-title ellipsis",children:e?e.name:Jc.search_no_results_1}),Fc("div",{class:"preview-subtitle ellipsis color-c",children:e?e.skins[0].shortcodes:Jc.search_no_results_2})]}:{class:"preview-placeholder color-c",children:Jc.pick})})]}),!e&&"preview"==this.props.skinTonePosition&&this.renderSkinToneButton()]})}renderEmojiButton(e,{pos:n,posinset:i,grid:t}){const a=this.props.emojiButtonSize,r=this.state.tempSkin||this.state.skin,o=(e.skins[r-1]||e.skins[0]).native,s=(d=this.state.pos,l=n,Array.isArray(d)&&Array.isArray(l)&&d.length===l.length&&d.every((e,n)=>e==l[n]));var d,l;const c=n.concat(e.id).join("");return Fc(Xf,{selected:s,skin:r,size:a,children:Fc("button",{"aria-label":o,"aria-selected":s||void 0,"aria-posinset":i,"aria-setsize":t.setsize,"data-keyboard":this.state.keyboard,title:"none"==this.props.previewPosition?e.name:void 0,type:"button",class:"flex flex-center flex-middle",tabindex:"-1",onClick:n=>this.handleEmojiClick({e:n,emoji:e}),onMouseEnter:()=>this.handleEmojiOver(n),onMouseLeave:()=>this.handleEmojiOver(),style:{width:this.props.emojiButtonSize,height:this.props.emojiButtonSize,fontSize:this.props.emojiSize,lineHeight:0},children:[Fc("div",{"aria-hidden":"true",class:"background",style:{borderRadius:this.props.emojiButtonRadius,backgroundColor:this.props.emojiButtonColors?this.props.emojiButtonColors[(i-1)%this.props.emojiButtonColors.length]:void 0}}),Fc(uf,{emoji:e,set:this.props.set,size:this.props.emojiSize,skin:r,spritesheet:!0,getSpritesheetURL:this.props.getSpritesheetURL})]})},c)}renderSearch(){const e="none"==this.props.previewPosition||"search"==this.props.skinTonePosition;return Fc("div",{children:[Fc("div",{class:"spacer"}),Fc("div",{class:"flex flex-middle",children:[Fc("div",{class:"search relative flex-grow",children:[Fc("input",{type:"search",ref:this.refs.searchInput,placeholder:Jc.search,onClick:this.handleSearchClick,onInput:this.handleSearchInput,onKeyDown:this.handleSearchKeyDown,autoComplete:"off"}),Fc("span",{class:"icon loupe flex",children:ff.search.loupe}),this.state.searchResults&&Fc("button",{title:"Clear","aria-label":"Clear",type:"button",class:"icon delete flex",onClick:this.clearSearch,onMouseDown:this.preventDefault,children:ff.search.delete})]}),e&&this.renderSkinToneButton()]})]})}renderSearchResults(){const{searchResults:e}=this.state;return e?Fc("div",{class:"category",ref:this.refs.search,children:[Fc("div",{class:`sticky padding-small align-${this.dir[0]}`,children:Jc.categories.search}),Fc("div",{children:e.length?e.map((n,i)=>Fc("div",{class:"flex",children:n.map((n,t)=>this.renderEmojiButton(n,{pos:[i,t],posinset:i*this.props.perLine+t+1,grid:e}))})):Fc("div",{class:`padding-small align-${this.dir[0]}`,children:this.props.onAddCustomEmoji&&Fc("a",{onClick:this.props.onAddCustomEmoji,children:Jc.add_custom})})})]}):null}renderCategories(){const{categories:e}=Xc,n=!!this.state.searchResults,i=this.getPerLine();return Fc("div",{style:{visibility:n?"hidden":void 0,display:n?"none":void 0,height:"100%"},children:e.map(e=>{const{root:n,rows:t}=this.refs.categories.get(e.id);return Fc("div",{"data-id":e.target?e.target.id:e.id,class:"category",ref:n,children:[Fc("div",{class:`sticky padding-small align-${this.dir[0]}`,children:e.name||Jc.categories[e.id]}),Fc("div",{class:"relative",style:{height:t.length*this.props.emojiButtonSize},children:t.map((n,t)=>{const a=n.index-n.index%10,r=this.state.visibleRows[a],o="current"in n?n:void 0;if(!r&&!o)return null;const s=t*i,d=s+i,l=e.emojis.slice(s,d);return l.length<i&&l.push(...new Array(i-l.length)),Fc("div",{"data-index":n.index,ref:o,class:"flex row",style:{top:t*this.props.emojiButtonSize},children:r&&l.map((e,i)=>{if(!e)return Fc("div",{style:{width:this.props.emojiButtonSize,height:this.props.emojiButtonSize}});const t=lf.get(e);return this.renderEmojiButton(t,{pos:[n.index,i],posinset:n.posinset+i,grid:this.grid})})},n.index)})})]})})})}renderSkinToneButton(){return"none"==this.props.skinTonePosition?null:Fc("div",{class:"flex flex-auto flex-center flex-middle",style:{position:"relative",width:this.props.emojiButtonSize,height:this.props.emojiButtonSize},children:Fc("button",{type:"button",ref:this.refs.skinToneButton,class:"skin-tone-button flex flex-auto flex-center flex-middle","aria-selected":this.state.showSkins?"":void 0,"aria-label":Jc.skins.choose,title:Jc.skins.choose,onClick:this.openSkins,style:{width:this.props.emojiSize,height:this.props.emojiSize},children:Fc("span",{class:`skin-tone skin-tone-${this.state.skin}`})})})}renderLiveRegion(){const e=this.getEmojiByPos(this.state.pos);return Fc("div",{"aria-live":"polite",class:"sr-only",children:e?e.name:""})}renderSkins(){const e=this.refs.skinToneButton.current.getBoundingClientRect(),n=this.base.getBoundingClientRect(),i={};return"ltr"==this.dir?i.right=n.right-e.right-3:i.left=e.left-n.left-3,"bottom"==this.props.previewPosition&&"preview"==this.props.skinTonePosition?i.bottom=n.bottom-e.top+6:(i.top=e.bottom-n.top+3,i.bottom="auto"),Fc("div",{ref:this.refs.menu,role:"radiogroup",dir:this.dir,"aria-label":Jc.skins.choose,class:"menu hidden","data-position":i.top?"top":"bottom",style:i,children:[...Array(6).keys()].map(e=>{const n=e+1,i=this.state.skin==n;return Fc("div",{children:[Fc("input",{type:"radio",name:"skin-tone",value:n,"aria-label":Jc.skins[n],ref:i?this.refs.skinToneRadio:null,defaultChecked:i,onChange:()=>this.handleSkinMouseOver(n),onKeyDown:e=>{"Enter"!=e.code&&"Space"!=e.code&&"Tab"!=e.code||(e.preventDefault(),this.handleSkinClick(n))}}),Fc("button",{"aria-hidden":"true",tabindex:"-1",onClick:()=>this.handleSkinClick(n),onMouseEnter:()=>this.handleSkinMouseOver(n),onMouseLeave:()=>this.handleSkinMouseOver(),class:"option flex flex-grow flex-middle",children:[Fc("span",{class:`skin-tone skin-tone-${n}`}),Fc("span",{class:"margin-small-lr",children:Jc.skins[n]})]})]})})})}render(){const e=this.props.perLine*this.props.emojiButtonSize;return Fc("section",{id:"root",class:"flex flex-column",dir:this.dir,style:{width:this.props.dynamicWidth?"100%":`calc(${e}px + (var(--padding) + var(--sidebar-width)))`},"data-emoji-set":this.props.set,"data-theme":this.state.theme,"data-menu":this.state.showSkins?"":void 0,children:["top"==this.props.previewPosition&&this.renderPreview(),"top"==this.props.navPosition&&this.renderNav(),"sticky"==this.props.searchPosition&&Fc("div",{class:"padding-lr",children:this.renderSearch()}),Fc("div",{ref:this.refs.scroll,class:"scroll flex-grow padding-lr",children:Fc("div",{style:{width:this.props.dynamicWidth?"100%":e,height:"100%"},children:["static"==this.props.searchPosition&&this.renderSearch(),this.renderSearchResults(),this.renderCategories()]})}),"bottom"==this.props.navPosition&&this.renderNav(),"bottom"==this.props.previewPosition&&this.renderPreview(),this.state.showSkins&&this.renderSkins(),this.renderLiveRegion()]})}constructor(e){super(),ec(this,"darkMediaCallback",()=>{"auto"==this.props.theme&&this.setState({theme:this.darkMedia.matches?"dark":"light"})}),ec(this,"handleClickOutside",e=>{const{element:n}=this.props;e.target!=n&&(this.state.showSkins&&this.closeSkins(),this.props.onClickOutside&&this.props.onClickOutside(e))}),ec(this,"handleBaseClick",e=>{this.state.showSkins&&(e.target.closest(".menu")||(e.preventDefault(),e.stopImmediatePropagation(),this.closeSkins()))}),ec(this,"handleBaseKeydown",e=>{this.state.showSkins&&"Escape"==e.key&&(e.preventDefault(),e.stopImmediatePropagation(),this.closeSkins())}),ec(this,"handleSearchClick",()=>{this.getEmojiByPos(this.state.pos)&&this.setState({pos:[-1,-1]})}),ec(this,"handleSearchInput",async()=>{const e=this.refs.searchInput.current;if(!e)return;const{value:n}=e,i=await lf.search(n),t=()=>{this.refs.scroll.current&&(this.refs.scroll.current.scrollTop=0)};if(!i)return this.setState({searchResults:i,pos:[-1,-1]},t);const a=e.selectionStart==e.value.length?[0,0]:[-1,-1],r=[];r.setsize=i.length;let o=null;for(let e of i)r.length&&o.length!=this.getPerLine()||(o=[],o.__categoryId="search",o.__index=r.length,r.push(o)),o.push(e);this.ignoreMouse(),this.setState({searchResults:r,pos:a},t)}),ec(this,"handleSearchKeyDown",e=>{const n=e.currentTarget;switch(e.stopImmediatePropagation(),e.key){case"ArrowLeft":this.navigate({e,input:n,left:!0});break;case"ArrowRight":this.navigate({e,input:n,right:!0});break;case"ArrowUp":this.navigate({e,input:n,up:!0});break;case"ArrowDown":this.navigate({e,input:n,down:!0});break;case"Enter":e.preventDefault(),this.handleEmojiClick({e,pos:this.state.pos});break;case"Escape":e.preventDefault(),this.state.searchResults?this.clearSearch():this.unfocusSearch()}}),ec(this,"clearSearch",()=>{const e=this.refs.searchInput.current;e&&(e.value="",e.focus(),this.handleSearchInput())}),ec(this,"handleCategoryClick",({category:e,i:n})=>{this.scrollTo(0==n?{row:-1}:{categoryId:e.id})}),ec(this,"openSkins",e=>{const{currentTarget:n}=e,i=n.getBoundingClientRect();this.setState({showSkins:i},async()=>{await async function(e=1){for(let n in[...Array(e).keys()])await new Promise(requestAnimationFrame)}(2);const e=this.refs.menu.current;e&&(e.classList.remove("hidden"),this.refs.skinToneRadio.current.focus(),this.base.addEventListener("click",this.handleBaseClick,!0),this.base.addEventListener("keydown",this.handleBaseKeydown,!0))})}),this.observers=[],this.state={pos:[-1,-1],perLine:this.initDynamicPerLine(e),visibleRows:{0:!0},...this.getInitialState(e)}}}class eu extends pf{async connectedCallback(){const e=of(this.props,Yc,this);e.element=this,e.ref=e=>{this.component=e},await rf(e),this.disconnected||Nc(Fc(Zf,{...e}),this.shadowRoot)}constructor(e){super(e,{styles:Zl(nu)})}}ec(eu,"Props",Yc),"undefined"==typeof customElements||customElements.get("em-emoji-picker")||customElements.define("em-emoji-picker",eu);var nu={};function iu(e){const n=(0,t.useRef)(null),i=(0,t.useRef)(null);return i.current&&i.current.update(e),(0,t.useEffect)(()=>(i.current=new eu({...e,ref:n}),()=>{i.current=null}),[]),t.createElement("div",{ref:n})}nu=':host {\n width: min-content;\n height: 435px;\n min-height: 230px;\n border-radius: var(--border-radius);\n box-shadow: var(--shadow);\n --border-radius: 10px;\n --category-icon-size: 18px;\n --font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;\n --font-size: 15px;\n --preview-placeholder-size: 21px;\n --preview-title-size: 1.1em;\n --preview-subtitle-size: .9em;\n --shadow-color: 0deg 0% 0%;\n --shadow: .3px .5px 2.7px hsl(var(--shadow-color) / .14), .4px .8px 1px -3.2px hsl(var(--shadow-color) / .14), 1px 2px 2.5px -4.5px hsl(var(--shadow-color) / .14);\n display: flex;\n}\n\n[data-theme="light"] {\n --em-rgb-color: var(--rgb-color, 34, 36, 39);\n --em-rgb-accent: var(--rgb-accent, 34, 102, 237);\n --em-rgb-background: var(--rgb-background, 255, 255, 255);\n --em-rgb-input: var(--rgb-input, 255, 255, 255);\n --em-color-border: var(--color-border, rgba(0, 0, 0, .05));\n --em-color-border-over: var(--color-border-over, rgba(0, 0, 0, .1));\n}\n\n[data-theme="dark"] {\n --em-rgb-color: var(--rgb-color, 222, 222, 221);\n --em-rgb-accent: var(--rgb-accent, 58, 130, 247);\n --em-rgb-background: var(--rgb-background, 21, 22, 23);\n --em-rgb-input: var(--rgb-input, 0, 0, 0);\n --em-color-border: var(--color-border, rgba(255, 255, 255, .1));\n --em-color-border-over: var(--color-border-over, rgba(255, 255, 255, .2));\n}\n\n#root {\n --color-a: rgb(var(--em-rgb-color));\n --color-b: rgba(var(--em-rgb-color), .65);\n --color-c: rgba(var(--em-rgb-color), .45);\n --padding: 12px;\n --padding-small: calc(var(--padding) / 2);\n --sidebar-width: 16px;\n --duration: 225ms;\n --duration-fast: 125ms;\n --duration-instant: 50ms;\n --easing: cubic-bezier(.4, 0, .2, 1);\n width: 100%;\n text-align: left;\n border-radius: var(--border-radius);\n background-color: rgb(var(--em-rgb-background));\n position: relative;\n}\n\n@media (prefers-reduced-motion) {\n #root {\n --duration: 0;\n --duration-fast: 0;\n --duration-instant: 0;\n }\n}\n\n#root[data-menu] button {\n cursor: auto;\n}\n\n#root[data-menu] .menu button {\n cursor: pointer;\n}\n\n:host, #root, input, button {\n color: rgb(var(--em-rgb-color));\n font-family: var(--font-family);\n font-size: var(--font-size);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: normal;\n}\n\n*, :before, :after {\n box-sizing: border-box;\n min-width: 0;\n margin: 0;\n padding: 0;\n}\n\n.relative {\n position: relative;\n}\n\n.flex {\n display: flex;\n}\n\n.flex-auto {\n flex: none;\n}\n\n.flex-center {\n justify-content: center;\n}\n\n.flex-column {\n flex-direction: column;\n}\n\n.flex-grow {\n flex: auto;\n}\n\n.flex-middle {\n align-items: center;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.padding {\n padding: var(--padding);\n}\n\n.padding-t {\n padding-top: var(--padding);\n}\n\n.padding-lr {\n padding-left: var(--padding);\n padding-right: var(--padding);\n}\n\n.padding-r {\n padding-right: var(--padding);\n}\n\n.padding-small {\n padding: var(--padding-small);\n}\n\n.padding-small-b {\n padding-bottom: var(--padding-small);\n}\n\n.padding-small-lr {\n padding-left: var(--padding-small);\n padding-right: var(--padding-small);\n}\n\n.margin {\n margin: var(--padding);\n}\n\n.margin-r {\n margin-right: var(--padding);\n}\n\n.margin-l {\n margin-left: var(--padding);\n}\n\n.margin-small-l {\n margin-left: var(--padding-small);\n}\n\n.margin-small-lr {\n margin-left: var(--padding-small);\n margin-right: var(--padding-small);\n}\n\n.align-l {\n text-align: left;\n}\n\n.align-r {\n text-align: right;\n}\n\n.color-a {\n color: var(--color-a);\n}\n\n.color-b {\n color: var(--color-b);\n}\n\n.color-c {\n color: var(--color-c);\n}\n\n.ellipsis {\n white-space: nowrap;\n max-width: 100%;\n width: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.sr-only {\n width: 1px;\n height: 1px;\n position: absolute;\n top: auto;\n left: -10000px;\n overflow: hidden;\n}\n\na {\n cursor: pointer;\n color: rgb(var(--em-rgb-accent));\n}\n\na:hover {\n text-decoration: underline;\n}\n\n.spacer {\n height: 10px;\n}\n\n[dir="rtl"] .scroll {\n padding-left: 0;\n padding-right: var(--padding);\n}\n\n.scroll {\n padding-right: 0;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.scroll::-webkit-scrollbar {\n width: var(--sidebar-width);\n height: var(--sidebar-width);\n}\n\n.scroll::-webkit-scrollbar-track {\n border: 0;\n}\n\n.scroll::-webkit-scrollbar-button {\n width: 0;\n height: 0;\n display: none;\n}\n\n.scroll::-webkit-scrollbar-corner {\n background-color: rgba(0, 0, 0, 0);\n}\n\n.scroll::-webkit-scrollbar-thumb {\n min-height: 20%;\n min-height: 65px;\n border: 4px solid rgb(var(--em-rgb-background));\n border-radius: 8px;\n}\n\n.scroll::-webkit-scrollbar-thumb:hover {\n background-color: var(--em-color-border-over) !important;\n}\n\n.scroll:hover::-webkit-scrollbar-thumb {\n background-color: var(--em-color-border);\n}\n\n.sticky {\n z-index: 1;\n background-color: rgba(var(--em-rgb-background), .9);\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n font-weight: 500;\n position: sticky;\n top: -1px;\n}\n\n[dir="rtl"] .search input[type="search"] {\n padding: 10px 2.2em 10px 2em;\n}\n\n[dir="rtl"] .search .loupe {\n left: auto;\n right: .7em;\n}\n\n[dir="rtl"] .search .delete {\n left: .7em;\n right: auto;\n}\n\n.search {\n z-index: 2;\n position: relative;\n}\n\n.search input, .search button {\n font-size: calc(var(--font-size) - 1px);\n}\n\n.search input[type="search"] {\n width: 100%;\n background-color: var(--em-color-border);\n transition-duration: var(--duration);\n transition-property: background-color, box-shadow;\n transition-timing-function: var(--easing);\n border: 0;\n border-radius: 10px;\n outline: 0;\n padding: 10px 2em 10px 2.2em;\n display: block;\n}\n\n.search input[type="search"]::-ms-input-placeholder {\n color: inherit;\n opacity: .6;\n}\n\n.search input[type="search"]::placeholder {\n color: inherit;\n opacity: .6;\n}\n\n.search input[type="search"], .search input[type="search"]::-webkit-search-decoration, .search input[type="search"]::-webkit-search-cancel-button, .search input[type="search"]::-webkit-search-results-button, .search input[type="search"]::-webkit-search-results-decoration {\n -webkit-appearance: none;\n -ms-appearance: none;\n appearance: none;\n}\n\n.search input[type="search"]:focus {\n background-color: rgb(var(--em-rgb-input));\n box-shadow: inset 0 0 0 1px rgb(var(--em-rgb-accent)), 0 1px 3px rgba(65, 69, 73, .2);\n}\n\n.search .icon {\n z-index: 1;\n color: rgba(var(--em-rgb-color), .7);\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.search .loupe {\n pointer-events: none;\n left: .7em;\n}\n\n.search .delete {\n right: .7em;\n}\n\nsvg {\n fill: currentColor;\n width: 1em;\n height: 1em;\n}\n\nbutton {\n -webkit-appearance: none;\n -ms-appearance: none;\n appearance: none;\n cursor: pointer;\n color: currentColor;\n background-color: rgba(0, 0, 0, 0);\n border: 0;\n}\n\n#nav {\n z-index: 2;\n padding-top: 12px;\n padding-bottom: 12px;\n padding-right: var(--sidebar-width);\n position: relative;\n}\n\n#nav button {\n color: var(--color-b);\n transition: color var(--duration) var(--easing);\n}\n\n#nav button:hover {\n color: var(--color-a);\n}\n\n#nav svg, #nav img {\n width: var(--category-icon-size);\n height: var(--category-icon-size);\n}\n\n#nav[dir="rtl"] .bar {\n left: auto;\n right: 0;\n}\n\n#nav .bar {\n width: 100%;\n height: 3px;\n background-color: rgb(var(--em-rgb-accent));\n transition: transform var(--duration) var(--easing);\n border-radius: 3px 3px 0 0;\n position: absolute;\n bottom: -12px;\n left: 0;\n}\n\n#nav button[aria-selected] {\n color: rgb(var(--em-rgb-accent));\n}\n\n#preview {\n z-index: 2;\n padding: calc(var(--padding) + 4px) var(--padding);\n padding-right: var(--sidebar-width);\n position: relative;\n}\n\n#preview .preview-placeholder {\n font-size: var(--preview-placeholder-size);\n}\n\n#preview .preview-title {\n font-size: var(--preview-title-size);\n}\n\n#preview .preview-subtitle {\n font-size: var(--preview-subtitle-size);\n}\n\n#nav:before, #preview:before {\n content: "";\n height: 2px;\n position: absolute;\n left: 0;\n right: 0;\n}\n\n#nav[data-position="top"]:before, #preview[data-position="top"]:before {\n background: linear-gradient(to bottom, var(--em-color-border), transparent);\n top: 100%;\n}\n\n#nav[data-position="bottom"]:before, #preview[data-position="bottom"]:before {\n background: linear-gradient(to top, var(--em-color-border), transparent);\n bottom: 100%;\n}\n\n.category:last-child {\n min-height: calc(100% + 1px);\n}\n\n.category button {\n font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif;\n position: relative;\n}\n\n.category button > * {\n position: relative;\n}\n\n.category button .background {\n opacity: 0;\n background-color: var(--em-color-border);\n transition: opacity var(--duration-fast) var(--easing) var(--duration-instant);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.category button:hover .background {\n transition-duration: var(--duration-instant);\n transition-delay: 0s;\n}\n\n.category button[aria-selected] .background {\n opacity: 1;\n}\n\n.category button[data-keyboard] .background {\n transition: none;\n}\n\n.row {\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.skin-tone-button {\n border: 1px solid rgba(0, 0, 0, 0);\n border-radius: 100%;\n}\n\n.skin-tone-button:hover {\n border-color: var(--em-color-border);\n}\n\n.skin-tone-button:active .skin-tone {\n transform: scale(.85) !important;\n}\n\n.skin-tone-button .skin-tone {\n transition: transform var(--duration) var(--easing);\n}\n\n.skin-tone-button[aria-selected] {\n background-color: var(--em-color-border);\n border-top-color: rgba(0, 0, 0, .05);\n border-bottom-color: rgba(0, 0, 0, 0);\n border-left-width: 0;\n border-right-width: 0;\n}\n\n.skin-tone-button[aria-selected] .skin-tone {\n transform: scale(.9);\n}\n\n.menu {\n z-index: 2;\n white-space: nowrap;\n border: 1px solid var(--em-color-border);\n background-color: rgba(var(--em-rgb-background), .9);\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n transition-property: opacity, transform;\n transition-duration: var(--duration);\n transition-timing-function: var(--easing);\n border-radius: 10px;\n padding: 4px;\n position: absolute;\n box-shadow: 1px 1px 5px rgba(0, 0, 0, .05);\n}\n\n.menu.hidden {\n opacity: 0;\n}\n\n.menu[data-position="bottom"] {\n transform-origin: 100% 100%;\n}\n\n.menu[data-position="bottom"].hidden {\n transform: scale(.9)rotate(-3deg)translateY(5%);\n}\n\n.menu[data-position="top"] {\n transform-origin: 100% 0;\n}\n\n.menu[data-position="top"].hidden {\n transform: scale(.9)rotate(3deg)translateY(-5%);\n}\n\n.menu input[type="radio"] {\n clip: rect(0 0 0 0);\n width: 1px;\n height: 1px;\n border: 0;\n margin: 0;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.menu input[type="radio"]:checked + .option {\n box-shadow: 0 0 0 2px rgb(var(--em-rgb-accent));\n}\n\n.option {\n width: 100%;\n border-radius: 6px;\n padding: 4px 6px;\n}\n\n.option:hover {\n color: #fff;\n background-color: rgb(var(--em-rgb-accent));\n}\n\n.skin-tone {\n width: 16px;\n height: 16px;\n border-radius: 100%;\n display: inline-block;\n position: relative;\n overflow: hidden;\n}\n\n.skin-tone:after {\n content: "";\n mix-blend-mode: overlay;\n background: linear-gradient(rgba(255, 255, 255, .2), rgba(0, 0, 0, 0));\n border: 1px solid rgba(0, 0, 0, .8);\n border-radius: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n box-shadow: inset 0 -2px 3px #000, inset 0 1px 2px #fff;\n}\n\n.skin-tone-1 {\n background-color: #ffc93a;\n}\n\n.skin-tone-2 {\n background-color: #ffdab7;\n}\n\n.skin-tone-3 {\n background-color: #e7b98f;\n}\n\n.skin-tone-4 {\n background-color: #c88c61;\n}\n\n.skin-tone-5 {\n background-color: #a46134;\n}\n\n.skin-tone-6 {\n background-color: #5d4437;\n}\n\n[data-index] {\n justify-content: space-between;\n}\n\n[data-emoji-set="twitter"] .skin-tone:after {\n box-shadow: none;\n border-color: rgba(0, 0, 0, .5);\n}\n\n[data-emoji-set="twitter"] .skin-tone-1 {\n background-color: #fade72;\n}\n\n[data-emoji-set="twitter"] .skin-tone-2 {\n background-color: #f3dfd0;\n}\n\n[data-emoji-set="twitter"] .skin-tone-3 {\n background-color: #eed3a8;\n}\n\n[data-emoji-set="twitter"] .skin-tone-4 {\n background-color: #cfad8d;\n}\n\n[data-emoji-set="twitter"] .skin-tone-5 {\n background-color: #a8805d;\n}\n\n[data-emoji-set="twitter"] .skin-tone-6 {\n background-color: #765542;\n}\n\n[data-emoji-set="google"] .skin-tone:after {\n box-shadow: inset 0 0 2px 2px rgba(0, 0, 0, .4);\n}\n\n[data-emoji-set="google"] .skin-tone-1 {\n background-color: #f5c748;\n}\n\n[data-emoji-set="google"] .skin-tone-2 {\n background-color: #f1d5aa;\n}\n\n[data-emoji-set="google"] .skin-tone-3 {\n background-color: #d4b48d;\n}\n\n[data-emoji-set="google"] .skin-tone-4 {\n background-color: #aa876b;\n}\n\n[data-emoji-set="google"] .skin-tone-5 {\n background-color: #916544;\n}\n\n[data-emoji-set="google"] .skin-tone-6 {\n background-color: #61493f;\n}\n\n[data-emoji-set="facebook"] .skin-tone:after {\n border-color: rgba(0, 0, 0, .4);\n box-shadow: inset 0 -2px 3px #000, inset 0 1px 4px #fff;\n}\n\n[data-emoji-set="facebook"] .skin-tone-1 {\n background-color: #f5c748;\n}\n\n[data-emoji-set="facebook"] .skin-tone-2 {\n background-color: #f1d5aa;\n}\n\n[data-emoji-set="facebook"] .skin-tone-3 {\n background-color: #d4b48d;\n}\n\n[data-emoji-set="facebook"] .skin-tone-4 {\n background-color: #aa876b;\n}\n\n[data-emoji-set="facebook"] .skin-tone-5 {\n background-color: #916544;\n}\n\n[data-emoji-set="facebook"] .skin-tone-6 {\n background-color: #61493f;\n}\n\n';const tu=JSON.parse('{"categories":[{"id":"people","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","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","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":"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","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","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","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","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","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","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-un","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"]}],"emojis":{"100":{"id":"100","name":"Hundred Points","keywords":["100","score","perfect","numbers","century","exam","quiz","test","pass"],"skins":[{"unified":"1f4af","native":"💯"}],"version":1},"1234":{"id":"1234","name":"Input Numbers","keywords":["1234","blue","square","1","2","3","4"],"skins":[{"unified":"1f522","native":"🔢"}],"version":1},"grinning":{"id":"grinning","name":"Grinning Face","emoticons":[":D"],"keywords":["smile","happy","joy",":D","grin"],"skins":[{"unified":"1f600","native":"😀"}],"version":1},"smiley":{"id":"smiley","name":"Grinning Face with Big Eyes","emoticons":[":)","=)","=-)"],"keywords":["smiley","happy","joy","haha",":D",":)","smile","funny"],"skins":[{"unified":"1f603","native":"😃"}],"version":1},"smile":{"id":"smile","name":"Grinning Face with Smiling Eyes","emoticons":[":)","C:","c:",":D",":-D"],"keywords":["smile","happy","joy","funny","haha","laugh","like",":D",":)"],"skins":[{"unified":"1f604","native":"😄"}],"version":1},"grin":{"id":"grin","name":"Beaming Face with Smiling Eyes","keywords":["grin","happy","smile","joy","kawaii"],"skins":[{"unified":"1f601","native":"😁"}],"version":1},"laughing":{"id":"laughing","name":"Grinning Squinting Face","emoticons":[":>",":->"],"keywords":["laughing","satisfied","happy","joy","lol","haha","glad","XD","laugh"],"skins":[{"unified":"1f606","native":"😆"}],"version":1},"sweat_smile":{"id":"sweat_smile","name":"Grinning Face with Sweat","keywords":["smile","hot","happy","laugh","relief"],"skins":[{"unified":"1f605","native":"😅"}],"version":1},"rolling_on_the_floor_laughing":{"id":"rolling_on_the_floor_laughing","name":"Rolling on the Floor Laughing","keywords":["face","lol","haha","rofl"],"skins":[{"unified":"1f923","native":"🤣"}],"version":3},"joy":{"id":"joy","name":"Face with Tears of Joy","keywords":["cry","weep","happy","happytears","haha"],"skins":[{"unified":"1f602","native":"😂"}],"version":1},"slightly_smiling_face":{"id":"slightly_smiling_face","name":"Slightly Smiling Face","emoticons":[":)","(:",":-)"],"keywords":["smile"],"skins":[{"unified":"1f642","native":"🙂"}],"version":1},"upside_down_face":{"id":"upside_down_face","name":"Upside-Down Face","keywords":["upside","down","flipped","silly","smile"],"skins":[{"unified":"1f643","native":"🙃"}],"version":1},"melting_face":{"id":"melting_face","name":"Melting Face","keywords":["hot","heat"],"skins":[{"unified":"1fae0","native":"🫠"}],"version":14},"wink":{"id":"wink","name":"Winking Face","emoticons":[";)",";-)"],"keywords":["wink","happy","mischievous","secret",";)","smile","eye"],"skins":[{"unified":"1f609","native":"😉"}],"version":1},"blush":{"id":"blush","name":"Smiling Face with Smiling Eyes","emoticons":[":)"],"keywords":["blush","smile","happy","flushed","crush","embarrassed","shy","joy"],"skins":[{"unified":"1f60a","native":"😊"}],"version":1},"innocent":{"id":"innocent","name":"Smiling Face with Halo","keywords":["innocent","angel","heaven"],"skins":[{"unified":"1f607","native":"😇"}],"version":1},"smiling_face_with_3_hearts":{"id":"smiling_face_with_3_hearts","name":"Smiling Face with Hearts","keywords":["3","love","like","affection","valentines","infatuation","crush","adore"],"skins":[{"unified":"1f970","native":"🥰"}],"version":11},"heart_eyes":{"id":"heart_eyes","name":"Smiling Face with Heart-Eyes","keywords":["heart","eyes","love","like","affection","valentines","infatuation","crush"],"skins":[{"unified":"1f60d","native":"😍"}],"version":1},"star-struck":{"id":"star-struck","name":"Star-Struck","keywords":["star","struck","grinning","face","with","eyes","smile","starry"],"skins":[{"unified":"1f929","native":"🤩"}],"version":5},"kissing_heart":{"id":"kissing_heart","name":"Face Blowing a Kiss","emoticons":[":*",":-*"],"keywords":["kissing","heart","love","like","affection","valentines","infatuation"],"skins":[{"unified":"1f618","native":"😘"}],"version":1},"kissing":{"id":"kissing","name":"Kissing Face","keywords":["love","like","3","valentines","infatuation","kiss"],"skins":[{"unified":"1f617","native":"😗"}],"version":1},"relaxed":{"id":"relaxed","name":"Smiling Face","keywords":["relaxed","blush","massage","happiness"],"skins":[{"unified":"263a-fe0f","native":"☺️"}],"version":1},"kissing_closed_eyes":{"id":"kissing_closed_eyes","name":"Kissing Face with Closed Eyes","keywords":["love","like","affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f61a","native":"😚"}],"version":1},"kissing_smiling_eyes":{"id":"kissing_smiling_eyes","name":"Kissing Face with Smiling Eyes","keywords":["affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f619","native":"😙"}],"version":1},"smiling_face_with_tear":{"id":"smiling_face_with_tear","name":"Smiling Face with Tear","keywords":["sad","cry","pretend"],"skins":[{"unified":"1f972","native":"🥲"}],"version":13},"yum":{"id":"yum","name":"Face Savoring Food","keywords":["yum","happy","joy","tongue","smile","silly","yummy","nom","delicious","savouring"],"skins":[{"unified":"1f60b","native":"😋"}],"version":1},"stuck_out_tongue":{"id":"stuck_out_tongue","name":"Face with Tongue","emoticons":[":p",":-p",":P",":-P",":b",":-b"],"keywords":["stuck","out","prank","childish","playful","mischievous","smile"],"skins":[{"unified":"1f61b","native":"😛"}],"version":1},"stuck_out_tongue_winking_eye":{"id":"stuck_out_tongue_winking_eye","name":"Winking Face with Tongue","emoticons":[";p",";-p",";b",";-b",";P",";-P"],"keywords":["stuck","out","eye","prank","childish","playful","mischievous","smile","wink"],"skins":[{"unified":"1f61c","native":"😜"}],"version":1},"zany_face":{"id":"zany_face","name":"Zany Face","keywords":["grinning","with","one","large","and","small","eye","goofy","crazy"],"skins":[{"unified":"1f92a","native":"🤪"}],"version":5},"stuck_out_tongue_closed_eyes":{"id":"stuck_out_tongue_closed_eyes","name":"Squinting Face with Tongue","keywords":["stuck","out","closed","eyes","prank","playful","mischievous","smile"],"skins":[{"unified":"1f61d","native":"😝"}],"version":1},"money_mouth_face":{"id":"money_mouth_face","name":"Money-Mouth Face","keywords":["money","mouth","rich","dollar"],"skins":[{"unified":"1f911","native":"🤑"}],"version":1},"hugging_face":{"id":"hugging_face","name":"Hugging Face","keywords":["smile","hug"],"skins":[{"unified":"1f917","native":"🤗"}],"version":1},"face_with_hand_over_mouth":{"id":"face_with_hand_over_mouth","name":"Face with Hand over Mouth","keywords":["smiling","eyes","and","covering","whoops","shock","surprise"],"skins":[{"unified":"1f92d","native":"🤭"}],"version":5},"face_with_open_eyes_and_hand_over_mouth":{"id":"face_with_open_eyes_and_hand_over_mouth","name":"Face with Open Eyes and Hand over Mouth","keywords":["silence","secret","shock","surprise"],"skins":[{"unified":"1fae2","native":"🫢"}],"version":14},"face_with_peeking_eye":{"id":"face_with_peeking_eye","name":"Face with Peeking Eye","keywords":["scared","frightening","embarrassing","shy"],"skins":[{"unified":"1fae3","native":"🫣"}],"version":14},"shushing_face":{"id":"shushing_face","name":"Shushing Face","keywords":["with","finger","covering","closed","lips","quiet","shhh"],"skins":[{"unified":"1f92b","native":"🤫"}],"version":5},"thinking_face":{"id":"thinking_face","name":"Thinking Face","keywords":["hmmm","think","consider"],"skins":[{"unified":"1f914","native":"🤔"}],"version":1},"saluting_face":{"id":"saluting_face","name":"Saluting Face","keywords":["respect","salute"],"skins":[{"unified":"1fae1","native":"🫡"}],"version":14},"zipper_mouth_face":{"id":"zipper_mouth_face","name":"Zipper-Mouth Face","keywords":["zipper","mouth","sealed","secret"],"skins":[{"unified":"1f910","native":"🤐"}],"version":1},"face_with_raised_eyebrow":{"id":"face_with_raised_eyebrow","name":"Face with Raised Eyebrow","keywords":["one","distrust","scepticism","disapproval","disbelief","surprise"],"skins":[{"unified":"1f928","native":"🤨"}],"version":5},"neutral_face":{"id":"neutral_face","name":"Neutral Face","emoticons":[":|",":-|"],"keywords":["indifference","meh",":",""],"skins":[{"unified":"1f610","native":"😐"}],"version":1},"expressionless":{"id":"expressionless","name":"Expressionless Face","emoticons":["-_-"],"keywords":["indifferent","-","","meh","deadpan"],"skins":[{"unified":"1f611","native":"😑"}],"version":1},"no_mouth":{"id":"no_mouth","name":"Face Without Mouth","keywords":["no","hellokitty"],"skins":[{"unified":"1f636","native":"😶"}],"version":1},"dotted_line_face":{"id":"dotted_line_face","name":"Dotted Line Face","keywords":["invisible","lonely","isolation","depression"],"skins":[{"unified":"1fae5","native":"🫥"}],"version":14},"face_in_clouds":{"id":"face_in_clouds","name":"Face in Clouds","keywords":["shower","steam","dream"],"skins":[{"unified":"1f636-200d-1f32b-fe0f","native":"😶🌫️"}],"version":13.1},"smirk":{"id":"smirk","name":"Smirking Face","keywords":["smirk","smile","mean","prank","smug","sarcasm"],"skins":[{"unified":"1f60f","native":"😏"}],"version":1},"unamused":{"id":"unamused","name":"Unamused Face","emoticons":[":("],"keywords":["indifference","bored","straight","serious","sarcasm","unimpressed","skeptical","dubious","side","eye"],"skins":[{"unified":"1f612","native":"😒"}],"version":1},"face_with_rolling_eyes":{"id":"face_with_rolling_eyes","name":"Face with Rolling Eyes","keywords":["eyeroll","frustrated"],"skins":[{"unified":"1f644","native":"🙄"}],"version":1},"grimacing":{"id":"grimacing","name":"Grimacing Face","keywords":["grimace","teeth"],"skins":[{"unified":"1f62c","native":"😬"}],"version":1},"face_exhaling":{"id":"face_exhaling","name":"Face Exhaling","keywords":["relieve","relief","tired","sigh"],"skins":[{"unified":"1f62e-200d-1f4a8","native":"😮💨"}],"version":13.1},"lying_face":{"id":"lying_face","name":"Lying Face","keywords":["lie","pinocchio"],"skins":[{"unified":"1f925","native":"🤥"}],"version":3},"shaking_face":{"id":"shaking_face","name":"Shaking Face","keywords":["dizzy","shock","blurry","earthquake"],"skins":[{"unified":"1fae8","native":"🫨"}],"version":15},"relieved":{"id":"relieved","name":"Relieved Face","keywords":["relaxed","phew","massage","happiness"],"skins":[{"unified":"1f60c","native":"😌"}],"version":1},"pensive":{"id":"pensive","name":"Pensive Face","keywords":["sad","depressed","upset"],"skins":[{"unified":"1f614","native":"😔"}],"version":1},"sleepy":{"id":"sleepy","name":"Sleepy Face","keywords":["tired","rest","nap"],"skins":[{"unified":"1f62a","native":"😪"}],"version":1},"drooling_face":{"id":"drooling_face","name":"Drooling Face","keywords":[],"skins":[{"unified":"1f924","native":"🤤"}],"version":3},"sleeping":{"id":"sleeping","name":"Sleeping Face","keywords":["tired","sleepy","night","zzz"],"skins":[{"unified":"1f634","native":"😴"}],"version":1},"mask":{"id":"mask","name":"Face with Medical Mask","keywords":["sick","ill","disease","covid"],"skins":[{"unified":"1f637","native":"😷"}],"version":1},"face_with_thermometer":{"id":"face_with_thermometer","name":"Face with Thermometer","keywords":["sick","temperature","cold","fever","covid"],"skins":[{"unified":"1f912","native":"🤒"}],"version":1},"face_with_head_bandage":{"id":"face_with_head_bandage","name":"Face with Head-Bandage","keywords":["head","bandage","injured","clumsy","hurt"],"skins":[{"unified":"1f915","native":"🤕"}],"version":1},"nauseated_face":{"id":"nauseated_face","name":"Nauseated Face","keywords":["vomit","gross","green","sick","throw","up","ill"],"skins":[{"unified":"1f922","native":"🤢"}],"version":3},"face_vomiting":{"id":"face_vomiting","name":"Face Vomiting","keywords":["with","open","mouth","sick"],"skins":[{"unified":"1f92e","native":"🤮"}],"version":5},"sneezing_face":{"id":"sneezing_face","name":"Sneezing Face","keywords":["gesundheit","sneeze","sick","allergy"],"skins":[{"unified":"1f927","native":"🤧"}],"version":3},"hot_face":{"id":"hot_face","name":"Hot Face","keywords":["feverish","heat","red","sweating"],"skins":[{"unified":"1f975","native":"🥵"}],"version":11},"cold_face":{"id":"cold_face","name":"Cold Face","keywords":["blue","freezing","frozen","frostbite","icicles"],"skins":[{"unified":"1f976","native":"🥶"}],"version":11},"woozy_face":{"id":"woozy_face","name":"Woozy Face","keywords":["dizzy","intoxicated","tipsy","wavy"],"skins":[{"unified":"1f974","native":"🥴"}],"version":11},"dizzy_face":{"id":"dizzy_face","name":"Dizzy Face","keywords":["spent","unconscious","xox"],"skins":[{"unified":"1f635","native":"😵"}],"version":1},"face_with_spiral_eyes":{"id":"face_with_spiral_eyes","name":"Face with Spiral Eyes","keywords":["sick","ill","confused","nauseous","nausea"],"skins":[{"unified":"1f635-200d-1f4ab","native":"😵💫"}],"version":13.1},"exploding_head":{"id":"exploding_head","name":"Exploding Head","keywords":["shocked","face","with","mind","blown"],"skins":[{"unified":"1f92f","native":"🤯"}],"version":5},"face_with_cowboy_hat":{"id":"face_with_cowboy_hat","name":"Cowboy Hat Face","keywords":["with","cowgirl"],"skins":[{"unified":"1f920","native":"🤠"}],"version":3},"partying_face":{"id":"partying_face","name":"Partying Face","keywords":["celebration","woohoo"],"skins":[{"unified":"1f973","native":"🥳"}],"version":11},"disguised_face":{"id":"disguised_face","name":"Disguised Face","keywords":["pretent","brows","glasses","moustache"],"skins":[{"unified":"1f978","native":"🥸"}],"version":13},"sunglasses":{"id":"sunglasses","name":"Smiling Face with Sunglasses","emoticons":["8)"],"keywords":["cool","smile","summer","beach","sunglass"],"skins":[{"unified":"1f60e","native":"😎"}],"version":1},"nerd_face":{"id":"nerd_face","name":"Nerd Face","keywords":["nerdy","geek","dork"],"skins":[{"unified":"1f913","native":"🤓"}],"version":1},"face_with_monocle":{"id":"face_with_monocle","name":"Face with Monocle","keywords":["stuffy","wealthy"],"skins":[{"unified":"1f9d0","native":"🧐"}],"version":5},"confused":{"id":"confused","name":"Confused Face","emoticons":[":\\\\",":-\\\\",":/",":-/"],"keywords":["indifference","huh","weird","hmmm",":/"],"skins":[{"unified":"1f615","native":"😕"}],"version":1},"face_with_diagonal_mouth":{"id":"face_with_diagonal_mouth","name":"Face with Diagonal Mouth","keywords":["skeptic","confuse","frustrated","indifferent"],"skins":[{"unified":"1fae4","native":"🫤"}],"version":14},"worried":{"id":"worried","name":"Worried Face","keywords":["concern","nervous",":("],"skins":[{"unified":"1f61f","native":"😟"}],"version":1},"slightly_frowning_face":{"id":"slightly_frowning_face","name":"Slightly Frowning Face","keywords":["disappointed","sad","upset"],"skins":[{"unified":"1f641","native":"🙁"}],"version":1},"white_frowning_face":{"id":"white_frowning_face","name":"Frowning Face","keywords":["white","sad","upset","frown"],"skins":[{"unified":"2639-fe0f","native":"☹️"}],"version":1},"open_mouth":{"id":"open_mouth","name":"Face with Open Mouth","emoticons":[":o",":-o",":O",":-O"],"keywords":["surprise","impressed","wow","whoa",":O"],"skins":[{"unified":"1f62e","native":"😮"}],"version":1},"hushed":{"id":"hushed","name":"Hushed Face","keywords":["woo","shh"],"skins":[{"unified":"1f62f","native":"😯"}],"version":1},"astonished":{"id":"astonished","name":"Astonished Face","keywords":["xox","surprised","poisoned"],"skins":[{"unified":"1f632","native":"😲"}],"version":1},"flushed":{"id":"flushed","name":"Flushed Face","keywords":["blush","shy","flattered"],"skins":[{"unified":"1f633","native":"😳"}],"version":1},"pleading_face":{"id":"pleading_face","name":"Pleading Face","keywords":["begging","mercy","cry","tears","sad","grievance"],"skins":[{"unified":"1f97a","native":"🥺"}],"version":11},"face_holding_back_tears":{"id":"face_holding_back_tears","name":"Face Holding Back Tears","keywords":["touched","gratitude","cry"],"skins":[{"unified":"1f979","native":"🥹"}],"version":14},"frowning":{"id":"frowning","name":"Frowning Face with Open Mouth","keywords":["aw","what"],"skins":[{"unified":"1f626","native":"😦"}],"version":1},"anguished":{"id":"anguished","name":"Anguished Face","emoticons":["D:"],"keywords":["stunned","nervous"],"skins":[{"unified":"1f627","native":"😧"}],"version":1},"fearful":{"id":"fearful","name":"Fearful Face","keywords":["scared","terrified","nervous"],"skins":[{"unified":"1f628","native":"😨"}],"version":1},"cold_sweat":{"id":"cold_sweat","name":"Anxious Face with Sweat","keywords":["cold","nervous"],"skins":[{"unified":"1f630","native":"😰"}],"version":1},"disappointed_relieved":{"id":"disappointed_relieved","name":"Sad but Relieved Face","keywords":["disappointed","phew","sweat","nervous"],"skins":[{"unified":"1f625","native":"😥"}],"version":1},"cry":{"id":"cry","name":"Crying Face","emoticons":[":\'("],"keywords":["cry","tears","sad","depressed","upset",":\'("],"skins":[{"unified":"1f622","native":"😢"}],"version":1},"sob":{"id":"sob","name":"Loudly Crying Face","emoticons":[":\'("],"keywords":["sob","cry","tears","sad","upset","depressed"],"skins":[{"unified":"1f62d","native":"😭"}],"version":1},"scream":{"id":"scream","name":"Face Screaming in Fear","keywords":["scream","munch","scared","omg"],"skins":[{"unified":"1f631","native":"😱"}],"version":1},"confounded":{"id":"confounded","name":"Confounded Face","keywords":["confused","sick","unwell","oops",":S"],"skins":[{"unified":"1f616","native":"😖"}],"version":1},"persevere":{"id":"persevere","name":"Persevering Face","keywords":["persevere","sick","no","upset","oops"],"skins":[{"unified":"1f623","native":"😣"}],"version":1},"disappointed":{"id":"disappointed","name":"Disappointed Face","emoticons":["):",":(",":-("],"keywords":["sad","upset","depressed",":("],"skins":[{"unified":"1f61e","native":"😞"}],"version":1},"sweat":{"id":"sweat","name":"Face with Cold Sweat","keywords":["downcast","hot","sad","tired","exercise"],"skins":[{"unified":"1f613","native":"😓"}],"version":1},"weary":{"id":"weary","name":"Weary Face","keywords":["tired","sleepy","sad","frustrated","upset"],"skins":[{"unified":"1f629","native":"😩"}],"version":1},"tired_face":{"id":"tired_face","name":"Tired Face","keywords":["sick","whine","upset","frustrated"],"skins":[{"unified":"1f62b","native":"😫"}],"version":1},"yawning_face":{"id":"yawning_face","name":"Yawning Face","keywords":["tired","sleepy"],"skins":[{"unified":"1f971","native":"🥱"}],"version":12},"triumph":{"id":"triumph","name":"Face with Look of Triumph","keywords":["steam","from","nose","gas","phew","proud","pride"],"skins":[{"unified":"1f624","native":"😤"}],"version":1},"rage":{"id":"rage","name":"Pouting Face","keywords":["rage","angry","mad","hate","despise"],"skins":[{"unified":"1f621","native":"😡"}],"version":1},"angry":{"id":"angry","name":"Angry Face","emoticons":[">:(",">:-("],"keywords":["mad","annoyed","frustrated"],"skins":[{"unified":"1f620","native":"😠"}],"version":1},"face_with_symbols_on_mouth":{"id":"face_with_symbols_on_mouth","name":"Face with Symbols on Mouth","keywords":["serious","covering","swearing","cursing","cussing","profanity","expletive"],"skins":[{"unified":"1f92c","native":"🤬"}],"version":5},"smiling_imp":{"id":"smiling_imp","name":"Smiling Face with Horns","keywords":["imp","devil"],"skins":[{"unified":"1f608","native":"😈"}],"version":1},"imp":{"id":"imp","name":"Imp","keywords":["angry","face","with","horns","devil"],"skins":[{"unified":"1f47f","native":"👿"}],"version":1},"skull":{"id":"skull","name":"Skull","keywords":["dead","skeleton","creepy","death"],"skins":[{"unified":"1f480","native":"💀"}],"version":1},"skull_and_crossbones":{"id":"skull_and_crossbones","name":"Skull and Crossbones","keywords":["poison","danger","deadly","scary","death","pirate","evil"],"skins":[{"unified":"2620-fe0f","native":"☠️"}],"version":1},"hankey":{"id":"hankey","name":"Pile of Poo","keywords":["hankey","poop","shit","shitface","fail","turd"],"skins":[{"unified":"1f4a9","native":"💩"}],"version":1},"clown_face":{"id":"clown_face","name":"Clown Face","keywords":[],"skins":[{"unified":"1f921","native":"🤡"}],"version":3},"japanese_ogre":{"id":"japanese_ogre","name":"Ogre","keywords":["japanese","monster","red","mask","halloween","scary","creepy","devil","demon"],"skins":[{"unified":"1f479","native":"👹"}],"version":1},"japanese_goblin":{"id":"japanese_goblin","name":"Goblin","keywords":["japanese","red","evil","mask","monster","scary","creepy"],"skins":[{"unified":"1f47a","native":"👺"}],"version":1},"ghost":{"id":"ghost","name":"Ghost","keywords":["halloween","spooky","scary"],"skins":[{"unified":"1f47b","native":"👻"}],"version":1},"alien":{"id":"alien","name":"Alien","keywords":["UFO","paul","weird","outer","space"],"skins":[{"unified":"1f47d","native":"👽"}],"version":1},"space_invader":{"id":"space_invader","name":"Alien Monster","keywords":["space","invader","game","arcade","play"],"skins":[{"unified":"1f47e","native":"👾"}],"version":1},"robot_face":{"id":"robot_face","name":"Robot","keywords":["face","computer","machine","bot"],"skins":[{"unified":"1f916","native":"🤖"}],"version":1},"smiley_cat":{"id":"smiley_cat","name":"Grinning Cat","keywords":["smiley","animal","cats","happy","smile"],"skins":[{"unified":"1f63a","native":"😺"}],"version":1},"smile_cat":{"id":"smile_cat","name":"Grinning Cat with Smiling Eyes","keywords":["smile","animal","cats"],"skins":[{"unified":"1f638","native":"😸"}],"version":1},"joy_cat":{"id":"joy_cat","name":"Cat with Tears of Joy","keywords":["animal","cats","haha","happy"],"skins":[{"unified":"1f639","native":"😹"}],"version":1},"heart_eyes_cat":{"id":"heart_eyes_cat","name":"Smiling Cat with Heart-Eyes","keywords":["heart","eyes","animal","love","like","affection","cats","valentines"],"skins":[{"unified":"1f63b","native":"😻"}],"version":1},"smirk_cat":{"id":"smirk_cat","name":"Cat with Wry Smile","keywords":["smirk","animal","cats"],"skins":[{"unified":"1f63c","native":"😼"}],"version":1},"kissing_cat":{"id":"kissing_cat","name":"Kissing Cat","keywords":["animal","cats","kiss"],"skins":[{"unified":"1f63d","native":"😽"}],"version":1},"scream_cat":{"id":"scream_cat","name":"Weary Cat","keywords":["scream","animal","cats","munch","scared"],"skins":[{"unified":"1f640","native":"🙀"}],"version":1},"crying_cat_face":{"id":"crying_cat_face","name":"Crying Cat","keywords":["face","animal","tears","weep","sad","cats","upset","cry"],"skins":[{"unified":"1f63f","native":"😿"}],"version":1},"pouting_cat":{"id":"pouting_cat","name":"Pouting Cat","keywords":["animal","cats"],"skins":[{"unified":"1f63e","native":"😾"}],"version":1},"see_no_evil":{"id":"see_no_evil","name":"See-No-Evil Monkey","keywords":["see","no","evil","animal","nature","haha"],"skins":[{"unified":"1f648","native":"🙈"}],"version":1},"hear_no_evil":{"id":"hear_no_evil","name":"Hear-No-Evil Monkey","keywords":["hear","no","evil","animal","nature"],"skins":[{"unified":"1f649","native":"🙉"}],"version":1},"speak_no_evil":{"id":"speak_no_evil","name":"Speak-No-Evil Monkey","keywords":["speak","no","evil","animal","nature","omg"],"skins":[{"unified":"1f64a","native":"🙊"}],"version":1},"love_letter":{"id":"love_letter","name":"Love Letter","keywords":["email","like","affection","envelope","valentines"],"skins":[{"unified":"1f48c","native":"💌"}],"version":1},"cupid":{"id":"cupid","name":"Heart with Arrow","keywords":["cupid","love","like","affection","valentines"],"skins":[{"unified":"1f498","native":"💘"}],"version":1},"gift_heart":{"id":"gift_heart","name":"Heart with Ribbon","keywords":["gift","love","valentines"],"skins":[{"unified":"1f49d","native":"💝"}],"version":1},"sparkling_heart":{"id":"sparkling_heart","name":"Sparkling Heart","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f496","native":"💖"}],"version":1},"heartpulse":{"id":"heartpulse","name":"Growing Heart","keywords":["heartpulse","like","love","affection","valentines","pink"],"skins":[{"unified":"1f497","native":"💗"}],"version":1},"heartbeat":{"id":"heartbeat","name":"Beating Heart","keywords":["heartbeat","love","like","affection","valentines","pink"],"skins":[{"unified":"1f493","native":"💓"}],"version":1},"revolving_hearts":{"id":"revolving_hearts","name":"Revolving Hearts","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49e","native":"💞"}],"version":1},"two_hearts":{"id":"two_hearts","name":"Two Hearts","keywords":["love","like","affection","valentines","heart"],"skins":[{"unified":"1f495","native":"💕"}],"version":1},"heart_decoration":{"id":"heart_decoration","name":"Heart Decoration","keywords":["purple","square","love","like"],"skins":[{"unified":"1f49f","native":"💟"}],"version":1},"heavy_heart_exclamation_mark_ornament":{"id":"heavy_heart_exclamation_mark_ornament","name":"Heart Exclamation","keywords":["heavy","mark","ornament","decoration","love"],"skins":[{"unified":"2763-fe0f","native":"❣️"}],"version":1},"broken_heart":{"id":"broken_heart","name":"Broken Heart","emoticons":["</3"],"keywords":["sad","sorry","break","heartbreak"],"skins":[{"unified":"1f494","native":"💔"}],"version":1},"heart_on_fire":{"id":"heart_on_fire","name":"Heart on Fire","keywords":["passionate","enthusiastic"],"skins":[{"unified":"2764-fe0f-200d-1f525","native":"❤️🔥"}],"version":13.1},"mending_heart":{"id":"mending_heart","name":"Mending Heart","keywords":["broken","bandage","wounded"],"skins":[{"unified":"2764-fe0f-200d-1fa79","native":"❤️🩹"}],"version":13.1},"heart":{"id":"heart","name":"Red Heart","emoticons":["<3"],"keywords":["love","like","valentines"],"skins":[{"unified":"2764-fe0f","native":"❤️"}],"version":1},"pink_heart":{"id":"pink_heart","name":"Pink Heart","keywords":["valentines"],"skins":[{"unified":"1fa77","native":"🩷"}],"version":15},"orange_heart":{"id":"orange_heart","name":"Orange Heart","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f9e1","native":"🧡"}],"version":5},"yellow_heart":{"id":"yellow_heart","name":"Yellow Heart","emoticons":["<3"],"keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49b","native":"💛"}],"version":1},"green_heart":{"id":"green_heart","name":"Green Heart","emoticons":["<3"],"keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49a","native":"💚"}],"version":1},"blue_heart":{"id":"blue_heart","name":"Blue Heart","emoticons":["<3"],"keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f499","native":"💙"}],"version":1},"light_blue_heart":{"id":"light_blue_heart","name":"Light Blue Heart","keywords":["ice","baby"],"skins":[{"unified":"1fa75","native":"🩵"}],"version":15},"purple_heart":{"id":"purple_heart","name":"Purple Heart","emoticons":["<3"],"keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49c","native":"💜"}],"version":1},"brown_heart":{"id":"brown_heart","name":"Brown Heart","keywords":["coffee"],"skins":[{"unified":"1f90e","native":"🤎"}],"version":12},"black_heart":{"id":"black_heart","name":"Black Heart","keywords":["evil"],"skins":[{"unified":"1f5a4","native":"🖤"}],"version":3},"grey_heart":{"id":"grey_heart","name":"Grey Heart","keywords":["silver","monochrome"],"skins":[{"unified":"1fa76","native":"🩶"}],"version":15},"white_heart":{"id":"white_heart","name":"White Heart","keywords":["pure"],"skins":[{"unified":"1f90d","native":"🤍"}],"version":12},"kiss":{"id":"kiss","name":"Kiss Mark","keywords":["face","lips","love","like","affection","valentines"],"skins":[{"unified":"1f48b","native":"💋"}],"version":1},"anger":{"id":"anger","name":"Anger Symbol","keywords":["angry","mad"],"skins":[{"unified":"1f4a2","native":"💢"}],"version":1},"boom":{"id":"boom","name":"Collision","keywords":["boom","bomb","explode","explosion","blown"],"skins":[{"unified":"1f4a5","native":"💥"}],"version":1},"dizzy":{"id":"dizzy","name":"Dizzy","keywords":["star","sparkle","shoot","magic"],"skins":[{"unified":"1f4ab","native":"💫"}],"version":1},"sweat_drops":{"id":"sweat_drops","name":"Sweat Droplets","keywords":["drops","water","drip","oops"],"skins":[{"unified":"1f4a6","native":"💦"}],"version":1},"dash":{"id":"dash","name":"Dash Symbol","keywords":["dashing","away","wind","air","fast","shoo","fart","smoke","puff"],"skins":[{"unified":"1f4a8","native":"💨"}],"version":1},"hole":{"id":"hole","name":"Hole","keywords":["embarrassing"],"skins":[{"unified":"1f573-fe0f","native":"🕳️"}],"version":1},"speech_balloon":{"id":"speech_balloon","name":"Speech Balloon","keywords":["bubble","words","message","talk","chatting"],"skins":[{"unified":"1f4ac","native":"💬"}],"version":1},"eye-in-speech-bubble":{"id":"eye-in-speech-bubble","name":"Eye in Speech Bubble","keywords":["in-speech-bubble","info"],"skins":[{"unified":"1f441-fe0f-200d-1f5e8-fe0f","native":"👁️🗨️"}],"version":2},"left_speech_bubble":{"id":"left_speech_bubble","name":"Left Speech Bubble","keywords":["words","message","talk","chatting"],"skins":[{"unified":"1f5e8-fe0f","native":"🗨️"}],"version":2},"right_anger_bubble":{"id":"right_anger_bubble","name":"Right Anger Bubble","keywords":["caption","speech","thinking","mad"],"skins":[{"unified":"1f5ef-fe0f","native":"🗯️"}],"version":1},"thought_balloon":{"id":"thought_balloon","name":"Thought Balloon","keywords":["bubble","cloud","speech","thinking","dream"],"skins":[{"unified":"1f4ad","native":"💭"}],"version":1},"zzz":{"id":"zzz","name":"Zzz","keywords":["sleepy","tired","dream"],"skins":[{"unified":"1f4a4","native":"💤"}],"version":1},"wave":{"id":"wave","name":"Waving Hand","keywords":["wave","hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"skins":[{"unified":"1f44b","native":"👋"},{"unified":"1f44b-1f3fb","native":"👋🏻"},{"unified":"1f44b-1f3fc","native":"👋🏼"},{"unified":"1f44b-1f3fd","native":"👋🏽"},{"unified":"1f44b-1f3fe","native":"👋🏾"},{"unified":"1f44b-1f3ff","native":"👋🏿"}],"version":1},"raised_back_of_hand":{"id":"raised_back_of_hand","name":"Raised Back of Hand","keywords":["fingers","backhand"],"skins":[{"unified":"1f91a","native":"🤚"},{"unified":"1f91a-1f3fb","native":"🤚🏻"},{"unified":"1f91a-1f3fc","native":"🤚🏼"},{"unified":"1f91a-1f3fd","native":"🤚🏽"},{"unified":"1f91a-1f3fe","native":"🤚🏾"},{"unified":"1f91a-1f3ff","native":"🤚🏿"}],"version":3},"raised_hand_with_fingers_splayed":{"id":"raised_hand_with_fingers_splayed","name":"Hand with Fingers Splayed","keywords":["raised","palm"],"skins":[{"unified":"1f590-fe0f","native":"🖐️"},{"unified":"1f590-1f3fb","native":"🖐🏻"},{"unified":"1f590-1f3fc","native":"🖐🏼"},{"unified":"1f590-1f3fd","native":"🖐🏽"},{"unified":"1f590-1f3fe","native":"🖐🏾"},{"unified":"1f590-1f3ff","native":"🖐🏿"}],"version":1},"hand":{"id":"hand","name":"Raised Hand","keywords":["fingers","stop","highfive","high","five","palm","ban"],"skins":[{"unified":"270b","native":"✋"},{"unified":"270b-1f3fb","native":"✋🏻"},{"unified":"270b-1f3fc","native":"✋🏼"},{"unified":"270b-1f3fd","native":"✋🏽"},{"unified":"270b-1f3fe","native":"✋🏾"},{"unified":"270b-1f3ff","native":"✋🏿"}],"version":1},"spock-hand":{"id":"spock-hand","name":"Vulcan Salute","keywords":["spock","hand","fingers","star","trek"],"skins":[{"unified":"1f596","native":"🖖"},{"unified":"1f596-1f3fb","native":"🖖🏻"},{"unified":"1f596-1f3fc","native":"🖖🏼"},{"unified":"1f596-1f3fd","native":"🖖🏽"},{"unified":"1f596-1f3fe","native":"🖖🏾"},{"unified":"1f596-1f3ff","native":"🖖🏿"}],"version":1},"rightwards_hand":{"id":"rightwards_hand","name":"Rightwards Hand","keywords":["palm","offer"],"skins":[{"unified":"1faf1","native":"🫱"},{"unified":"1faf1-1f3fb","native":"🫱🏻"},{"unified":"1faf1-1f3fc","native":"🫱🏼"},{"unified":"1faf1-1f3fd","native":"🫱🏽"},{"unified":"1faf1-1f3fe","native":"🫱🏾"},{"unified":"1faf1-1f3ff","native":"🫱🏿"}],"version":14},"leftwards_hand":{"id":"leftwards_hand","name":"Leftwards Hand","keywords":["palm","offer"],"skins":[{"unified":"1faf2","native":"🫲"},{"unified":"1faf2-1f3fb","native":"🫲🏻"},{"unified":"1faf2-1f3fc","native":"🫲🏼"},{"unified":"1faf2-1f3fd","native":"🫲🏽"},{"unified":"1faf2-1f3fe","native":"🫲🏾"},{"unified":"1faf2-1f3ff","native":"🫲🏿"}],"version":14},"palm_down_hand":{"id":"palm_down_hand","name":"Palm Down Hand","keywords":["drop"],"skins":[{"unified":"1faf3","native":"🫳"},{"unified":"1faf3-1f3fb","native":"🫳🏻"},{"unified":"1faf3-1f3fc","native":"🫳🏼"},{"unified":"1faf3-1f3fd","native":"🫳🏽"},{"unified":"1faf3-1f3fe","native":"🫳🏾"},{"unified":"1faf3-1f3ff","native":"🫳🏿"}],"version":14},"palm_up_hand":{"id":"palm_up_hand","name":"Palm Up Hand","keywords":["lift","offer","demand"],"skins":[{"unified":"1faf4","native":"🫴"},{"unified":"1faf4-1f3fb","native":"🫴🏻"},{"unified":"1faf4-1f3fc","native":"🫴🏼"},{"unified":"1faf4-1f3fd","native":"🫴🏽"},{"unified":"1faf4-1f3fe","native":"🫴🏾"},{"unified":"1faf4-1f3ff","native":"🫴🏿"}],"version":14},"leftwards_pushing_hand":{"id":"leftwards_pushing_hand","name":"Leftwards Pushing Hand","keywords":["highfive","high","five","pressing","stop"],"skins":[{"unified":"1faf7","native":"🫷"},{"unified":"1faf7-1f3fb","native":"🫷🏻"},{"unified":"1faf7-1f3fc","native":"🫷🏼"},{"unified":"1faf7-1f3fd","native":"🫷🏽"},{"unified":"1faf7-1f3fe","native":"🫷🏾"},{"unified":"1faf7-1f3ff","native":"🫷🏿"}],"version":15},"rightwards_pushing_hand":{"id":"rightwards_pushing_hand","name":"Rightwards Pushing Hand","keywords":["highfive","high","five","pressing","stop"],"skins":[{"unified":"1faf8","native":"🫸"},{"unified":"1faf8-1f3fb","native":"🫸🏻"},{"unified":"1faf8-1f3fc","native":"🫸🏼"},{"unified":"1faf8-1f3fd","native":"🫸🏽"},{"unified":"1faf8-1f3fe","native":"🫸🏾"},{"unified":"1faf8-1f3ff","native":"🫸🏿"}],"version":15},"ok_hand":{"id":"ok_hand","name":"Ok Hand","keywords":["fingers","limbs","perfect","okay"],"skins":[{"unified":"1f44c","native":"👌"},{"unified":"1f44c-1f3fb","native":"👌🏻"},{"unified":"1f44c-1f3fc","native":"👌🏼"},{"unified":"1f44c-1f3fd","native":"👌🏽"},{"unified":"1f44c-1f3fe","native":"👌🏾"},{"unified":"1f44c-1f3ff","native":"👌🏿"}],"version":1},"pinched_fingers":{"id":"pinched_fingers","name":"Pinched Fingers","keywords":["size","tiny","small"],"skins":[{"unified":"1f90c","native":"🤌"},{"unified":"1f90c-1f3fb","native":"🤌🏻"},{"unified":"1f90c-1f3fc","native":"🤌🏼"},{"unified":"1f90c-1f3fd","native":"🤌🏽"},{"unified":"1f90c-1f3fe","native":"🤌🏾"},{"unified":"1f90c-1f3ff","native":"🤌🏿"}],"version":13},"pinching_hand":{"id":"pinching_hand","name":"Pinching Hand","keywords":["tiny","small","size"],"skins":[{"unified":"1f90f","native":"🤏"},{"unified":"1f90f-1f3fb","native":"🤏🏻"},{"unified":"1f90f-1f3fc","native":"🤏🏼"},{"unified":"1f90f-1f3fd","native":"🤏🏽"},{"unified":"1f90f-1f3fe","native":"🤏🏾"},{"unified":"1f90f-1f3ff","native":"🤏🏿"}],"version":12},"v":{"id":"v","name":"Victory Hand","keywords":["v","fingers","ohyeah","peace","two"],"skins":[{"unified":"270c-fe0f","native":"✌️"},{"unified":"270c-1f3fb","native":"✌🏻"},{"unified":"270c-1f3fc","native":"✌🏼"},{"unified":"270c-1f3fd","native":"✌🏽"},{"unified":"270c-1f3fe","native":"✌🏾"},{"unified":"270c-1f3ff","native":"✌🏿"}],"version":1},"crossed_fingers":{"id":"crossed_fingers","name":"Crossed Fingers","keywords":["hand","with","index","and","middle","good","lucky"],"skins":[{"unified":"1f91e","native":"🤞"},{"unified":"1f91e-1f3fb","native":"🤞🏻"},{"unified":"1f91e-1f3fc","native":"🤞🏼"},{"unified":"1f91e-1f3fd","native":"🤞🏽"},{"unified":"1f91e-1f3fe","native":"🤞🏾"},{"unified":"1f91e-1f3ff","native":"🤞🏿"}],"version":3},"hand_with_index_finger_and_thumb_crossed":{"id":"hand_with_index_finger_and_thumb_crossed","name":"Hand with Index Finger and Thumb Crossed","keywords":["heart","love","money","expensive"],"skins":[{"unified":"1faf0","native":"🫰"},{"unified":"1faf0-1f3fb","native":"🫰🏻"},{"unified":"1faf0-1f3fc","native":"🫰🏼"},{"unified":"1faf0-1f3fd","native":"🫰🏽"},{"unified":"1faf0-1f3fe","native":"🫰🏾"},{"unified":"1faf0-1f3ff","native":"🫰🏿"}],"version":14},"i_love_you_hand_sign":{"id":"i_love_you_hand_sign","name":"Love-You Gesture","keywords":["i","love","you","hand","sign","fingers"],"skins":[{"unified":"1f91f","native":"🤟"},{"unified":"1f91f-1f3fb","native":"🤟🏻"},{"unified":"1f91f-1f3fc","native":"🤟🏼"},{"unified":"1f91f-1f3fd","native":"🤟🏽"},{"unified":"1f91f-1f3fe","native":"🤟🏾"},{"unified":"1f91f-1f3ff","native":"🤟🏿"}],"version":5},"the_horns":{"id":"the_horns","name":"Sign of the Horns","keywords":["hand","fingers","evil","eye","rock","on"],"skins":[{"unified":"1f918","native":"🤘"},{"unified":"1f918-1f3fb","native":"🤘🏻"},{"unified":"1f918-1f3fc","native":"🤘🏼"},{"unified":"1f918-1f3fd","native":"🤘🏽"},{"unified":"1f918-1f3fe","native":"🤘🏾"},{"unified":"1f918-1f3ff","native":"🤘🏿"}],"version":1},"call_me_hand":{"id":"call_me_hand","name":"Call Me Hand","keywords":["hands","gesture","shaka"],"skins":[{"unified":"1f919","native":"🤙"},{"unified":"1f919-1f3fb","native":"🤙🏻"},{"unified":"1f919-1f3fc","native":"🤙🏼"},{"unified":"1f919-1f3fd","native":"🤙🏽"},{"unified":"1f919-1f3fe","native":"🤙🏾"},{"unified":"1f919-1f3ff","native":"🤙🏿"}],"version":3},"point_left":{"id":"point_left","name":"Backhand Index Pointing Left","keywords":["point","direction","fingers","hand"],"skins":[{"unified":"1f448","native":"👈"},{"unified":"1f448-1f3fb","native":"👈🏻"},{"unified":"1f448-1f3fc","native":"👈🏼"},{"unified":"1f448-1f3fd","native":"👈🏽"},{"unified":"1f448-1f3fe","native":"👈🏾"},{"unified":"1f448-1f3ff","native":"👈🏿"}],"version":1},"point_right":{"id":"point_right","name":"Backhand Index Pointing Right","keywords":["point","fingers","hand","direction"],"skins":[{"unified":"1f449","native":"👉"},{"unified":"1f449-1f3fb","native":"👉🏻"},{"unified":"1f449-1f3fc","native":"👉🏼"},{"unified":"1f449-1f3fd","native":"👉🏽"},{"unified":"1f449-1f3fe","native":"👉🏾"},{"unified":"1f449-1f3ff","native":"👉🏿"}],"version":1},"point_up_2":{"id":"point_up_2","name":"Backhand Index Pointing Up","keywords":["point","2","fingers","hand","direction"],"skins":[{"unified":"1f446","native":"👆"},{"unified":"1f446-1f3fb","native":"👆🏻"},{"unified":"1f446-1f3fc","native":"👆🏼"},{"unified":"1f446-1f3fd","native":"👆🏽"},{"unified":"1f446-1f3fe","native":"👆🏾"},{"unified":"1f446-1f3ff","native":"👆🏿"}],"version":1},"middle_finger":{"id":"middle_finger","name":"Middle Finger","keywords":["reversed","hand","with","extended","fingers","rude","flipping"],"skins":[{"unified":"1f595","native":"🖕"},{"unified":"1f595-1f3fb","native":"🖕🏻"},{"unified":"1f595-1f3fc","native":"🖕🏼"},{"unified":"1f595-1f3fd","native":"🖕🏽"},{"unified":"1f595-1f3fe","native":"🖕🏾"},{"unified":"1f595-1f3ff","native":"🖕🏿"}],"version":1},"point_down":{"id":"point_down","name":"Backhand Index Pointing Down","keywords":["point","fingers","hand","direction"],"skins":[{"unified":"1f447","native":"👇"},{"unified":"1f447-1f3fb","native":"👇🏻"},{"unified":"1f447-1f3fc","native":"👇🏼"},{"unified":"1f447-1f3fd","native":"👇🏽"},{"unified":"1f447-1f3fe","native":"👇🏾"},{"unified":"1f447-1f3ff","native":"👇🏿"}],"version":1},"point_up":{"id":"point_up","name":"Index Pointing Up","keywords":["point","hand","fingers","direction"],"skins":[{"unified":"261d-fe0f","native":"☝️"},{"unified":"261d-1f3fb","native":"☝🏻"},{"unified":"261d-1f3fc","native":"☝🏼"},{"unified":"261d-1f3fd","native":"☝🏽"},{"unified":"261d-1f3fe","native":"☝🏾"},{"unified":"261d-1f3ff","native":"☝🏿"}],"version":1},"index_pointing_at_the_viewer":{"id":"index_pointing_at_the_viewer","name":"Index Pointing at the Viewer","keywords":["you","recruit"],"skins":[{"unified":"1faf5","native":"🫵"},{"unified":"1faf5-1f3fb","native":"🫵🏻"},{"unified":"1faf5-1f3fc","native":"🫵🏼"},{"unified":"1faf5-1f3fd","native":"🫵🏽"},{"unified":"1faf5-1f3fe","native":"🫵🏾"},{"unified":"1faf5-1f3ff","native":"🫵🏿"}],"version":14},"+1":{"id":"+1","name":"Thumbs Up","keywords":["+1","thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"skins":[{"unified":"1f44d","native":"👍"},{"unified":"1f44d-1f3fb","native":"👍🏻"},{"unified":"1f44d-1f3fc","native":"👍🏼"},{"unified":"1f44d-1f3fd","native":"👍🏽"},{"unified":"1f44d-1f3fe","native":"👍🏾"},{"unified":"1f44d-1f3ff","native":"👍🏿"}],"version":1},"-1":{"id":"-1","name":"Thumbs Down","keywords":["-1","thumbsdown","no","dislike","hand"],"skins":[{"unified":"1f44e","native":"👎"},{"unified":"1f44e-1f3fb","native":"👎🏻"},{"unified":"1f44e-1f3fc","native":"👎🏼"},{"unified":"1f44e-1f3fd","native":"👎🏽"},{"unified":"1f44e-1f3fe","native":"👎🏾"},{"unified":"1f44e-1f3ff","native":"👎🏿"}],"version":1},"fist":{"id":"fist","name":"Raised Fist","keywords":["fingers","hand","grasp"],"skins":[{"unified":"270a","native":"✊"},{"unified":"270a-1f3fb","native":"✊🏻"},{"unified":"270a-1f3fc","native":"✊🏼"},{"unified":"270a-1f3fd","native":"✊🏽"},{"unified":"270a-1f3fe","native":"✊🏾"},{"unified":"270a-1f3ff","native":"✊🏿"}],"version":1},"facepunch":{"id":"facepunch","name":"Oncoming Fist","keywords":["facepunch","punch","angry","violence","hit","attack","hand"],"skins":[{"unified":"1f44a","native":"👊"},{"unified":"1f44a-1f3fb","native":"👊🏻"},{"unified":"1f44a-1f3fc","native":"👊🏼"},{"unified":"1f44a-1f3fd","native":"👊🏽"},{"unified":"1f44a-1f3fe","native":"👊🏾"},{"unified":"1f44a-1f3ff","native":"👊🏿"}],"version":1},"left-facing_fist":{"id":"left-facing_fist","name":"Left-Facing Fist","keywords":["left","facing","hand","fistbump"],"skins":[{"unified":"1f91b","native":"🤛"},{"unified":"1f91b-1f3fb","native":"🤛🏻"},{"unified":"1f91b-1f3fc","native":"🤛🏼"},{"unified":"1f91b-1f3fd","native":"🤛🏽"},{"unified":"1f91b-1f3fe","native":"🤛🏾"},{"unified":"1f91b-1f3ff","native":"🤛🏿"}],"version":3},"right-facing_fist":{"id":"right-facing_fist","name":"Right-Facing Fist","keywords":["right","facing","hand","fistbump"],"skins":[{"unified":"1f91c","native":"🤜"},{"unified":"1f91c-1f3fb","native":"🤜🏻"},{"unified":"1f91c-1f3fc","native":"🤜🏼"},{"unified":"1f91c-1f3fd","native":"🤜🏽"},{"unified":"1f91c-1f3fe","native":"🤜🏾"},{"unified":"1f91c-1f3ff","native":"🤜🏿"}],"version":3},"clap":{"id":"clap","name":"Clapping Hands","keywords":["clap","praise","applause","congrats","yay"],"skins":[{"unified":"1f44f","native":"👏"},{"unified":"1f44f-1f3fb","native":"👏🏻"},{"unified":"1f44f-1f3fc","native":"👏🏼"},{"unified":"1f44f-1f3fd","native":"👏🏽"},{"unified":"1f44f-1f3fe","native":"👏🏾"},{"unified":"1f44f-1f3ff","native":"👏🏿"}],"version":1},"raised_hands":{"id":"raised_hands","name":"Raising Hands","keywords":["raised","gesture","hooray","yea","celebration"],"skins":[{"unified":"1f64c","native":"🙌"},{"unified":"1f64c-1f3fb","native":"🙌🏻"},{"unified":"1f64c-1f3fc","native":"🙌🏼"},{"unified":"1f64c-1f3fd","native":"🙌🏽"},{"unified":"1f64c-1f3fe","native":"🙌🏾"},{"unified":"1f64c-1f3ff","native":"🙌🏿"}],"version":1},"heart_hands":{"id":"heart_hands","name":"Heart Hands","keywords":["love","appreciation","support"],"skins":[{"unified":"1faf6","native":"🫶"},{"unified":"1faf6-1f3fb","native":"🫶🏻"},{"unified":"1faf6-1f3fc","native":"🫶🏼"},{"unified":"1faf6-1f3fd","native":"🫶🏽"},{"unified":"1faf6-1f3fe","native":"🫶🏾"},{"unified":"1faf6-1f3ff","native":"🫶🏿"}],"version":14},"open_hands":{"id":"open_hands","name":"Open Hands","keywords":["fingers","butterfly"],"skins":[{"unified":"1f450","native":"👐"},{"unified":"1f450-1f3fb","native":"👐🏻"},{"unified":"1f450-1f3fc","native":"👐🏼"},{"unified":"1f450-1f3fd","native":"👐🏽"},{"unified":"1f450-1f3fe","native":"👐🏾"},{"unified":"1f450-1f3ff","native":"👐🏿"}],"version":1},"palms_up_together":{"id":"palms_up_together","name":"Palms Up Together","keywords":["hands","gesture","cupped","prayer"],"skins":[{"unified":"1f932","native":"🤲"},{"unified":"1f932-1f3fb","native":"🤲🏻"},{"unified":"1f932-1f3fc","native":"🤲🏼"},{"unified":"1f932-1f3fd","native":"🤲🏽"},{"unified":"1f932-1f3fe","native":"🤲🏾"},{"unified":"1f932-1f3ff","native":"🤲🏿"}],"version":5},"handshake":{"id":"handshake","name":"Handshake","keywords":["agreement","shake"],"skins":[{"unified":"1f91d","native":"🤝"},{"unified":"1f91d-1f3fb","native":"🤝🏻"},{"unified":"1f91d-1f3fc","native":"🤝🏼"},{"unified":"1f91d-1f3fd","native":"🤝🏽"},{"unified":"1f91d-1f3fe","native":"🤝🏾"},{"unified":"1f91d-1f3ff","native":"🤝🏿"}],"version":3},"pray":{"id":"pray","name":"Folded Hands","keywords":["pray","please","hope","wish","namaste","highfive","high","five","thank","you","thanks","appreciate"],"skins":[{"unified":"1f64f","native":"🙏"},{"unified":"1f64f-1f3fb","native":"🙏🏻"},{"unified":"1f64f-1f3fc","native":"🙏🏼"},{"unified":"1f64f-1f3fd","native":"🙏🏽"},{"unified":"1f64f-1f3fe","native":"🙏🏾"},{"unified":"1f64f-1f3ff","native":"🙏🏿"}],"version":1},"writing_hand":{"id":"writing_hand","name":"Writing Hand","keywords":["lower","left","ballpoint","pen","stationery","write","compose"],"skins":[{"unified":"270d-fe0f","native":"✍️"},{"unified":"270d-1f3fb","native":"✍🏻"},{"unified":"270d-1f3fc","native":"✍🏼"},{"unified":"270d-1f3fd","native":"✍🏽"},{"unified":"270d-1f3fe","native":"✍🏾"},{"unified":"270d-1f3ff","native":"✍🏿"}],"version":1},"nail_care":{"id":"nail_care","name":"Nail Polish","keywords":["care","beauty","manicure","finger","fashion"],"skins":[{"unified":"1f485","native":"💅"},{"unified":"1f485-1f3fb","native":"💅🏻"},{"unified":"1f485-1f3fc","native":"💅🏼"},{"unified":"1f485-1f3fd","native":"💅🏽"},{"unified":"1f485-1f3fe","native":"💅🏾"},{"unified":"1f485-1f3ff","native":"💅🏿"}],"version":1},"selfie":{"id":"selfie","name":"Selfie","keywords":["camera","phone"],"skins":[{"unified":"1f933","native":"🤳"},{"unified":"1f933-1f3fb","native":"🤳🏻"},{"unified":"1f933-1f3fc","native":"🤳🏼"},{"unified":"1f933-1f3fd","native":"🤳🏽"},{"unified":"1f933-1f3fe","native":"🤳🏾"},{"unified":"1f933-1f3ff","native":"🤳🏿"}],"version":3},"muscle":{"id":"muscle","name":"Flexed Biceps","keywords":["muscle","arm","flex","hand","summer","strong"],"skins":[{"unified":"1f4aa","native":"💪"},{"unified":"1f4aa-1f3fb","native":"💪🏻"},{"unified":"1f4aa-1f3fc","native":"💪🏼"},{"unified":"1f4aa-1f3fd","native":"💪🏽"},{"unified":"1f4aa-1f3fe","native":"💪🏾"},{"unified":"1f4aa-1f3ff","native":"💪🏿"}],"version":1},"mechanical_arm":{"id":"mechanical_arm","name":"Mechanical Arm","keywords":["accessibility"],"skins":[{"unified":"1f9be","native":"🦾"}],"version":12},"mechanical_leg":{"id":"mechanical_leg","name":"Mechanical Leg","keywords":["accessibility"],"skins":[{"unified":"1f9bf","native":"🦿"}],"version":12},"leg":{"id":"leg","name":"Leg","keywords":["kick","limb"],"skins":[{"unified":"1f9b5","native":"🦵"},{"unified":"1f9b5-1f3fb","native":"🦵🏻"},{"unified":"1f9b5-1f3fc","native":"🦵🏼"},{"unified":"1f9b5-1f3fd","native":"🦵🏽"},{"unified":"1f9b5-1f3fe","native":"🦵🏾"},{"unified":"1f9b5-1f3ff","native":"🦵🏿"}],"version":11},"foot":{"id":"foot","name":"Foot","keywords":["kick","stomp"],"skins":[{"unified":"1f9b6","native":"🦶"},{"unified":"1f9b6-1f3fb","native":"🦶🏻"},{"unified":"1f9b6-1f3fc","native":"🦶🏼"},{"unified":"1f9b6-1f3fd","native":"🦶🏽"},{"unified":"1f9b6-1f3fe","native":"🦶🏾"},{"unified":"1f9b6-1f3ff","native":"🦶🏿"}],"version":11},"ear":{"id":"ear","name":"Ear","keywords":["face","hear","sound","listen"],"skins":[{"unified":"1f442","native":"👂"},{"unified":"1f442-1f3fb","native":"👂🏻"},{"unified":"1f442-1f3fc","native":"👂🏼"},{"unified":"1f442-1f3fd","native":"👂🏽"},{"unified":"1f442-1f3fe","native":"👂🏾"},{"unified":"1f442-1f3ff","native":"👂🏿"}],"version":1},"ear_with_hearing_aid":{"id":"ear_with_hearing_aid","name":"Ear with Hearing Aid","keywords":["accessibility"],"skins":[{"unified":"1f9bb","native":"🦻"},{"unified":"1f9bb-1f3fb","native":"🦻🏻"},{"unified":"1f9bb-1f3fc","native":"🦻🏼"},{"unified":"1f9bb-1f3fd","native":"🦻🏽"},{"unified":"1f9bb-1f3fe","native":"🦻🏾"},{"unified":"1f9bb-1f3ff","native":"🦻🏿"}],"version":12},"nose":{"id":"nose","name":"Nose","keywords":["smell","sniff"],"skins":[{"unified":"1f443","native":"👃"},{"unified":"1f443-1f3fb","native":"👃🏻"},{"unified":"1f443-1f3fc","native":"👃🏼"},{"unified":"1f443-1f3fd","native":"👃🏽"},{"unified":"1f443-1f3fe","native":"👃🏾"},{"unified":"1f443-1f3ff","native":"👃🏿"}],"version":1},"brain":{"id":"brain","name":"Brain","keywords":["smart","intelligent"],"skins":[{"unified":"1f9e0","native":"🧠"}],"version":5},"anatomical_heart":{"id":"anatomical_heart","name":"Anatomical Heart","keywords":["health","heartbeat"],"skins":[{"unified":"1fac0","native":"🫀"}],"version":13},"lungs":{"id":"lungs","name":"Lungs","keywords":["breathe"],"skins":[{"unified":"1fac1","native":"🫁"}],"version":13},"tooth":{"id":"tooth","name":"Tooth","keywords":["teeth","dentist"],"skins":[{"unified":"1f9b7","native":"🦷"}],"version":11},"bone":{"id":"bone","name":"Bone","keywords":["skeleton"],"skins":[{"unified":"1f9b4","native":"🦴"}],"version":11},"eyes":{"id":"eyes","name":"Eyes","keywords":["look","watch","stalk","peek","see"],"skins":[{"unified":"1f440","native":"👀"}],"version":1},"eye":{"id":"eye","name":"Eye","keywords":["face","look","see","watch","stare"],"skins":[{"unified":"1f441-fe0f","native":"👁️"}],"version":1},"tongue":{"id":"tongue","name":"Tongue","keywords":["mouth","playful"],"skins":[{"unified":"1f445","native":"👅"}],"version":1},"lips":{"id":"lips","name":"Mouth","keywords":["lips","kiss"],"skins":[{"unified":"1f444","native":"👄"}],"version":1},"biting_lip":{"id":"biting_lip","name":"Biting Lip","keywords":["flirt","sexy","pain","worry"],"skins":[{"unified":"1fae6","native":"🫦"}],"version":14},"baby":{"id":"baby","name":"Baby","keywords":["child","boy","girl","toddler"],"skins":[{"unified":"1f476","native":"👶"},{"unified":"1f476-1f3fb","native":"👶🏻"},{"unified":"1f476-1f3fc","native":"👶🏼"},{"unified":"1f476-1f3fd","native":"👶🏽"},{"unified":"1f476-1f3fe","native":"👶🏾"},{"unified":"1f476-1f3ff","native":"👶🏿"}],"version":1},"child":{"id":"child","name":"Child","keywords":["gender","neutral","young"],"skins":[{"unified":"1f9d2","native":"🧒"},{"unified":"1f9d2-1f3fb","native":"🧒🏻"},{"unified":"1f9d2-1f3fc","native":"🧒🏼"},{"unified":"1f9d2-1f3fd","native":"🧒🏽"},{"unified":"1f9d2-1f3fe","native":"🧒🏾"},{"unified":"1f9d2-1f3ff","native":"🧒🏿"}],"version":5},"boy":{"id":"boy","name":"Boy","keywords":["man","male","guy","teenager"],"skins":[{"unified":"1f466","native":"👦"},{"unified":"1f466-1f3fb","native":"👦🏻"},{"unified":"1f466-1f3fc","native":"👦🏼"},{"unified":"1f466-1f3fd","native":"👦🏽"},{"unified":"1f466-1f3fe","native":"👦🏾"},{"unified":"1f466-1f3ff","native":"👦🏿"}],"version":1},"girl":{"id":"girl","name":"Girl","keywords":["female","woman","teenager"],"skins":[{"unified":"1f467","native":"👧"},{"unified":"1f467-1f3fb","native":"👧🏻"},{"unified":"1f467-1f3fc","native":"👧🏼"},{"unified":"1f467-1f3fd","native":"👧🏽"},{"unified":"1f467-1f3fe","native":"👧🏾"},{"unified":"1f467-1f3ff","native":"👧🏿"}],"version":1},"adult":{"id":"adult","name":"Adult","keywords":["person","gender","neutral"],"skins":[{"unified":"1f9d1","native":"🧑"},{"unified":"1f9d1-1f3fb","native":"🧑🏻"},{"unified":"1f9d1-1f3fc","native":"🧑🏼"},{"unified":"1f9d1-1f3fd","native":"🧑🏽"},{"unified":"1f9d1-1f3fe","native":"🧑🏾"},{"unified":"1f9d1-1f3ff","native":"🧑🏿"}],"version":5},"person_with_blond_hair":{"id":"person_with_blond_hair","name":"Person Blond Hair","keywords":["with","hairstyle"],"skins":[{"unified":"1f471","native":"👱"},{"unified":"1f471-1f3fb","native":"👱🏻"},{"unified":"1f471-1f3fc","native":"👱🏼"},{"unified":"1f471-1f3fd","native":"👱🏽"},{"unified":"1f471-1f3fe","native":"👱🏾"},{"unified":"1f471-1f3ff","native":"👱🏿"}],"version":1},"man":{"id":"man","name":"Man","keywords":["mustache","father","dad","guy","classy","sir","moustache"],"skins":[{"unified":"1f468","native":"👨"},{"unified":"1f468-1f3fb","native":"👨🏻"},{"unified":"1f468-1f3fc","native":"👨🏼"},{"unified":"1f468-1f3fd","native":"👨🏽"},{"unified":"1f468-1f3fe","native":"👨🏾"},{"unified":"1f468-1f3ff","native":"👨🏿"}],"version":1},"bearded_person":{"id":"bearded_person","name":"Person Beard","keywords":["bearded","man","bewhiskered"],"skins":[{"unified":"1f9d4","native":"🧔"},{"unified":"1f9d4-1f3fb","native":"🧔🏻"},{"unified":"1f9d4-1f3fc","native":"🧔🏼"},{"unified":"1f9d4-1f3fd","native":"🧔🏽"},{"unified":"1f9d4-1f3fe","native":"🧔🏾"},{"unified":"1f9d4-1f3ff","native":"🧔🏿"}],"version":5},"man_with_beard":{"id":"man_with_beard","name":"Man: Beard","keywords":["man","with","facial","hair"],"skins":[{"unified":"1f9d4-200d-2642-fe0f","native":"🧔♂️"},{"unified":"1f9d4-1f3fb-200d-2642-fe0f","native":"🧔🏻♂️"},{"unified":"1f9d4-1f3fc-200d-2642-fe0f","native":"🧔🏼♂️"},{"unified":"1f9d4-1f3fd-200d-2642-fe0f","native":"🧔🏽♂️"},{"unified":"1f9d4-1f3fe-200d-2642-fe0f","native":"🧔🏾♂️"},{"unified":"1f9d4-1f3ff-200d-2642-fe0f","native":"🧔🏿♂️"}],"version":13.1},"woman_with_beard":{"id":"woman_with_beard","name":"Woman: Beard","keywords":["woman","with","facial","hair"],"skins":[{"unified":"1f9d4-200d-2640-fe0f","native":"🧔♀️"},{"unified":"1f9d4-1f3fb-200d-2640-fe0f","native":"🧔🏻♀️"},{"unified":"1f9d4-1f3fc-200d-2640-fe0f","native":"🧔🏼♀️"},{"unified":"1f9d4-1f3fd-200d-2640-fe0f","native":"🧔🏽♀️"},{"unified":"1f9d4-1f3fe-200d-2640-fe0f","native":"🧔🏾♀️"},{"unified":"1f9d4-1f3ff-200d-2640-fe0f","native":"🧔🏿♀️"}],"version":13.1},"red_haired_man":{"id":"red_haired_man","name":"Man: Red Hair","keywords":["haired","man","hairstyle"],"skins":[{"unified":"1f468-200d-1f9b0","native":"👨🦰"},{"unified":"1f468-1f3fb-200d-1f9b0","native":"👨🏻🦰"},{"unified":"1f468-1f3fc-200d-1f9b0","native":"👨🏼🦰"},{"unified":"1f468-1f3fd-200d-1f9b0","native":"👨🏽🦰"},{"unified":"1f468-1f3fe-200d-1f9b0","native":"👨🏾🦰"},{"unified":"1f468-1f3ff-200d-1f9b0","native":"👨🏿🦰"}],"version":11},"curly_haired_man":{"id":"curly_haired_man","name":"Man: Curly Hair","keywords":["haired","man","hairstyle"],"skins":[{"unified":"1f468-200d-1f9b1","native":"👨🦱"},{"unified":"1f468-1f3fb-200d-1f9b1","native":"👨🏻🦱"},{"unified":"1f468-1f3fc-200d-1f9b1","native":"👨🏼🦱"},{"unified":"1f468-1f3fd-200d-1f9b1","native":"👨🏽🦱"},{"unified":"1f468-1f3fe-200d-1f9b1","native":"👨🏾🦱"},{"unified":"1f468-1f3ff-200d-1f9b1","native":"👨🏿🦱"}],"version":11},"white_haired_man":{"id":"white_haired_man","name":"Man: White Hair","keywords":["haired","man","old","elder"],"skins":[{"unified":"1f468-200d-1f9b3","native":"👨🦳"},{"unified":"1f468-1f3fb-200d-1f9b3","native":"👨🏻🦳"},{"unified":"1f468-1f3fc-200d-1f9b3","native":"👨🏼🦳"},{"unified":"1f468-1f3fd-200d-1f9b3","native":"👨🏽🦳"},{"unified":"1f468-1f3fe-200d-1f9b3","native":"👨🏾🦳"},{"unified":"1f468-1f3ff-200d-1f9b3","native":"👨🏿🦳"}],"version":11},"bald_man":{"id":"bald_man","name":"Man: Bald","keywords":["man","hairless"],"skins":[{"unified":"1f468-200d-1f9b2","native":"👨🦲"},{"unified":"1f468-1f3fb-200d-1f9b2","native":"👨🏻🦲"},{"unified":"1f468-1f3fc-200d-1f9b2","native":"👨🏼🦲"},{"unified":"1f468-1f3fd-200d-1f9b2","native":"👨🏽🦲"},{"unified":"1f468-1f3fe-200d-1f9b2","native":"👨🏾🦲"},{"unified":"1f468-1f3ff-200d-1f9b2","native":"👨🏿🦲"}],"version":11},"woman":{"id":"woman","name":"Woman","keywords":["female","girls","lady"],"skins":[{"unified":"1f469","native":"👩"},{"unified":"1f469-1f3fb","native":"👩🏻"},{"unified":"1f469-1f3fc","native":"👩🏼"},{"unified":"1f469-1f3fd","native":"👩🏽"},{"unified":"1f469-1f3fe","native":"👩🏾"},{"unified":"1f469-1f3ff","native":"👩🏿"}],"version":1},"red_haired_woman":{"id":"red_haired_woman","name":"Woman: Red Hair","keywords":["haired","woman","hairstyle"],"skins":[{"unified":"1f469-200d-1f9b0","native":"👩🦰"},{"unified":"1f469-1f3fb-200d-1f9b0","native":"👩🏻🦰"},{"unified":"1f469-1f3fc-200d-1f9b0","native":"👩🏼🦰"},{"unified":"1f469-1f3fd-200d-1f9b0","native":"👩🏽🦰"},{"unified":"1f469-1f3fe-200d-1f9b0","native":"👩🏾🦰"},{"unified":"1f469-1f3ff-200d-1f9b0","native":"👩🏿🦰"}],"version":11},"red_haired_person":{"id":"red_haired_person","name":"Person: Red Hair","keywords":["haired","person","hairstyle"],"skins":[{"unified":"1f9d1-200d-1f9b0","native":"🧑🦰"},{"unified":"1f9d1-1f3fb-200d-1f9b0","native":"🧑🏻🦰"},{"unified":"1f9d1-1f3fc-200d-1f9b0","native":"🧑🏼🦰"},{"unified":"1f9d1-1f3fd-200d-1f9b0","native":"🧑🏽🦰"},{"unified":"1f9d1-1f3fe-200d-1f9b0","native":"🧑🏾🦰"},{"unified":"1f9d1-1f3ff-200d-1f9b0","native":"🧑🏿🦰"}],"version":12.1},"curly_haired_woman":{"id":"curly_haired_woman","name":"Woman: Curly Hair","keywords":["haired","woman","hairstyle"],"skins":[{"unified":"1f469-200d-1f9b1","native":"👩🦱"},{"unified":"1f469-1f3fb-200d-1f9b1","native":"👩🏻🦱"},{"unified":"1f469-1f3fc-200d-1f9b1","native":"👩🏼🦱"},{"unified":"1f469-1f3fd-200d-1f9b1","native":"👩🏽🦱"},{"unified":"1f469-1f3fe-200d-1f9b1","native":"👩🏾🦱"},{"unified":"1f469-1f3ff-200d-1f9b1","native":"👩🏿🦱"}],"version":11},"curly_haired_person":{"id":"curly_haired_person","name":"Person: Curly Hair","keywords":["haired","person","hairstyle"],"skins":[{"unified":"1f9d1-200d-1f9b1","native":"🧑🦱"},{"unified":"1f9d1-1f3fb-200d-1f9b1","native":"🧑🏻🦱"},{"unified":"1f9d1-1f3fc-200d-1f9b1","native":"🧑🏼🦱"},{"unified":"1f9d1-1f3fd-200d-1f9b1","native":"🧑🏽🦱"},{"unified":"1f9d1-1f3fe-200d-1f9b1","native":"🧑🏾🦱"},{"unified":"1f9d1-1f3ff-200d-1f9b1","native":"🧑🏿🦱"}],"version":12.1},"white_haired_woman":{"id":"white_haired_woman","name":"Woman: White Hair","keywords":["haired","woman","old","elder"],"skins":[{"unified":"1f469-200d-1f9b3","native":"👩🦳"},{"unified":"1f469-1f3fb-200d-1f9b3","native":"👩🏻🦳"},{"unified":"1f469-1f3fc-200d-1f9b3","native":"👩🏼🦳"},{"unified":"1f469-1f3fd-200d-1f9b3","native":"👩🏽🦳"},{"unified":"1f469-1f3fe-200d-1f9b3","native":"👩🏾🦳"},{"unified":"1f469-1f3ff-200d-1f9b3","native":"👩🏿🦳"}],"version":11},"white_haired_person":{"id":"white_haired_person","name":"Person: White Hair","keywords":["haired","person","elder","old"],"skins":[{"unified":"1f9d1-200d-1f9b3","native":"🧑🦳"},{"unified":"1f9d1-1f3fb-200d-1f9b3","native":"🧑🏻🦳"},{"unified":"1f9d1-1f3fc-200d-1f9b3","native":"🧑🏼🦳"},{"unified":"1f9d1-1f3fd-200d-1f9b3","native":"🧑🏽🦳"},{"unified":"1f9d1-1f3fe-200d-1f9b3","native":"🧑🏾🦳"},{"unified":"1f9d1-1f3ff-200d-1f9b3","native":"🧑🏿🦳"}],"version":12.1},"bald_woman":{"id":"bald_woman","name":"Woman: Bald","keywords":["woman","hairless"],"skins":[{"unified":"1f469-200d-1f9b2","native":"👩🦲"},{"unified":"1f469-1f3fb-200d-1f9b2","native":"👩🏻🦲"},{"unified":"1f469-1f3fc-200d-1f9b2","native":"👩🏼🦲"},{"unified":"1f469-1f3fd-200d-1f9b2","native":"👩🏽🦲"},{"unified":"1f469-1f3fe-200d-1f9b2","native":"👩🏾🦲"},{"unified":"1f469-1f3ff-200d-1f9b2","native":"👩🏿🦲"}],"version":11},"bald_person":{"id":"bald_person","name":"Person: Bald","keywords":["person","hairless"],"skins":[{"unified":"1f9d1-200d-1f9b2","native":"🧑🦲"},{"unified":"1f9d1-1f3fb-200d-1f9b2","native":"🧑🏻🦲"},{"unified":"1f9d1-1f3fc-200d-1f9b2","native":"🧑🏼🦲"},{"unified":"1f9d1-1f3fd-200d-1f9b2","native":"🧑🏽🦲"},{"unified":"1f9d1-1f3fe-200d-1f9b2","native":"🧑🏾🦲"},{"unified":"1f9d1-1f3ff-200d-1f9b2","native":"🧑🏿🦲"}],"version":12.1},"blond-haired-woman":{"id":"blond-haired-woman","name":"Woman: Blond Hair","keywords":["haired-woman","woman","female","girl","blonde","person"],"skins":[{"unified":"1f471-200d-2640-fe0f","native":"👱♀️"},{"unified":"1f471-1f3fb-200d-2640-fe0f","native":"👱🏻♀️"},{"unified":"1f471-1f3fc-200d-2640-fe0f","native":"👱🏼♀️"},{"unified":"1f471-1f3fd-200d-2640-fe0f","native":"👱🏽♀️"},{"unified":"1f471-1f3fe-200d-2640-fe0f","native":"👱🏾♀️"},{"unified":"1f471-1f3ff-200d-2640-fe0f","native":"👱🏿♀️"}],"version":4},"blond-haired-man":{"id":"blond-haired-man","name":"Man: Blond Hair","keywords":["haired-man","man","male","boy","blonde","guy","person"],"skins":[{"unified":"1f471-200d-2642-fe0f","native":"👱♂️"},{"unified":"1f471-1f3fb-200d-2642-fe0f","native":"👱🏻♂️"},{"unified":"1f471-1f3fc-200d-2642-fe0f","native":"👱🏼♂️"},{"unified":"1f471-1f3fd-200d-2642-fe0f","native":"👱🏽♂️"},{"unified":"1f471-1f3fe-200d-2642-fe0f","native":"👱🏾♂️"},{"unified":"1f471-1f3ff-200d-2642-fe0f","native":"👱🏿♂️"}],"version":4},"older_adult":{"id":"older_adult","name":"Older Adult","keywords":["person","human","elder","senior","gender","neutral"],"skins":[{"unified":"1f9d3","native":"🧓"},{"unified":"1f9d3-1f3fb","native":"🧓🏻"},{"unified":"1f9d3-1f3fc","native":"🧓🏼"},{"unified":"1f9d3-1f3fd","native":"🧓🏽"},{"unified":"1f9d3-1f3fe","native":"🧓🏾"},{"unified":"1f9d3-1f3ff","native":"🧓🏿"}],"version":5},"older_man":{"id":"older_man","name":"Old Man","keywords":["older","human","male","men","elder","senior"],"skins":[{"unified":"1f474","native":"👴"},{"unified":"1f474-1f3fb","native":"👴🏻"},{"unified":"1f474-1f3fc","native":"👴🏼"},{"unified":"1f474-1f3fd","native":"👴🏽"},{"unified":"1f474-1f3fe","native":"👴🏾"},{"unified":"1f474-1f3ff","native":"👴🏿"}],"version":1},"older_woman":{"id":"older_woman","name":"Old Woman","keywords":["older","human","female","women","lady","elder","senior"],"skins":[{"unified":"1f475","native":"👵"},{"unified":"1f475-1f3fb","native":"👵🏻"},{"unified":"1f475-1f3fc","native":"👵🏼"},{"unified":"1f475-1f3fd","native":"👵🏽"},{"unified":"1f475-1f3fe","native":"👵🏾"},{"unified":"1f475-1f3ff","native":"👵🏿"}],"version":1},"person_frowning":{"id":"person_frowning","name":"Person Frowning","keywords":["worried"],"skins":[{"unified":"1f64d","native":"🙍"},{"unified":"1f64d-1f3fb","native":"🙍🏻"},{"unified":"1f64d-1f3fc","native":"🙍🏼"},{"unified":"1f64d-1f3fd","native":"🙍🏽"},{"unified":"1f64d-1f3fe","native":"🙍🏾"},{"unified":"1f64d-1f3ff","native":"🙍🏿"}],"version":1},"man-frowning":{"id":"man-frowning","name":"Man Frowning","keywords":["male","boy","sad","depressed","discouraged","unhappy"],"skins":[{"unified":"1f64d-200d-2642-fe0f","native":"🙍♂️"},{"unified":"1f64d-1f3fb-200d-2642-fe0f","native":"🙍🏻♂️"},{"unified":"1f64d-1f3fc-200d-2642-fe0f","native":"🙍🏼♂️"},{"unified":"1f64d-1f3fd-200d-2642-fe0f","native":"🙍🏽♂️"},{"unified":"1f64d-1f3fe-200d-2642-fe0f","native":"🙍🏾♂️"},{"unified":"1f64d-1f3ff-200d-2642-fe0f","native":"🙍🏿♂️"}],"version":4},"woman-frowning":{"id":"woman-frowning","name":"Woman Frowning","keywords":["female","girl","sad","depressed","discouraged","unhappy"],"skins":[{"unified":"1f64d-200d-2640-fe0f","native":"🙍♀️"},{"unified":"1f64d-1f3fb-200d-2640-fe0f","native":"🙍🏻♀️"},{"unified":"1f64d-1f3fc-200d-2640-fe0f","native":"🙍🏼♀️"},{"unified":"1f64d-1f3fd-200d-2640-fe0f","native":"🙍🏽♀️"},{"unified":"1f64d-1f3fe-200d-2640-fe0f","native":"🙍🏾♀️"},{"unified":"1f64d-1f3ff-200d-2640-fe0f","native":"🙍🏿♀️"}],"version":4},"person_with_pouting_face":{"id":"person_with_pouting_face","name":"Person Pouting","keywords":["with","face","upset"],"skins":[{"unified":"1f64e","native":"🙎"},{"unified":"1f64e-1f3fb","native":"🙎🏻"},{"unified":"1f64e-1f3fc","native":"🙎🏼"},{"unified":"1f64e-1f3fd","native":"🙎🏽"},{"unified":"1f64e-1f3fe","native":"🙎🏾"},{"unified":"1f64e-1f3ff","native":"🙎🏿"}],"version":1},"man-pouting":{"id":"man-pouting","name":"Man Pouting","keywords":["male","boy"],"skins":[{"unified":"1f64e-200d-2642-fe0f","native":"🙎♂️"},{"unified":"1f64e-1f3fb-200d-2642-fe0f","native":"🙎🏻♂️"},{"unified":"1f64e-1f3fc-200d-2642-fe0f","native":"🙎🏼♂️"},{"unified":"1f64e-1f3fd-200d-2642-fe0f","native":"🙎🏽♂️"},{"unified":"1f64e-1f3fe-200d-2642-fe0f","native":"🙎🏾♂️"},{"unified":"1f64e-1f3ff-200d-2642-fe0f","native":"🙎🏿♂️"}],"version":4},"woman-pouting":{"id":"woman-pouting","name":"Woman Pouting","keywords":["female","girl"],"skins":[{"unified":"1f64e-200d-2640-fe0f","native":"🙎♀️"},{"unified":"1f64e-1f3fb-200d-2640-fe0f","native":"🙎🏻♀️"},{"unified":"1f64e-1f3fc-200d-2640-fe0f","native":"🙎🏼♀️"},{"unified":"1f64e-1f3fd-200d-2640-fe0f","native":"🙎🏽♀️"},{"unified":"1f64e-1f3fe-200d-2640-fe0f","native":"🙎🏾♀️"},{"unified":"1f64e-1f3ff-200d-2640-fe0f","native":"🙎🏿♀️"}],"version":4},"no_good":{"id":"no_good","name":"Person Gesturing No","keywords":["good","decline"],"skins":[{"unified":"1f645","native":"🙅"},{"unified":"1f645-1f3fb","native":"🙅🏻"},{"unified":"1f645-1f3fc","native":"🙅🏼"},{"unified":"1f645-1f3fd","native":"🙅🏽"},{"unified":"1f645-1f3fe","native":"🙅🏾"},{"unified":"1f645-1f3ff","native":"🙅🏿"}],"version":1},"man-gesturing-no":{"id":"man-gesturing-no","name":"Man Gesturing No","keywords":["gesturing-no","male","boy","nope"],"skins":[{"unified":"1f645-200d-2642-fe0f","native":"🙅♂️"},{"unified":"1f645-1f3fb-200d-2642-fe0f","native":"🙅🏻♂️"},{"unified":"1f645-1f3fc-200d-2642-fe0f","native":"🙅🏼♂️"},{"unified":"1f645-1f3fd-200d-2642-fe0f","native":"🙅🏽♂️"},{"unified":"1f645-1f3fe-200d-2642-fe0f","native":"🙅🏾♂️"},{"unified":"1f645-1f3ff-200d-2642-fe0f","native":"🙅🏿♂️"}],"version":4},"woman-gesturing-no":{"id":"woman-gesturing-no","name":"Woman Gesturing No","keywords":["gesturing-no","female","girl","nope"],"skins":[{"unified":"1f645-200d-2640-fe0f","native":"🙅♀️"},{"unified":"1f645-1f3fb-200d-2640-fe0f","native":"🙅🏻♀️"},{"unified":"1f645-1f3fc-200d-2640-fe0f","native":"🙅🏼♀️"},{"unified":"1f645-1f3fd-200d-2640-fe0f","native":"🙅🏽♀️"},{"unified":"1f645-1f3fe-200d-2640-fe0f","native":"🙅🏾♀️"},{"unified":"1f645-1f3ff-200d-2640-fe0f","native":"🙅🏿♀️"}],"version":4},"ok_woman":{"id":"ok_woman","name":"Person Gesturing Ok","keywords":["woman","agree"],"skins":[{"unified":"1f646","native":"🙆"},{"unified":"1f646-1f3fb","native":"🙆🏻"},{"unified":"1f646-1f3fc","native":"🙆🏼"},{"unified":"1f646-1f3fd","native":"🙆🏽"},{"unified":"1f646-1f3fe","native":"🙆🏾"},{"unified":"1f646-1f3ff","native":"🙆🏿"}],"version":1},"man-gesturing-ok":{"id":"man-gesturing-ok","name":"Man Gesturing Ok","keywords":["gesturing-ok","men","boy","male","blue","human"],"skins":[{"unified":"1f646-200d-2642-fe0f","native":"🙆♂️"},{"unified":"1f646-1f3fb-200d-2642-fe0f","native":"🙆🏻♂️"},{"unified":"1f646-1f3fc-200d-2642-fe0f","native":"🙆🏼♂️"},{"unified":"1f646-1f3fd-200d-2642-fe0f","native":"🙆🏽♂️"},{"unified":"1f646-1f3fe-200d-2642-fe0f","native":"🙆🏾♂️"},{"unified":"1f646-1f3ff-200d-2642-fe0f","native":"🙆🏿♂️"}],"version":4},"woman-gesturing-ok":{"id":"woman-gesturing-ok","name":"Woman Gesturing Ok","keywords":["gesturing-ok","women","girl","female","pink","human"],"skins":[{"unified":"1f646-200d-2640-fe0f","native":"🙆♀️"},{"unified":"1f646-1f3fb-200d-2640-fe0f","native":"🙆🏻♀️"},{"unified":"1f646-1f3fc-200d-2640-fe0f","native":"🙆🏼♀️"},{"unified":"1f646-1f3fd-200d-2640-fe0f","native":"🙆🏽♀️"},{"unified":"1f646-1f3fe-200d-2640-fe0f","native":"🙆🏾♀️"},{"unified":"1f646-1f3ff-200d-2640-fe0f","native":"🙆🏿♀️"}],"version":4},"information_desk_person":{"id":"information_desk_person","name":"Person Tipping Hand","keywords":["information","desk"],"skins":[{"unified":"1f481","native":"💁"},{"unified":"1f481-1f3fb","native":"💁🏻"},{"unified":"1f481-1f3fc","native":"💁🏼"},{"unified":"1f481-1f3fd","native":"💁🏽"},{"unified":"1f481-1f3fe","native":"💁🏾"},{"unified":"1f481-1f3ff","native":"💁🏿"}],"version":1},"man-tipping-hand":{"id":"man-tipping-hand","name":"Man Tipping Hand","keywords":["tipping-hand","male","boy","human","information"],"skins":[{"unified":"1f481-200d-2642-fe0f","native":"💁♂️"},{"unified":"1f481-1f3fb-200d-2642-fe0f","native":"💁🏻♂️"},{"unified":"1f481-1f3fc-200d-2642-fe0f","native":"💁🏼♂️"},{"unified":"1f481-1f3fd-200d-2642-fe0f","native":"💁🏽♂️"},{"unified":"1f481-1f3fe-200d-2642-fe0f","native":"💁🏾♂️"},{"unified":"1f481-1f3ff-200d-2642-fe0f","native":"💁🏿♂️"}],"version":4},"woman-tipping-hand":{"id":"woman-tipping-hand","name":"Woman Tipping Hand","keywords":["tipping-hand","female","girl","human","information"],"skins":[{"unified":"1f481-200d-2640-fe0f","native":"💁♀️"},{"unified":"1f481-1f3fb-200d-2640-fe0f","native":"💁🏻♀️"},{"unified":"1f481-1f3fc-200d-2640-fe0f","native":"💁🏼♀️"},{"unified":"1f481-1f3fd-200d-2640-fe0f","native":"💁🏽♀️"},{"unified":"1f481-1f3fe-200d-2640-fe0f","native":"💁🏾♀️"},{"unified":"1f481-1f3ff-200d-2640-fe0f","native":"💁🏿♀️"}],"version":4},"raising_hand":{"id":"raising_hand","name":"Person Raising Hand","keywords":["question"],"skins":[{"unified":"1f64b","native":"🙋"},{"unified":"1f64b-1f3fb","native":"🙋🏻"},{"unified":"1f64b-1f3fc","native":"🙋🏼"},{"unified":"1f64b-1f3fd","native":"🙋🏽"},{"unified":"1f64b-1f3fe","native":"🙋🏾"},{"unified":"1f64b-1f3ff","native":"🙋🏿"}],"version":1},"man-raising-hand":{"id":"man-raising-hand","name":"Man Raising Hand","keywords":["raising-hand","male","boy"],"skins":[{"unified":"1f64b-200d-2642-fe0f","native":"🙋♂️"},{"unified":"1f64b-1f3fb-200d-2642-fe0f","native":"🙋🏻♂️"},{"unified":"1f64b-1f3fc-200d-2642-fe0f","native":"🙋🏼♂️"},{"unified":"1f64b-1f3fd-200d-2642-fe0f","native":"🙋🏽♂️"},{"unified":"1f64b-1f3fe-200d-2642-fe0f","native":"🙋🏾♂️"},{"unified":"1f64b-1f3ff-200d-2642-fe0f","native":"🙋🏿♂️"}],"version":4},"woman-raising-hand":{"id":"woman-raising-hand","name":"Woman Raising Hand","keywords":["raising-hand","female","girl"],"skins":[{"unified":"1f64b-200d-2640-fe0f","native":"🙋♀️"},{"unified":"1f64b-1f3fb-200d-2640-fe0f","native":"🙋🏻♀️"},{"unified":"1f64b-1f3fc-200d-2640-fe0f","native":"🙋🏼♀️"},{"unified":"1f64b-1f3fd-200d-2640-fe0f","native":"🙋🏽♀️"},{"unified":"1f64b-1f3fe-200d-2640-fe0f","native":"🙋🏾♀️"},{"unified":"1f64b-1f3ff-200d-2640-fe0f","native":"🙋🏿♀️"}],"version":4},"deaf_person":{"id":"deaf_person","name":"Deaf Person","keywords":["accessibility"],"skins":[{"unified":"1f9cf","native":"🧏"},{"unified":"1f9cf-1f3fb","native":"🧏🏻"},{"unified":"1f9cf-1f3fc","native":"🧏🏼"},{"unified":"1f9cf-1f3fd","native":"🧏🏽"},{"unified":"1f9cf-1f3fe","native":"🧏🏾"},{"unified":"1f9cf-1f3ff","native":"🧏🏿"}],"version":12},"deaf_man":{"id":"deaf_man","name":"Deaf Man","keywords":["accessibility"],"skins":[{"unified":"1f9cf-200d-2642-fe0f","native":"🧏♂️"},{"unified":"1f9cf-1f3fb-200d-2642-fe0f","native":"🧏🏻♂️"},{"unified":"1f9cf-1f3fc-200d-2642-fe0f","native":"🧏🏼♂️"},{"unified":"1f9cf-1f3fd-200d-2642-fe0f","native":"🧏🏽♂️"},{"unified":"1f9cf-1f3fe-200d-2642-fe0f","native":"🧏🏾♂️"},{"unified":"1f9cf-1f3ff-200d-2642-fe0f","native":"🧏🏿♂️"}],"version":12},"deaf_woman":{"id":"deaf_woman","name":"Deaf Woman","keywords":["accessibility"],"skins":[{"unified":"1f9cf-200d-2640-fe0f","native":"🧏♀️"},{"unified":"1f9cf-1f3fb-200d-2640-fe0f","native":"🧏🏻♀️"},{"unified":"1f9cf-1f3fc-200d-2640-fe0f","native":"🧏🏼♀️"},{"unified":"1f9cf-1f3fd-200d-2640-fe0f","native":"🧏🏽♀️"},{"unified":"1f9cf-1f3fe-200d-2640-fe0f","native":"🧏🏾♀️"},{"unified":"1f9cf-1f3ff-200d-2640-fe0f","native":"🧏🏿♀️"}],"version":12},"bow":{"id":"bow","name":"Person Bowing","keywords":["bow","respectiful"],"skins":[{"unified":"1f647","native":"🙇"},{"unified":"1f647-1f3fb","native":"🙇🏻"},{"unified":"1f647-1f3fc","native":"🙇🏼"},{"unified":"1f647-1f3fd","native":"🙇🏽"},{"unified":"1f647-1f3fe","native":"🙇🏾"},{"unified":"1f647-1f3ff","native":"🙇🏿"}],"version":1},"man-bowing":{"id":"man-bowing","name":"Man Bowing","keywords":["male","boy"],"skins":[{"unified":"1f647-200d-2642-fe0f","native":"🙇♂️"},{"unified":"1f647-1f3fb-200d-2642-fe0f","native":"🙇🏻♂️"},{"unified":"1f647-1f3fc-200d-2642-fe0f","native":"🙇🏼♂️"},{"unified":"1f647-1f3fd-200d-2642-fe0f","native":"🙇🏽♂️"},{"unified":"1f647-1f3fe-200d-2642-fe0f","native":"🙇🏾♂️"},{"unified":"1f647-1f3ff-200d-2642-fe0f","native":"🙇🏿♂️"}],"version":4},"woman-bowing":{"id":"woman-bowing","name":"Woman Bowing","keywords":["female","girl"],"skins":[{"unified":"1f647-200d-2640-fe0f","native":"🙇♀️"},{"unified":"1f647-1f3fb-200d-2640-fe0f","native":"🙇🏻♀️"},{"unified":"1f647-1f3fc-200d-2640-fe0f","native":"🙇🏼♀️"},{"unified":"1f647-1f3fd-200d-2640-fe0f","native":"🙇🏽♀️"},{"unified":"1f647-1f3fe-200d-2640-fe0f","native":"🙇🏾♀️"},{"unified":"1f647-1f3ff-200d-2640-fe0f","native":"🙇🏿♀️"}],"version":4},"face_palm":{"id":"face_palm","name":"Face Palm","keywords":["person","facepalming","disappointed"],"skins":[{"unified":"1f926","native":"🤦"},{"unified":"1f926-1f3fb","native":"🤦🏻"},{"unified":"1f926-1f3fc","native":"🤦🏼"},{"unified":"1f926-1f3fd","native":"🤦🏽"},{"unified":"1f926-1f3fe","native":"🤦🏾"},{"unified":"1f926-1f3ff","native":"🤦🏿"}],"version":3},"man-facepalming":{"id":"man-facepalming","name":"Man Facepalming","keywords":["male","boy","disbelief"],"skins":[{"unified":"1f926-200d-2642-fe0f","native":"🤦♂️"},{"unified":"1f926-1f3fb-200d-2642-fe0f","native":"🤦🏻♂️"},{"unified":"1f926-1f3fc-200d-2642-fe0f","native":"🤦🏼♂️"},{"unified":"1f926-1f3fd-200d-2642-fe0f","native":"🤦🏽♂️"},{"unified":"1f926-1f3fe-200d-2642-fe0f","native":"🤦🏾♂️"},{"unified":"1f926-1f3ff-200d-2642-fe0f","native":"🤦🏿♂️"}],"version":4},"woman-facepalming":{"id":"woman-facepalming","name":"Woman Facepalming","keywords":["female","girl","disbelief"],"skins":[{"unified":"1f926-200d-2640-fe0f","native":"🤦♀️"},{"unified":"1f926-1f3fb-200d-2640-fe0f","native":"🤦🏻♀️"},{"unified":"1f926-1f3fc-200d-2640-fe0f","native":"🤦🏼♀️"},{"unified":"1f926-1f3fd-200d-2640-fe0f","native":"🤦🏽♀️"},{"unified":"1f926-1f3fe-200d-2640-fe0f","native":"🤦🏾♀️"},{"unified":"1f926-1f3ff-200d-2640-fe0f","native":"🤦🏿♀️"}],"version":4},"shrug":{"id":"shrug","name":"Shrug","keywords":["person","shrugging","regardless"],"skins":[{"unified":"1f937","native":"🤷"},{"unified":"1f937-1f3fb","native":"🤷🏻"},{"unified":"1f937-1f3fc","native":"🤷🏼"},{"unified":"1f937-1f3fd","native":"🤷🏽"},{"unified":"1f937-1f3fe","native":"🤷🏾"},{"unified":"1f937-1f3ff","native":"🤷🏿"}],"version":3},"man-shrugging":{"id":"man-shrugging","name":"Man Shrugging","keywords":["male","boy","confused","indifferent","doubt"],"skins":[{"unified":"1f937-200d-2642-fe0f","native":"🤷♂️"},{"unified":"1f937-1f3fb-200d-2642-fe0f","native":"🤷🏻♂️"},{"unified":"1f937-1f3fc-200d-2642-fe0f","native":"🤷🏼♂️"},{"unified":"1f937-1f3fd-200d-2642-fe0f","native":"🤷🏽♂️"},{"unified":"1f937-1f3fe-200d-2642-fe0f","native":"🤷🏾♂️"},{"unified":"1f937-1f3ff-200d-2642-fe0f","native":"🤷🏿♂️"}],"version":4},"woman-shrugging":{"id":"woman-shrugging","name":"Woman Shrugging","keywords":["female","girl","confused","indifferent","doubt"],"skins":[{"unified":"1f937-200d-2640-fe0f","native":"🤷♀️"},{"unified":"1f937-1f3fb-200d-2640-fe0f","native":"🤷🏻♀️"},{"unified":"1f937-1f3fc-200d-2640-fe0f","native":"🤷🏼♀️"},{"unified":"1f937-1f3fd-200d-2640-fe0f","native":"🤷🏽♀️"},{"unified":"1f937-1f3fe-200d-2640-fe0f","native":"🤷🏾♀️"},{"unified":"1f937-1f3ff-200d-2640-fe0f","native":"🤷🏿♀️"}],"version":4},"health_worker":{"id":"health_worker","name":"Health Worker","keywords":["hospital"],"skins":[{"unified":"1f9d1-200d-2695-fe0f","native":"🧑⚕️"},{"unified":"1f9d1-1f3fb-200d-2695-fe0f","native":"🧑🏻⚕️"},{"unified":"1f9d1-1f3fc-200d-2695-fe0f","native":"🧑🏼⚕️"},{"unified":"1f9d1-1f3fd-200d-2695-fe0f","native":"🧑🏽⚕️"},{"unified":"1f9d1-1f3fe-200d-2695-fe0f","native":"🧑🏾⚕️"},{"unified":"1f9d1-1f3ff-200d-2695-fe0f","native":"🧑🏿⚕️"}],"version":12.1},"male-doctor":{"id":"male-doctor","name":"Man Health Worker","keywords":["male","doctor","nurse","therapist","healthcare","human"],"skins":[{"unified":"1f468-200d-2695-fe0f","native":"👨⚕️"},{"unified":"1f468-1f3fb-200d-2695-fe0f","native":"👨🏻⚕️"},{"unified":"1f468-1f3fc-200d-2695-fe0f","native":"👨🏼⚕️"},{"unified":"1f468-1f3fd-200d-2695-fe0f","native":"👨🏽⚕️"},{"unified":"1f468-1f3fe-200d-2695-fe0f","native":"👨🏾⚕️"},{"unified":"1f468-1f3ff-200d-2695-fe0f","native":"👨🏿⚕️"}],"version":4},"female-doctor":{"id":"female-doctor","name":"Woman Health Worker","keywords":["female","doctor","nurse","therapist","healthcare","human"],"skins":[{"unified":"1f469-200d-2695-fe0f","native":"👩⚕️"},{"unified":"1f469-1f3fb-200d-2695-fe0f","native":"👩🏻⚕️"},{"unified":"1f469-1f3fc-200d-2695-fe0f","native":"👩🏼⚕️"},{"unified":"1f469-1f3fd-200d-2695-fe0f","native":"👩🏽⚕️"},{"unified":"1f469-1f3fe-200d-2695-fe0f","native":"👩🏾⚕️"},{"unified":"1f469-1f3ff-200d-2695-fe0f","native":"👩🏿⚕️"}],"version":4},"student":{"id":"student","name":"Student","keywords":["learn"],"skins":[{"unified":"1f9d1-200d-1f393","native":"🧑🎓"},{"unified":"1f9d1-1f3fb-200d-1f393","native":"🧑🏻🎓"},{"unified":"1f9d1-1f3fc-200d-1f393","native":"🧑🏼🎓"},{"unified":"1f9d1-1f3fd-200d-1f393","native":"🧑🏽🎓"},{"unified":"1f9d1-1f3fe-200d-1f393","native":"🧑🏾🎓"},{"unified":"1f9d1-1f3ff-200d-1f393","native":"🧑🏿🎓"}],"version":12.1},"male-student":{"id":"male-student","name":"Man Student","keywords":["male","graduate","human"],"skins":[{"unified":"1f468-200d-1f393","native":"👨🎓"},{"unified":"1f468-1f3fb-200d-1f393","native":"👨🏻🎓"},{"unified":"1f468-1f3fc-200d-1f393","native":"👨🏼🎓"},{"unified":"1f468-1f3fd-200d-1f393","native":"👨🏽🎓"},{"unified":"1f468-1f3fe-200d-1f393","native":"👨🏾🎓"},{"unified":"1f468-1f3ff-200d-1f393","native":"👨🏿🎓"}],"version":4},"female-student":{"id":"female-student","name":"Woman Student","keywords":["female","graduate","human"],"skins":[{"unified":"1f469-200d-1f393","native":"👩🎓"},{"unified":"1f469-1f3fb-200d-1f393","native":"👩🏻🎓"},{"unified":"1f469-1f3fc-200d-1f393","native":"👩🏼🎓"},{"unified":"1f469-1f3fd-200d-1f393","native":"👩🏽🎓"},{"unified":"1f469-1f3fe-200d-1f393","native":"👩🏾🎓"},{"unified":"1f469-1f3ff-200d-1f393","native":"👩🏿🎓"}],"version":4},"teacher":{"id":"teacher","name":"Teacher","keywords":["professor"],"skins":[{"unified":"1f9d1-200d-1f3eb","native":"🧑🏫"},{"unified":"1f9d1-1f3fb-200d-1f3eb","native":"🧑🏻🏫"},{"unified":"1f9d1-1f3fc-200d-1f3eb","native":"🧑🏼🏫"},{"unified":"1f9d1-1f3fd-200d-1f3eb","native":"🧑🏽🏫"},{"unified":"1f9d1-1f3fe-200d-1f3eb","native":"🧑🏾🏫"},{"unified":"1f9d1-1f3ff-200d-1f3eb","native":"🧑🏿🏫"}],"version":12.1},"male-teacher":{"id":"male-teacher","name":"Man Teacher","keywords":["male","instructor","professor","human"],"skins":[{"unified":"1f468-200d-1f3eb","native":"👨🏫"},{"unified":"1f468-1f3fb-200d-1f3eb","native":"👨🏻🏫"},{"unified":"1f468-1f3fc-200d-1f3eb","native":"👨🏼🏫"},{"unified":"1f468-1f3fd-200d-1f3eb","native":"👨🏽🏫"},{"unified":"1f468-1f3fe-200d-1f3eb","native":"👨🏾🏫"},{"unified":"1f468-1f3ff-200d-1f3eb","native":"👨🏿🏫"}],"version":4},"female-teacher":{"id":"female-teacher","name":"Woman Teacher","keywords":["female","instructor","professor","human"],"skins":[{"unified":"1f469-200d-1f3eb","native":"👩🏫"},{"unified":"1f469-1f3fb-200d-1f3eb","native":"👩🏻🏫"},{"unified":"1f469-1f3fc-200d-1f3eb","native":"👩🏼🏫"},{"unified":"1f469-1f3fd-200d-1f3eb","native":"👩🏽🏫"},{"unified":"1f469-1f3fe-200d-1f3eb","native":"👩🏾🏫"},{"unified":"1f469-1f3ff-200d-1f3eb","native":"👩🏿🏫"}],"version":4},"judge":{"id":"judge","name":"Judge","keywords":["law"],"skins":[{"unified":"1f9d1-200d-2696-fe0f","native":"🧑⚖️"},{"unified":"1f9d1-1f3fb-200d-2696-fe0f","native":"🧑🏻⚖️"},{"unified":"1f9d1-1f3fc-200d-2696-fe0f","native":"🧑🏼⚖️"},{"unified":"1f9d1-1f3fd-200d-2696-fe0f","native":"🧑🏽⚖️"},{"unified":"1f9d1-1f3fe-200d-2696-fe0f","native":"🧑🏾⚖️"},{"unified":"1f9d1-1f3ff-200d-2696-fe0f","native":"🧑🏿⚖️"}],"version":12.1},"male-judge":{"id":"male-judge","name":"Man Judge","keywords":["male","justice","court","human"],"skins":[{"unified":"1f468-200d-2696-fe0f","native":"👨⚖️"},{"unified":"1f468-1f3fb-200d-2696-fe0f","native":"👨🏻⚖️"},{"unified":"1f468-1f3fc-200d-2696-fe0f","native":"👨🏼⚖️"},{"unified":"1f468-1f3fd-200d-2696-fe0f","native":"👨🏽⚖️"},{"unified":"1f468-1f3fe-200d-2696-fe0f","native":"👨🏾⚖️"},{"unified":"1f468-1f3ff-200d-2696-fe0f","native":"👨🏿⚖️"}],"version":4},"female-judge":{"id":"female-judge","name":"Woman Judge","keywords":["female","justice","court","human"],"skins":[{"unified":"1f469-200d-2696-fe0f","native":"👩⚖️"},{"unified":"1f469-1f3fb-200d-2696-fe0f","native":"👩🏻⚖️"},{"unified":"1f469-1f3fc-200d-2696-fe0f","native":"👩🏼⚖️"},{"unified":"1f469-1f3fd-200d-2696-fe0f","native":"👩🏽⚖️"},{"unified":"1f469-1f3fe-200d-2696-fe0f","native":"👩🏾⚖️"},{"unified":"1f469-1f3ff-200d-2696-fe0f","native":"👩🏿⚖️"}],"version":4},"farmer":{"id":"farmer","name":"Farmer","keywords":["crops"],"skins":[{"unified":"1f9d1-200d-1f33e","native":"🧑🌾"},{"unified":"1f9d1-1f3fb-200d-1f33e","native":"🧑🏻🌾"},{"unified":"1f9d1-1f3fc-200d-1f33e","native":"🧑🏼🌾"},{"unified":"1f9d1-1f3fd-200d-1f33e","native":"🧑🏽🌾"},{"unified":"1f9d1-1f3fe-200d-1f33e","native":"🧑🏾🌾"},{"unified":"1f9d1-1f3ff-200d-1f33e","native":"🧑🏿🌾"}],"version":12.1},"male-farmer":{"id":"male-farmer","name":"Man Farmer","keywords":["male","rancher","gardener","human"],"skins":[{"unified":"1f468-200d-1f33e","native":"👨🌾"},{"unified":"1f468-1f3fb-200d-1f33e","native":"👨🏻🌾"},{"unified":"1f468-1f3fc-200d-1f33e","native":"👨🏼🌾"},{"unified":"1f468-1f3fd-200d-1f33e","native":"👨🏽🌾"},{"unified":"1f468-1f3fe-200d-1f33e","native":"👨🏾🌾"},{"unified":"1f468-1f3ff-200d-1f33e","native":"👨🏿🌾"}],"version":4},"female-farmer":{"id":"female-farmer","name":"Woman Farmer","keywords":["female","rancher","gardener","human"],"skins":[{"unified":"1f469-200d-1f33e","native":"👩🌾"},{"unified":"1f469-1f3fb-200d-1f33e","native":"👩🏻🌾"},{"unified":"1f469-1f3fc-200d-1f33e","native":"👩🏼🌾"},{"unified":"1f469-1f3fd-200d-1f33e","native":"👩🏽🌾"},{"unified":"1f469-1f3fe-200d-1f33e","native":"👩🏾🌾"},{"unified":"1f469-1f3ff-200d-1f33e","native":"👩🏿🌾"}],"version":4},"cook":{"id":"cook","name":"Cook","keywords":["food","kitchen","culinary"],"skins":[{"unified":"1f9d1-200d-1f373","native":"🧑🍳"},{"unified":"1f9d1-1f3fb-200d-1f373","native":"🧑🏻🍳"},{"unified":"1f9d1-1f3fc-200d-1f373","native":"🧑🏼🍳"},{"unified":"1f9d1-1f3fd-200d-1f373","native":"🧑🏽🍳"},{"unified":"1f9d1-1f3fe-200d-1f373","native":"🧑🏾🍳"},{"unified":"1f9d1-1f3ff-200d-1f373","native":"🧑🏿🍳"}],"version":12.1},"male-cook":{"id":"male-cook","name":"Man Cook","keywords":["male","chef","human"],"skins":[{"unified":"1f468-200d-1f373","native":"👨🍳"},{"unified":"1f468-1f3fb-200d-1f373","native":"👨🏻🍳"},{"unified":"1f468-1f3fc-200d-1f373","native":"👨🏼🍳"},{"unified":"1f468-1f3fd-200d-1f373","native":"👨🏽🍳"},{"unified":"1f468-1f3fe-200d-1f373","native":"👨🏾🍳"},{"unified":"1f468-1f3ff-200d-1f373","native":"👨🏿🍳"}],"version":4},"female-cook":{"id":"female-cook","name":"Woman Cook","keywords":["female","chef","human"],"skins":[{"unified":"1f469-200d-1f373","native":"👩🍳"},{"unified":"1f469-1f3fb-200d-1f373","native":"👩🏻🍳"},{"unified":"1f469-1f3fc-200d-1f373","native":"👩🏼🍳"},{"unified":"1f469-1f3fd-200d-1f373","native":"👩🏽🍳"},{"unified":"1f469-1f3fe-200d-1f373","native":"👩🏾🍳"},{"unified":"1f469-1f3ff-200d-1f373","native":"👩🏿🍳"}],"version":4},"mechanic":{"id":"mechanic","name":"Mechanic","keywords":["worker","technician"],"skins":[{"unified":"1f9d1-200d-1f527","native":"🧑🔧"},{"unified":"1f9d1-1f3fb-200d-1f527","native":"🧑🏻🔧"},{"unified":"1f9d1-1f3fc-200d-1f527","native":"🧑🏼🔧"},{"unified":"1f9d1-1f3fd-200d-1f527","native":"🧑🏽🔧"},{"unified":"1f9d1-1f3fe-200d-1f527","native":"🧑🏾🔧"},{"unified":"1f9d1-1f3ff-200d-1f527","native":"🧑🏿🔧"}],"version":12.1},"male-mechanic":{"id":"male-mechanic","name":"Man Mechanic","keywords":["male","plumber","human","wrench"],"skins":[{"unified":"1f468-200d-1f527","native":"👨🔧"},{"unified":"1f468-1f3fb-200d-1f527","native":"👨🏻🔧"},{"unified":"1f468-1f3fc-200d-1f527","native":"👨🏼🔧"},{"unified":"1f468-1f3fd-200d-1f527","native":"👨🏽🔧"},{"unified":"1f468-1f3fe-200d-1f527","native":"👨🏾🔧"},{"unified":"1f468-1f3ff-200d-1f527","native":"👨🏿🔧"}],"version":4},"female-mechanic":{"id":"female-mechanic","name":"Woman Mechanic","keywords":["female","plumber","human","wrench"],"skins":[{"unified":"1f469-200d-1f527","native":"👩🔧"},{"unified":"1f469-1f3fb-200d-1f527","native":"👩🏻🔧"},{"unified":"1f469-1f3fc-200d-1f527","native":"👩🏼🔧"},{"unified":"1f469-1f3fd-200d-1f527","native":"👩🏽🔧"},{"unified":"1f469-1f3fe-200d-1f527","native":"👩🏾🔧"},{"unified":"1f469-1f3ff-200d-1f527","native":"👩🏿🔧"}],"version":4},"factory_worker":{"id":"factory_worker","name":"Factory Worker","keywords":["labor"],"skins":[{"unified":"1f9d1-200d-1f3ed","native":"🧑🏭"},{"unified":"1f9d1-1f3fb-200d-1f3ed","native":"🧑🏻🏭"},{"unified":"1f9d1-1f3fc-200d-1f3ed","native":"🧑🏼🏭"},{"unified":"1f9d1-1f3fd-200d-1f3ed","native":"🧑🏽🏭"},{"unified":"1f9d1-1f3fe-200d-1f3ed","native":"🧑🏾🏭"},{"unified":"1f9d1-1f3ff-200d-1f3ed","native":"🧑🏿🏭"}],"version":12.1},"male-factory-worker":{"id":"male-factory-worker","name":"Man Factory Worker","keywords":["male","factory-worker","assembly","industrial","human"],"skins":[{"unified":"1f468-200d-1f3ed","native":"👨🏭"},{"unified":"1f468-1f3fb-200d-1f3ed","native":"👨🏻🏭"},{"unified":"1f468-1f3fc-200d-1f3ed","native":"👨🏼🏭"},{"unified":"1f468-1f3fd-200d-1f3ed","native":"👨🏽🏭"},{"unified":"1f468-1f3fe-200d-1f3ed","native":"👨🏾🏭"},{"unified":"1f468-1f3ff-200d-1f3ed","native":"👨🏿🏭"}],"version":4},"female-factory-worker":{"id":"female-factory-worker","name":"Woman Factory Worker","keywords":["female","factory-worker","assembly","industrial","human"],"skins":[{"unified":"1f469-200d-1f3ed","native":"👩🏭"},{"unified":"1f469-1f3fb-200d-1f3ed","native":"👩🏻🏭"},{"unified":"1f469-1f3fc-200d-1f3ed","native":"👩🏼🏭"},{"unified":"1f469-1f3fd-200d-1f3ed","native":"👩🏽🏭"},{"unified":"1f469-1f3fe-200d-1f3ed","native":"👩🏾🏭"},{"unified":"1f469-1f3ff-200d-1f3ed","native":"👩🏿🏭"}],"version":4},"office_worker":{"id":"office_worker","name":"Office Worker","keywords":["business"],"skins":[{"unified":"1f9d1-200d-1f4bc","native":"🧑💼"},{"unified":"1f9d1-1f3fb-200d-1f4bc","native":"🧑🏻💼"},{"unified":"1f9d1-1f3fc-200d-1f4bc","native":"🧑🏼💼"},{"unified":"1f9d1-1f3fd-200d-1f4bc","native":"🧑🏽💼"},{"unified":"1f9d1-1f3fe-200d-1f4bc","native":"🧑🏾💼"},{"unified":"1f9d1-1f3ff-200d-1f4bc","native":"🧑🏿💼"}],"version":12.1},"male-office-worker":{"id":"male-office-worker","name":"Man Office Worker","keywords":["male","office-worker","business","manager","human"],"skins":[{"unified":"1f468-200d-1f4bc","native":"👨💼"},{"unified":"1f468-1f3fb-200d-1f4bc","native":"👨🏻💼"},{"unified":"1f468-1f3fc-200d-1f4bc","native":"👨🏼💼"},{"unified":"1f468-1f3fd-200d-1f4bc","native":"👨🏽💼"},{"unified":"1f468-1f3fe-200d-1f4bc","native":"👨🏾💼"},{"unified":"1f468-1f3ff-200d-1f4bc","native":"👨🏿💼"}],"version":4},"female-office-worker":{"id":"female-office-worker","name":"Woman Office Worker","keywords":["female","office-worker","business","manager","human"],"skins":[{"unified":"1f469-200d-1f4bc","native":"👩💼"},{"unified":"1f469-1f3fb-200d-1f4bc","native":"👩🏻💼"},{"unified":"1f469-1f3fc-200d-1f4bc","native":"👩🏼💼"},{"unified":"1f469-1f3fd-200d-1f4bc","native":"👩🏽💼"},{"unified":"1f469-1f3fe-200d-1f4bc","native":"👩🏾💼"},{"unified":"1f469-1f3ff-200d-1f4bc","native":"👩🏿💼"}],"version":4},"scientist":{"id":"scientist","name":"Scientist","keywords":["chemistry"],"skins":[{"unified":"1f9d1-200d-1f52c","native":"🧑🔬"},{"unified":"1f9d1-1f3fb-200d-1f52c","native":"🧑🏻🔬"},{"unified":"1f9d1-1f3fc-200d-1f52c","native":"🧑🏼🔬"},{"unified":"1f9d1-1f3fd-200d-1f52c","native":"🧑🏽🔬"},{"unified":"1f9d1-1f3fe-200d-1f52c","native":"🧑🏾🔬"},{"unified":"1f9d1-1f3ff-200d-1f52c","native":"🧑🏿🔬"}],"version":12.1},"male-scientist":{"id":"male-scientist","name":"Man Scientist","keywords":["male","biologist","chemist","engineer","physicist","human"],"skins":[{"unified":"1f468-200d-1f52c","native":"👨🔬"},{"unified":"1f468-1f3fb-200d-1f52c","native":"👨🏻🔬"},{"unified":"1f468-1f3fc-200d-1f52c","native":"👨🏼🔬"},{"unified":"1f468-1f3fd-200d-1f52c","native":"👨🏽🔬"},{"unified":"1f468-1f3fe-200d-1f52c","native":"👨🏾🔬"},{"unified":"1f468-1f3ff-200d-1f52c","native":"👨🏿🔬"}],"version":4},"female-scientist":{"id":"female-scientist","name":"Woman Scientist","keywords":["female","biologist","chemist","engineer","physicist","human"],"skins":[{"unified":"1f469-200d-1f52c","native":"👩🔬"},{"unified":"1f469-1f3fb-200d-1f52c","native":"👩🏻🔬"},{"unified":"1f469-1f3fc-200d-1f52c","native":"👩🏼🔬"},{"unified":"1f469-1f3fd-200d-1f52c","native":"👩🏽🔬"},{"unified":"1f469-1f3fe-200d-1f52c","native":"👩🏾🔬"},{"unified":"1f469-1f3ff-200d-1f52c","native":"👩🏿🔬"}],"version":4},"technologist":{"id":"technologist","name":"Technologist","keywords":["computer"],"skins":[{"unified":"1f9d1-200d-1f4bb","native":"🧑💻"},{"unified":"1f9d1-1f3fb-200d-1f4bb","native":"🧑🏻💻"},{"unified":"1f9d1-1f3fc-200d-1f4bb","native":"🧑🏼💻"},{"unified":"1f9d1-1f3fd-200d-1f4bb","native":"🧑🏽💻"},{"unified":"1f9d1-1f3fe-200d-1f4bb","native":"🧑🏾💻"},{"unified":"1f9d1-1f3ff-200d-1f4bb","native":"🧑🏿💻"}],"version":12.1},"male-technologist":{"id":"male-technologist","name":"Man Technologist","keywords":["male","coder","developer","engineer","programmer","software","human","laptop","computer"],"skins":[{"unified":"1f468-200d-1f4bb","native":"👨💻"},{"unified":"1f468-1f3fb-200d-1f4bb","native":"👨🏻💻"},{"unified":"1f468-1f3fc-200d-1f4bb","native":"👨🏼💻"},{"unified":"1f468-1f3fd-200d-1f4bb","native":"👨🏽💻"},{"unified":"1f468-1f3fe-200d-1f4bb","native":"👨🏾💻"},{"unified":"1f468-1f3ff-200d-1f4bb","native":"👨🏿💻"}],"version":4},"female-technologist":{"id":"female-technologist","name":"Woman Technologist","keywords":["female","coder","developer","engineer","programmer","software","human","laptop","computer"],"skins":[{"unified":"1f469-200d-1f4bb","native":"👩💻"},{"unified":"1f469-1f3fb-200d-1f4bb","native":"👩🏻💻"},{"unified":"1f469-1f3fc-200d-1f4bb","native":"👩🏼💻"},{"unified":"1f469-1f3fd-200d-1f4bb","native":"👩🏽💻"},{"unified":"1f469-1f3fe-200d-1f4bb","native":"👩🏾💻"},{"unified":"1f469-1f3ff-200d-1f4bb","native":"👩🏿💻"}],"version":4},"singer":{"id":"singer","name":"Singer","keywords":["song","artist","performer"],"skins":[{"unified":"1f9d1-200d-1f3a4","native":"🧑🎤"},{"unified":"1f9d1-1f3fb-200d-1f3a4","native":"🧑🏻🎤"},{"unified":"1f9d1-1f3fc-200d-1f3a4","native":"🧑🏼🎤"},{"unified":"1f9d1-1f3fd-200d-1f3a4","native":"🧑🏽🎤"},{"unified":"1f9d1-1f3fe-200d-1f3a4","native":"🧑🏾🎤"},{"unified":"1f9d1-1f3ff-200d-1f3a4","native":"🧑🏿🎤"}],"version":12.1},"male-singer":{"id":"male-singer","name":"Man Singer","keywords":["male","rockstar","entertainer","human"],"skins":[{"unified":"1f468-200d-1f3a4","native":"👨🎤"},{"unified":"1f468-1f3fb-200d-1f3a4","native":"👨🏻🎤"},{"unified":"1f468-1f3fc-200d-1f3a4","native":"👨🏼🎤"},{"unified":"1f468-1f3fd-200d-1f3a4","native":"👨🏽🎤"},{"unified":"1f468-1f3fe-200d-1f3a4","native":"👨🏾🎤"},{"unified":"1f468-1f3ff-200d-1f3a4","native":"👨🏿🎤"}],"version":4},"female-singer":{"id":"female-singer","name":"Woman Singer","keywords":["female","rockstar","entertainer","human"],"skins":[{"unified":"1f469-200d-1f3a4","native":"👩🎤"},{"unified":"1f469-1f3fb-200d-1f3a4","native":"👩🏻🎤"},{"unified":"1f469-1f3fc-200d-1f3a4","native":"👩🏼🎤"},{"unified":"1f469-1f3fd-200d-1f3a4","native":"👩🏽🎤"},{"unified":"1f469-1f3fe-200d-1f3a4","native":"👩🏾🎤"},{"unified":"1f469-1f3ff-200d-1f3a4","native":"👩🏿🎤"}],"version":4},"artist":{"id":"artist","name":"Artist","keywords":["painting","draw","creativity"],"skins":[{"unified":"1f9d1-200d-1f3a8","native":"🧑🎨"},{"unified":"1f9d1-1f3fb-200d-1f3a8","native":"🧑🏻🎨"},{"unified":"1f9d1-1f3fc-200d-1f3a8","native":"🧑🏼🎨"},{"unified":"1f9d1-1f3fd-200d-1f3a8","native":"🧑🏽🎨"},{"unified":"1f9d1-1f3fe-200d-1f3a8","native":"🧑🏾🎨"},{"unified":"1f9d1-1f3ff-200d-1f3a8","native":"🧑🏿🎨"}],"version":12.1},"male-artist":{"id":"male-artist","name":"Man Artist","keywords":["male","painter","human"],"skins":[{"unified":"1f468-200d-1f3a8","native":"👨🎨"},{"unified":"1f468-1f3fb-200d-1f3a8","native":"👨🏻🎨"},{"unified":"1f468-1f3fc-200d-1f3a8","native":"👨🏼🎨"},{"unified":"1f468-1f3fd-200d-1f3a8","native":"👨🏽🎨"},{"unified":"1f468-1f3fe-200d-1f3a8","native":"👨🏾🎨"},{"unified":"1f468-1f3ff-200d-1f3a8","native":"👨🏿🎨"}],"version":4},"female-artist":{"id":"female-artist","name":"Woman Artist","keywords":["female","painter","human"],"skins":[{"unified":"1f469-200d-1f3a8","native":"👩🎨"},{"unified":"1f469-1f3fb-200d-1f3a8","native":"👩🏻🎨"},{"unified":"1f469-1f3fc-200d-1f3a8","native":"👩🏼🎨"},{"unified":"1f469-1f3fd-200d-1f3a8","native":"👩🏽🎨"},{"unified":"1f469-1f3fe-200d-1f3a8","native":"👩🏾🎨"},{"unified":"1f469-1f3ff-200d-1f3a8","native":"👩🏿🎨"}],"version":4},"pilot":{"id":"pilot","name":"Pilot","keywords":["fly","plane","airplane"],"skins":[{"unified":"1f9d1-200d-2708-fe0f","native":"🧑✈️"},{"unified":"1f9d1-1f3fb-200d-2708-fe0f","native":"🧑🏻✈️"},{"unified":"1f9d1-1f3fc-200d-2708-fe0f","native":"🧑🏼✈️"},{"unified":"1f9d1-1f3fd-200d-2708-fe0f","native":"🧑🏽✈️"},{"unified":"1f9d1-1f3fe-200d-2708-fe0f","native":"🧑🏾✈️"},{"unified":"1f9d1-1f3ff-200d-2708-fe0f","native":"🧑🏿✈️"}],"version":12.1},"male-pilot":{"id":"male-pilot","name":"Man Pilot","keywords":["male","aviator","plane","human"],"skins":[{"unified":"1f468-200d-2708-fe0f","native":"👨✈️"},{"unified":"1f468-1f3fb-200d-2708-fe0f","native":"👨🏻✈️"},{"unified":"1f468-1f3fc-200d-2708-fe0f","native":"👨🏼✈️"},{"unified":"1f468-1f3fd-200d-2708-fe0f","native":"👨🏽✈️"},{"unified":"1f468-1f3fe-200d-2708-fe0f","native":"👨🏾✈️"},{"unified":"1f468-1f3ff-200d-2708-fe0f","native":"👨🏿✈️"}],"version":4},"female-pilot":{"id":"female-pilot","name":"Woman Pilot","keywords":["female","aviator","plane","human"],"skins":[{"unified":"1f469-200d-2708-fe0f","native":"👩✈️"},{"unified":"1f469-1f3fb-200d-2708-fe0f","native":"👩🏻✈️"},{"unified":"1f469-1f3fc-200d-2708-fe0f","native":"👩🏼✈️"},{"unified":"1f469-1f3fd-200d-2708-fe0f","native":"👩🏽✈️"},{"unified":"1f469-1f3fe-200d-2708-fe0f","native":"👩🏾✈️"},{"unified":"1f469-1f3ff-200d-2708-fe0f","native":"👩🏿✈️"}],"version":4},"astronaut":{"id":"astronaut","name":"Astronaut","keywords":["outerspace"],"skins":[{"unified":"1f9d1-200d-1f680","native":"🧑🚀"},{"unified":"1f9d1-1f3fb-200d-1f680","native":"🧑🏻🚀"},{"unified":"1f9d1-1f3fc-200d-1f680","native":"🧑🏼🚀"},{"unified":"1f9d1-1f3fd-200d-1f680","native":"🧑🏽🚀"},{"unified":"1f9d1-1f3fe-200d-1f680","native":"🧑🏾🚀"},{"unified":"1f9d1-1f3ff-200d-1f680","native":"🧑🏿🚀"}],"version":12.1},"male-astronaut":{"id":"male-astronaut","name":"Man Astronaut","keywords":["male","space","rocket","human"],"skins":[{"unified":"1f468-200d-1f680","native":"👨🚀"},{"unified":"1f468-1f3fb-200d-1f680","native":"👨🏻🚀"},{"unified":"1f468-1f3fc-200d-1f680","native":"👨🏼🚀"},{"unified":"1f468-1f3fd-200d-1f680","native":"👨🏽🚀"},{"unified":"1f468-1f3fe-200d-1f680","native":"👨🏾🚀"},{"unified":"1f468-1f3ff-200d-1f680","native":"👨🏿🚀"}],"version":4},"female-astronaut":{"id":"female-astronaut","name":"Woman Astronaut","keywords":["female","space","rocket","human"],"skins":[{"unified":"1f469-200d-1f680","native":"👩🚀"},{"unified":"1f469-1f3fb-200d-1f680","native":"👩🏻🚀"},{"unified":"1f469-1f3fc-200d-1f680","native":"👩🏼🚀"},{"unified":"1f469-1f3fd-200d-1f680","native":"👩🏽🚀"},{"unified":"1f469-1f3fe-200d-1f680","native":"👩🏾🚀"},{"unified":"1f469-1f3ff-200d-1f680","native":"👩🏿🚀"}],"version":4},"firefighter":{"id":"firefighter","name":"Firefighter","keywords":["fire"],"skins":[{"unified":"1f9d1-200d-1f692","native":"🧑🚒"},{"unified":"1f9d1-1f3fb-200d-1f692","native":"🧑🏻🚒"},{"unified":"1f9d1-1f3fc-200d-1f692","native":"🧑🏼🚒"},{"unified":"1f9d1-1f3fd-200d-1f692","native":"🧑🏽🚒"},{"unified":"1f9d1-1f3fe-200d-1f692","native":"🧑🏾🚒"},{"unified":"1f9d1-1f3ff-200d-1f692","native":"🧑🏿🚒"}],"version":12.1},"male-firefighter":{"id":"male-firefighter","name":"Man Firefighter","keywords":["male","fireman","human"],"skins":[{"unified":"1f468-200d-1f692","native":"👨🚒"},{"unified":"1f468-1f3fb-200d-1f692","native":"👨🏻🚒"},{"unified":"1f468-1f3fc-200d-1f692","native":"👨🏼🚒"},{"unified":"1f468-1f3fd-200d-1f692","native":"👨🏽🚒"},{"unified":"1f468-1f3fe-200d-1f692","native":"👨🏾🚒"},{"unified":"1f468-1f3ff-200d-1f692","native":"👨🏿🚒"}],"version":4},"female-firefighter":{"id":"female-firefighter","name":"Woman Firefighter","keywords":["female","fireman","human"],"skins":[{"unified":"1f469-200d-1f692","native":"👩🚒"},{"unified":"1f469-1f3fb-200d-1f692","native":"👩🏻🚒"},{"unified":"1f469-1f3fc-200d-1f692","native":"👩🏼🚒"},{"unified":"1f469-1f3fd-200d-1f692","native":"👩🏽🚒"},{"unified":"1f469-1f3fe-200d-1f692","native":"👩🏾🚒"},{"unified":"1f469-1f3ff-200d-1f692","native":"👩🏿🚒"}],"version":4},"cop":{"id":"cop","name":"Police Officer","keywords":["cop"],"skins":[{"unified":"1f46e","native":"👮"},{"unified":"1f46e-1f3fb","native":"👮🏻"},{"unified":"1f46e-1f3fc","native":"👮🏼"},{"unified":"1f46e-1f3fd","native":"👮🏽"},{"unified":"1f46e-1f3fe","native":"👮🏾"},{"unified":"1f46e-1f3ff","native":"👮🏿"}],"version":1},"male-police-officer":{"id":"male-police-officer","name":"Man Police Officer","keywords":["male","police-officer","law","legal","enforcement","arrest","911"],"skins":[{"unified":"1f46e-200d-2642-fe0f","native":"👮♂️"},{"unified":"1f46e-1f3fb-200d-2642-fe0f","native":"👮🏻♂️"},{"unified":"1f46e-1f3fc-200d-2642-fe0f","native":"👮🏼♂️"},{"unified":"1f46e-1f3fd-200d-2642-fe0f","native":"👮🏽♂️"},{"unified":"1f46e-1f3fe-200d-2642-fe0f","native":"👮🏾♂️"},{"unified":"1f46e-1f3ff-200d-2642-fe0f","native":"👮🏿♂️"}],"version":4},"female-police-officer":{"id":"female-police-officer","name":"Woman Police Officer","keywords":["female","police-officer","law","legal","enforcement","arrest","911"],"skins":[{"unified":"1f46e-200d-2640-fe0f","native":"👮♀️"},{"unified":"1f46e-1f3fb-200d-2640-fe0f","native":"👮🏻♀️"},{"unified":"1f46e-1f3fc-200d-2640-fe0f","native":"👮🏼♀️"},{"unified":"1f46e-1f3fd-200d-2640-fe0f","native":"👮🏽♀️"},{"unified":"1f46e-1f3fe-200d-2640-fe0f","native":"👮🏾♀️"},{"unified":"1f46e-1f3ff-200d-2640-fe0f","native":"👮🏿♀️"}],"version":4},"sleuth_or_spy":{"id":"sleuth_or_spy","name":"Detective","keywords":["sleuth","or","spy","human"],"skins":[{"unified":"1f575-fe0f","native":"🕵️"},{"unified":"1f575-1f3fb","native":"🕵🏻"},{"unified":"1f575-1f3fc","native":"🕵🏼"},{"unified":"1f575-1f3fd","native":"🕵🏽"},{"unified":"1f575-1f3fe","native":"🕵🏾"},{"unified":"1f575-1f3ff","native":"🕵🏿"}],"version":1},"male-detective":{"id":"male-detective","name":"Man Detective","keywords":["male","crime"],"skins":[{"unified":"1f575-fe0f-200d-2642-fe0f","native":"🕵️♂️"},{"unified":"1f575-1f3fb-200d-2642-fe0f","native":"🕵🏻♂️"},{"unified":"1f575-1f3fc-200d-2642-fe0f","native":"🕵🏼♂️"},{"unified":"1f575-1f3fd-200d-2642-fe0f","native":"🕵🏽♂️"},{"unified":"1f575-1f3fe-200d-2642-fe0f","native":"🕵🏾♂️"},{"unified":"1f575-1f3ff-200d-2642-fe0f","native":"🕵🏿♂️"}],"version":4},"female-detective":{"id":"female-detective","name":"Woman Detective","keywords":["female","human","spy"],"skins":[{"unified":"1f575-fe0f-200d-2640-fe0f","native":"🕵️♀️"},{"unified":"1f575-1f3fb-200d-2640-fe0f","native":"🕵🏻♀️"},{"unified":"1f575-1f3fc-200d-2640-fe0f","native":"🕵🏼♀️"},{"unified":"1f575-1f3fd-200d-2640-fe0f","native":"🕵🏽♀️"},{"unified":"1f575-1f3fe-200d-2640-fe0f","native":"🕵🏾♀️"},{"unified":"1f575-1f3ff-200d-2640-fe0f","native":"🕵🏿♀️"}],"version":4},"guardsman":{"id":"guardsman","name":"Guard","keywords":["guardsman","protect"],"skins":[{"unified":"1f482","native":"💂"},{"unified":"1f482-1f3fb","native":"💂🏻"},{"unified":"1f482-1f3fc","native":"💂🏼"},{"unified":"1f482-1f3fd","native":"💂🏽"},{"unified":"1f482-1f3fe","native":"💂🏾"},{"unified":"1f482-1f3ff","native":"💂🏿"}],"version":1},"male-guard":{"id":"male-guard","name":"Man Guard","keywords":["male","uk","gb","british","guy","royal"],"skins":[{"unified":"1f482-200d-2642-fe0f","native":"💂♂️"},{"unified":"1f482-1f3fb-200d-2642-fe0f","native":"💂🏻♂️"},{"unified":"1f482-1f3fc-200d-2642-fe0f","native":"💂🏼♂️"},{"unified":"1f482-1f3fd-200d-2642-fe0f","native":"💂🏽♂️"},{"unified":"1f482-1f3fe-200d-2642-fe0f","native":"💂🏾♂️"},{"unified":"1f482-1f3ff-200d-2642-fe0f","native":"💂🏿♂️"}],"version":4},"female-guard":{"id":"female-guard","name":"Woman Guard","keywords":["female","uk","gb","british","royal"],"skins":[{"unified":"1f482-200d-2640-fe0f","native":"💂♀️"},{"unified":"1f482-1f3fb-200d-2640-fe0f","native":"💂🏻♀️"},{"unified":"1f482-1f3fc-200d-2640-fe0f","native":"💂🏼♀️"},{"unified":"1f482-1f3fd-200d-2640-fe0f","native":"💂🏽♀️"},{"unified":"1f482-1f3fe-200d-2640-fe0f","native":"💂🏾♀️"},{"unified":"1f482-1f3ff-200d-2640-fe0f","native":"💂🏿♀️"}],"version":4},"ninja":{"id":"ninja","name":"Ninja","keywords":["ninjutsu","skills","japanese"],"skins":[{"unified":"1f977","native":"🥷"},{"unified":"1f977-1f3fb","native":"🥷🏻"},{"unified":"1f977-1f3fc","native":"🥷🏼"},{"unified":"1f977-1f3fd","native":"🥷🏽"},{"unified":"1f977-1f3fe","native":"🥷🏾"},{"unified":"1f977-1f3ff","native":"🥷🏿"}],"version":13},"construction_worker":{"id":"construction_worker","name":"Construction Worker","keywords":["labor","build"],"skins":[{"unified":"1f477","native":"👷"},{"unified":"1f477-1f3fb","native":"👷🏻"},{"unified":"1f477-1f3fc","native":"👷🏼"},{"unified":"1f477-1f3fd","native":"👷🏽"},{"unified":"1f477-1f3fe","native":"👷🏾"},{"unified":"1f477-1f3ff","native":"👷🏿"}],"version":1},"male-construction-worker":{"id":"male-construction-worker","name":"Man Construction Worker","keywords":["male","construction-worker","human","wip","guy","build","labor"],"skins":[{"unified":"1f477-200d-2642-fe0f","native":"👷♂️"},{"unified":"1f477-1f3fb-200d-2642-fe0f","native":"👷🏻♂️"},{"unified":"1f477-1f3fc-200d-2642-fe0f","native":"👷🏼♂️"},{"unified":"1f477-1f3fd-200d-2642-fe0f","native":"👷🏽♂️"},{"unified":"1f477-1f3fe-200d-2642-fe0f","native":"👷🏾♂️"},{"unified":"1f477-1f3ff-200d-2642-fe0f","native":"👷🏿♂️"}],"version":4},"female-construction-worker":{"id":"female-construction-worker","name":"Woman Construction Worker","keywords":["female","construction-worker","human","wip","build","labor"],"skins":[{"unified":"1f477-200d-2640-fe0f","native":"👷♀️"},{"unified":"1f477-1f3fb-200d-2640-fe0f","native":"👷🏻♀️"},{"unified":"1f477-1f3fc-200d-2640-fe0f","native":"👷🏼♀️"},{"unified":"1f477-1f3fd-200d-2640-fe0f","native":"👷🏽♀️"},{"unified":"1f477-1f3fe-200d-2640-fe0f","native":"👷🏾♀️"},{"unified":"1f477-1f3ff-200d-2640-fe0f","native":"👷🏿♀️"}],"version":4},"person_with_crown":{"id":"person_with_crown","name":"Person with Crown","keywords":["royalty","power"],"skins":[{"unified":"1fac5","native":"🫅"},{"unified":"1fac5-1f3fb","native":"🫅🏻"},{"unified":"1fac5-1f3fc","native":"🫅🏼"},{"unified":"1fac5-1f3fd","native":"🫅🏽"},{"unified":"1fac5-1f3fe","native":"🫅🏾"},{"unified":"1fac5-1f3ff","native":"🫅🏿"}],"version":14},"prince":{"id":"prince","name":"Prince","keywords":["boy","man","male","crown","royal","king"],"skins":[{"unified":"1f934","native":"🤴"},{"unified":"1f934-1f3fb","native":"🤴🏻"},{"unified":"1f934-1f3fc","native":"🤴🏼"},{"unified":"1f934-1f3fd","native":"🤴🏽"},{"unified":"1f934-1f3fe","native":"🤴🏾"},{"unified":"1f934-1f3ff","native":"🤴🏿"}],"version":3},"princess":{"id":"princess","name":"Princess","keywords":["girl","woman","female","blond","crown","royal","queen"],"skins":[{"unified":"1f478","native":"👸"},{"unified":"1f478-1f3fb","native":"👸🏻"},{"unified":"1f478-1f3fc","native":"👸🏼"},{"unified":"1f478-1f3fd","native":"👸🏽"},{"unified":"1f478-1f3fe","native":"👸🏾"},{"unified":"1f478-1f3ff","native":"👸🏿"}],"version":1},"man_with_turban":{"id":"man_with_turban","name":"Man with Turban","keywords":["person","wearing","headdress"],"skins":[{"unified":"1f473","native":"👳"},{"unified":"1f473-1f3fb","native":"👳🏻"},{"unified":"1f473-1f3fc","native":"👳🏼"},{"unified":"1f473-1f3fd","native":"👳🏽"},{"unified":"1f473-1f3fe","native":"👳🏾"},{"unified":"1f473-1f3ff","native":"👳🏿"}],"version":1},"man-wearing-turban":{"id":"man-wearing-turban","name":"Man Wearing Turban","keywords":["wearing-turban","male","indian","hinduism","arabs"],"skins":[{"unified":"1f473-200d-2642-fe0f","native":"👳♂️"},{"unified":"1f473-1f3fb-200d-2642-fe0f","native":"👳🏻♂️"},{"unified":"1f473-1f3fc-200d-2642-fe0f","native":"👳🏼♂️"},{"unified":"1f473-1f3fd-200d-2642-fe0f","native":"👳🏽♂️"},{"unified":"1f473-1f3fe-200d-2642-fe0f","native":"👳🏾♂️"},{"unified":"1f473-1f3ff-200d-2642-fe0f","native":"👳🏿♂️"}],"version":4},"woman-wearing-turban":{"id":"woman-wearing-turban","name":"Woman Wearing Turban","keywords":["wearing-turban","female","indian","hinduism","arabs"],"skins":[{"unified":"1f473-200d-2640-fe0f","native":"👳♀️"},{"unified":"1f473-1f3fb-200d-2640-fe0f","native":"👳🏻♀️"},{"unified":"1f473-1f3fc-200d-2640-fe0f","native":"👳🏼♀️"},{"unified":"1f473-1f3fd-200d-2640-fe0f","native":"👳🏽♀️"},{"unified":"1f473-1f3fe-200d-2640-fe0f","native":"👳🏾♀️"},{"unified":"1f473-1f3ff-200d-2640-fe0f","native":"👳🏿♀️"}],"version":4},"man_with_gua_pi_mao":{"id":"man_with_gua_pi_mao","name":"Man with Gua Pi Mao","keywords":["skullcap","male","boy","chinese"],"skins":[{"unified":"1f472","native":"👲"},{"unified":"1f472-1f3fb","native":"👲🏻"},{"unified":"1f472-1f3fc","native":"👲🏼"},{"unified":"1f472-1f3fd","native":"👲🏽"},{"unified":"1f472-1f3fe","native":"👲🏾"},{"unified":"1f472-1f3ff","native":"👲🏿"}],"version":1},"person_with_headscarf":{"id":"person_with_headscarf","name":"Woman with Headscarf","keywords":["person","female","hijab","mantilla","tichel"],"skins":[{"unified":"1f9d5","native":"🧕"},{"unified":"1f9d5-1f3fb","native":"🧕🏻"},{"unified":"1f9d5-1f3fc","native":"🧕🏼"},{"unified":"1f9d5-1f3fd","native":"🧕🏽"},{"unified":"1f9d5-1f3fe","native":"🧕🏾"},{"unified":"1f9d5-1f3ff","native":"🧕🏿"}],"version":5},"person_in_tuxedo":{"id":"person_in_tuxedo","name":"Man in Tuxedo","keywords":["person","couple","marriage","wedding","groom"],"skins":[{"unified":"1f935","native":"🤵"},{"unified":"1f935-1f3fb","native":"🤵🏻"},{"unified":"1f935-1f3fc","native":"🤵🏼"},{"unified":"1f935-1f3fd","native":"🤵🏽"},{"unified":"1f935-1f3fe","native":"🤵🏾"},{"unified":"1f935-1f3ff","native":"🤵🏿"}],"version":3},"man_in_tuxedo":{"id":"man_in_tuxedo","name":"Man in Tuxedo","keywords":["formal","fashion"],"skins":[{"unified":"1f935-200d-2642-fe0f","native":"🤵♂️"},{"unified":"1f935-1f3fb-200d-2642-fe0f","native":"🤵🏻♂️"},{"unified":"1f935-1f3fc-200d-2642-fe0f","native":"🤵🏼♂️"},{"unified":"1f935-1f3fd-200d-2642-fe0f","native":"🤵🏽♂️"},{"unified":"1f935-1f3fe-200d-2642-fe0f","native":"🤵🏾♂️"},{"unified":"1f935-1f3ff-200d-2642-fe0f","native":"🤵🏿♂️"}],"version":13},"woman_in_tuxedo":{"id":"woman_in_tuxedo","name":"Woman in Tuxedo","keywords":["formal","fashion"],"skins":[{"unified":"1f935-200d-2640-fe0f","native":"🤵♀️"},{"unified":"1f935-1f3fb-200d-2640-fe0f","native":"🤵🏻♀️"},{"unified":"1f935-1f3fc-200d-2640-fe0f","native":"🤵🏼♀️"},{"unified":"1f935-1f3fd-200d-2640-fe0f","native":"🤵🏽♀️"},{"unified":"1f935-1f3fe-200d-2640-fe0f","native":"🤵🏾♀️"},{"unified":"1f935-1f3ff-200d-2640-fe0f","native":"🤵🏿♀️"}],"version":13},"bride_with_veil":{"id":"bride_with_veil","name":"Bride with Veil","keywords":["couple","marriage","wedding","woman"],"skins":[{"unified":"1f470","native":"👰"},{"unified":"1f470-1f3fb","native":"👰🏻"},{"unified":"1f470-1f3fc","native":"👰🏼"},{"unified":"1f470-1f3fd","native":"👰🏽"},{"unified":"1f470-1f3fe","native":"👰🏾"},{"unified":"1f470-1f3ff","native":"👰🏿"}],"version":1},"man_with_veil":{"id":"man_with_veil","name":"Man with Veil","keywords":["wedding","marriage"],"skins":[{"unified":"1f470-200d-2642-fe0f","native":"👰♂️"},{"unified":"1f470-1f3fb-200d-2642-fe0f","native":"👰🏻♂️"},{"unified":"1f470-1f3fc-200d-2642-fe0f","native":"👰🏼♂️"},{"unified":"1f470-1f3fd-200d-2642-fe0f","native":"👰🏽♂️"},{"unified":"1f470-1f3fe-200d-2642-fe0f","native":"👰🏾♂️"},{"unified":"1f470-1f3ff-200d-2642-fe0f","native":"👰🏿♂️"}],"version":13},"woman_with_veil":{"id":"woman_with_veil","name":"Woman with Veil","keywords":["wedding","marriage"],"skins":[{"unified":"1f470-200d-2640-fe0f","native":"👰♀️"},{"unified":"1f470-1f3fb-200d-2640-fe0f","native":"👰🏻♀️"},{"unified":"1f470-1f3fc-200d-2640-fe0f","native":"👰🏼♀️"},{"unified":"1f470-1f3fd-200d-2640-fe0f","native":"👰🏽♀️"},{"unified":"1f470-1f3fe-200d-2640-fe0f","native":"👰🏾♀️"},{"unified":"1f470-1f3ff-200d-2640-fe0f","native":"👰🏿♀️"}],"version":13},"pregnant_woman":{"id":"pregnant_woman","name":"Pregnant Woman","keywords":["baby"],"skins":[{"unified":"1f930","native":"🤰"},{"unified":"1f930-1f3fb","native":"🤰🏻"},{"unified":"1f930-1f3fc","native":"🤰🏼"},{"unified":"1f930-1f3fd","native":"🤰🏽"},{"unified":"1f930-1f3fe","native":"🤰🏾"},{"unified":"1f930-1f3ff","native":"🤰🏿"}],"version":3},"pregnant_man":{"id":"pregnant_man","name":"Pregnant Man","keywords":["baby","belly"],"skins":[{"unified":"1fac3","native":"🫃"},{"unified":"1fac3-1f3fb","native":"🫃🏻"},{"unified":"1fac3-1f3fc","native":"🫃🏼"},{"unified":"1fac3-1f3fd","native":"🫃🏽"},{"unified":"1fac3-1f3fe","native":"🫃🏾"},{"unified":"1fac3-1f3ff","native":"🫃🏿"}],"version":14},"pregnant_person":{"id":"pregnant_person","name":"Pregnant Person","keywords":["baby","belly"],"skins":[{"unified":"1fac4","native":"🫄"},{"unified":"1fac4-1f3fb","native":"🫄🏻"},{"unified":"1fac4-1f3fc","native":"🫄🏼"},{"unified":"1fac4-1f3fd","native":"🫄🏽"},{"unified":"1fac4-1f3fe","native":"🫄🏾"},{"unified":"1fac4-1f3ff","native":"🫄🏿"}],"version":14},"breast-feeding":{"id":"breast-feeding","name":"Breast-Feeding","keywords":["breast","feeding","nursing","baby"],"skins":[{"unified":"1f931","native":"🤱"},{"unified":"1f931-1f3fb","native":"🤱🏻"},{"unified":"1f931-1f3fc","native":"🤱🏼"},{"unified":"1f931-1f3fd","native":"🤱🏽"},{"unified":"1f931-1f3fe","native":"🤱🏾"},{"unified":"1f931-1f3ff","native":"🤱🏿"}],"version":5},"woman_feeding_baby":{"id":"woman_feeding_baby","name":"Woman Feeding Baby","keywords":["birth","food"],"skins":[{"unified":"1f469-200d-1f37c","native":"👩🍼"},{"unified":"1f469-1f3fb-200d-1f37c","native":"👩🏻🍼"},{"unified":"1f469-1f3fc-200d-1f37c","native":"👩🏼🍼"},{"unified":"1f469-1f3fd-200d-1f37c","native":"👩🏽🍼"},{"unified":"1f469-1f3fe-200d-1f37c","native":"👩🏾🍼"},{"unified":"1f469-1f3ff-200d-1f37c","native":"👩🏿🍼"}],"version":13},"man_feeding_baby":{"id":"man_feeding_baby","name":"Man Feeding Baby","keywords":["birth","food"],"skins":[{"unified":"1f468-200d-1f37c","native":"👨🍼"},{"unified":"1f468-1f3fb-200d-1f37c","native":"👨🏻🍼"},{"unified":"1f468-1f3fc-200d-1f37c","native":"👨🏼🍼"},{"unified":"1f468-1f3fd-200d-1f37c","native":"👨🏽🍼"},{"unified":"1f468-1f3fe-200d-1f37c","native":"👨🏾🍼"},{"unified":"1f468-1f3ff-200d-1f37c","native":"👨🏿🍼"}],"version":13},"person_feeding_baby":{"id":"person_feeding_baby","name":"Person Feeding Baby","keywords":["birth","food"],"skins":[{"unified":"1f9d1-200d-1f37c","native":"🧑🍼"},{"unified":"1f9d1-1f3fb-200d-1f37c","native":"🧑🏻🍼"},{"unified":"1f9d1-1f3fc-200d-1f37c","native":"🧑🏼🍼"},{"unified":"1f9d1-1f3fd-200d-1f37c","native":"🧑🏽🍼"},{"unified":"1f9d1-1f3fe-200d-1f37c","native":"🧑🏾🍼"},{"unified":"1f9d1-1f3ff-200d-1f37c","native":"🧑🏿🍼"}],"version":13},"angel":{"id":"angel","name":"Baby Angel","keywords":["heaven","wings","halo"],"skins":[{"unified":"1f47c","native":"👼"},{"unified":"1f47c-1f3fb","native":"👼🏻"},{"unified":"1f47c-1f3fc","native":"👼🏼"},{"unified":"1f47c-1f3fd","native":"👼🏽"},{"unified":"1f47c-1f3fe","native":"👼🏾"},{"unified":"1f47c-1f3ff","native":"👼🏿"}],"version":1},"santa":{"id":"santa","name":"Santa Claus","keywords":["festival","man","male","xmas","father","christmas"],"skins":[{"unified":"1f385","native":"🎅"},{"unified":"1f385-1f3fb","native":"🎅🏻"},{"unified":"1f385-1f3fc","native":"🎅🏼"},{"unified":"1f385-1f3fd","native":"🎅🏽"},{"unified":"1f385-1f3fe","native":"🎅🏾"},{"unified":"1f385-1f3ff","native":"🎅🏿"}],"version":1},"mrs_claus":{"id":"mrs_claus","name":"Mrs. Claus","keywords":["mrs","mother","christmas","woman","female","xmas"],"skins":[{"unified":"1f936","native":"🤶"},{"unified":"1f936-1f3fb","native":"🤶🏻"},{"unified":"1f936-1f3fc","native":"🤶🏼"},{"unified":"1f936-1f3fd","native":"🤶🏽"},{"unified":"1f936-1f3fe","native":"🤶🏾"},{"unified":"1f936-1f3ff","native":"🤶🏿"}],"version":3},"mx_claus":{"id":"mx_claus","name":"Mx Claus","keywords":["christmas"],"skins":[{"unified":"1f9d1-200d-1f384","native":"🧑🎄"},{"unified":"1f9d1-1f3fb-200d-1f384","native":"🧑🏻🎄"},{"unified":"1f9d1-1f3fc-200d-1f384","native":"🧑🏼🎄"},{"unified":"1f9d1-1f3fd-200d-1f384","native":"🧑🏽🎄"},{"unified":"1f9d1-1f3fe-200d-1f384","native":"🧑🏾🎄"},{"unified":"1f9d1-1f3ff-200d-1f384","native":"🧑🏿🎄"}],"version":13},"superhero":{"id":"superhero","name":"Superhero","keywords":["marvel"],"skins":[{"unified":"1f9b8","native":"🦸"},{"unified":"1f9b8-1f3fb","native":"🦸🏻"},{"unified":"1f9b8-1f3fc","native":"🦸🏼"},{"unified":"1f9b8-1f3fd","native":"🦸🏽"},{"unified":"1f9b8-1f3fe","native":"🦸🏾"},{"unified":"1f9b8-1f3ff","native":"🦸🏿"}],"version":11},"male_superhero":{"id":"male_superhero","name":"Man Superhero","keywords":["male","good","hero","superpowers"],"skins":[{"unified":"1f9b8-200d-2642-fe0f","native":"🦸♂️"},{"unified":"1f9b8-1f3fb-200d-2642-fe0f","native":"🦸🏻♂️"},{"unified":"1f9b8-1f3fc-200d-2642-fe0f","native":"🦸🏼♂️"},{"unified":"1f9b8-1f3fd-200d-2642-fe0f","native":"🦸🏽♂️"},{"unified":"1f9b8-1f3fe-200d-2642-fe0f","native":"🦸🏾♂️"},{"unified":"1f9b8-1f3ff-200d-2642-fe0f","native":"🦸🏿♂️"}],"version":11},"female_superhero":{"id":"female_superhero","name":"Woman Superhero","keywords":["female","good","heroine","superpowers"],"skins":[{"unified":"1f9b8-200d-2640-fe0f","native":"🦸♀️"},{"unified":"1f9b8-1f3fb-200d-2640-fe0f","native":"🦸🏻♀️"},{"unified":"1f9b8-1f3fc-200d-2640-fe0f","native":"🦸🏼♀️"},{"unified":"1f9b8-1f3fd-200d-2640-fe0f","native":"🦸🏽♀️"},{"unified":"1f9b8-1f3fe-200d-2640-fe0f","native":"🦸🏾♀️"},{"unified":"1f9b8-1f3ff-200d-2640-fe0f","native":"🦸🏿♀️"}],"version":11},"supervillain":{"id":"supervillain","name":"Supervillain","keywords":["marvel"],"skins":[{"unified":"1f9b9","native":"🦹"},{"unified":"1f9b9-1f3fb","native":"🦹🏻"},{"unified":"1f9b9-1f3fc","native":"🦹🏼"},{"unified":"1f9b9-1f3fd","native":"🦹🏽"},{"unified":"1f9b9-1f3fe","native":"🦹🏾"},{"unified":"1f9b9-1f3ff","native":"🦹🏿"}],"version":11},"male_supervillain":{"id":"male_supervillain","name":"Man Supervillain","keywords":["male","evil","bad","criminal","hero","superpowers"],"skins":[{"unified":"1f9b9-200d-2642-fe0f","native":"🦹♂️"},{"unified":"1f9b9-1f3fb-200d-2642-fe0f","native":"🦹🏻♂️"},{"unified":"1f9b9-1f3fc-200d-2642-fe0f","native":"🦹🏼♂️"},{"unified":"1f9b9-1f3fd-200d-2642-fe0f","native":"🦹🏽♂️"},{"unified":"1f9b9-1f3fe-200d-2642-fe0f","native":"🦹🏾♂️"},{"unified":"1f9b9-1f3ff-200d-2642-fe0f","native":"🦹🏿♂️"}],"version":11},"female_supervillain":{"id":"female_supervillain","name":"Woman Supervillain","keywords":["female","evil","bad","criminal","heroine","superpowers"],"skins":[{"unified":"1f9b9-200d-2640-fe0f","native":"🦹♀️"},{"unified":"1f9b9-1f3fb-200d-2640-fe0f","native":"🦹🏻♀️"},{"unified":"1f9b9-1f3fc-200d-2640-fe0f","native":"🦹🏼♀️"},{"unified":"1f9b9-1f3fd-200d-2640-fe0f","native":"🦹🏽♀️"},{"unified":"1f9b9-1f3fe-200d-2640-fe0f","native":"🦹🏾♀️"},{"unified":"1f9b9-1f3ff-200d-2640-fe0f","native":"🦹🏿♀️"}],"version":11},"mage":{"id":"mage","name":"Mage","keywords":["magic"],"skins":[{"unified":"1f9d9","native":"🧙"},{"unified":"1f9d9-1f3fb","native":"🧙🏻"},{"unified":"1f9d9-1f3fc","native":"🧙🏼"},{"unified":"1f9d9-1f3fd","native":"🧙🏽"},{"unified":"1f9d9-1f3fe","native":"🧙🏾"},{"unified":"1f9d9-1f3ff","native":"🧙🏿"}],"version":5},"male_mage":{"id":"male_mage","name":"Man Mage","keywords":["male","sorcerer"],"skins":[{"unified":"1f9d9-200d-2642-fe0f","native":"🧙♂️"},{"unified":"1f9d9-1f3fb-200d-2642-fe0f","native":"🧙🏻♂️"},{"unified":"1f9d9-1f3fc-200d-2642-fe0f","native":"🧙🏼♂️"},{"unified":"1f9d9-1f3fd-200d-2642-fe0f","native":"🧙🏽♂️"},{"unified":"1f9d9-1f3fe-200d-2642-fe0f","native":"🧙🏾♂️"},{"unified":"1f9d9-1f3ff-200d-2642-fe0f","native":"🧙🏿♂️"}],"version":5},"female_mage":{"id":"female_mage","name":"Woman Mage","keywords":["female","witch"],"skins":[{"unified":"1f9d9-200d-2640-fe0f","native":"🧙♀️"},{"unified":"1f9d9-1f3fb-200d-2640-fe0f","native":"🧙🏻♀️"},{"unified":"1f9d9-1f3fc-200d-2640-fe0f","native":"🧙🏼♀️"},{"unified":"1f9d9-1f3fd-200d-2640-fe0f","native":"🧙🏽♀️"},{"unified":"1f9d9-1f3fe-200d-2640-fe0f","native":"🧙🏾♀️"},{"unified":"1f9d9-1f3ff-200d-2640-fe0f","native":"🧙🏿♀️"}],"version":5},"fairy":{"id":"fairy","name":"Fairy","keywords":["wings","magical"],"skins":[{"unified":"1f9da","native":"🧚"},{"unified":"1f9da-1f3fb","native":"🧚🏻"},{"unified":"1f9da-1f3fc","native":"🧚🏼"},{"unified":"1f9da-1f3fd","native":"🧚🏽"},{"unified":"1f9da-1f3fe","native":"🧚🏾"},{"unified":"1f9da-1f3ff","native":"🧚🏿"}],"version":5},"male_fairy":{"id":"male_fairy","name":"Man Fairy","keywords":["male"],"skins":[{"unified":"1f9da-200d-2642-fe0f","native":"🧚♂️"},{"unified":"1f9da-1f3fb-200d-2642-fe0f","native":"🧚🏻♂️"},{"unified":"1f9da-1f3fc-200d-2642-fe0f","native":"🧚🏼♂️"},{"unified":"1f9da-1f3fd-200d-2642-fe0f","native":"🧚🏽♂️"},{"unified":"1f9da-1f3fe-200d-2642-fe0f","native":"🧚🏾♂️"},{"unified":"1f9da-1f3ff-200d-2642-fe0f","native":"🧚🏿♂️"}],"version":5},"female_fairy":{"id":"female_fairy","name":"Woman Fairy","keywords":["female"],"skins":[{"unified":"1f9da-200d-2640-fe0f","native":"🧚♀️"},{"unified":"1f9da-1f3fb-200d-2640-fe0f","native":"🧚🏻♀️"},{"unified":"1f9da-1f3fc-200d-2640-fe0f","native":"🧚🏼♀️"},{"unified":"1f9da-1f3fd-200d-2640-fe0f","native":"🧚🏽♀️"},{"unified":"1f9da-1f3fe-200d-2640-fe0f","native":"🧚🏾♀️"},{"unified":"1f9da-1f3ff-200d-2640-fe0f","native":"🧚🏿♀️"}],"version":5},"vampire":{"id":"vampire","name":"Vampire","keywords":["blood","twilight"],"skins":[{"unified":"1f9db","native":"🧛"},{"unified":"1f9db-1f3fb","native":"🧛🏻"},{"unified":"1f9db-1f3fc","native":"🧛🏼"},{"unified":"1f9db-1f3fd","native":"🧛🏽"},{"unified":"1f9db-1f3fe","native":"🧛🏾"},{"unified":"1f9db-1f3ff","native":"🧛🏿"}],"version":5},"male_vampire":{"id":"male_vampire","name":"Man Vampire","keywords":["male","dracula"],"skins":[{"unified":"1f9db-200d-2642-fe0f","native":"🧛♂️"},{"unified":"1f9db-1f3fb-200d-2642-fe0f","native":"🧛🏻♂️"},{"unified":"1f9db-1f3fc-200d-2642-fe0f","native":"🧛🏼♂️"},{"unified":"1f9db-1f3fd-200d-2642-fe0f","native":"🧛🏽♂️"},{"unified":"1f9db-1f3fe-200d-2642-fe0f","native":"🧛🏾♂️"},{"unified":"1f9db-1f3ff-200d-2642-fe0f","native":"🧛🏿♂️"}],"version":5},"female_vampire":{"id":"female_vampire","name":"Woman Vampire","keywords":["female"],"skins":[{"unified":"1f9db-200d-2640-fe0f","native":"🧛♀️"},{"unified":"1f9db-1f3fb-200d-2640-fe0f","native":"🧛🏻♀️"},{"unified":"1f9db-1f3fc-200d-2640-fe0f","native":"🧛🏼♀️"},{"unified":"1f9db-1f3fd-200d-2640-fe0f","native":"🧛🏽♀️"},{"unified":"1f9db-1f3fe-200d-2640-fe0f","native":"🧛🏾♀️"},{"unified":"1f9db-1f3ff-200d-2640-fe0f","native":"🧛🏿♀️"}],"version":5},"merperson":{"id":"merperson","name":"Merperson","keywords":["sea"],"skins":[{"unified":"1f9dc","native":"🧜"},{"unified":"1f9dc-1f3fb","native":"🧜🏻"},{"unified":"1f9dc-1f3fc","native":"🧜🏼"},{"unified":"1f9dc-1f3fd","native":"🧜🏽"},{"unified":"1f9dc-1f3fe","native":"🧜🏾"},{"unified":"1f9dc-1f3ff","native":"🧜🏿"}],"version":5},"merman":{"id":"merman","name":"Merman","keywords":["man","male","triton"],"skins":[{"unified":"1f9dc-200d-2642-fe0f","native":"🧜♂️"},{"unified":"1f9dc-1f3fb-200d-2642-fe0f","native":"🧜🏻♂️"},{"unified":"1f9dc-1f3fc-200d-2642-fe0f","native":"🧜🏼♂️"},{"unified":"1f9dc-1f3fd-200d-2642-fe0f","native":"🧜🏽♂️"},{"unified":"1f9dc-1f3fe-200d-2642-fe0f","native":"🧜🏾♂️"},{"unified":"1f9dc-1f3ff-200d-2642-fe0f","native":"🧜🏿♂️"}],"version":5},"mermaid":{"id":"mermaid","name":"Mermaid","keywords":["woman","female","merwoman","ariel"],"skins":[{"unified":"1f9dc-200d-2640-fe0f","native":"🧜♀️"},{"unified":"1f9dc-1f3fb-200d-2640-fe0f","native":"🧜🏻♀️"},{"unified":"1f9dc-1f3fc-200d-2640-fe0f","native":"🧜🏼♀️"},{"unified":"1f9dc-1f3fd-200d-2640-fe0f","native":"🧜🏽♀️"},{"unified":"1f9dc-1f3fe-200d-2640-fe0f","native":"🧜🏾♀️"},{"unified":"1f9dc-1f3ff-200d-2640-fe0f","native":"🧜🏿♀️"}],"version":5},"elf":{"id":"elf","name":"Elf","keywords":["magical"],"skins":[{"unified":"1f9dd","native":"🧝"},{"unified":"1f9dd-1f3fb","native":"🧝🏻"},{"unified":"1f9dd-1f3fc","native":"🧝🏼"},{"unified":"1f9dd-1f3fd","native":"🧝🏽"},{"unified":"1f9dd-1f3fe","native":"🧝🏾"},{"unified":"1f9dd-1f3ff","native":"🧝🏿"}],"version":5},"male_elf":{"id":"male_elf","name":"Man Elf","keywords":["male"],"skins":[{"unified":"1f9dd-200d-2642-fe0f","native":"🧝♂️"},{"unified":"1f9dd-1f3fb-200d-2642-fe0f","native":"🧝🏻♂️"},{"unified":"1f9dd-1f3fc-200d-2642-fe0f","native":"🧝🏼♂️"},{"unified":"1f9dd-1f3fd-200d-2642-fe0f","native":"🧝🏽♂️"},{"unified":"1f9dd-1f3fe-200d-2642-fe0f","native":"🧝🏾♂️"},{"unified":"1f9dd-1f3ff-200d-2642-fe0f","native":"🧝🏿♂️"}],"version":5},"female_elf":{"id":"female_elf","name":"Woman Elf","keywords":["female"],"skins":[{"unified":"1f9dd-200d-2640-fe0f","native":"🧝♀️"},{"unified":"1f9dd-1f3fb-200d-2640-fe0f","native":"🧝🏻♀️"},{"unified":"1f9dd-1f3fc-200d-2640-fe0f","native":"🧝🏼♀️"},{"unified":"1f9dd-1f3fd-200d-2640-fe0f","native":"🧝🏽♀️"},{"unified":"1f9dd-1f3fe-200d-2640-fe0f","native":"🧝🏾♀️"},{"unified":"1f9dd-1f3ff-200d-2640-fe0f","native":"🧝🏿♀️"}],"version":5},"genie":{"id":"genie","name":"Genie","keywords":["magical","wishes"],"skins":[{"unified":"1f9de","native":"🧞"}],"version":5},"male_genie":{"id":"male_genie","name":"Man Genie","keywords":["male"],"skins":[{"unified":"1f9de-200d-2642-fe0f","native":"🧞♂️"}],"version":5},"female_genie":{"id":"female_genie","name":"Woman Genie","keywords":["female"],"skins":[{"unified":"1f9de-200d-2640-fe0f","native":"🧞♀️"}],"version":5},"zombie":{"id":"zombie","name":"Zombie","keywords":["dead"],"skins":[{"unified":"1f9df","native":"🧟"}],"version":5},"male_zombie":{"id":"male_zombie","name":"Man Zombie","keywords":["male","dracula","undead","walking","dead"],"skins":[{"unified":"1f9df-200d-2642-fe0f","native":"🧟♂️"}],"version":5},"female_zombie":{"id":"female_zombie","name":"Woman Zombie","keywords":["female","undead","walking","dead"],"skins":[{"unified":"1f9df-200d-2640-fe0f","native":"🧟♀️"}],"version":5},"troll":{"id":"troll","name":"Troll","keywords":["mystical","monster"],"skins":[{"unified":"1f9cc","native":"🧌"}],"version":14},"massage":{"id":"massage","name":"Face Massage","keywords":["person","getting","relax"],"skins":[{"unified":"1f486","native":"💆"},{"unified":"1f486-1f3fb","native":"💆🏻"},{"unified":"1f486-1f3fc","native":"💆🏼"},{"unified":"1f486-1f3fd","native":"💆🏽"},{"unified":"1f486-1f3fe","native":"💆🏾"},{"unified":"1f486-1f3ff","native":"💆🏿"}],"version":1},"man-getting-massage":{"id":"man-getting-massage","name":"Man Getting Massage","keywords":["getting-massage","male","boy","head"],"skins":[{"unified":"1f486-200d-2642-fe0f","native":"💆♂️"},{"unified":"1f486-1f3fb-200d-2642-fe0f","native":"💆🏻♂️"},{"unified":"1f486-1f3fc-200d-2642-fe0f","native":"💆🏼♂️"},{"unified":"1f486-1f3fd-200d-2642-fe0f","native":"💆🏽♂️"},{"unified":"1f486-1f3fe-200d-2642-fe0f","native":"💆🏾♂️"},{"unified":"1f486-1f3ff-200d-2642-fe0f","native":"💆🏿♂️"}],"version":4},"woman-getting-massage":{"id":"woman-getting-massage","name":"Woman Getting Massage","keywords":["getting-massage","female","girl","head"],"skins":[{"unified":"1f486-200d-2640-fe0f","native":"💆♀️"},{"unified":"1f486-1f3fb-200d-2640-fe0f","native":"💆🏻♀️"},{"unified":"1f486-1f3fc-200d-2640-fe0f","native":"💆🏼♀️"},{"unified":"1f486-1f3fd-200d-2640-fe0f","native":"💆🏽♀️"},{"unified":"1f486-1f3fe-200d-2640-fe0f","native":"💆🏾♀️"},{"unified":"1f486-1f3ff-200d-2640-fe0f","native":"💆🏿♀️"}],"version":4},"haircut":{"id":"haircut","name":"Haircut","keywords":["person","getting","hairstyle"],"skins":[{"unified":"1f487","native":"💇"},{"unified":"1f487-1f3fb","native":"💇🏻"},{"unified":"1f487-1f3fc","native":"💇🏼"},{"unified":"1f487-1f3fd","native":"💇🏽"},{"unified":"1f487-1f3fe","native":"💇🏾"},{"unified":"1f487-1f3ff","native":"💇🏿"}],"version":1},"man-getting-haircut":{"id":"man-getting-haircut","name":"Man Getting Haircut","keywords":["getting-haircut","male","boy"],"skins":[{"unified":"1f487-200d-2642-fe0f","native":"💇♂️"},{"unified":"1f487-1f3fb-200d-2642-fe0f","native":"💇🏻♂️"},{"unified":"1f487-1f3fc-200d-2642-fe0f","native":"💇🏼♂️"},{"unified":"1f487-1f3fd-200d-2642-fe0f","native":"💇🏽♂️"},{"unified":"1f487-1f3fe-200d-2642-fe0f","native":"💇🏾♂️"},{"unified":"1f487-1f3ff-200d-2642-fe0f","native":"💇🏿♂️"}],"version":4},"woman-getting-haircut":{"id":"woman-getting-haircut","name":"Woman Getting Haircut","keywords":["getting-haircut","female","girl"],"skins":[{"unified":"1f487-200d-2640-fe0f","native":"💇♀️"},{"unified":"1f487-1f3fb-200d-2640-fe0f","native":"💇🏻♀️"},{"unified":"1f487-1f3fc-200d-2640-fe0f","native":"💇🏼♀️"},{"unified":"1f487-1f3fd-200d-2640-fe0f","native":"💇🏽♀️"},{"unified":"1f487-1f3fe-200d-2640-fe0f","native":"💇🏾♀️"},{"unified":"1f487-1f3ff-200d-2640-fe0f","native":"💇🏿♀️"}],"version":4},"walking":{"id":"walking","name":"Pedestrian","keywords":["walking","person","move"],"skins":[{"unified":"1f6b6","native":"🚶"},{"unified":"1f6b6-1f3fb","native":"🚶🏻"},{"unified":"1f6b6-1f3fc","native":"🚶🏼"},{"unified":"1f6b6-1f3fd","native":"🚶🏽"},{"unified":"1f6b6-1f3fe","native":"🚶🏾"},{"unified":"1f6b6-1f3ff","native":"🚶🏿"}],"version":1},"man-walking":{"id":"man-walking","name":"Man Walking","keywords":["human","feet","steps"],"skins":[{"unified":"1f6b6-200d-2642-fe0f","native":"🚶♂️"},{"unified":"1f6b6-1f3fb-200d-2642-fe0f","native":"🚶🏻♂️"},{"unified":"1f6b6-1f3fc-200d-2642-fe0f","native":"🚶🏼♂️"},{"unified":"1f6b6-1f3fd-200d-2642-fe0f","native":"🚶🏽♂️"},{"unified":"1f6b6-1f3fe-200d-2642-fe0f","native":"🚶🏾♂️"},{"unified":"1f6b6-1f3ff-200d-2642-fe0f","native":"🚶🏿♂️"}],"version":4},"woman-walking":{"id":"woman-walking","name":"Woman Walking","keywords":["human","feet","steps","female"],"skins":[{"unified":"1f6b6-200d-2640-fe0f","native":"🚶♀️"},{"unified":"1f6b6-1f3fb-200d-2640-fe0f","native":"🚶🏻♀️"},{"unified":"1f6b6-1f3fc-200d-2640-fe0f","native":"🚶🏼♀️"},{"unified":"1f6b6-1f3fd-200d-2640-fe0f","native":"🚶🏽♀️"},{"unified":"1f6b6-1f3fe-200d-2640-fe0f","native":"🚶🏾♀️"},{"unified":"1f6b6-1f3ff-200d-2640-fe0f","native":"🚶🏿♀️"}],"version":4},"standing_person":{"id":"standing_person","name":"Standing Person","keywords":["still"],"skins":[{"unified":"1f9cd","native":"🧍"},{"unified":"1f9cd-1f3fb","native":"🧍🏻"},{"unified":"1f9cd-1f3fc","native":"🧍🏼"},{"unified":"1f9cd-1f3fd","native":"🧍🏽"},{"unified":"1f9cd-1f3fe","native":"🧍🏾"},{"unified":"1f9cd-1f3ff","native":"🧍🏿"}],"version":12},"man_standing":{"id":"man_standing","name":"Man Standing","keywords":["still"],"skins":[{"unified":"1f9cd-200d-2642-fe0f","native":"🧍♂️"},{"unified":"1f9cd-1f3fb-200d-2642-fe0f","native":"🧍🏻♂️"},{"unified":"1f9cd-1f3fc-200d-2642-fe0f","native":"🧍🏼♂️"},{"unified":"1f9cd-1f3fd-200d-2642-fe0f","native":"🧍🏽♂️"},{"unified":"1f9cd-1f3fe-200d-2642-fe0f","native":"🧍🏾♂️"},{"unified":"1f9cd-1f3ff-200d-2642-fe0f","native":"🧍🏿♂️"}],"version":12},"woman_standing":{"id":"woman_standing","name":"Woman Standing","keywords":["still"],"skins":[{"unified":"1f9cd-200d-2640-fe0f","native":"🧍♀️"},{"unified":"1f9cd-1f3fb-200d-2640-fe0f","native":"🧍🏻♀️"},{"unified":"1f9cd-1f3fc-200d-2640-fe0f","native":"🧍🏼♀️"},{"unified":"1f9cd-1f3fd-200d-2640-fe0f","native":"🧍🏽♀️"},{"unified":"1f9cd-1f3fe-200d-2640-fe0f","native":"🧍🏾♀️"},{"unified":"1f9cd-1f3ff-200d-2640-fe0f","native":"🧍🏿♀️"}],"version":12},"kneeling_person":{"id":"kneeling_person","name":"Kneeling Person","keywords":["pray","respectful"],"skins":[{"unified":"1f9ce","native":"🧎"},{"unified":"1f9ce-1f3fb","native":"🧎🏻"},{"unified":"1f9ce-1f3fc","native":"🧎🏼"},{"unified":"1f9ce-1f3fd","native":"🧎🏽"},{"unified":"1f9ce-1f3fe","native":"🧎🏾"},{"unified":"1f9ce-1f3ff","native":"🧎🏿"}],"version":12},"man_kneeling":{"id":"man_kneeling","name":"Man Kneeling","keywords":["pray","respectful"],"skins":[{"unified":"1f9ce-200d-2642-fe0f","native":"🧎♂️"},{"unified":"1f9ce-1f3fb-200d-2642-fe0f","native":"🧎🏻♂️"},{"unified":"1f9ce-1f3fc-200d-2642-fe0f","native":"🧎🏼♂️"},{"unified":"1f9ce-1f3fd-200d-2642-fe0f","native":"🧎🏽♂️"},{"unified":"1f9ce-1f3fe-200d-2642-fe0f","native":"🧎🏾♂️"},{"unified":"1f9ce-1f3ff-200d-2642-fe0f","native":"🧎🏿♂️"}],"version":12},"woman_kneeling":{"id":"woman_kneeling","name":"Woman Kneeling","keywords":["respectful","pray"],"skins":[{"unified":"1f9ce-200d-2640-fe0f","native":"🧎♀️"},{"unified":"1f9ce-1f3fb-200d-2640-fe0f","native":"🧎🏻♀️"},{"unified":"1f9ce-1f3fc-200d-2640-fe0f","native":"🧎🏼♀️"},{"unified":"1f9ce-1f3fd-200d-2640-fe0f","native":"🧎🏽♀️"},{"unified":"1f9ce-1f3fe-200d-2640-fe0f","native":"🧎🏾♀️"},{"unified":"1f9ce-1f3ff-200d-2640-fe0f","native":"🧎🏿♀️"}],"version":12},"person_with_probing_cane":{"id":"person_with_probing_cane","name":"Person with White Cane","keywords":["probing","blind"],"skins":[{"unified":"1f9d1-200d-1f9af","native":"🧑🦯"},{"unified":"1f9d1-1f3fb-200d-1f9af","native":"🧑🏻🦯"},{"unified":"1f9d1-1f3fc-200d-1f9af","native":"🧑🏼🦯"},{"unified":"1f9d1-1f3fd-200d-1f9af","native":"🧑🏽🦯"},{"unified":"1f9d1-1f3fe-200d-1f9af","native":"🧑🏾🦯"},{"unified":"1f9d1-1f3ff-200d-1f9af","native":"🧑🏿🦯"}],"version":12.1},"man_with_probing_cane":{"id":"man_with_probing_cane","name":"Man with White Cane","keywords":["probing","blind"],"skins":[{"unified":"1f468-200d-1f9af","native":"👨🦯"},{"unified":"1f468-1f3fb-200d-1f9af","native":"👨🏻🦯"},{"unified":"1f468-1f3fc-200d-1f9af","native":"👨🏼🦯"},{"unified":"1f468-1f3fd-200d-1f9af","native":"👨🏽🦯"},{"unified":"1f468-1f3fe-200d-1f9af","native":"👨🏾🦯"},{"unified":"1f468-1f3ff-200d-1f9af","native":"👨🏿🦯"}],"version":12},"woman_with_probing_cane":{"id":"woman_with_probing_cane","name":"Woman with White Cane","keywords":["probing","blind"],"skins":[{"unified":"1f469-200d-1f9af","native":"👩🦯"},{"unified":"1f469-1f3fb-200d-1f9af","native":"👩🏻🦯"},{"unified":"1f469-1f3fc-200d-1f9af","native":"👩🏼🦯"},{"unified":"1f469-1f3fd-200d-1f9af","native":"👩🏽🦯"},{"unified":"1f469-1f3fe-200d-1f9af","native":"👩🏾🦯"},{"unified":"1f469-1f3ff-200d-1f9af","native":"👩🏿🦯"}],"version":12},"person_in_motorized_wheelchair":{"id":"person_in_motorized_wheelchair","name":"Person in Motorized Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f9d1-200d-1f9bc","native":"🧑🦼"},{"unified":"1f9d1-1f3fb-200d-1f9bc","native":"🧑🏻🦼"},{"unified":"1f9d1-1f3fc-200d-1f9bc","native":"🧑🏼🦼"},{"unified":"1f9d1-1f3fd-200d-1f9bc","native":"🧑🏽🦼"},{"unified":"1f9d1-1f3fe-200d-1f9bc","native":"🧑🏾🦼"},{"unified":"1f9d1-1f3ff-200d-1f9bc","native":"🧑🏿🦼"}],"version":12.1},"man_in_motorized_wheelchair":{"id":"man_in_motorized_wheelchair","name":"Man in Motorized Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f468-200d-1f9bc","native":"👨🦼"},{"unified":"1f468-1f3fb-200d-1f9bc","native":"👨🏻🦼"},{"unified":"1f468-1f3fc-200d-1f9bc","native":"👨🏼🦼"},{"unified":"1f468-1f3fd-200d-1f9bc","native":"👨🏽🦼"},{"unified":"1f468-1f3fe-200d-1f9bc","native":"👨🏾🦼"},{"unified":"1f468-1f3ff-200d-1f9bc","native":"👨🏿🦼"}],"version":12},"woman_in_motorized_wheelchair":{"id":"woman_in_motorized_wheelchair","name":"Woman in Motorized Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f469-200d-1f9bc","native":"👩🦼"},{"unified":"1f469-1f3fb-200d-1f9bc","native":"👩🏻🦼"},{"unified":"1f469-1f3fc-200d-1f9bc","native":"👩🏼🦼"},{"unified":"1f469-1f3fd-200d-1f9bc","native":"👩🏽🦼"},{"unified":"1f469-1f3fe-200d-1f9bc","native":"👩🏾🦼"},{"unified":"1f469-1f3ff-200d-1f9bc","native":"👩🏿🦼"}],"version":12},"person_in_manual_wheelchair":{"id":"person_in_manual_wheelchair","name":"Person in Manual Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f9d1-200d-1f9bd","native":"🧑🦽"},{"unified":"1f9d1-1f3fb-200d-1f9bd","native":"🧑🏻🦽"},{"unified":"1f9d1-1f3fc-200d-1f9bd","native":"🧑🏼🦽"},{"unified":"1f9d1-1f3fd-200d-1f9bd","native":"🧑🏽🦽"},{"unified":"1f9d1-1f3fe-200d-1f9bd","native":"🧑🏾🦽"},{"unified":"1f9d1-1f3ff-200d-1f9bd","native":"🧑🏿🦽"}],"version":12.1},"man_in_manual_wheelchair":{"id":"man_in_manual_wheelchair","name":"Man in Manual Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f468-200d-1f9bd","native":"👨🦽"},{"unified":"1f468-1f3fb-200d-1f9bd","native":"👨🏻🦽"},{"unified":"1f468-1f3fc-200d-1f9bd","native":"👨🏼🦽"},{"unified":"1f468-1f3fd-200d-1f9bd","native":"👨🏽🦽"},{"unified":"1f468-1f3fe-200d-1f9bd","native":"👨🏾🦽"},{"unified":"1f468-1f3ff-200d-1f9bd","native":"👨🏿🦽"}],"version":12},"woman_in_manual_wheelchair":{"id":"woman_in_manual_wheelchair","name":"Woman in Manual Wheelchair","keywords":["disability","accessibility"],"skins":[{"unified":"1f469-200d-1f9bd","native":"👩🦽"},{"unified":"1f469-1f3fb-200d-1f9bd","native":"👩🏻🦽"},{"unified":"1f469-1f3fc-200d-1f9bd","native":"👩🏼🦽"},{"unified":"1f469-1f3fd-200d-1f9bd","native":"👩🏽🦽"},{"unified":"1f469-1f3fe-200d-1f9bd","native":"👩🏾🦽"},{"unified":"1f469-1f3ff-200d-1f9bd","native":"👩🏿🦽"}],"version":12},"runner":{"id":"runner","name":"Runner","keywords":["running","person","move"],"skins":[{"unified":"1f3c3","native":"🏃"},{"unified":"1f3c3-1f3fb","native":"🏃🏻"},{"unified":"1f3c3-1f3fc","native":"🏃🏼"},{"unified":"1f3c3-1f3fd","native":"🏃🏽"},{"unified":"1f3c3-1f3fe","native":"🏃🏾"},{"unified":"1f3c3-1f3ff","native":"🏃🏿"}],"version":1},"man-running":{"id":"man-running","name":"Man Running","keywords":["walking","exercise","race"],"skins":[{"unified":"1f3c3-200d-2642-fe0f","native":"🏃♂️"},{"unified":"1f3c3-1f3fb-200d-2642-fe0f","native":"🏃🏻♂️"},{"unified":"1f3c3-1f3fc-200d-2642-fe0f","native":"🏃🏼♂️"},{"unified":"1f3c3-1f3fd-200d-2642-fe0f","native":"🏃🏽♂️"},{"unified":"1f3c3-1f3fe-200d-2642-fe0f","native":"🏃🏾♂️"},{"unified":"1f3c3-1f3ff-200d-2642-fe0f","native":"🏃🏿♂️"}],"version":4},"woman-running":{"id":"woman-running","name":"Woman Running","keywords":["walking","exercise","race","female"],"skins":[{"unified":"1f3c3-200d-2640-fe0f","native":"🏃♀️"},{"unified":"1f3c3-1f3fb-200d-2640-fe0f","native":"🏃🏻♀️"},{"unified":"1f3c3-1f3fc-200d-2640-fe0f","native":"🏃🏼♀️"},{"unified":"1f3c3-1f3fd-200d-2640-fe0f","native":"🏃🏽♀️"},{"unified":"1f3c3-1f3fe-200d-2640-fe0f","native":"🏃🏾♀️"},{"unified":"1f3c3-1f3ff-200d-2640-fe0f","native":"🏃🏿♀️"}],"version":4},"dancer":{"id":"dancer","name":"Dancer","keywords":["woman","dancing","female","girl","fun"],"skins":[{"unified":"1f483","native":"💃"},{"unified":"1f483-1f3fb","native":"💃🏻"},{"unified":"1f483-1f3fc","native":"💃🏼"},{"unified":"1f483-1f3fd","native":"💃🏽"},{"unified":"1f483-1f3fe","native":"💃🏾"},{"unified":"1f483-1f3ff","native":"💃🏿"}],"version":1},"man_dancing":{"id":"man_dancing","name":"Man Dancing","keywords":["male","boy","fun","dancer"],"skins":[{"unified":"1f57a","native":"🕺"},{"unified":"1f57a-1f3fb","native":"🕺🏻"},{"unified":"1f57a-1f3fc","native":"🕺🏼"},{"unified":"1f57a-1f3fd","native":"🕺🏽"},{"unified":"1f57a-1f3fe","native":"🕺🏾"},{"unified":"1f57a-1f3ff","native":"🕺🏿"}],"version":3},"man_in_business_suit_levitating":{"id":"man_in_business_suit_levitating","name":"Person in Suit Levitating","keywords":["man","business","levitate","hover","jump"],"skins":[{"unified":"1f574-fe0f","native":"🕴️"},{"unified":"1f574-1f3fb","native":"🕴🏻"},{"unified":"1f574-1f3fc","native":"🕴🏼"},{"unified":"1f574-1f3fd","native":"🕴🏽"},{"unified":"1f574-1f3fe","native":"🕴🏾"},{"unified":"1f574-1f3ff","native":"🕴🏿"}],"version":1},"dancers":{"id":"dancers","name":"Woman with Bunny Ears","keywords":["dancers","people","perform","costume"],"skins":[{"unified":"1f46f","native":"👯"}],"version":1},"men-with-bunny-ears-partying":{"id":"men-with-bunny-ears-partying","name":"Men with Bunny Ears","keywords":["with-bunny-ears-partying","man","male","boys"],"skins":[{"unified":"1f46f-200d-2642-fe0f","native":"👯♂️"}],"version":4},"women-with-bunny-ears-partying":{"id":"women-with-bunny-ears-partying","name":"Women with Bunny Ears","keywords":["with-bunny-ears-partying","woman","female","girls"],"skins":[{"unified":"1f46f-200d-2640-fe0f","native":"👯♀️"}],"version":4},"person_in_steamy_room":{"id":"person_in_steamy_room","name":"Person in Steamy Room","keywords":["relax","spa"],"skins":[{"unified":"1f9d6","native":"🧖"},{"unified":"1f9d6-1f3fb","native":"🧖🏻"},{"unified":"1f9d6-1f3fc","native":"🧖🏼"},{"unified":"1f9d6-1f3fd","native":"🧖🏽"},{"unified":"1f9d6-1f3fe","native":"🧖🏾"},{"unified":"1f9d6-1f3ff","native":"🧖🏿"}],"version":5},"man_in_steamy_room":{"id":"man_in_steamy_room","name":"Man in Steamy Room","keywords":["male","spa","steamroom","sauna"],"skins":[{"unified":"1f9d6-200d-2642-fe0f","native":"🧖♂️"},{"unified":"1f9d6-1f3fb-200d-2642-fe0f","native":"🧖🏻♂️"},{"unified":"1f9d6-1f3fc-200d-2642-fe0f","native":"🧖🏼♂️"},{"unified":"1f9d6-1f3fd-200d-2642-fe0f","native":"🧖🏽♂️"},{"unified":"1f9d6-1f3fe-200d-2642-fe0f","native":"🧖🏾♂️"},{"unified":"1f9d6-1f3ff-200d-2642-fe0f","native":"🧖🏿♂️"}],"version":5},"woman_in_steamy_room":{"id":"woman_in_steamy_room","name":"Woman in Steamy Room","keywords":["female","spa","steamroom","sauna"],"skins":[{"unified":"1f9d6-200d-2640-fe0f","native":"🧖♀️"},{"unified":"1f9d6-1f3fb-200d-2640-fe0f","native":"🧖🏻♀️"},{"unified":"1f9d6-1f3fc-200d-2640-fe0f","native":"🧖🏼♀️"},{"unified":"1f9d6-1f3fd-200d-2640-fe0f","native":"🧖🏽♀️"},{"unified":"1f9d6-1f3fe-200d-2640-fe0f","native":"🧖🏾♀️"},{"unified":"1f9d6-1f3ff-200d-2640-fe0f","native":"🧖🏿♀️"}],"version":5},"person_climbing":{"id":"person_climbing","name":"Person Climbing","keywords":["sport"],"skins":[{"unified":"1f9d7","native":"🧗"},{"unified":"1f9d7-1f3fb","native":"🧗🏻"},{"unified":"1f9d7-1f3fc","native":"🧗🏼"},{"unified":"1f9d7-1f3fd","native":"🧗🏽"},{"unified":"1f9d7-1f3fe","native":"🧗🏾"},{"unified":"1f9d7-1f3ff","native":"🧗🏿"}],"version":5},"man_climbing":{"id":"man_climbing","name":"Man Climbing","keywords":["sports","hobby","male","rock"],"skins":[{"unified":"1f9d7-200d-2642-fe0f","native":"🧗♂️"},{"unified":"1f9d7-1f3fb-200d-2642-fe0f","native":"🧗🏻♂️"},{"unified":"1f9d7-1f3fc-200d-2642-fe0f","native":"🧗🏼♂️"},{"unified":"1f9d7-1f3fd-200d-2642-fe0f","native":"🧗🏽♂️"},{"unified":"1f9d7-1f3fe-200d-2642-fe0f","native":"🧗🏾♂️"},{"unified":"1f9d7-1f3ff-200d-2642-fe0f","native":"🧗🏿♂️"}],"version":5},"woman_climbing":{"id":"woman_climbing","name":"Woman Climbing","keywords":["sports","hobby","female","rock"],"skins":[{"unified":"1f9d7-200d-2640-fe0f","native":"🧗♀️"},{"unified":"1f9d7-1f3fb-200d-2640-fe0f","native":"🧗🏻♀️"},{"unified":"1f9d7-1f3fc-200d-2640-fe0f","native":"🧗🏼♀️"},{"unified":"1f9d7-1f3fd-200d-2640-fe0f","native":"🧗🏽♀️"},{"unified":"1f9d7-1f3fe-200d-2640-fe0f","native":"🧗🏾♀️"},{"unified":"1f9d7-1f3ff-200d-2640-fe0f","native":"🧗🏿♀️"}],"version":5},"fencer":{"id":"fencer","name":"Fencer","keywords":["person","fencing","sports","sword"],"skins":[{"unified":"1f93a","native":"🤺"}],"version":3},"horse_racing":{"id":"horse_racing","name":"Horse Racing","keywords":["animal","betting","competition","gambling","luck"],"skins":[{"unified":"1f3c7","native":"🏇"},{"unified":"1f3c7-1f3fb","native":"🏇🏻"},{"unified":"1f3c7-1f3fc","native":"🏇🏼"},{"unified":"1f3c7-1f3fd","native":"🏇🏽"},{"unified":"1f3c7-1f3fe","native":"🏇🏾"},{"unified":"1f3c7-1f3ff","native":"🏇🏿"}],"version":1},"skier":{"id":"skier","name":"Skier","keywords":["sports","winter","snow"],"skins":[{"unified":"26f7-fe0f","native":"⛷️"}],"version":1},"snowboarder":{"id":"snowboarder","name":"Snowboarder","keywords":["sports","winter"],"skins":[{"unified":"1f3c2","native":"🏂"},{"unified":"1f3c2-1f3fb","native":"🏂🏻"},{"unified":"1f3c2-1f3fc","native":"🏂🏼"},{"unified":"1f3c2-1f3fd","native":"🏂🏽"},{"unified":"1f3c2-1f3fe","native":"🏂🏾"},{"unified":"1f3c2-1f3ff","native":"🏂🏿"}],"version":1},"golfer":{"id":"golfer","name":"Person Golfing","keywords":["golfer","sports","business"],"skins":[{"unified":"1f3cc-fe0f","native":"🏌️"},{"unified":"1f3cc-1f3fb","native":"🏌🏻"},{"unified":"1f3cc-1f3fc","native":"🏌🏼"},{"unified":"1f3cc-1f3fd","native":"🏌🏽"},{"unified":"1f3cc-1f3fe","native":"🏌🏾"},{"unified":"1f3cc-1f3ff","native":"🏌🏿"}],"version":1},"man-golfing":{"id":"man-golfing","name":"Man Golfing","keywords":["sport"],"skins":[{"unified":"1f3cc-fe0f-200d-2642-fe0f","native":"🏌️♂️"},{"unified":"1f3cc-1f3fb-200d-2642-fe0f","native":"🏌🏻♂️"},{"unified":"1f3cc-1f3fc-200d-2642-fe0f","native":"🏌🏼♂️"},{"unified":"1f3cc-1f3fd-200d-2642-fe0f","native":"🏌🏽♂️"},{"unified":"1f3cc-1f3fe-200d-2642-fe0f","native":"🏌🏾♂️"},{"unified":"1f3cc-1f3ff-200d-2642-fe0f","native":"🏌🏿♂️"}],"version":4},"woman-golfing":{"id":"woman-golfing","name":"Woman Golfing","keywords":["sports","business","female"],"skins":[{"unified":"1f3cc-fe0f-200d-2640-fe0f","native":"🏌️♀️"},{"unified":"1f3cc-1f3fb-200d-2640-fe0f","native":"🏌🏻♀️"},{"unified":"1f3cc-1f3fc-200d-2640-fe0f","native":"🏌🏼♀️"},{"unified":"1f3cc-1f3fd-200d-2640-fe0f","native":"🏌🏽♀️"},{"unified":"1f3cc-1f3fe-200d-2640-fe0f","native":"🏌🏾♀️"},{"unified":"1f3cc-1f3ff-200d-2640-fe0f","native":"🏌🏿♀️"}],"version":4},"surfer":{"id":"surfer","name":"Surfer","keywords":["person","surfing","sport","sea"],"skins":[{"unified":"1f3c4","native":"🏄"},{"unified":"1f3c4-1f3fb","native":"🏄🏻"},{"unified":"1f3c4-1f3fc","native":"🏄🏼"},{"unified":"1f3c4-1f3fd","native":"🏄🏽"},{"unified":"1f3c4-1f3fe","native":"🏄🏾"},{"unified":"1f3c4-1f3ff","native":"🏄🏿"}],"version":1},"man-surfing":{"id":"man-surfing","name":"Man Surfing","keywords":["sports","ocean","sea","summer","beach"],"skins":[{"unified":"1f3c4-200d-2642-fe0f","native":"🏄♂️"},{"unified":"1f3c4-1f3fb-200d-2642-fe0f","native":"🏄🏻♂️"},{"unified":"1f3c4-1f3fc-200d-2642-fe0f","native":"🏄🏼♂️"},{"unified":"1f3c4-1f3fd-200d-2642-fe0f","native":"🏄🏽♂️"},{"unified":"1f3c4-1f3fe-200d-2642-fe0f","native":"🏄🏾♂️"},{"unified":"1f3c4-1f3ff-200d-2642-fe0f","native":"🏄🏿♂️"}],"version":4},"woman-surfing":{"id":"woman-surfing","name":"Woman Surfing","keywords":["sports","ocean","sea","summer","beach","female"],"skins":[{"unified":"1f3c4-200d-2640-fe0f","native":"🏄♀️"},{"unified":"1f3c4-1f3fb-200d-2640-fe0f","native":"🏄🏻♀️"},{"unified":"1f3c4-1f3fc-200d-2640-fe0f","native":"🏄🏼♀️"},{"unified":"1f3c4-1f3fd-200d-2640-fe0f","native":"🏄🏽♀️"},{"unified":"1f3c4-1f3fe-200d-2640-fe0f","native":"🏄🏾♀️"},{"unified":"1f3c4-1f3ff-200d-2640-fe0f","native":"🏄🏿♀️"}],"version":4},"rowboat":{"id":"rowboat","name":"Rowboat","keywords":["person","rowing","boat","sport","move"],"skins":[{"unified":"1f6a3","native":"🚣"},{"unified":"1f6a3-1f3fb","native":"🚣🏻"},{"unified":"1f6a3-1f3fc","native":"🚣🏼"},{"unified":"1f6a3-1f3fd","native":"🚣🏽"},{"unified":"1f6a3-1f3fe","native":"🚣🏾"},{"unified":"1f6a3-1f3ff","native":"🚣🏿"}],"version":1},"man-rowing-boat":{"id":"man-rowing-boat","name":"Man Rowing Boat","keywords":["rowing-boat","sports","hobby","water","ship"],"skins":[{"unified":"1f6a3-200d-2642-fe0f","native":"🚣♂️"},{"unified":"1f6a3-1f3fb-200d-2642-fe0f","native":"🚣🏻♂️"},{"unified":"1f6a3-1f3fc-200d-2642-fe0f","native":"🚣🏼♂️"},{"unified":"1f6a3-1f3fd-200d-2642-fe0f","native":"🚣🏽♂️"},{"unified":"1f6a3-1f3fe-200d-2642-fe0f","native":"🚣🏾♂️"},{"unified":"1f6a3-1f3ff-200d-2642-fe0f","native":"🚣🏿♂️"}],"version":4},"woman-rowing-boat":{"id":"woman-rowing-boat","name":"Woman Rowing Boat","keywords":["rowing-boat","sports","hobby","water","ship","female"],"skins":[{"unified":"1f6a3-200d-2640-fe0f","native":"🚣♀️"},{"unified":"1f6a3-1f3fb-200d-2640-fe0f","native":"🚣🏻♀️"},{"unified":"1f6a3-1f3fc-200d-2640-fe0f","native":"🚣🏼♀️"},{"unified":"1f6a3-1f3fd-200d-2640-fe0f","native":"🚣🏽♀️"},{"unified":"1f6a3-1f3fe-200d-2640-fe0f","native":"🚣🏾♀️"},{"unified":"1f6a3-1f3ff-200d-2640-fe0f","native":"🚣🏿♀️"}],"version":4},"swimmer":{"id":"swimmer","name":"Swimmer","keywords":["person","swimming","sport","pool"],"skins":[{"unified":"1f3ca","native":"🏊"},{"unified":"1f3ca-1f3fb","native":"🏊🏻"},{"unified":"1f3ca-1f3fc","native":"🏊🏼"},{"unified":"1f3ca-1f3fd","native":"🏊🏽"},{"unified":"1f3ca-1f3fe","native":"🏊🏾"},{"unified":"1f3ca-1f3ff","native":"🏊🏿"}],"version":1},"man-swimming":{"id":"man-swimming","name":"Man Swimming","keywords":["sports","exercise","human","athlete","water","summer"],"skins":[{"unified":"1f3ca-200d-2642-fe0f","native":"🏊♂️"},{"unified":"1f3ca-1f3fb-200d-2642-fe0f","native":"🏊🏻♂️"},{"unified":"1f3ca-1f3fc-200d-2642-fe0f","native":"🏊🏼♂️"},{"unified":"1f3ca-1f3fd-200d-2642-fe0f","native":"🏊🏽♂️"},{"unified":"1f3ca-1f3fe-200d-2642-fe0f","native":"🏊🏾♂️"},{"unified":"1f3ca-1f3ff-200d-2642-fe0f","native":"🏊🏿♂️"}],"version":4},"woman-swimming":{"id":"woman-swimming","name":"Woman Swimming","keywords":["sports","exercise","human","athlete","water","summer","female"],"skins":[{"unified":"1f3ca-200d-2640-fe0f","native":"🏊♀️"},{"unified":"1f3ca-1f3fb-200d-2640-fe0f","native":"🏊🏻♀️"},{"unified":"1f3ca-1f3fc-200d-2640-fe0f","native":"🏊🏼♀️"},{"unified":"1f3ca-1f3fd-200d-2640-fe0f","native":"🏊🏽♀️"},{"unified":"1f3ca-1f3fe-200d-2640-fe0f","native":"🏊🏾♀️"},{"unified":"1f3ca-1f3ff-200d-2640-fe0f","native":"🏊🏿♀️"}],"version":4},"person_with_ball":{"id":"person_with_ball","name":"Person Bouncing Ball","keywords":["with","sports","human"],"skins":[{"unified":"26f9-fe0f","native":"⛹️"},{"unified":"26f9-1f3fb","native":"⛹🏻"},{"unified":"26f9-1f3fc","native":"⛹🏼"},{"unified":"26f9-1f3fd","native":"⛹🏽"},{"unified":"26f9-1f3fe","native":"⛹🏾"},{"unified":"26f9-1f3ff","native":"⛹🏿"}],"version":1},"man-bouncing-ball":{"id":"man-bouncing-ball","name":"Man Bouncing Ball","keywords":["bouncing-ball","sport"],"skins":[{"unified":"26f9-fe0f-200d-2642-fe0f","native":"⛹️♂️"},{"unified":"26f9-1f3fb-200d-2642-fe0f","native":"⛹🏻♂️"},{"unified":"26f9-1f3fc-200d-2642-fe0f","native":"⛹🏼♂️"},{"unified":"26f9-1f3fd-200d-2642-fe0f","native":"⛹🏽♂️"},{"unified":"26f9-1f3fe-200d-2642-fe0f","native":"⛹🏾♂️"},{"unified":"26f9-1f3ff-200d-2642-fe0f","native":"⛹🏿♂️"}],"version":4},"woman-bouncing-ball":{"id":"woman-bouncing-ball","name":"Woman Bouncing Ball","keywords":["bouncing-ball","sports","human","female"],"skins":[{"unified":"26f9-fe0f-200d-2640-fe0f","native":"⛹️♀️"},{"unified":"26f9-1f3fb-200d-2640-fe0f","native":"⛹🏻♀️"},{"unified":"26f9-1f3fc-200d-2640-fe0f","native":"⛹🏼♀️"},{"unified":"26f9-1f3fd-200d-2640-fe0f","native":"⛹🏽♀️"},{"unified":"26f9-1f3fe-200d-2640-fe0f","native":"⛹🏾♀️"},{"unified":"26f9-1f3ff-200d-2640-fe0f","native":"⛹🏿♀️"}],"version":4},"weight_lifter":{"id":"weight_lifter","name":"Person Lifting Weights","keywords":["weight","lifter","sports","training","exercise"],"skins":[{"unified":"1f3cb-fe0f","native":"🏋️"},{"unified":"1f3cb-1f3fb","native":"🏋🏻"},{"unified":"1f3cb-1f3fc","native":"🏋🏼"},{"unified":"1f3cb-1f3fd","native":"🏋🏽"},{"unified":"1f3cb-1f3fe","native":"🏋🏾"},{"unified":"1f3cb-1f3ff","native":"🏋🏿"}],"version":1},"man-lifting-weights":{"id":"man-lifting-weights","name":"Man Lifting Weights","keywords":["lifting-weights","sport"],"skins":[{"unified":"1f3cb-fe0f-200d-2642-fe0f","native":"🏋️♂️"},{"unified":"1f3cb-1f3fb-200d-2642-fe0f","native":"🏋🏻♂️"},{"unified":"1f3cb-1f3fc-200d-2642-fe0f","native":"🏋🏼♂️"},{"unified":"1f3cb-1f3fd-200d-2642-fe0f","native":"🏋🏽♂️"},{"unified":"1f3cb-1f3fe-200d-2642-fe0f","native":"🏋🏾♂️"},{"unified":"1f3cb-1f3ff-200d-2642-fe0f","native":"🏋🏿♂️"}],"version":4},"woman-lifting-weights":{"id":"woman-lifting-weights","name":"Woman Lifting Weights","keywords":["lifting-weights","sports","training","exercise","female"],"skins":[{"unified":"1f3cb-fe0f-200d-2640-fe0f","native":"🏋️♀️"},{"unified":"1f3cb-1f3fb-200d-2640-fe0f","native":"🏋🏻♀️"},{"unified":"1f3cb-1f3fc-200d-2640-fe0f","native":"🏋🏼♀️"},{"unified":"1f3cb-1f3fd-200d-2640-fe0f","native":"🏋🏽♀️"},{"unified":"1f3cb-1f3fe-200d-2640-fe0f","native":"🏋🏾♀️"},{"unified":"1f3cb-1f3ff-200d-2640-fe0f","native":"🏋🏿♀️"}],"version":4},"bicyclist":{"id":"bicyclist","name":"Bicyclist","keywords":["person","biking","sport","move"],"skins":[{"unified":"1f6b4","native":"🚴"},{"unified":"1f6b4-1f3fb","native":"🚴🏻"},{"unified":"1f6b4-1f3fc","native":"🚴🏼"},{"unified":"1f6b4-1f3fd","native":"🚴🏽"},{"unified":"1f6b4-1f3fe","native":"🚴🏾"},{"unified":"1f6b4-1f3ff","native":"🚴🏿"}],"version":1},"man-biking":{"id":"man-biking","name":"Man Biking","keywords":["sports","bike","exercise","hipster"],"skins":[{"unified":"1f6b4-200d-2642-fe0f","native":"🚴♂️"},{"unified":"1f6b4-1f3fb-200d-2642-fe0f","native":"🚴🏻♂️"},{"unified":"1f6b4-1f3fc-200d-2642-fe0f","native":"🚴🏼♂️"},{"unified":"1f6b4-1f3fd-200d-2642-fe0f","native":"🚴🏽♂️"},{"unified":"1f6b4-1f3fe-200d-2642-fe0f","native":"🚴🏾♂️"},{"unified":"1f6b4-1f3ff-200d-2642-fe0f","native":"🚴🏿♂️"}],"version":4},"woman-biking":{"id":"woman-biking","name":"Woman Biking","keywords":["sports","bike","exercise","hipster","female"],"skins":[{"unified":"1f6b4-200d-2640-fe0f","native":"🚴♀️"},{"unified":"1f6b4-1f3fb-200d-2640-fe0f","native":"🚴🏻♀️"},{"unified":"1f6b4-1f3fc-200d-2640-fe0f","native":"🚴🏼♀️"},{"unified":"1f6b4-1f3fd-200d-2640-fe0f","native":"🚴🏽♀️"},{"unified":"1f6b4-1f3fe-200d-2640-fe0f","native":"🚴🏾♀️"},{"unified":"1f6b4-1f3ff-200d-2640-fe0f","native":"🚴🏿♀️"}],"version":4},"mountain_bicyclist":{"id":"mountain_bicyclist","name":"Mountain Bicyclist","keywords":["person","biking","sport","move"],"skins":[{"unified":"1f6b5","native":"🚵"},{"unified":"1f6b5-1f3fb","native":"🚵🏻"},{"unified":"1f6b5-1f3fc","native":"🚵🏼"},{"unified":"1f6b5-1f3fd","native":"🚵🏽"},{"unified":"1f6b5-1f3fe","native":"🚵🏾"},{"unified":"1f6b5-1f3ff","native":"🚵🏿"}],"version":1},"man-mountain-biking":{"id":"man-mountain-biking","name":"Man Mountain Biking","keywords":["mountain-biking","transportation","sports","human","race","bike"],"skins":[{"unified":"1f6b5-200d-2642-fe0f","native":"🚵♂️"},{"unified":"1f6b5-1f3fb-200d-2642-fe0f","native":"🚵🏻♂️"},{"unified":"1f6b5-1f3fc-200d-2642-fe0f","native":"🚵🏼♂️"},{"unified":"1f6b5-1f3fd-200d-2642-fe0f","native":"🚵🏽♂️"},{"unified":"1f6b5-1f3fe-200d-2642-fe0f","native":"🚵🏾♂️"},{"unified":"1f6b5-1f3ff-200d-2642-fe0f","native":"🚵🏿♂️"}],"version":4},"woman-mountain-biking":{"id":"woman-mountain-biking","name":"Woman Mountain Biking","keywords":["mountain-biking","transportation","sports","human","race","bike","female"],"skins":[{"unified":"1f6b5-200d-2640-fe0f","native":"🚵♀️"},{"unified":"1f6b5-1f3fb-200d-2640-fe0f","native":"🚵🏻♀️"},{"unified":"1f6b5-1f3fc-200d-2640-fe0f","native":"🚵🏼♀️"},{"unified":"1f6b5-1f3fd-200d-2640-fe0f","native":"🚵🏽♀️"},{"unified":"1f6b5-1f3fe-200d-2640-fe0f","native":"🚵🏾♀️"},{"unified":"1f6b5-1f3ff-200d-2640-fe0f","native":"🚵🏿♀️"}],"version":4},"person_doing_cartwheel":{"id":"person_doing_cartwheel","name":"Person Cartwheeling","keywords":["doing","cartwheel","sport","gymnastic"],"skins":[{"unified":"1f938","native":"🤸"},{"unified":"1f938-1f3fb","native":"🤸🏻"},{"unified":"1f938-1f3fc","native":"🤸🏼"},{"unified":"1f938-1f3fd","native":"🤸🏽"},{"unified":"1f938-1f3fe","native":"🤸🏾"},{"unified":"1f938-1f3ff","native":"🤸🏿"}],"version":3},"man-cartwheeling":{"id":"man-cartwheeling","name":"Man Cartwheeling","keywords":["gymnastics"],"skins":[{"unified":"1f938-200d-2642-fe0f","native":"🤸♂️"},{"unified":"1f938-1f3fb-200d-2642-fe0f","native":"🤸🏻♂️"},{"unified":"1f938-1f3fc-200d-2642-fe0f","native":"🤸🏼♂️"},{"unified":"1f938-1f3fd-200d-2642-fe0f","native":"🤸🏽♂️"},{"unified":"1f938-1f3fe-200d-2642-fe0f","native":"🤸🏾♂️"},{"unified":"1f938-1f3ff-200d-2642-fe0f","native":"🤸🏿♂️"}],"version":4},"woman-cartwheeling":{"id":"woman-cartwheeling","name":"Woman Cartwheeling","keywords":["gymnastics"],"skins":[{"unified":"1f938-200d-2640-fe0f","native":"🤸♀️"},{"unified":"1f938-1f3fb-200d-2640-fe0f","native":"🤸🏻♀️"},{"unified":"1f938-1f3fc-200d-2640-fe0f","native":"🤸🏼♀️"},{"unified":"1f938-1f3fd-200d-2640-fe0f","native":"🤸🏽♀️"},{"unified":"1f938-1f3fe-200d-2640-fe0f","native":"🤸🏾♀️"},{"unified":"1f938-1f3ff-200d-2640-fe0f","native":"🤸🏿♀️"}],"version":4},"wrestlers":{"id":"wrestlers","name":"Wrestlers","keywords":["people","wrestling","sport"],"skins":[{"unified":"1f93c","native":"🤼"}],"version":3},"man-wrestling":{"id":"man-wrestling","name":"Men Wrestling","keywords":["man","sports","wrestlers"],"skins":[{"unified":"1f93c-200d-2642-fe0f","native":"🤼♂️"}],"version":4},"woman-wrestling":{"id":"woman-wrestling","name":"Women Wrestling","keywords":["woman","sports","wrestlers"],"skins":[{"unified":"1f93c-200d-2640-fe0f","native":"🤼♀️"}],"version":4},"water_polo":{"id":"water_polo","name":"Water Polo","keywords":["person","playing","sport"],"skins":[{"unified":"1f93d","native":"🤽"},{"unified":"1f93d-1f3fb","native":"🤽🏻"},{"unified":"1f93d-1f3fc","native":"🤽🏼"},{"unified":"1f93d-1f3fd","native":"🤽🏽"},{"unified":"1f93d-1f3fe","native":"🤽🏾"},{"unified":"1f93d-1f3ff","native":"🤽🏿"}],"version":3},"man-playing-water-polo":{"id":"man-playing-water-polo","name":"Man Playing Water Polo","keywords":["playing-water-polo","sports","pool"],"skins":[{"unified":"1f93d-200d-2642-fe0f","native":"🤽♂️"},{"unified":"1f93d-1f3fb-200d-2642-fe0f","native":"🤽🏻♂️"},{"unified":"1f93d-1f3fc-200d-2642-fe0f","native":"🤽🏼♂️"},{"unified":"1f93d-1f3fd-200d-2642-fe0f","native":"🤽🏽♂️"},{"unified":"1f93d-1f3fe-200d-2642-fe0f","native":"🤽🏾♂️"},{"unified":"1f93d-1f3ff-200d-2642-fe0f","native":"🤽🏿♂️"}],"version":4},"woman-playing-water-polo":{"id":"woman-playing-water-polo","name":"Woman Playing Water Polo","keywords":["playing-water-polo","sports","pool"],"skins":[{"unified":"1f93d-200d-2640-fe0f","native":"🤽♀️"},{"unified":"1f93d-1f3fb-200d-2640-fe0f","native":"🤽🏻♀️"},{"unified":"1f93d-1f3fc-200d-2640-fe0f","native":"🤽🏼♀️"},{"unified":"1f93d-1f3fd-200d-2640-fe0f","native":"🤽🏽♀️"},{"unified":"1f93d-1f3fe-200d-2640-fe0f","native":"🤽🏾♀️"},{"unified":"1f93d-1f3ff-200d-2640-fe0f","native":"🤽🏿♀️"}],"version":4},"handball":{"id":"handball","name":"Handball","keywords":["person","playing","sport"],"skins":[{"unified":"1f93e","native":"🤾"},{"unified":"1f93e-1f3fb","native":"🤾🏻"},{"unified":"1f93e-1f3fc","native":"🤾🏼"},{"unified":"1f93e-1f3fd","native":"🤾🏽"},{"unified":"1f93e-1f3fe","native":"🤾🏾"},{"unified":"1f93e-1f3ff","native":"🤾🏿"}],"version":3},"man-playing-handball":{"id":"man-playing-handball","name":"Man Playing Handball","keywords":["playing-handball","sports"],"skins":[{"unified":"1f93e-200d-2642-fe0f","native":"🤾♂️"},{"unified":"1f93e-1f3fb-200d-2642-fe0f","native":"🤾🏻♂️"},{"unified":"1f93e-1f3fc-200d-2642-fe0f","native":"🤾🏼♂️"},{"unified":"1f93e-1f3fd-200d-2642-fe0f","native":"🤾🏽♂️"},{"unified":"1f93e-1f3fe-200d-2642-fe0f","native":"🤾🏾♂️"},{"unified":"1f93e-1f3ff-200d-2642-fe0f","native":"🤾🏿♂️"}],"version":4},"woman-playing-handball":{"id":"woman-playing-handball","name":"Woman Playing Handball","keywords":["playing-handball","sports"],"skins":[{"unified":"1f93e-200d-2640-fe0f","native":"🤾♀️"},{"unified":"1f93e-1f3fb-200d-2640-fe0f","native":"🤾🏻♀️"},{"unified":"1f93e-1f3fc-200d-2640-fe0f","native":"🤾🏼♀️"},{"unified":"1f93e-1f3fd-200d-2640-fe0f","native":"🤾🏽♀️"},{"unified":"1f93e-1f3fe-200d-2640-fe0f","native":"🤾🏾♀️"},{"unified":"1f93e-1f3ff-200d-2640-fe0f","native":"🤾🏿♀️"}],"version":4},"juggling":{"id":"juggling","name":"Juggling","keywords":["person","performance","balance"],"skins":[{"unified":"1f939","native":"🤹"},{"unified":"1f939-1f3fb","native":"🤹🏻"},{"unified":"1f939-1f3fc","native":"🤹🏼"},{"unified":"1f939-1f3fd","native":"🤹🏽"},{"unified":"1f939-1f3fe","native":"🤹🏾"},{"unified":"1f939-1f3ff","native":"🤹🏿"}],"version":3},"man-juggling":{"id":"man-juggling","name":"Man Juggling","keywords":["juggle","balance","skill","multitask"],"skins":[{"unified":"1f939-200d-2642-fe0f","native":"🤹♂️"},{"unified":"1f939-1f3fb-200d-2642-fe0f","native":"🤹🏻♂️"},{"unified":"1f939-1f3fc-200d-2642-fe0f","native":"🤹🏼♂️"},{"unified":"1f939-1f3fd-200d-2642-fe0f","native":"🤹🏽♂️"},{"unified":"1f939-1f3fe-200d-2642-fe0f","native":"🤹🏾♂️"},{"unified":"1f939-1f3ff-200d-2642-fe0f","native":"🤹🏿♂️"}],"version":4},"woman-juggling":{"id":"woman-juggling","name":"Woman Juggling","keywords":["juggle","balance","skill","multitask"],"skins":[{"unified":"1f939-200d-2640-fe0f","native":"🤹♀️"},{"unified":"1f939-1f3fb-200d-2640-fe0f","native":"🤹🏻♀️"},{"unified":"1f939-1f3fc-200d-2640-fe0f","native":"🤹🏼♀️"},{"unified":"1f939-1f3fd-200d-2640-fe0f","native":"🤹🏽♀️"},{"unified":"1f939-1f3fe-200d-2640-fe0f","native":"🤹🏾♀️"},{"unified":"1f939-1f3ff-200d-2640-fe0f","native":"🤹🏿♀️"}],"version":4},"person_in_lotus_position":{"id":"person_in_lotus_position","name":"Person in Lotus Position","keywords":["meditate"],"skins":[{"unified":"1f9d8","native":"🧘"},{"unified":"1f9d8-1f3fb","native":"🧘🏻"},{"unified":"1f9d8-1f3fc","native":"🧘🏼"},{"unified":"1f9d8-1f3fd","native":"🧘🏽"},{"unified":"1f9d8-1f3fe","native":"🧘🏾"},{"unified":"1f9d8-1f3ff","native":"🧘🏿"}],"version":5},"man_in_lotus_position":{"id":"man_in_lotus_position","name":"Man in Lotus Position","keywords":["male","meditation","yoga","serenity","zen","mindfulness"],"skins":[{"unified":"1f9d8-200d-2642-fe0f","native":"🧘♂️"},{"unified":"1f9d8-1f3fb-200d-2642-fe0f","native":"🧘🏻♂️"},{"unified":"1f9d8-1f3fc-200d-2642-fe0f","native":"🧘🏼♂️"},{"unified":"1f9d8-1f3fd-200d-2642-fe0f","native":"🧘🏽♂️"},{"unified":"1f9d8-1f3fe-200d-2642-fe0f","native":"🧘🏾♂️"},{"unified":"1f9d8-1f3ff-200d-2642-fe0f","native":"🧘🏿♂️"}],"version":5},"woman_in_lotus_position":{"id":"woman_in_lotus_position","name":"Woman in Lotus Position","keywords":["female","meditation","yoga","serenity","zen","mindfulness"],"skins":[{"unified":"1f9d8-200d-2640-fe0f","native":"🧘♀️"},{"unified":"1f9d8-1f3fb-200d-2640-fe0f","native":"🧘🏻♀️"},{"unified":"1f9d8-1f3fc-200d-2640-fe0f","native":"🧘🏼♀️"},{"unified":"1f9d8-1f3fd-200d-2640-fe0f","native":"🧘🏽♀️"},{"unified":"1f9d8-1f3fe-200d-2640-fe0f","native":"🧘🏾♀️"},{"unified":"1f9d8-1f3ff-200d-2640-fe0f","native":"🧘🏿♀️"}],"version":5},"bath":{"id":"bath","name":"Bath","keywords":["person","taking","clean","shower","bathroom"],"skins":[{"unified":"1f6c0","native":"🛀"},{"unified":"1f6c0-1f3fb","native":"🛀🏻"},{"unified":"1f6c0-1f3fc","native":"🛀🏼"},{"unified":"1f6c0-1f3fd","native":"🛀🏽"},{"unified":"1f6c0-1f3fe","native":"🛀🏾"},{"unified":"1f6c0-1f3ff","native":"🛀🏿"}],"version":1},"sleeping_accommodation":{"id":"sleeping_accommodation","name":"Person in Bed","keywords":["sleeping","accommodation","rest"],"skins":[{"unified":"1f6cc","native":"🛌"},{"unified":"1f6cc-1f3fb","native":"🛌🏻"},{"unified":"1f6cc-1f3fc","native":"🛌🏼"},{"unified":"1f6cc-1f3fd","native":"🛌🏽"},{"unified":"1f6cc-1f3fe","native":"🛌🏾"},{"unified":"1f6cc-1f3ff","native":"🛌🏿"}],"version":1},"people_holding_hands":{"id":"people_holding_hands","name":"People Holding Hands","keywords":["friendship"],"skins":[{"unified":"1f9d1-200d-1f91d-200d-1f9d1","native":"🧑🤝🧑"},{"unified":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","native":"🧑🏻🤝🧑🏻"},{"unified":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","native":"🧑🏼🤝🧑🏼"},{"unified":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","native":"🧑🏽🤝🧑🏽"},{"unified":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","native":"🧑🏾🤝🧑🏾"},{"unified":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","native":"🧑🏿🤝🧑🏿"}],"version":12},"two_women_holding_hands":{"id":"two_women_holding_hands","name":"Women Holding Hands","keywords":["two","pair","friendship","couple","love","like","female","people","human"],"skins":[{"unified":"1f46d","native":"👭"},{"unified":"1f46d-1f3fb","native":"👭🏻"},{"unified":"1f46d-1f3fc","native":"👭🏼"},{"unified":"1f46d-1f3fd","native":"👭🏽"},{"unified":"1f46d-1f3fe","native":"👭🏾"},{"unified":"1f46d-1f3ff","native":"👭🏿"}],"version":1},"man_and_woman_holding_hands":{"id":"man_and_woman_holding_hands","name":"Man and Woman Holding Hands","keywords":["couple","pair","people","human","love","date","dating","like","affection","valentines","marriage"],"skins":[{"unified":"1f46b","native":"👫"},{"unified":"1f46b-1f3fb","native":"👫🏻"},{"unified":"1f46b-1f3fc","native":"👫🏼"},{"unified":"1f46b-1f3fd","native":"👫🏽"},{"unified":"1f46b-1f3fe","native":"👫🏾"},{"unified":"1f46b-1f3ff","native":"👫🏿"}],"version":1},"two_men_holding_hands":{"id":"two_men_holding_hands","name":"Men Holding Hands","keywords":["two","pair","couple","love","like","bromance","friendship","people","human"],"skins":[{"unified":"1f46c","native":"👬"},{"unified":"1f46c-1f3fb","native":"👬🏻"},{"unified":"1f46c-1f3fc","native":"👬🏼"},{"unified":"1f46c-1f3fd","native":"👬🏽"},{"unified":"1f46c-1f3fe","native":"👬🏾"},{"unified":"1f46c-1f3ff","native":"👬🏿"}],"version":1},"couplekiss":{"id":"couplekiss","name":"Kiss","keywords":["couplekiss","pair","valentines","love","like","dating","marriage"],"skins":[{"unified":"1f48f","native":"💏"},{"unified":"1f48f-1f3fb","native":"💏🏻"},{"unified":"1f48f-1f3fc","native":"💏🏼"},{"unified":"1f48f-1f3fd","native":"💏🏽"},{"unified":"1f48f-1f3fe","native":"💏🏾"},{"unified":"1f48f-1f3ff","native":"💏🏿"}],"version":1},"woman-kiss-man":{"id":"woman-kiss-man","name":"Kiss: Woman, Man","keywords":["woman","kiss-man","kiss","love"],"skins":[{"unified":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","native":"👩❤️💋👨"},{"unified":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","native":"👩🏻❤️💋👨🏻"},{"unified":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","native":"👩🏼❤️💋👨🏼"},{"unified":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","native":"👩🏽❤️💋👨🏽"},{"unified":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","native":"👩🏾❤️💋👨🏾"},{"unified":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","native":"👩🏿❤️💋👨🏿"}],"version":2},"man-kiss-man":{"id":"man-kiss-man","name":"Kiss: Man, Man","keywords":["kiss-man","kiss","pair","valentines","love","like","dating","marriage"],"skins":[{"unified":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","native":"👨❤️💋👨"},{"unified":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","native":"👨🏻❤️💋👨🏻"},{"unified":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","native":"👨🏼❤️💋👨🏼"},{"unified":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","native":"👨🏽❤️💋👨🏽"},{"unified":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","native":"👨🏾❤️💋👨🏾"},{"unified":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","native":"👨🏿❤️💋👨🏿"}],"version":2},"woman-kiss-woman":{"id":"woman-kiss-woman","name":"Kiss: Woman, Woman","keywords":["kiss-woman","kiss","pair","valentines","love","like","dating","marriage"],"skins":[{"unified":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","native":"👩❤️💋👩"},{"unified":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","native":"👩🏻❤️💋👩🏻"},{"unified":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","native":"👩🏼❤️💋👩🏼"},{"unified":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","native":"👩🏽❤️💋👩🏽"},{"unified":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","native":"👩🏾❤️💋👩🏾"},{"unified":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","native":"👩🏿❤️💋👩🏿"}],"version":2},"couple_with_heart":{"id":"couple_with_heart","name":"Couple with Heart","keywords":["pair","love","like","affection","human","dating","valentines","marriage"],"skins":[{"unified":"1f491","native":"💑"},{"unified":"1f491-1f3fb","native":"💑🏻"},{"unified":"1f491-1f3fc","native":"💑🏼"},{"unified":"1f491-1f3fd","native":"💑🏽"},{"unified":"1f491-1f3fe","native":"💑🏾"},{"unified":"1f491-1f3ff","native":"💑🏿"}],"version":1},"woman-heart-man":{"id":"woman-heart-man","name":"Couple with Heart: Woman, Man","keywords":["woman","heart-man","heart","love"],"skins":[{"unified":"1f469-200d-2764-fe0f-200d-1f468","native":"👩❤️👨"},{"unified":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","native":"👩🏻❤️👨🏻"},{"unified":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","native":"👩🏼❤️👨🏼"},{"unified":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","native":"👩🏽❤️👨🏽"},{"unified":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","native":"👩🏾❤️👨🏾"},{"unified":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","native":"👩🏿❤️👨🏿"}],"version":2},"man-heart-man":{"id":"man-heart-man","name":"Couple with Heart: Man, Man","keywords":["heart-man","heart","pair","love","like","affection","human","dating","valentines","marriage"],"skins":[{"unified":"1f468-200d-2764-fe0f-200d-1f468","native":"👨❤️👨"},{"unified":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","native":"👨🏻❤️👨🏻"},{"unified":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","native":"👨🏼❤️👨🏼"},{"unified":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","native":"👨🏽❤️👨🏽"},{"unified":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","native":"👨🏾❤️👨🏾"},{"unified":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","native":"👨🏿❤️👨🏿"}],"version":2},"woman-heart-woman":{"id":"woman-heart-woman","name":"Couple with Heart: Woman, Woman","keywords":["heart-woman","heart","pair","love","like","affection","human","dating","valentines","marriage"],"skins":[{"unified":"1f469-200d-2764-fe0f-200d-1f469","native":"👩❤️👩"},{"unified":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","native":"👩🏻❤️👩🏻"},{"unified":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","native":"👩🏼❤️👩🏼"},{"unified":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","native":"👩🏽❤️👩🏽"},{"unified":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","native":"👩🏾❤️👩🏾"},{"unified":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","native":"👩🏿❤️👩🏿"}],"version":2},"family":{"id":"family","name":"Family","keywords":["home","parents","child","mom","dad","father","mother","people","human"],"skins":[{"unified":"1f46a","native":"👪"}],"version":1},"man-woman-boy":{"id":"man-woman-boy","name":"Family: Man, Woman, Boy","keywords":["man","woman-boy","family","woman","love"],"skins":[{"unified":"1f468-200d-1f469-200d-1f466","native":"👨👩👦"}],"version":2},"man-woman-girl":{"id":"man-woman-girl","name":"Family: Man, Woman, Girl","keywords":["man","woman-girl","family","woman","home","parents","people","human","child"],"skins":[{"unified":"1f468-200d-1f469-200d-1f467","native":"👨👩👧"}],"version":2},"man-woman-girl-boy":{"id":"man-woman-girl-boy","name":"Family: Man, Woman, Girl, Boy","keywords":["man","woman-girl-boy","family","woman","girl","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f469-200d-1f467-200d-1f466","native":"👨👩👧👦"}],"version":2},"man-woman-boy-boy":{"id":"man-woman-boy-boy","name":"Family: Man, Woman, Boy, Boy","keywords":["man","woman-boy-boy","family","woman","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f469-200d-1f466-200d-1f466","native":"👨👩👦👦"}],"version":2},"man-woman-girl-girl":{"id":"man-woman-girl-girl","name":"Family: Man, Woman, Girl, Girl","keywords":["man","woman-girl-girl","family","woman","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f469-200d-1f467-200d-1f467","native":"👨👩👧👧"}],"version":2},"man-man-boy":{"id":"man-man-boy","name":"Family: Man, Man, Boy","keywords":["man","man-boy","family","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f468-200d-1f466","native":"👨👨👦"}],"version":2},"man-man-girl":{"id":"man-man-girl","name":"Family: Man, Man, Girl","keywords":["man","man-girl","family","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f468-200d-1f467","native":"👨👨👧"}],"version":2},"man-man-girl-boy":{"id":"man-man-girl-boy","name":"Family: Man, Man, Girl, Boy","keywords":["man","man-girl-boy","family","girl","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f468-200d-1f467-200d-1f466","native":"👨👨👧👦"}],"version":2},"man-man-boy-boy":{"id":"man-man-boy-boy","name":"Family: Man, Man, Boy, Boy","keywords":["man","man-boy-boy","family","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f468-200d-1f466-200d-1f466","native":"👨👨👦👦"}],"version":2},"man-man-girl-girl":{"id":"man-man-girl-girl","name":"Family: Man, Man, Girl, Girl","keywords":["man","man-girl-girl","family","home","parents","people","human","children"],"skins":[{"unified":"1f468-200d-1f468-200d-1f467-200d-1f467","native":"👨👨👧👧"}],"version":2},"woman-woman-boy":{"id":"woman-woman-boy","name":"Family: Woman, Woman, Boy","keywords":["woman","woman-boy","family","home","parents","people","human","children"],"skins":[{"unified":"1f469-200d-1f469-200d-1f466","native":"👩👩👦"}],"version":2},"woman-woman-girl":{"id":"woman-woman-girl","name":"Family: Woman, Woman, Girl","keywords":["woman","woman-girl","family","home","parents","people","human","children"],"skins":[{"unified":"1f469-200d-1f469-200d-1f467","native":"👩👩👧"}],"version":2},"woman-woman-girl-boy":{"id":"woman-woman-girl-boy","name":"Family: Woman, Woman, Girl, Boy","keywords":["woman","woman-girl-boy","family","girl","home","parents","people","human","children"],"skins":[{"unified":"1f469-200d-1f469-200d-1f467-200d-1f466","native":"👩👩👧👦"}],"version":2},"woman-woman-boy-boy":{"id":"woman-woman-boy-boy","name":"Family: Woman, Woman, Boy, Boy","keywords":["woman","woman-boy-boy","family","home","parents","people","human","children"],"skins":[{"unified":"1f469-200d-1f469-200d-1f466-200d-1f466","native":"👩👩👦👦"}],"version":2},"woman-woman-girl-girl":{"id":"woman-woman-girl-girl","name":"Family: Woman, Woman, Girl, Girl","keywords":["woman","woman-girl-girl","family","home","parents","people","human","children"],"skins":[{"unified":"1f469-200d-1f469-200d-1f467-200d-1f467","native":"👩👩👧👧"}],"version":2},"man-boy":{"id":"man-boy","name":"Family: Man, Boy","keywords":["man","family","home","parent","people","human","child"],"skins":[{"unified":"1f468-200d-1f466","native":"👨👦"}],"version":4},"man-boy-boy":{"id":"man-boy-boy","name":"Family: Man, Boy, Boy","keywords":["man","boy-boy","family","home","parent","people","human","children"],"skins":[{"unified":"1f468-200d-1f466-200d-1f466","native":"👨👦👦"}],"version":4},"man-girl":{"id":"man-girl","name":"Family: Man, Girl","keywords":["man","family","home","parent","people","human","child"],"skins":[{"unified":"1f468-200d-1f467","native":"👨👧"}],"version":4},"man-girl-boy":{"id":"man-girl-boy","name":"Family: Man, Girl, Boy","keywords":["man","girl-boy","family","girl","home","parent","people","human","children"],"skins":[{"unified":"1f468-200d-1f467-200d-1f466","native":"👨👧👦"}],"version":4},"man-girl-girl":{"id":"man-girl-girl","name":"Family: Man, Girl, Girl","keywords":["man","girl-girl","family","home","parent","people","human","children"],"skins":[{"unified":"1f468-200d-1f467-200d-1f467","native":"👨👧👧"}],"version":4},"woman-boy":{"id":"woman-boy","name":"Family: Woman, Boy","keywords":["woman","family","home","parent","people","human","child"],"skins":[{"unified":"1f469-200d-1f466","native":"👩👦"}],"version":4},"woman-boy-boy":{"id":"woman-boy-boy","name":"Family: Woman, Boy, Boy","keywords":["woman","boy-boy","family","home","parent","people","human","children"],"skins":[{"unified":"1f469-200d-1f466-200d-1f466","native":"👩👦👦"}],"version":4},"woman-girl":{"id":"woman-girl","name":"Family: Woman, Girl","keywords":["woman","family","home","parent","people","human","child"],"skins":[{"unified":"1f469-200d-1f467","native":"👩👧"}],"version":4},"woman-girl-boy":{"id":"woman-girl-boy","name":"Family: Woman, Girl, Boy","keywords":["woman","girl-boy","family","girl","home","parent","people","human","children"],"skins":[{"unified":"1f469-200d-1f467-200d-1f466","native":"👩👧👦"}],"version":4},"woman-girl-girl":{"id":"woman-girl-girl","name":"Family: Woman, Girl, Girl","keywords":["woman","girl-girl","family","home","parent","people","human","children"],"skins":[{"unified":"1f469-200d-1f467-200d-1f467","native":"👩👧👧"}],"version":4},"speaking_head_in_silhouette":{"id":"speaking_head_in_silhouette","name":"Speaking Head","keywords":["in","silhouette","user","person","human","sing","say","talk"],"skins":[{"unified":"1f5e3-fe0f","native":"🗣️"}],"version":1},"bust_in_silhouette":{"id":"bust_in_silhouette","name":"Bust in Silhouette","keywords":["user","person","human"],"skins":[{"unified":"1f464","native":"👤"}],"version":1},"busts_in_silhouette":{"id":"busts_in_silhouette","name":"Busts in Silhouette","keywords":["user","person","human","group","team"],"skins":[{"unified":"1f465","native":"👥"}],"version":1},"people_hugging":{"id":"people_hugging","name":"People Hugging","keywords":["care"],"skins":[{"unified":"1fac2","native":"🫂"}],"version":13},"footprints":{"id":"footprints","name":"Footprints","keywords":["feet","tracking","walking","beach"],"skins":[{"unified":"1f463","native":"👣"}],"version":1},"monkey_face":{"id":"monkey_face","name":"Monkey Face","emoticons":[":o)"],"keywords":["animal","nature","circus"],"skins":[{"unified":"1f435","native":"🐵"}],"version":1},"monkey":{"id":"monkey","name":"Monkey","keywords":["animal","nature","banana","circus"],"skins":[{"unified":"1f412","native":"🐒"}],"version":1},"gorilla":{"id":"gorilla","name":"Gorilla","keywords":["animal","nature","circus"],"skins":[{"unified":"1f98d","native":"🦍"}],"version":3},"orangutan":{"id":"orangutan","name":"Orangutan","keywords":["animal"],"skins":[{"unified":"1f9a7","native":"🦧"}],"version":12},"dog":{"id":"dog","name":"Dog Face","keywords":["animal","friend","nature","woof","puppy","pet","faithful"],"skins":[{"unified":"1f436","native":"🐶"}],"version":1},"dog2":{"id":"dog2","name":"Dog","keywords":["dog2","animal","nature","friend","doge","pet","faithful"],"skins":[{"unified":"1f415","native":"🐕"}],"version":1},"guide_dog":{"id":"guide_dog","name":"Guide Dog","keywords":["animal","blind"],"skins":[{"unified":"1f9ae","native":"🦮"}],"version":12},"service_dog":{"id":"service_dog","name":"Service Dog","keywords":["blind","animal"],"skins":[{"unified":"1f415-200d-1f9ba","native":"🐕🦺"}],"version":12},"poodle":{"id":"poodle","name":"Poodle","keywords":["dog","animal","101","nature","pet"],"skins":[{"unified":"1f429","native":"🐩"}],"version":1},"wolf":{"id":"wolf","name":"Wolf","keywords":["animal","nature","wild"],"skins":[{"unified":"1f43a","native":"🐺"}],"version":1},"fox_face":{"id":"fox_face","name":"Fox","keywords":["face","animal","nature"],"skins":[{"unified":"1f98a","native":"🦊"}],"version":3},"raccoon":{"id":"raccoon","name":"Raccoon","keywords":["animal","nature"],"skins":[{"unified":"1f99d","native":"🦝"}],"version":11},"cat":{"id":"cat","name":"Cat Face","keywords":["animal","meow","nature","pet","kitten"],"skins":[{"unified":"1f431","native":"🐱"}],"version":1},"cat2":{"id":"cat2","name":"Cat","keywords":["cat2","animal","meow","pet","cats"],"skins":[{"unified":"1f408","native":"🐈"}],"version":1},"black_cat":{"id":"black_cat","name":"Black Cat","keywords":["superstition","luck"],"skins":[{"unified":"1f408-200d-2b1b","native":"🐈⬛"}],"version":13},"lion_face":{"id":"lion_face","name":"Lion","keywords":["face","animal","nature"],"skins":[{"unified":"1f981","native":"🦁"}],"version":1},"tiger":{"id":"tiger","name":"Tiger Face","keywords":["animal","cat","danger","wild","nature","roar"],"skins":[{"unified":"1f42f","native":"🐯"}],"version":1},"tiger2":{"id":"tiger2","name":"Tiger","keywords":["tiger2","animal","nature","roar"],"skins":[{"unified":"1f405","native":"🐅"}],"version":1},"leopard":{"id":"leopard","name":"Leopard","keywords":["animal","nature"],"skins":[{"unified":"1f406","native":"🐆"}],"version":1},"horse":{"id":"horse","name":"Horse Face","keywords":["animal","brown","nature"],"skins":[{"unified":"1f434","native":"🐴"}],"version":1},"moose":{"id":"moose","name":"Moose","keywords":["shrek","canada","sweden","sven","cool"],"skins":[{"unified":"1face","native":"🫎"}],"version":15},"donkey":{"id":"donkey","name":"Donkey","keywords":["eeyore","mule"],"skins":[{"unified":"1facf","native":"🫏"}],"version":15},"racehorse":{"id":"racehorse","name":"Horse","keywords":["racehorse","animal","gamble","luck"],"skins":[{"unified":"1f40e","native":"🐎"}],"version":1},"unicorn_face":{"id":"unicorn_face","name":"Unicorn","keywords":["face","animal","nature","mystical"],"skins":[{"unified":"1f984","native":"🦄"}],"version":1},"zebra_face":{"id":"zebra_face","name":"Zebra","keywords":["face","animal","nature","stripes","safari"],"skins":[{"unified":"1f993","native":"🦓"}],"version":5},"deer":{"id":"deer","name":"Deer","keywords":["animal","nature","horns","venison"],"skins":[{"unified":"1f98c","native":"🦌"}],"version":3},"bison":{"id":"bison","name":"Bison","keywords":["ox"],"skins":[{"unified":"1f9ac","native":"🦬"}],"version":13},"cow":{"id":"cow","name":"Cow Face","keywords":["beef","ox","animal","nature","moo","milk"],"skins":[{"unified":"1f42e","native":"🐮"}],"version":1},"ox":{"id":"ox","name":"Ox","keywords":["animal","cow","beef"],"skins":[{"unified":"1f402","native":"🐂"}],"version":1},"water_buffalo":{"id":"water_buffalo","name":"Water Buffalo","keywords":["animal","nature","ox","cow"],"skins":[{"unified":"1f403","native":"🐃"}],"version":1},"cow2":{"id":"cow2","name":"Cow","keywords":["cow2","beef","ox","animal","nature","moo","milk"],"skins":[{"unified":"1f404","native":"🐄"}],"version":1},"pig":{"id":"pig","name":"Pig Face","keywords":["animal","oink","nature"],"skins":[{"unified":"1f437","native":"🐷"}],"version":1},"pig2":{"id":"pig2","name":"Pig","keywords":["pig2","animal","nature"],"skins":[{"unified":"1f416","native":"🐖"}],"version":1},"boar":{"id":"boar","name":"Boar","keywords":["animal","nature"],"skins":[{"unified":"1f417","native":"🐗"}],"version":1},"pig_nose":{"id":"pig_nose","name":"Pig Nose","keywords":["animal","oink"],"skins":[{"unified":"1f43d","native":"🐽"}],"version":1},"ram":{"id":"ram","name":"Ram","keywords":["animal","sheep","nature"],"skins":[{"unified":"1f40f","native":"🐏"}],"version":1},"sheep":{"id":"sheep","name":"Ewe","keywords":["sheep","animal","nature","wool","shipit"],"skins":[{"unified":"1f411","native":"🐑"}],"version":1},"goat":{"id":"goat","name":"Goat","keywords":["animal","nature"],"skins":[{"unified":"1f410","native":"🐐"}],"version":1},"dromedary_camel":{"id":"dromedary_camel","name":"Camel","keywords":["dromedary","animal","hot","desert","hump"],"skins":[{"unified":"1f42a","native":"🐪"}],"version":1},"camel":{"id":"camel","name":"Bactrian Camel","keywords":["two","hump","animal","nature","hot","desert"],"skins":[{"unified":"1f42b","native":"🐫"}],"version":1},"llama":{"id":"llama","name":"Llama","keywords":["animal","nature","alpaca"],"skins":[{"unified":"1f999","native":"🦙"}],"version":11},"giraffe_face":{"id":"giraffe_face","name":"Giraffe","keywords":["face","animal","nature","spots","safari"],"skins":[{"unified":"1f992","native":"🦒"}],"version":5},"elephant":{"id":"elephant","name":"Elephant","keywords":["animal","nature","nose","th","circus"],"skins":[{"unified":"1f418","native":"🐘"}],"version":1},"mammoth":{"id":"mammoth","name":"Mammoth","keywords":["elephant","tusks"],"skins":[{"unified":"1f9a3","native":"🦣"}],"version":13},"rhinoceros":{"id":"rhinoceros","name":"Rhinoceros","keywords":["animal","nature","horn"],"skins":[{"unified":"1f98f","native":"🦏"}],"version":3},"hippopotamus":{"id":"hippopotamus","name":"Hippopotamus","keywords":["animal","nature"],"skins":[{"unified":"1f99b","native":"🦛"}],"version":11},"mouse":{"id":"mouse","name":"Mouse Face","keywords":["animal","nature","cheese","wedge","rodent"],"skins":[{"unified":"1f42d","native":"🐭"}],"version":1},"mouse2":{"id":"mouse2","name":"Mouse","keywords":["mouse2","animal","nature","rodent"],"skins":[{"unified":"1f401","native":"🐁"}],"version":1},"rat":{"id":"rat","name":"Rat","keywords":["animal","mouse","rodent"],"skins":[{"unified":"1f400","native":"🐀"}],"version":1},"hamster":{"id":"hamster","name":"Hamster","keywords":["animal","nature"],"skins":[{"unified":"1f439","native":"🐹"}],"version":1},"rabbit":{"id":"rabbit","name":"Rabbit Face","keywords":["animal","nature","pet","spring","magic","bunny"],"skins":[{"unified":"1f430","native":"🐰"}],"version":1},"rabbit2":{"id":"rabbit2","name":"Rabbit","keywords":["rabbit2","animal","nature","pet","magic","spring"],"skins":[{"unified":"1f407","native":"🐇"}],"version":1},"chipmunk":{"id":"chipmunk","name":"Chipmunk","keywords":["animal","nature","rodent","squirrel"],"skins":[{"unified":"1f43f-fe0f","native":"🐿️"}],"version":1},"beaver":{"id":"beaver","name":"Beaver","keywords":["animal","rodent"],"skins":[{"unified":"1f9ab","native":"🦫"}],"version":13},"hedgehog":{"id":"hedgehog","name":"Hedgehog","keywords":["animal","nature","spiny"],"skins":[{"unified":"1f994","native":"🦔"}],"version":5},"bat":{"id":"bat","name":"Bat","keywords":["animal","nature","blind","vampire"],"skins":[{"unified":"1f987","native":"🦇"}],"version":3},"bear":{"id":"bear","name":"Bear","keywords":["animal","nature","wild"],"skins":[{"unified":"1f43b","native":"🐻"}],"version":1},"polar_bear":{"id":"polar_bear","name":"Polar Bear","keywords":["animal","arctic"],"skins":[{"unified":"1f43b-200d-2744-fe0f","native":"🐻❄️"}],"version":13},"koala":{"id":"koala","name":"Koala","keywords":["animal","nature"],"skins":[{"unified":"1f428","native":"🐨"}],"version":1},"panda_face":{"id":"panda_face","name":"Panda","keywords":["face","animal","nature"],"skins":[{"unified":"1f43c","native":"🐼"}],"version":1},"sloth":{"id":"sloth","name":"Sloth","keywords":["animal"],"skins":[{"unified":"1f9a5","native":"🦥"}],"version":12},"otter":{"id":"otter","name":"Otter","keywords":["animal"],"skins":[{"unified":"1f9a6","native":"🦦"}],"version":12},"skunk":{"id":"skunk","name":"Skunk","keywords":["animal"],"skins":[{"unified":"1f9a8","native":"🦨"}],"version":12},"kangaroo":{"id":"kangaroo","name":"Kangaroo","keywords":["animal","nature","australia","joey","hop","marsupial"],"skins":[{"unified":"1f998","native":"🦘"}],"version":11},"badger":{"id":"badger","name":"Badger","keywords":["animal","nature","honey"],"skins":[{"unified":"1f9a1","native":"🦡"}],"version":11},"feet":{"id":"feet","name":"Paw Prints","keywords":["feet","animal","tracking","footprints","dog","cat","pet"],"skins":[{"unified":"1f43e","native":"🐾"}],"version":1},"turkey":{"id":"turkey","name":"Turkey","keywords":["animal","bird"],"skins":[{"unified":"1f983","native":"🦃"}],"version":1},"chicken":{"id":"chicken","name":"Chicken","keywords":["animal","cluck","nature","bird"],"skins":[{"unified":"1f414","native":"🐔"}],"version":1},"rooster":{"id":"rooster","name":"Rooster","keywords":["animal","nature","chicken"],"skins":[{"unified":"1f413","native":"🐓"}],"version":1},"hatching_chick":{"id":"hatching_chick","name":"Hatching Chick","keywords":["animal","chicken","egg","born","baby","bird"],"skins":[{"unified":"1f423","native":"🐣"}],"version":1},"baby_chick":{"id":"baby_chick","name":"Baby Chick","keywords":["animal","chicken","bird"],"skins":[{"unified":"1f424","native":"🐤"}],"version":1},"hatched_chick":{"id":"hatched_chick","name":"Front-Facing Baby Chick","keywords":["hatched","front","facing","animal","chicken","bird"],"skins":[{"unified":"1f425","native":"🐥"}],"version":1},"bird":{"id":"bird","name":"Bird","keywords":["animal","nature","fly","tweet","spring"],"skins":[{"unified":"1f426","native":"🐦"}],"version":1},"penguin":{"id":"penguin","name":"Penguin","keywords":["animal","nature"],"skins":[{"unified":"1f427","native":"🐧"}],"version":1},"dove_of_peace":{"id":"dove_of_peace","name":"Dove","keywords":["of","peace","animal","bird"],"skins":[{"unified":"1f54a-fe0f","native":"🕊️"}],"version":1},"eagle":{"id":"eagle","name":"Eagle","keywords":["animal","nature","bird"],"skins":[{"unified":"1f985","native":"🦅"}],"version":3},"duck":{"id":"duck","name":"Duck","keywords":["animal","nature","bird","mallard"],"skins":[{"unified":"1f986","native":"🦆"}],"version":3},"swan":{"id":"swan","name":"Swan","keywords":["animal","nature","bird"],"skins":[{"unified":"1f9a2","native":"🦢"}],"version":11},"owl":{"id":"owl","name":"Owl","keywords":["animal","nature","bird","hoot"],"skins":[{"unified":"1f989","native":"🦉"}],"version":3},"dodo":{"id":"dodo","name":"Dodo","keywords":["animal","bird"],"skins":[{"unified":"1f9a4","native":"🦤"}],"version":13},"feather":{"id":"feather","name":"Feather","keywords":["bird","fly"],"skins":[{"unified":"1fab6","native":"🪶"}],"version":13},"flamingo":{"id":"flamingo","name":"Flamingo","keywords":["animal"],"skins":[{"unified":"1f9a9","native":"🦩"}],"version":12},"peacock":{"id":"peacock","name":"Peacock","keywords":["animal","nature","peahen","bird"],"skins":[{"unified":"1f99a","native":"🦚"}],"version":11},"parrot":{"id":"parrot","name":"Parrot","keywords":["animal","nature","bird","pirate","talk"],"skins":[{"unified":"1f99c","native":"🦜"}],"version":11},"wing":{"id":"wing","name":"Wing","keywords":["angel","birds","flying"],"skins":[{"unified":"1fabd","native":"🪽"}],"version":15},"black_bird":{"id":"black_bird","name":"Black Bird","keywords":["crow"],"skins":[{"unified":"1f426-200d-2b1b","native":"🐦⬛"}],"version":15},"goose":{"id":"goose","name":"Goose","keywords":["silly","jemima","goosebumps"],"skins":[{"unified":"1fabf","native":"🪿"}],"version":15},"frog":{"id":"frog","name":"Frog","keywords":["animal","nature","croak","toad"],"skins":[{"unified":"1f438","native":"🐸"}],"version":1},"crocodile":{"id":"crocodile","name":"Crocodile","keywords":["animal","nature","reptile","lizard","alligator"],"skins":[{"unified":"1f40a","native":"🐊"}],"version":1},"turtle":{"id":"turtle","name":"Turtle","keywords":["animal","slow","nature","tortoise"],"skins":[{"unified":"1f422","native":"🐢"}],"version":1},"lizard":{"id":"lizard","name":"Lizard","keywords":["animal","nature","reptile"],"skins":[{"unified":"1f98e","native":"🦎"}],"version":3},"snake":{"id":"snake","name":"Snake","keywords":["animal","evil","nature","hiss","python"],"skins":[{"unified":"1f40d","native":"🐍"}],"version":1},"dragon_face":{"id":"dragon_face","name":"Dragon Face","keywords":["animal","myth","nature","chinese","green"],"skins":[{"unified":"1f432","native":"🐲"}],"version":1},"dragon":{"id":"dragon","name":"Dragon","keywords":["animal","myth","nature","chinese","green"],"skins":[{"unified":"1f409","native":"🐉"}],"version":1},"sauropod":{"id":"sauropod","name":"Sauropod","keywords":["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"skins":[{"unified":"1f995","native":"🦕"}],"version":5},"t-rex":{"id":"t-rex","name":"T-Rex","keywords":["t","rex","animal","nature","dinosaur","tyrannosaurus","extinct"],"skins":[{"unified":"1f996","native":"🦖"}],"version":5},"whale":{"id":"whale","name":"Spouting Whale","keywords":["animal","nature","sea","ocean"],"skins":[{"unified":"1f433","native":"🐳"}],"version":1},"whale2":{"id":"whale2","name":"Whale","keywords":["whale2","animal","nature","sea","ocean"],"skins":[{"unified":"1f40b","native":"🐋"}],"version":1},"dolphin":{"id":"dolphin","name":"Dolphin","keywords":["flipper","animal","nature","fish","sea","ocean","fins","beach"],"skins":[{"unified":"1f42c","native":"🐬"}],"version":1},"seal":{"id":"seal","name":"Seal","keywords":["animal","creature","sea"],"skins":[{"unified":"1f9ad","native":"🦭"}],"version":13},"fish":{"id":"fish","name":"Fish","keywords":["animal","food","nature"],"skins":[{"unified":"1f41f","native":"🐟"}],"version":1},"tropical_fish":{"id":"tropical_fish","name":"Tropical Fish","keywords":["animal","swim","ocean","beach","nemo"],"skins":[{"unified":"1f420","native":"🐠"}],"version":1},"blowfish":{"id":"blowfish","name":"Blowfish","keywords":["animal","nature","food","sea","ocean"],"skins":[{"unified":"1f421","native":"🐡"}],"version":1},"shark":{"id":"shark","name":"Shark","keywords":["animal","nature","fish","sea","ocean","jaws","fins","beach"],"skins":[{"unified":"1f988","native":"🦈"}],"version":3},"octopus":{"id":"octopus","name":"Octopus","keywords":["animal","creature","ocean","sea","nature","beach"],"skins":[{"unified":"1f419","native":"🐙"}],"version":1},"shell":{"id":"shell","name":"Spiral Shell","keywords":["nature","sea","beach"],"skins":[{"unified":"1f41a","native":"🐚"}],"version":1},"coral":{"id":"coral","name":"Coral","keywords":["ocean","sea","reef"],"skins":[{"unified":"1fab8","native":"🪸"}],"version":14},"jellyfish":{"id":"jellyfish","name":"Jellyfish","keywords":["sting","tentacles"],"skins":[{"unified":"1fabc","native":"🪼"}],"version":15},"snail":{"id":"snail","name":"Snail","keywords":["slow","animal","shell"],"skins":[{"unified":"1f40c","native":"🐌"}],"version":1},"butterfly":{"id":"butterfly","name":"Butterfly","keywords":["animal","insect","nature","caterpillar"],"skins":[{"unified":"1f98b","native":"🦋"}],"version":3},"bug":{"id":"bug","name":"Bug","keywords":["animal","insect","nature","worm"],"skins":[{"unified":"1f41b","native":"🐛"}],"version":1},"ant":{"id":"ant","name":"Ant","keywords":["animal","insect","nature","bug"],"skins":[{"unified":"1f41c","native":"🐜"}],"version":1},"bee":{"id":"bee","name":"Honeybee","keywords":["bee","animal","insect","nature","bug","spring","honey"],"skins":[{"unified":"1f41d","native":"🐝"}],"version":1},"beetle":{"id":"beetle","name":"Beetle","keywords":["insect"],"skins":[{"unified":"1fab2","native":"🪲"}],"version":13},"ladybug":{"id":"ladybug","name":"Lady Beetle","keywords":["ladybug","animal","insect","nature"],"skins":[{"unified":"1f41e","native":"🐞"}],"version":1},"cricket":{"id":"cricket","name":"Cricket","keywords":["animal","chirp"],"skins":[{"unified":"1f997","native":"🦗"}],"version":5},"cockroach":{"id":"cockroach","name":"Cockroach","keywords":["insect","pests"],"skins":[{"unified":"1fab3","native":"🪳"}],"version":13},"spider":{"id":"spider","name":"Spider","keywords":["animal","arachnid"],"skins":[{"unified":"1f577-fe0f","native":"🕷️"}],"version":1},"spider_web":{"id":"spider_web","name":"Spider Web","keywords":["animal","insect","arachnid","silk"],"skins":[{"unified":"1f578-fe0f","native":"🕸️"}],"version":1},"scorpion":{"id":"scorpion","name":"Scorpion","keywords":["animal","arachnid"],"skins":[{"unified":"1f982","native":"🦂"}],"version":1},"mosquito":{"id":"mosquito","name":"Mosquito","keywords":["animal","nature","insect","malaria"],"skins":[{"unified":"1f99f","native":"🦟"}],"version":11},"fly":{"id":"fly","name":"Fly","keywords":["insect"],"skins":[{"unified":"1fab0","native":"🪰"}],"version":13},"worm":{"id":"worm","name":"Worm","keywords":["animal"],"skins":[{"unified":"1fab1","native":"🪱"}],"version":13},"microbe":{"id":"microbe","name":"Microbe","keywords":["amoeba","bacteria","germs","virus","covid"],"skins":[{"unified":"1f9a0","native":"🦠"}],"version":11},"bouquet":{"id":"bouquet","name":"Bouquet","keywords":["flowers","nature","spring"],"skins":[{"unified":"1f490","native":"💐"}],"version":1},"cherry_blossom":{"id":"cherry_blossom","name":"Cherry Blossom","keywords":["nature","plant","spring","flower"],"skins":[{"unified":"1f338","native":"🌸"}],"version":1},"white_flower":{"id":"white_flower","name":"White Flower","keywords":["japanese","spring"],"skins":[{"unified":"1f4ae","native":"💮"}],"version":1},"lotus":{"id":"lotus","name":"Lotus","keywords":["flower","calm","meditation"],"skins":[{"unified":"1fab7","native":"🪷"}],"version":14},"rosette":{"id":"rosette","name":"Rosette","keywords":["flower","decoration","military"],"skins":[{"unified":"1f3f5-fe0f","native":"🏵️"}],"version":1},"rose":{"id":"rose","name":"Rose","keywords":["flowers","valentines","love","spring"],"skins":[{"unified":"1f339","native":"🌹"}],"version":1},"wilted_flower":{"id":"wilted_flower","name":"Wilted Flower","keywords":["plant","nature","rose"],"skins":[{"unified":"1f940","native":"🥀"}],"version":3},"hibiscus":{"id":"hibiscus","name":"Hibiscus","keywords":["plant","vegetable","flowers","beach"],"skins":[{"unified":"1f33a","native":"🌺"}],"version":1},"sunflower":{"id":"sunflower","name":"Sunflower","keywords":["nature","plant","fall"],"skins":[{"unified":"1f33b","native":"🌻"}],"version":1},"blossom":{"id":"blossom","name":"Blossom","keywords":["nature","flowers","yellow"],"skins":[{"unified":"1f33c","native":"🌼"}],"version":1},"tulip":{"id":"tulip","name":"Tulip","keywords":["flowers","plant","nature","summer","spring"],"skins":[{"unified":"1f337","native":"🌷"}],"version":1},"hyacinth":{"id":"hyacinth","name":"Hyacinth","keywords":["flower","lavender"],"skins":[{"unified":"1fabb","native":"🪻"}],"version":15},"seedling":{"id":"seedling","name":"Seedling","keywords":["plant","nature","grass","lawn","spring"],"skins":[{"unified":"1f331","native":"🌱"}],"version":1},"potted_plant":{"id":"potted_plant","name":"Potted Plant","keywords":["greenery","house"],"skins":[{"unified":"1fab4","native":"🪴"}],"version":13},"evergreen_tree":{"id":"evergreen_tree","name":"Evergreen Tree","keywords":["plant","nature"],"skins":[{"unified":"1f332","native":"🌲"}],"version":1},"deciduous_tree":{"id":"deciduous_tree","name":"Deciduous Tree","keywords":["plant","nature"],"skins":[{"unified":"1f333","native":"🌳"}],"version":1},"palm_tree":{"id":"palm_tree","name":"Palm Tree","keywords":["plant","vegetable","nature","summer","beach","mojito","tropical"],"skins":[{"unified":"1f334","native":"🌴"}],"version":1},"cactus":{"id":"cactus","name":"Cactus","keywords":["vegetable","plant","nature"],"skins":[{"unified":"1f335","native":"🌵"}],"version":1},"ear_of_rice":{"id":"ear_of_rice","name":"Ear of Rice","keywords":["sheaf","nature","plant"],"skins":[{"unified":"1f33e","native":"🌾"}],"version":1},"herb":{"id":"herb","name":"Herb","keywords":["vegetable","plant","medicine","weed","grass","lawn"],"skins":[{"unified":"1f33f","native":"🌿"}],"version":1},"shamrock":{"id":"shamrock","name":"Shamrock","keywords":["vegetable","plant","nature","irish","clover"],"skins":[{"unified":"2618-fe0f","native":"☘️"}],"version":1},"four_leaf_clover":{"id":"four_leaf_clover","name":"Four Leaf Clover","keywords":["vegetable","plant","nature","lucky","irish"],"skins":[{"unified":"1f340","native":"🍀"}],"version":1},"maple_leaf":{"id":"maple_leaf","name":"Maple Leaf","keywords":["nature","plant","vegetable","ca","fall"],"skins":[{"unified":"1f341","native":"🍁"}],"version":1},"fallen_leaf":{"id":"fallen_leaf","name":"Fallen Leaf","keywords":["nature","plant","vegetable","leaves"],"skins":[{"unified":"1f342","native":"🍂"}],"version":1},"leaves":{"id":"leaves","name":"Leaf Fluttering in Wind","keywords":["leaves","nature","plant","tree","vegetable","grass","lawn","spring"],"skins":[{"unified":"1f343","native":"🍃"}],"version":1},"empty_nest":{"id":"empty_nest","name":"Empty Nest","keywords":["bird"],"skins":[{"unified":"1fab9","native":"🪹"}],"version":14},"nest_with_eggs":{"id":"nest_with_eggs","name":"Nest with Eggs","keywords":["bird"],"skins":[{"unified":"1faba","native":"🪺"}],"version":14},"mushroom":{"id":"mushroom","name":"Mushroom","keywords":["plant","vegetable"],"skins":[{"unified":"1f344","native":"🍄"}],"version":1},"grapes":{"id":"grapes","name":"Grapes","keywords":["fruit","food","wine"],"skins":[{"unified":"1f347","native":"🍇"}],"version":1},"melon":{"id":"melon","name":"Melon","keywords":["fruit","nature","food"],"skins":[{"unified":"1f348","native":"🍈"}],"version":1},"watermelon":{"id":"watermelon","name":"Watermelon","keywords":["fruit","food","picnic","summer"],"skins":[{"unified":"1f349","native":"🍉"}],"version":1},"tangerine":{"id":"tangerine","name":"Tangerine","keywords":["food","fruit","nature","orange"],"skins":[{"unified":"1f34a","native":"🍊"}],"version":1},"lemon":{"id":"lemon","name":"Lemon","keywords":["fruit","nature"],"skins":[{"unified":"1f34b","native":"🍋"}],"version":1},"banana":{"id":"banana","name":"Banana","keywords":["fruit","food","monkey"],"skins":[{"unified":"1f34c","native":"🍌"}],"version":1},"pineapple":{"id":"pineapple","name":"Pineapple","keywords":["fruit","nature","food"],"skins":[{"unified":"1f34d","native":"🍍"}],"version":1},"mango":{"id":"mango","name":"Mango","keywords":["fruit","food","tropical"],"skins":[{"unified":"1f96d","native":"🥭"}],"version":11},"apple":{"id":"apple","name":"Red Apple","keywords":["fruit","mac","school"],"skins":[{"unified":"1f34e","native":"🍎"}],"version":1},"green_apple":{"id":"green_apple","name":"Green Apple","keywords":["fruit","nature"],"skins":[{"unified":"1f34f","native":"🍏"}],"version":1},"pear":{"id":"pear","name":"Pear","keywords":["fruit","nature","food"],"skins":[{"unified":"1f350","native":"🍐"}],"version":1},"peach":{"id":"peach","name":"Peach","keywords":["fruit","nature","food"],"skins":[{"unified":"1f351","native":"🍑"}],"version":1},"cherries":{"id":"cherries","name":"Cherries","keywords":["food","fruit"],"skins":[{"unified":"1f352","native":"🍒"}],"version":1},"strawberry":{"id":"strawberry","name":"Strawberry","keywords":["fruit","food","nature"],"skins":[{"unified":"1f353","native":"🍓"}],"version":1},"blueberries":{"id":"blueberries","name":"Blueberries","keywords":["fruit"],"skins":[{"unified":"1fad0","native":"🫐"}],"version":13},"kiwifruit":{"id":"kiwifruit","name":"Kiwifruit","keywords":["kiwi","fruit","food"],"skins":[{"unified":"1f95d","native":"🥝"}],"version":3},"tomato":{"id":"tomato","name":"Tomato","keywords":["fruit","vegetable","nature","food"],"skins":[{"unified":"1f345","native":"🍅"}],"version":1},"olive":{"id":"olive","name":"Olive","keywords":["fruit"],"skins":[{"unified":"1fad2","native":"🫒"}],"version":13},"coconut":{"id":"coconut","name":"Coconut","keywords":["fruit","nature","food","palm"],"skins":[{"unified":"1f965","native":"🥥"}],"version":5},"avocado":{"id":"avocado","name":"Avocado","keywords":["fruit","food"],"skins":[{"unified":"1f951","native":"🥑"}],"version":3},"eggplant":{"id":"eggplant","name":"Eggplant","keywords":["vegetable","nature","food","aubergine"],"skins":[{"unified":"1f346","native":"🍆"}],"version":1},"potato":{"id":"potato","name":"Potato","keywords":["food","tuber","vegatable","starch"],"skins":[{"unified":"1f954","native":"🥔"}],"version":3},"carrot":{"id":"carrot","name":"Carrot","keywords":["vegetable","food","orange"],"skins":[{"unified":"1f955","native":"🥕"}],"version":3},"corn":{"id":"corn","name":"Ear of Corn","keywords":["food","vegetable","plant"],"skins":[{"unified":"1f33d","native":"🌽"}],"version":1},"hot_pepper":{"id":"hot_pepper","name":"Hot Pepper","keywords":["food","spicy","chilli","chili"],"skins":[{"unified":"1f336-fe0f","native":"🌶️"}],"version":1},"bell_pepper":{"id":"bell_pepper","name":"Bell Pepper","keywords":["fruit","plant"],"skins":[{"unified":"1fad1","native":"🫑"}],"version":13},"cucumber":{"id":"cucumber","name":"Cucumber","keywords":["fruit","food","pickle"],"skins":[{"unified":"1f952","native":"🥒"}],"version":3},"leafy_green":{"id":"leafy_green","name":"Leafy Green","keywords":["food","vegetable","plant","bok","choy","cabbage","kale","lettuce"],"skins":[{"unified":"1f96c","native":"🥬"}],"version":11},"broccoli":{"id":"broccoli","name":"Broccoli","keywords":["fruit","food","vegetable"],"skins":[{"unified":"1f966","native":"🥦"}],"version":5},"garlic":{"id":"garlic","name":"Garlic","keywords":["food","spice","cook"],"skins":[{"unified":"1f9c4","native":"🧄"}],"version":12},"onion":{"id":"onion","name":"Onion","keywords":["cook","food","spice"],"skins":[{"unified":"1f9c5","native":"🧅"}],"version":12},"peanuts":{"id":"peanuts","name":"Peanuts","keywords":["food","nut"],"skins":[{"unified":"1f95c","native":"🥜"}],"version":3},"beans":{"id":"beans","name":"Beans","keywords":["food"],"skins":[{"unified":"1fad8","native":"🫘"}],"version":14},"chestnut":{"id":"chestnut","name":"Chestnut","keywords":["food","squirrel"],"skins":[{"unified":"1f330","native":"🌰"}],"version":1},"ginger_root":{"id":"ginger_root","name":"Ginger Root","keywords":["spice","yellow","cooking","gingerbread"],"skins":[{"unified":"1fada","native":"🫚"}],"version":15},"pea_pod":{"id":"pea_pod","name":"Pea Pod","keywords":["cozy","green"],"skins":[{"unified":"1fadb","native":"🫛"}],"version":15},"bread":{"id":"bread","name":"Bread","keywords":["food","wheat","breakfast","toast"],"skins":[{"unified":"1f35e","native":"🍞"}],"version":1},"croissant":{"id":"croissant","name":"Croissant","keywords":["food","bread","french"],"skins":[{"unified":"1f950","native":"🥐"}],"version":3},"baguette_bread":{"id":"baguette_bread","name":"Baguette Bread","keywords":["food","french","france","bakery"],"skins":[{"unified":"1f956","native":"🥖"}],"version":3},"flatbread":{"id":"flatbread","name":"Flatbread","keywords":["flour","food","bakery"],"skins":[{"unified":"1fad3","native":"🫓"}],"version":13},"pretzel":{"id":"pretzel","name":"Pretzel","keywords":["food","bread","twisted","germany","bakery"],"skins":[{"unified":"1f968","native":"🥨"}],"version":5},"bagel":{"id":"bagel","name":"Bagel","keywords":["food","bread","bakery","schmear","jewish"],"skins":[{"unified":"1f96f","native":"🥯"}],"version":11},"pancakes":{"id":"pancakes","name":"Pancakes","keywords":["food","breakfast","flapjacks","hotcakes","brunch"],"skins":[{"unified":"1f95e","native":"🥞"}],"version":3},"waffle":{"id":"waffle","name":"Waffle","keywords":["food","breakfast","brunch"],"skins":[{"unified":"1f9c7","native":"🧇"}],"version":12},"cheese_wedge":{"id":"cheese_wedge","name":"Cheese Wedge","keywords":["food","chadder","swiss"],"skins":[{"unified":"1f9c0","native":"🧀"}],"version":1},"meat_on_bone":{"id":"meat_on_bone","name":"Meat on Bone","keywords":["good","food","drumstick"],"skins":[{"unified":"1f356","native":"🍖"}],"version":1},"poultry_leg":{"id":"poultry_leg","name":"Poultry Leg","keywords":["food","meat","drumstick","bird","chicken","turkey"],"skins":[{"unified":"1f357","native":"🍗"}],"version":1},"cut_of_meat":{"id":"cut_of_meat","name":"Cut of Meat","keywords":["food","cow","chop","lambchop","porkchop"],"skins":[{"unified":"1f969","native":"🥩"}],"version":5},"bacon":{"id":"bacon","name":"Bacon","keywords":["food","breakfast","pork","pig","meat","brunch"],"skins":[{"unified":"1f953","native":"🥓"}],"version":3},"hamburger":{"id":"hamburger","name":"Hamburger","keywords":["meat","fast","food","beef","cheeseburger","mcdonalds","burger","king"],"skins":[{"unified":"1f354","native":"🍔"}],"version":1},"fries":{"id":"fries","name":"French Fries","keywords":["chips","snack","fast","food","potato"],"skins":[{"unified":"1f35f","native":"🍟"}],"version":1},"pizza":{"id":"pizza","name":"Pizza","keywords":["food","party","italy"],"skins":[{"unified":"1f355","native":"🍕"}],"version":1},"hotdog":{"id":"hotdog","name":"Hot Dog","keywords":["hotdog","food","frankfurter","america"],"skins":[{"unified":"1f32d","native":"🌭"}],"version":1},"sandwich":{"id":"sandwich","name":"Sandwich","keywords":["food","lunch","bread","toast","bakery"],"skins":[{"unified":"1f96a","native":"🥪"}],"version":5},"taco":{"id":"taco","name":"Taco","keywords":["food","mexican"],"skins":[{"unified":"1f32e","native":"🌮"}],"version":1},"burrito":{"id":"burrito","name":"Burrito","keywords":["food","mexican"],"skins":[{"unified":"1f32f","native":"🌯"}],"version":1},"tamale":{"id":"tamale","name":"Tamale","keywords":["food","masa"],"skins":[{"unified":"1fad4","native":"🫔"}],"version":13},"stuffed_flatbread":{"id":"stuffed_flatbread","name":"Stuffed Flatbread","keywords":["food","gyro","mediterranean"],"skins":[{"unified":"1f959","native":"🥙"}],"version":3},"falafel":{"id":"falafel","name":"Falafel","keywords":["food","mediterranean"],"skins":[{"unified":"1f9c6","native":"🧆"}],"version":12},"egg":{"id":"egg","name":"Egg","keywords":["food","chicken","breakfast"],"skins":[{"unified":"1f95a","native":"🥚"}],"version":3},"fried_egg":{"id":"fried_egg","name":"Cooking","keywords":["fried","egg","food","breakfast","kitchen","skillet"],"skins":[{"unified":"1f373","native":"🍳"}],"version":1},"shallow_pan_of_food":{"id":"shallow_pan_of_food","name":"Shallow Pan of Food","keywords":["cooking","casserole","paella","skillet"],"skins":[{"unified":"1f958","native":"🥘"}],"version":3},"stew":{"id":"stew","name":"Pot of Food","keywords":["stew","meat","soup","hot"],"skins":[{"unified":"1f372","native":"🍲"}],"version":1},"fondue":{"id":"fondue","name":"Fondue","keywords":["cheese","pot","food"],"skins":[{"unified":"1fad5","native":"🫕"}],"version":13},"bowl_with_spoon":{"id":"bowl_with_spoon","name":"Bowl with Spoon","keywords":["food","breakfast","cereal","oatmeal","porridge"],"skins":[{"unified":"1f963","native":"🥣"}],"version":5},"green_salad":{"id":"green_salad","name":"Green Salad","keywords":["food","healthy","lettuce","vegetable"],"skins":[{"unified":"1f957","native":"🥗"}],"version":3},"popcorn":{"id":"popcorn","name":"Popcorn","keywords":["food","movie","theater","films","snack","drama"],"skins":[{"unified":"1f37f","native":"🍿"}],"version":1},"butter":{"id":"butter","name":"Butter","keywords":["food","cook"],"skins":[{"unified":"1f9c8","native":"🧈"}],"version":12},"salt":{"id":"salt","name":"Salt","keywords":["condiment","shaker"],"skins":[{"unified":"1f9c2","native":"🧂"}],"version":11},"canned_food":{"id":"canned_food","name":"Canned Food","keywords":["soup","tomatoes"],"skins":[{"unified":"1f96b","native":"🥫"}],"version":5},"bento":{"id":"bento","name":"Bento Box","keywords":["food","japanese","lunch"],"skins":[{"unified":"1f371","native":"🍱"}],"version":1},"rice_cracker":{"id":"rice_cracker","name":"Rice Cracker","keywords":["food","japanese","snack"],"skins":[{"unified":"1f358","native":"🍘"}],"version":1},"rice_ball":{"id":"rice_ball","name":"Rice Ball","keywords":["food","japanese"],"skins":[{"unified":"1f359","native":"🍙"}],"version":1},"rice":{"id":"rice","name":"Cooked Rice","keywords":["food","asian"],"skins":[{"unified":"1f35a","native":"🍚"}],"version":1},"curry":{"id":"curry","name":"Curry Rice","keywords":["food","spicy","hot","indian"],"skins":[{"unified":"1f35b","native":"🍛"}],"version":1},"ramen":{"id":"ramen","name":"Steaming Bowl","keywords":["ramen","food","japanese","noodle","chopsticks"],"skins":[{"unified":"1f35c","native":"🍜"}],"version":1},"spaghetti":{"id":"spaghetti","name":"Spaghetti","keywords":["food","italian","pasta","noodle"],"skins":[{"unified":"1f35d","native":"🍝"}],"version":1},"sweet_potato":{"id":"sweet_potato","name":"Roasted Sweet Potato","keywords":["food","nature","plant"],"skins":[{"unified":"1f360","native":"🍠"}],"version":1},"oden":{"id":"oden","name":"Oden","keywords":["food","japanese"],"skins":[{"unified":"1f362","native":"🍢"}],"version":1},"sushi":{"id":"sushi","name":"Sushi","keywords":["food","fish","japanese","rice"],"skins":[{"unified":"1f363","native":"🍣"}],"version":1},"fried_shrimp":{"id":"fried_shrimp","name":"Fried Shrimp","keywords":["food","animal","appetizer","summer"],"skins":[{"unified":"1f364","native":"🍤"}],"version":1},"fish_cake":{"id":"fish_cake","name":"Fish Cake with Swirl","keywords":["food","japan","sea","beach","narutomaki","pink","kamaboko","surimi","ramen"],"skins":[{"unified":"1f365","native":"🍥"}],"version":1},"moon_cake":{"id":"moon_cake","name":"Moon Cake","keywords":["food","autumn","dessert"],"skins":[{"unified":"1f96e","native":"🥮"}],"version":11},"dango":{"id":"dango","name":"Dango","keywords":["food","dessert","sweet","japanese","barbecue","meat"],"skins":[{"unified":"1f361","native":"🍡"}],"version":1},"dumpling":{"id":"dumpling","name":"Dumpling","keywords":["food","empanada","pierogi","potsticker","gyoza"],"skins":[{"unified":"1f95f","native":"🥟"}],"version":5},"fortune_cookie":{"id":"fortune_cookie","name":"Fortune Cookie","keywords":["food","prophecy","dessert"],"skins":[{"unified":"1f960","native":"🥠"}],"version":5},"takeout_box":{"id":"takeout_box","name":"Takeout Box","keywords":["food","leftovers"],"skins":[{"unified":"1f961","native":"🥡"}],"version":5},"crab":{"id":"crab","name":"Crab","keywords":["animal","crustacean"],"skins":[{"unified":"1f980","native":"🦀"}],"version":1},"lobster":{"id":"lobster","name":"Lobster","keywords":["animal","nature","bisque","claws","seafood"],"skins":[{"unified":"1f99e","native":"🦞"}],"version":11},"shrimp":{"id":"shrimp","name":"Shrimp","keywords":["animal","ocean","nature","seafood"],"skins":[{"unified":"1f990","native":"🦐"}],"version":3},"squid":{"id":"squid","name":"Squid","keywords":["animal","nature","ocean","sea"],"skins":[{"unified":"1f991","native":"🦑"}],"version":3},"oyster":{"id":"oyster","name":"Oyster","keywords":["food"],"skins":[{"unified":"1f9aa","native":"🦪"}],"version":12},"icecream":{"id":"icecream","name":"Soft Ice Cream","keywords":["icecream","food","hot","dessert","summer"],"skins":[{"unified":"1f366","native":"🍦"}],"version":1},"shaved_ice":{"id":"shaved_ice","name":"Shaved Ice","keywords":["hot","dessert","summer"],"skins":[{"unified":"1f367","native":"🍧"}],"version":1},"ice_cream":{"id":"ice_cream","name":"Ice Cream","keywords":["food","hot","dessert"],"skins":[{"unified":"1f368","native":"🍨"}],"version":1},"doughnut":{"id":"doughnut","name":"Doughnut","keywords":["food","dessert","snack","sweet","donut"],"skins":[{"unified":"1f369","native":"🍩"}],"version":1},"cookie":{"id":"cookie","name":"Cookie","keywords":["food","snack","oreo","chocolate","sweet","dessert"],"skins":[{"unified":"1f36a","native":"🍪"}],"version":1},"birthday":{"id":"birthday","name":"Birthday Cake","keywords":["food","dessert"],"skins":[{"unified":"1f382","native":"🎂"}],"version":1},"cake":{"id":"cake","name":"Shortcake","keywords":["cake","food","dessert"],"skins":[{"unified":"1f370","native":"🍰"}],"version":1},"cupcake":{"id":"cupcake","name":"Cupcake","keywords":["food","dessert","bakery","sweet"],"skins":[{"unified":"1f9c1","native":"🧁"}],"version":11},"pie":{"id":"pie","name":"Pie","keywords":["food","dessert","pastry"],"skins":[{"unified":"1f967","native":"🥧"}],"version":5},"chocolate_bar":{"id":"chocolate_bar","name":"Chocolate Bar","keywords":["food","snack","dessert","sweet"],"skins":[{"unified":"1f36b","native":"🍫"}],"version":1},"candy":{"id":"candy","name":"Candy","keywords":["snack","dessert","sweet","lolly"],"skins":[{"unified":"1f36c","native":"🍬"}],"version":1},"lollipop":{"id":"lollipop","name":"Lollipop","keywords":["food","snack","candy","sweet"],"skins":[{"unified":"1f36d","native":"🍭"}],"version":1},"custard":{"id":"custard","name":"Custard","keywords":["dessert","food"],"skins":[{"unified":"1f36e","native":"🍮"}],"version":1},"honey_pot":{"id":"honey_pot","name":"Honey Pot","keywords":["bees","sweet","kitchen"],"skins":[{"unified":"1f36f","native":"🍯"}],"version":1},"baby_bottle":{"id":"baby_bottle","name":"Baby Bottle","keywords":["food","container","milk"],"skins":[{"unified":"1f37c","native":"🍼"}],"version":1},"glass_of_milk":{"id":"glass_of_milk","name":"Glass of Milk","keywords":["beverage","drink","cow"],"skins":[{"unified":"1f95b","native":"🥛"}],"version":3},"coffee":{"id":"coffee","name":"Hot Beverage","keywords":["coffee","caffeine","latte","espresso","mug"],"skins":[{"unified":"2615","native":"☕"}],"version":1},"teapot":{"id":"teapot","name":"Teapot","keywords":["drink","hot"],"skins":[{"unified":"1fad6","native":"🫖"}],"version":13},"tea":{"id":"tea","name":"Teacup Without Handle","keywords":["tea","drink","bowl","breakfast","green","british"],"skins":[{"unified":"1f375","native":"🍵"}],"version":1},"sake":{"id":"sake","name":"Sake","keywords":["wine","drink","drunk","beverage","japanese","alcohol","booze"],"skins":[{"unified":"1f376","native":"🍶"}],"version":1},"champagne":{"id":"champagne","name":"Bottle with Popping Cork","keywords":["champagne","drink","wine","celebration"],"skins":[{"unified":"1f37e","native":"🍾"}],"version":1},"wine_glass":{"id":"wine_glass","name":"Wine Glass","keywords":["drink","beverage","drunk","alcohol","booze"],"skins":[{"unified":"1f377","native":"🍷"}],"version":1},"cocktail":{"id":"cocktail","name":"Cocktail Glass","keywords":["drink","drunk","alcohol","beverage","booze","mojito"],"skins":[{"unified":"1f378","native":"🍸"}],"version":1},"tropical_drink":{"id":"tropical_drink","name":"Tropical Drink","keywords":["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"skins":[{"unified":"1f379","native":"🍹"}],"version":1},"beer":{"id":"beer","name":"Beer Mug","keywords":["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"skins":[{"unified":"1f37a","native":"🍺"}],"version":1},"beers":{"id":"beers","name":"Clinking Beer Mugs","keywords":["beers","relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"skins":[{"unified":"1f37b","native":"🍻"}],"version":1},"clinking_glasses":{"id":"clinking_glasses","name":"Clinking Glasses","keywords":["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"skins":[{"unified":"1f942","native":"🥂"}],"version":3},"tumbler_glass":{"id":"tumbler_glass","name":"Tumbler Glass","keywords":["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","shot"],"skins":[{"unified":"1f943","native":"🥃"}],"version":3},"pouring_liquid":{"id":"pouring_liquid","name":"Pouring Liquid","keywords":["cup","water"],"skins":[{"unified":"1fad7","native":"🫗"}],"version":14},"cup_with_straw":{"id":"cup_with_straw","name":"Cup with Straw","keywords":["drink","soda"],"skins":[{"unified":"1f964","native":"🥤"}],"version":5},"bubble_tea":{"id":"bubble_tea","name":"Bubble Tea","keywords":["taiwan","boba","milk","straw"],"skins":[{"unified":"1f9cb","native":"🧋"}],"version":13},"beverage_box":{"id":"beverage_box","name":"Beverage Box","keywords":["drink"],"skins":[{"unified":"1f9c3","native":"🧃"}],"version":12},"mate_drink":{"id":"mate_drink","name":"Mate","keywords":["drink","tea","beverage"],"skins":[{"unified":"1f9c9","native":"🧉"}],"version":12},"ice_cube":{"id":"ice_cube","name":"Ice","keywords":["cube","water","cold"],"skins":[{"unified":"1f9ca","native":"🧊"}],"version":12},"chopsticks":{"id":"chopsticks","name":"Chopsticks","keywords":["food"],"skins":[{"unified":"1f962","native":"🥢"}],"version":5},"knife_fork_plate":{"id":"knife_fork_plate","name":"Fork and Knife with Plate","keywords":["food","eat","meal","lunch","dinner","restaurant"],"skins":[{"unified":"1f37d-fe0f","native":"🍽️"}],"version":1},"fork_and_knife":{"id":"fork_and_knife","name":"Fork and Knife","keywords":["cutlery","kitchen"],"skins":[{"unified":"1f374","native":"🍴"}],"version":1},"spoon":{"id":"spoon","name":"Spoon","keywords":["cutlery","kitchen","tableware"],"skins":[{"unified":"1f944","native":"🥄"}],"version":3},"hocho":{"id":"hocho","name":"Hocho","keywords":["knife","kitchen","blade","cutlery","weapon"],"skins":[{"unified":"1f52a","native":"🔪"}],"version":1},"jar":{"id":"jar","name":"Jar","keywords":["container","sauce"],"skins":[{"unified":"1fad9","native":"🫙"}],"version":14},"amphora":{"id":"amphora","name":"Amphora","keywords":["vase","jar"],"skins":[{"unified":"1f3fa","native":"🏺"}],"version":1},"earth_africa":{"id":"earth_africa","name":"Earth Globe Europe-Africa","keywords":["africa","showing","europe","world","international"],"skins":[{"unified":"1f30d","native":"🌍"}],"version":1},"earth_americas":{"id":"earth_americas","name":"Earth Globe Americas","keywords":["showing","world","USA","international"],"skins":[{"unified":"1f30e","native":"🌎"}],"version":1},"earth_asia":{"id":"earth_asia","name":"Earth Globe Asia-Australia","keywords":["asia","showing","australia","world","east","international"],"skins":[{"unified":"1f30f","native":"🌏"}],"version":1},"globe_with_meridians":{"id":"globe_with_meridians","name":"Globe with Meridians","keywords":["earth","international","world","internet","interweb","i18n"],"skins":[{"unified":"1f310","native":"🌐"}],"version":1},"world_map":{"id":"world_map","name":"World Map","keywords":["location","direction"],"skins":[{"unified":"1f5fa-fe0f","native":"🗺️"}],"version":1},"japan":{"id":"japan","name":"Map of Japan","keywords":["nation","country","japanese","asia"],"skins":[{"unified":"1f5fe","native":"🗾"}],"version":1},"compass":{"id":"compass","name":"Compass","keywords":["magnetic","navigation","orienteering"],"skins":[{"unified":"1f9ed","native":"🧭"}],"version":11},"snow_capped_mountain":{"id":"snow_capped_mountain","name":"Snow-Capped Mountain","keywords":["snow","capped","photo","nature","environment","winter","cold"],"skins":[{"unified":"1f3d4-fe0f","native":"🏔️"}],"version":1},"mountain":{"id":"mountain","name":"Mountain","keywords":["photo","nature","environment"],"skins":[{"unified":"26f0-fe0f","native":"⛰️"}],"version":1},"volcano":{"id":"volcano","name":"Volcano","keywords":["photo","nature","disaster"],"skins":[{"unified":"1f30b","native":"🌋"}],"version":1},"mount_fuji":{"id":"mount_fuji","name":"Mount Fuji","keywords":["photo","mountain","nature","japanese"],"skins":[{"unified":"1f5fb","native":"🗻"}],"version":1},"camping":{"id":"camping","name":"Camping","keywords":["photo","outdoors","tent"],"skins":[{"unified":"1f3d5-fe0f","native":"🏕️"}],"version":1},"beach_with_umbrella":{"id":"beach_with_umbrella","name":"Beach with Umbrella","keywords":["weather","summer","sunny","sand","mojito"],"skins":[{"unified":"1f3d6-fe0f","native":"🏖️"}],"version":1},"desert":{"id":"desert","name":"Desert","keywords":["photo","warm","saharah"],"skins":[{"unified":"1f3dc-fe0f","native":"🏜️"}],"version":1},"desert_island":{"id":"desert_island","name":"Desert Island","keywords":["photo","tropical","mojito"],"skins":[{"unified":"1f3dd-fe0f","native":"🏝️"}],"version":1},"national_park":{"id":"national_park","name":"National Park","keywords":["photo","environment","nature"],"skins":[{"unified":"1f3de-fe0f","native":"🏞️"}],"version":1},"stadium":{"id":"stadium","name":"Stadium","keywords":["photo","place","sports","concert","venue"],"skins":[{"unified":"1f3df-fe0f","native":"🏟️"}],"version":1},"classical_building":{"id":"classical_building","name":"Classical Building","keywords":["art","culture","history"],"skins":[{"unified":"1f3db-fe0f","native":"🏛️"}],"version":1},"building_construction":{"id":"building_construction","name":"Building Construction","keywords":["wip","working","progress"],"skins":[{"unified":"1f3d7-fe0f","native":"🏗️"}],"version":1},"bricks":{"id":"bricks","name":"Brick","keywords":["bricks"],"skins":[{"unified":"1f9f1","native":"🧱"}],"version":11},"rock":{"id":"rock","name":"Rock","keywords":["stone"],"skins":[{"unified":"1faa8","native":"🪨"}],"version":13},"wood":{"id":"wood","name":"Wood","keywords":["nature","timber","trunk"],"skins":[{"unified":"1fab5","native":"🪵"}],"version":13},"hut":{"id":"hut","name":"Hut","keywords":["house","structure"],"skins":[{"unified":"1f6d6","native":"🛖"}],"version":13},"house_buildings":{"id":"house_buildings","name":"Houses","keywords":["house","buildings","photo"],"skins":[{"unified":"1f3d8-fe0f","native":"🏘️"}],"version":1},"derelict_house_building":{"id":"derelict_house_building","name":"Derelict House","keywords":["building","abandon","evict","broken"],"skins":[{"unified":"1f3da-fe0f","native":"🏚️"}],"version":1},"house":{"id":"house","name":"House","keywords":["building","home"],"skins":[{"unified":"1f3e0","native":"🏠"}],"version":1},"house_with_garden":{"id":"house_with_garden","name":"House with Garden","keywords":["home","plant","nature"],"skins":[{"unified":"1f3e1","native":"🏡"}],"version":1},"office":{"id":"office","name":"Office Building","keywords":["bureau","work"],"skins":[{"unified":"1f3e2","native":"🏢"}],"version":1},"post_office":{"id":"post_office","name":"Japanese Post Office","keywords":["building","envelope","communication"],"skins":[{"unified":"1f3e3","native":"🏣"}],"version":1},"european_post_office":{"id":"european_post_office","name":"Post Office","keywords":["european","building","email"],"skins":[{"unified":"1f3e4","native":"🏤"}],"version":1},"hospital":{"id":"hospital","name":"Hospital","keywords":["building","health","surgery","doctor"],"skins":[{"unified":"1f3e5","native":"🏥"}],"version":1},"bank":{"id":"bank","name":"Bank","keywords":["building","money","sales","cash","business","enterprise"],"skins":[{"unified":"1f3e6","native":"🏦"}],"version":1},"hotel":{"id":"hotel","name":"Hotel","keywords":["building","accomodation","checkin"],"skins":[{"unified":"1f3e8","native":"🏨"}],"version":1},"love_hotel":{"id":"love_hotel","name":"Love Hotel","keywords":["like","affection","dating"],"skins":[{"unified":"1f3e9","native":"🏩"}],"version":1},"convenience_store":{"id":"convenience_store","name":"Convenience Store","keywords":["building","shopping","groceries"],"skins":[{"unified":"1f3ea","native":"🏪"}],"version":1},"school":{"id":"school","name":"School","keywords":["building","student","education","learn","teach"],"skins":[{"unified":"1f3eb","native":"🏫"}],"version":1},"department_store":{"id":"department_store","name":"Department Store","keywords":["building","shopping","mall"],"skins":[{"unified":"1f3ec","native":"🏬"}],"version":1},"factory":{"id":"factory","name":"Factory","keywords":["building","industry","pollution","smoke"],"skins":[{"unified":"1f3ed","native":"🏭"}],"version":1},"japanese_castle":{"id":"japanese_castle","name":"Japanese Castle","keywords":["photo","building"],"skins":[{"unified":"1f3ef","native":"🏯"}],"version":1},"european_castle":{"id":"european_castle","name":"Castle","keywords":["european","building","royalty","history"],"skins":[{"unified":"1f3f0","native":"🏰"}],"version":1},"wedding":{"id":"wedding","name":"Wedding","keywords":["love","like","affection","couple","marriage","bride","groom"],"skins":[{"unified":"1f492","native":"💒"}],"version":1},"tokyo_tower":{"id":"tokyo_tower","name":"Tokyo Tower","keywords":["photo","japanese"],"skins":[{"unified":"1f5fc","native":"🗼"}],"version":1},"statue_of_liberty":{"id":"statue_of_liberty","name":"Statue of Liberty","keywords":["american","newyork"],"skins":[{"unified":"1f5fd","native":"🗽"}],"version":1},"church":{"id":"church","name":"Church","keywords":["building","religion","christ"],"skins":[{"unified":"26ea","native":"⛪"}],"version":1},"mosque":{"id":"mosque","name":"Mosque","keywords":["islam","worship","minaret"],"skins":[{"unified":"1f54c","native":"🕌"}],"version":1},"hindu_temple":{"id":"hindu_temple","name":"Hindu Temple","keywords":["religion"],"skins":[{"unified":"1f6d5","native":"🛕"}],"version":12},"synagogue":{"id":"synagogue","name":"Synagogue","keywords":["judaism","worship","temple","jewish"],"skins":[{"unified":"1f54d","native":"🕍"}],"version":1},"shinto_shrine":{"id":"shinto_shrine","name":"Shinto Shrine","keywords":["temple","japan","kyoto"],"skins":[{"unified":"26e9-fe0f","native":"⛩️"}],"version":1},"kaaba":{"id":"kaaba","name":"Kaaba","keywords":["mecca","mosque","islam"],"skins":[{"unified":"1f54b","native":"🕋"}],"version":1},"fountain":{"id":"fountain","name":"Fountain","keywords":["photo","summer","water","fresh"],"skins":[{"unified":"26f2","native":"⛲"}],"version":1},"tent":{"id":"tent","name":"Tent","keywords":["photo","camping","outdoors"],"skins":[{"unified":"26fa","native":"⛺"}],"version":1},"foggy":{"id":"foggy","name":"Foggy","keywords":["photo","mountain"],"skins":[{"unified":"1f301","native":"🌁"}],"version":1},"night_with_stars":{"id":"night_with_stars","name":"Night with Stars","keywords":["evening","city","downtown"],"skins":[{"unified":"1f303","native":"🌃"}],"version":1},"cityscape":{"id":"cityscape","name":"Cityscape","keywords":["photo","night","life","urban"],"skins":[{"unified":"1f3d9-fe0f","native":"🏙️"}],"version":1},"sunrise_over_mountains":{"id":"sunrise_over_mountains","name":"Sunrise over Mountains","keywords":["view","vacation","photo"],"skins":[{"unified":"1f304","native":"🌄"}],"version":1},"sunrise":{"id":"sunrise","name":"Sunrise","keywords":["morning","view","vacation","photo"],"skins":[{"unified":"1f305","native":"🌅"}],"version":1},"city_sunset":{"id":"city_sunset","name":"Cityscape at Dusk","keywords":["city","sunset","photo","evening","sky","buildings"],"skins":[{"unified":"1f306","native":"🌆"}],"version":1},"city_sunrise":{"id":"city_sunrise","name":"Sunset","keywords":["city","sunrise","photo","good","morning","dawn"],"skins":[{"unified":"1f307","native":"🌇"}],"version":1},"bridge_at_night":{"id":"bridge_at_night","name":"Bridge at Night","keywords":["photo","sanfrancisco"],"skins":[{"unified":"1f309","native":"🌉"}],"version":1},"hotsprings":{"id":"hotsprings","name":"Hot Springs","keywords":["hotsprings","bath","warm","relax"],"skins":[{"unified":"2668-fe0f","native":"♨️"}],"version":1},"carousel_horse":{"id":"carousel_horse","name":"Carousel Horse","keywords":["photo","carnival"],"skins":[{"unified":"1f3a0","native":"🎠"}],"version":1},"playground_slide":{"id":"playground_slide","name":"Playground Slide","keywords":["fun","park"],"skins":[{"unified":"1f6dd","native":"🛝"}],"version":14},"ferris_wheel":{"id":"ferris_wheel","name":"Ferris Wheel","keywords":["photo","carnival","londoneye"],"skins":[{"unified":"1f3a1","native":"🎡"}],"version":1},"roller_coaster":{"id":"roller_coaster","name":"Roller Coaster","keywords":["carnival","playground","photo","fun"],"skins":[{"unified":"1f3a2","native":"🎢"}],"version":1},"barber":{"id":"barber","name":"Barber Pole","keywords":["hair","salon","style"],"skins":[{"unified":"1f488","native":"💈"}],"version":1},"circus_tent":{"id":"circus_tent","name":"Circus Tent","keywords":["festival","carnival","party"],"skins":[{"unified":"1f3aa","native":"🎪"}],"version":1},"steam_locomotive":{"id":"steam_locomotive","name":"Locomotive","keywords":["steam","transportation","vehicle","train"],"skins":[{"unified":"1f682","native":"🚂"}],"version":1},"railway_car":{"id":"railway_car","name":"Railway Car","keywords":["transportation","vehicle"],"skins":[{"unified":"1f683","native":"🚃"}],"version":1},"bullettrain_side":{"id":"bullettrain_side","name":"High-Speed Train","keywords":["bullettrain","side","high","speed","transportation","vehicle"],"skins":[{"unified":"1f684","native":"🚄"}],"version":1},"bullettrain_front":{"id":"bullettrain_front","name":"Bullet Train","keywords":["bullettrain","front","transportation","vehicle","speed","fast","public","travel"],"skins":[{"unified":"1f685","native":"🚅"}],"version":1},"train2":{"id":"train2","name":"Train","keywords":["train2","transportation","vehicle"],"skins":[{"unified":"1f686","native":"🚆"}],"version":1},"metro":{"id":"metro","name":"Metro","keywords":["transportation","blue","square","mrt","underground","tube"],"skins":[{"unified":"1f687","native":"🚇"}],"version":1},"light_rail":{"id":"light_rail","name":"Light Rail","keywords":["transportation","vehicle"],"skins":[{"unified":"1f688","native":"🚈"}],"version":1},"station":{"id":"station","name":"Station","keywords":["transportation","vehicle","public"],"skins":[{"unified":"1f689","native":"🚉"}],"version":1},"tram":{"id":"tram","name":"Tram","keywords":["transportation","vehicle"],"skins":[{"unified":"1f68a","native":"🚊"}],"version":1},"monorail":{"id":"monorail","name":"Monorail","keywords":["transportation","vehicle"],"skins":[{"unified":"1f69d","native":"🚝"}],"version":1},"mountain_railway":{"id":"mountain_railway","name":"Mountain Railway","keywords":["transportation","vehicle"],"skins":[{"unified":"1f69e","native":"🚞"}],"version":1},"train":{"id":"train","name":"Tram Car","keywords":["train","transportation","vehicle","carriage","public","travel"],"skins":[{"unified":"1f68b","native":"🚋"}],"version":1},"bus":{"id":"bus","name":"Bus","keywords":["car","vehicle","transportation"],"skins":[{"unified":"1f68c","native":"🚌"}],"version":1},"oncoming_bus":{"id":"oncoming_bus","name":"Oncoming Bus","keywords":["vehicle","transportation"],"skins":[{"unified":"1f68d","native":"🚍"}],"version":1},"trolleybus":{"id":"trolleybus","name":"Trolleybus","keywords":["bart","transportation","vehicle"],"skins":[{"unified":"1f68e","native":"🚎"}],"version":1},"minibus":{"id":"minibus","name":"Minibus","keywords":["vehicle","car","transportation"],"skins":[{"unified":"1f690","native":"🚐"}],"version":1},"ambulance":{"id":"ambulance","name":"Ambulance","keywords":["health","911","hospital"],"skins":[{"unified":"1f691","native":"🚑"}],"version":1},"fire_engine":{"id":"fire_engine","name":"Fire Engine","keywords":["transportation","cars","vehicle"],"skins":[{"unified":"1f692","native":"🚒"}],"version":1},"police_car":{"id":"police_car","name":"Police Car","keywords":["vehicle","cars","transportation","law","legal","enforcement"],"skins":[{"unified":"1f693","native":"🚓"}],"version":1},"oncoming_police_car":{"id":"oncoming_police_car","name":"Oncoming Police Car","keywords":["vehicle","law","legal","enforcement","911"],"skins":[{"unified":"1f694","native":"🚔"}],"version":1},"taxi":{"id":"taxi","name":"Taxi","keywords":["uber","vehicle","cars","transportation"],"skins":[{"unified":"1f695","native":"🚕"}],"version":1},"oncoming_taxi":{"id":"oncoming_taxi","name":"Oncoming Taxi","keywords":["vehicle","cars","uber"],"skins":[{"unified":"1f696","native":"🚖"}],"version":1},"car":{"id":"car","name":"Automobile","keywords":["car","red","transportation","vehicle"],"skins":[{"unified":"1f697","native":"🚗"}],"version":1},"oncoming_automobile":{"id":"oncoming_automobile","name":"Oncoming Automobile","keywords":["car","vehicle","transportation"],"skins":[{"unified":"1f698","native":"🚘"}],"version":1},"blue_car":{"id":"blue_car","name":"Recreational Vehicle","keywords":["blue","car","sport","utility","transportation"],"skins":[{"unified":"1f699","native":"🚙"}],"version":1},"pickup_truck":{"id":"pickup_truck","name":"Pickup Truck","keywords":["car","transportation"],"skins":[{"unified":"1f6fb","native":"🛻"}],"version":13},"truck":{"id":"truck","name":"Delivery Truck","keywords":["cars","transportation"],"skins":[{"unified":"1f69a","native":"🚚"}],"version":1},"articulated_lorry":{"id":"articulated_lorry","name":"Articulated Lorry","keywords":["vehicle","cars","transportation","express"],"skins":[{"unified":"1f69b","native":"🚛"}],"version":1},"tractor":{"id":"tractor","name":"Tractor","keywords":["vehicle","car","farming","agriculture"],"skins":[{"unified":"1f69c","native":"🚜"}],"version":1},"racing_car":{"id":"racing_car","name":"Racing Car","keywords":["sports","race","fast","formula","f1"],"skins":[{"unified":"1f3ce-fe0f","native":"🏎️"}],"version":1},"racing_motorcycle":{"id":"racing_motorcycle","name":"Motorcycle","keywords":["racing","race","sports","fast"],"skins":[{"unified":"1f3cd-fe0f","native":"🏍️"}],"version":1},"motor_scooter":{"id":"motor_scooter","name":"Motor Scooter","keywords":["vehicle","vespa","sasha"],"skins":[{"unified":"1f6f5","native":"🛵"}],"version":3},"manual_wheelchair":{"id":"manual_wheelchair","name":"Manual Wheelchair","keywords":["accessibility"],"skins":[{"unified":"1f9bd","native":"🦽"}],"version":12},"motorized_wheelchair":{"id":"motorized_wheelchair","name":"Motorized Wheelchair","keywords":["accessibility"],"skins":[{"unified":"1f9bc","native":"🦼"}],"version":12},"auto_rickshaw":{"id":"auto_rickshaw","name":"Auto Rickshaw","keywords":["move","transportation"],"skins":[{"unified":"1f6fa","native":"🛺"}],"version":12},"bike":{"id":"bike","name":"Bicycle","keywords":["bike","sports","exercise","hipster"],"skins":[{"unified":"1f6b2","native":"🚲"}],"version":1},"scooter":{"id":"scooter","name":"Scooter","keywords":["kick","vehicle","razor"],"skins":[{"unified":"1f6f4","native":"🛴"}],"version":3},"skateboard":{"id":"skateboard","name":"Skateboard","keywords":["board"],"skins":[{"unified":"1f6f9","native":"🛹"}],"version":11},"roller_skate":{"id":"roller_skate","name":"Roller Skate","keywords":["footwear","sports"],"skins":[{"unified":"1f6fc","native":"🛼"}],"version":13},"busstop":{"id":"busstop","name":"Bus Stop","keywords":["busstop","transportation","wait"],"skins":[{"unified":"1f68f","native":"🚏"}],"version":1},"motorway":{"id":"motorway","name":"Motorway","keywords":["road","cupertino","interstate","highway"],"skins":[{"unified":"1f6e3-fe0f","native":"🛣️"}],"version":1},"railway_track":{"id":"railway_track","name":"Railway Track","keywords":["train","transportation"],"skins":[{"unified":"1f6e4-fe0f","native":"🛤️"}],"version":1},"oil_drum":{"id":"oil_drum","name":"Oil Drum","keywords":["barrell"],"skins":[{"unified":"1f6e2-fe0f","native":"🛢️"}],"version":1},"fuelpump":{"id":"fuelpump","name":"Fuel Pump","keywords":["fuelpump","gas","station","petroleum"],"skins":[{"unified":"26fd","native":"⛽"}],"version":1},"wheel":{"id":"wheel","name":"Wheel","keywords":["car","transport"],"skins":[{"unified":"1f6de","native":"🛞"}],"version":14},"rotating_light":{"id":"rotating_light","name":"Police Car Light","keywords":["rotating","ambulance","911","emergency","alert","error","pinged","law","legal"],"skins":[{"unified":"1f6a8","native":"🚨"}],"version":1},"traffic_light":{"id":"traffic_light","name":"Horizontal Traffic Light","keywords":["transportation","signal"],"skins":[{"unified":"1f6a5","native":"🚥"}],"version":1},"vertical_traffic_light":{"id":"vertical_traffic_light","name":"Vertical Traffic Light","keywords":["transportation","driving"],"skins":[{"unified":"1f6a6","native":"🚦"}],"version":1},"octagonal_sign":{"id":"octagonal_sign","name":"Stop Sign","keywords":["octagonal"],"skins":[{"unified":"1f6d1","native":"🛑"}],"version":3},"construction":{"id":"construction","name":"Construction","keywords":["wip","progress","caution","warning"],"skins":[{"unified":"1f6a7","native":"🚧"}],"version":1},"anchor":{"id":"anchor","name":"Anchor","keywords":["ship","ferry","sea","boat"],"skins":[{"unified":"2693","native":"⚓"}],"version":1},"ring_buoy":{"id":"ring_buoy","name":"Ring Buoy","keywords":["life","saver","preserver"],"skins":[{"unified":"1f6df","native":"🛟"}],"version":14},"boat":{"id":"boat","name":"Sailboat","keywords":["boat","ship","summer","transportation","water","sailing"],"skins":[{"unified":"26f5","native":"⛵"}],"version":1},"canoe":{"id":"canoe","name":"Canoe","keywords":["boat","paddle","water","ship"],"skins":[{"unified":"1f6f6","native":"🛶"}],"version":3},"speedboat":{"id":"speedboat","name":"Speedboat","keywords":["ship","transportation","vehicle","summer"],"skins":[{"unified":"1f6a4","native":"🚤"}],"version":1},"passenger_ship":{"id":"passenger_ship","name":"Passenger Ship","keywords":["yacht","cruise","ferry"],"skins":[{"unified":"1f6f3-fe0f","native":"🛳️"}],"version":1},"ferry":{"id":"ferry","name":"Ferry","keywords":["boat","ship","yacht"],"skins":[{"unified":"26f4-fe0f","native":"⛴️"}],"version":1},"motor_boat":{"id":"motor_boat","name":"Motor Boat","keywords":["ship"],"skins":[{"unified":"1f6e5-fe0f","native":"🛥️"}],"version":1},"ship":{"id":"ship","name":"Ship","keywords":["transportation","titanic","deploy"],"skins":[{"unified":"1f6a2","native":"🚢"}],"version":1},"airplane":{"id":"airplane","name":"Airplane","keywords":["vehicle","transportation","flight","fly"],"skins":[{"unified":"2708-fe0f","native":"✈️"}],"version":1},"small_airplane":{"id":"small_airplane","name":"Small Airplane","keywords":["flight","transportation","fly","vehicle"],"skins":[{"unified":"1f6e9-fe0f","native":"🛩️"}],"version":1},"airplane_departure":{"id":"airplane_departure","name":"Airplane Departure","keywords":["airport","flight","landing"],"skins":[{"unified":"1f6eb","native":"🛫"}],"version":1},"airplane_arriving":{"id":"airplane_arriving","name":"Airplane Arrival","keywords":["arriving","airport","flight","boarding"],"skins":[{"unified":"1f6ec","native":"🛬"}],"version":1},"parachute":{"id":"parachute","name":"Parachute","keywords":["fly","glide"],"skins":[{"unified":"1fa82","native":"🪂"}],"version":12},"seat":{"id":"seat","name":"Seat","keywords":["sit","airplane","transport","bus","flight","fly"],"skins":[{"unified":"1f4ba","native":"💺"}],"version":1},"helicopter":{"id":"helicopter","name":"Helicopter","keywords":["transportation","vehicle","fly"],"skins":[{"unified":"1f681","native":"🚁"}],"version":1},"suspension_railway":{"id":"suspension_railway","name":"Suspension Railway","keywords":["vehicle","transportation"],"skins":[{"unified":"1f69f","native":"🚟"}],"version":1},"mountain_cableway":{"id":"mountain_cableway","name":"Mountain Cableway","keywords":["transportation","vehicle","ski"],"skins":[{"unified":"1f6a0","native":"🚠"}],"version":1},"aerial_tramway":{"id":"aerial_tramway","name":"Aerial Tramway","keywords":["transportation","vehicle","ski"],"skins":[{"unified":"1f6a1","native":"🚡"}],"version":1},"satellite":{"id":"satellite","name":"Satellite","keywords":["communication","gps","orbit","spaceflight","NASA","ISS"],"skins":[{"unified":"1f6f0-fe0f","native":"🛰️"}],"version":1},"rocket":{"id":"rocket","name":"Rocket","keywords":["launch","ship","staffmode","NASA","outer","space","fly"],"skins":[{"unified":"1f680","native":"🚀"}],"version":1},"flying_saucer":{"id":"flying_saucer","name":"Flying Saucer","keywords":["transportation","vehicle","ufo"],"skins":[{"unified":"1f6f8","native":"🛸"}],"version":5},"bellhop_bell":{"id":"bellhop_bell","name":"Bellhop Bell","keywords":["service"],"skins":[{"unified":"1f6ce-fe0f","native":"🛎️"}],"version":1},"luggage":{"id":"luggage","name":"Luggage","keywords":["packing","travel"],"skins":[{"unified":"1f9f3","native":"🧳"}],"version":11},"hourglass":{"id":"hourglass","name":"Hourglass","keywords":["done","time","clock","oldschool","limit","exam","quiz","test"],"skins":[{"unified":"231b","native":"⌛"}],"version":1},"hourglass_flowing_sand":{"id":"hourglass_flowing_sand","name":"Hourglass Not Done","keywords":["flowing","sand","oldschool","time","countdown"],"skins":[{"unified":"23f3","native":"⏳"}],"version":1},"watch":{"id":"watch","name":"Watch","keywords":["time","accessories"],"skins":[{"unified":"231a","native":"⌚"}],"version":1},"alarm_clock":{"id":"alarm_clock","name":"Alarm Clock","keywords":["time","wake"],"skins":[{"unified":"23f0","native":"⏰"}],"version":1},"stopwatch":{"id":"stopwatch","name":"Stopwatch","keywords":["time","deadline"],"skins":[{"unified":"23f1-fe0f","native":"⏱️"}],"version":1},"timer_clock":{"id":"timer_clock","name":"Timer Clock","keywords":["alarm"],"skins":[{"unified":"23f2-fe0f","native":"⏲️"}],"version":1},"mantelpiece_clock":{"id":"mantelpiece_clock","name":"Mantelpiece Clock","keywords":["time"],"skins":[{"unified":"1f570-fe0f","native":"🕰️"}],"version":1},"clock12":{"id":"clock12","name":"Twelve O’clock","keywords":["clock12","o","clock","12","00:00","0000","12:00","1200","time","noon","midnight","midday","late","early","schedule"],"skins":[{"unified":"1f55b","native":"🕛"}],"version":1},"clock1230":{"id":"clock1230","name":"Twelve-Thirty","keywords":["clock1230","twelve","thirty","00:30","0030","12:30","1230","time","late","early","schedule"],"skins":[{"unified":"1f567","native":"🕧"}],"version":1},"clock1":{"id":"clock1","name":"One O’clock","keywords":["clock1","o","clock","1","1:00","100","13:00","1300","time","late","early","schedule"],"skins":[{"unified":"1f550","native":"🕐"}],"version":1},"clock130":{"id":"clock130","name":"One-Thirty","keywords":["clock130","one","thirty","1:30","130","13:30","1330","time","late","early","schedule"],"skins":[{"unified":"1f55c","native":"🕜"}],"version":1},"clock2":{"id":"clock2","name":"Two O’clock","keywords":["clock2","o","clock","2","2:00","200","14:00","1400","time","late","early","schedule"],"skins":[{"unified":"1f551","native":"🕑"}],"version":1},"clock230":{"id":"clock230","name":"Two-Thirty","keywords":["clock230","two","thirty","2:30","230","14:30","1430","time","late","early","schedule"],"skins":[{"unified":"1f55d","native":"🕝"}],"version":1},"clock3":{"id":"clock3","name":"Three O’clock","keywords":["clock3","o","clock","3","3:00","300","15:00","1500","time","late","early","schedule"],"skins":[{"unified":"1f552","native":"🕒"}],"version":1},"clock330":{"id":"clock330","name":"Three-Thirty","keywords":["clock330","three","thirty","3:30","330","15:30","1530","time","late","early","schedule"],"skins":[{"unified":"1f55e","native":"🕞"}],"version":1},"clock4":{"id":"clock4","name":"Four O’clock","keywords":["clock4","o","clock","4","4:00","400","16:00","1600","time","late","early","schedule"],"skins":[{"unified":"1f553","native":"🕓"}],"version":1},"clock430":{"id":"clock430","name":"Four-Thirty","keywords":["clock430","four","thirty","4:30","430","16:30","1630","time","late","early","schedule"],"skins":[{"unified":"1f55f","native":"🕟"}],"version":1},"clock5":{"id":"clock5","name":"Five O’clock","keywords":["clock5","o","clock","5","5:00","500","17:00","1700","time","late","early","schedule"],"skins":[{"unified":"1f554","native":"🕔"}],"version":1},"clock530":{"id":"clock530","name":"Five-Thirty","keywords":["clock530","five","thirty","5:30","530","17:30","1730","time","late","early","schedule"],"skins":[{"unified":"1f560","native":"🕠"}],"version":1},"clock6":{"id":"clock6","name":"Six O’clock","keywords":["clock6","o","clock","6","6:00","600","18:00","1800","time","late","early","schedule","dawn","dusk"],"skins":[{"unified":"1f555","native":"🕕"}],"version":1},"clock630":{"id":"clock630","name":"Six-Thirty","keywords":["clock630","six","thirty","6:30","630","18:30","1830","time","late","early","schedule"],"skins":[{"unified":"1f561","native":"🕡"}],"version":1},"clock7":{"id":"clock7","name":"Seven O’clock","keywords":["clock7","o","clock","7","7:00","700","19:00","1900","time","late","early","schedule"],"skins":[{"unified":"1f556","native":"🕖"}],"version":1},"clock730":{"id":"clock730","name":"Seven-Thirty","keywords":["clock730","seven","thirty","7:30","730","19:30","1930","time","late","early","schedule"],"skins":[{"unified":"1f562","native":"🕢"}],"version":1},"clock8":{"id":"clock8","name":"Eight O’clock","keywords":["clock8","o","clock","8","8:00","800","20:00","2000","time","late","early","schedule"],"skins":[{"unified":"1f557","native":"🕗"}],"version":1},"clock830":{"id":"clock830","name":"Eight-Thirty","keywords":["clock830","eight","thirty","8:30","830","20:30","2030","time","late","early","schedule"],"skins":[{"unified":"1f563","native":"🕣"}],"version":1},"clock9":{"id":"clock9","name":"Nine O’clock","keywords":["clock9","o","clock","9","9:00","900","21:00","2100","time","late","early","schedule"],"skins":[{"unified":"1f558","native":"🕘"}],"version":1},"clock930":{"id":"clock930","name":"Nine-Thirty","keywords":["clock930","nine","thirty","9:30","930","21:30","2130","time","late","early","schedule"],"skins":[{"unified":"1f564","native":"🕤"}],"version":1},"clock10":{"id":"clock10","name":"Ten O’clock","keywords":["clock10","o","clock","10","10:00","1000","22:00","2200","time","late","early","schedule"],"skins":[{"unified":"1f559","native":"🕙"}],"version":1},"clock1030":{"id":"clock1030","name":"Ten-Thirty","keywords":["clock1030","ten","thirty","10:30","1030","22:30","2230","time","late","early","schedule"],"skins":[{"unified":"1f565","native":"🕥"}],"version":1},"clock11":{"id":"clock11","name":"Eleven O’clock","keywords":["clock11","o","clock","11","11:00","1100","23:00","2300","time","late","early","schedule"],"skins":[{"unified":"1f55a","native":"🕚"}],"version":1},"clock1130":{"id":"clock1130","name":"Eleven-Thirty","keywords":["clock1130","eleven","thirty","11:30","1130","23:30","2330","time","late","early","schedule"],"skins":[{"unified":"1f566","native":"🕦"}],"version":1},"new_moon":{"id":"new_moon","name":"New Moon","keywords":["nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f311","native":"🌑"}],"version":1},"waxing_crescent_moon":{"id":"waxing_crescent_moon","name":"Waxing Crescent Moon","keywords":["nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f312","native":"🌒"}],"version":1},"first_quarter_moon":{"id":"first_quarter_moon","name":"First Quarter Moon","keywords":["nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f313","native":"🌓"}],"version":1},"moon":{"id":"moon","name":"Waxing Gibbous Moon","keywords":["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"skins":[{"unified":"1f314","native":"🌔"}],"version":1},"full_moon":{"id":"full_moon","name":"Full Moon","keywords":["nature","yellow","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f315","native":"🌕"}],"version":1},"waning_gibbous_moon":{"id":"waning_gibbous_moon","name":"Waning Gibbous Moon","keywords":["nature","twilight","planet","space","night","evening","sleep","waxing"],"skins":[{"unified":"1f316","native":"🌖"}],"version":1},"last_quarter_moon":{"id":"last_quarter_moon","name":"Last Quarter Moon","keywords":["nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f317","native":"🌗"}],"version":1},"waning_crescent_moon":{"id":"waning_crescent_moon","name":"Waning Crescent Moon","keywords":["nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f318","native":"🌘"}],"version":1},"crescent_moon":{"id":"crescent_moon","name":"Crescent Moon","keywords":["night","sleep","sky","evening","magic"],"skins":[{"unified":"1f319","native":"🌙"}],"version":1},"new_moon_with_face":{"id":"new_moon_with_face","name":"New Moon Face","keywords":["with","nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f31a","native":"🌚"}],"version":1},"first_quarter_moon_with_face":{"id":"first_quarter_moon_with_face","name":"First Quarter Moon Face","keywords":["with","nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f31b","native":"🌛"}],"version":1},"last_quarter_moon_with_face":{"id":"last_quarter_moon_with_face","name":"Last Quarter Moon Face","keywords":["with","nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f31c","native":"🌜"}],"version":1},"thermometer":{"id":"thermometer","name":"Thermometer","keywords":["weather","temperature","hot","cold"],"skins":[{"unified":"1f321-fe0f","native":"🌡️"}],"version":1},"sunny":{"id":"sunny","name":"Sun","keywords":["sunny","weather","nature","brightness","summer","beach","spring"],"skins":[{"unified":"2600-fe0f","native":"☀️"}],"version":1},"full_moon_with_face":{"id":"full_moon_with_face","name":"Full Moon Face","keywords":["with","nature","twilight","planet","space","night","evening","sleep"],"skins":[{"unified":"1f31d","native":"🌝"}],"version":1},"sun_with_face":{"id":"sun_with_face","name":"Sun with Face","keywords":["nature","morning","sky"],"skins":[{"unified":"1f31e","native":"🌞"}],"version":1},"ringed_planet":{"id":"ringed_planet","name":"Ringed Planet","keywords":["outerspace"],"skins":[{"unified":"1fa90","native":"🪐"}],"version":12},"star":{"id":"star","name":"Star","keywords":["night","yellow"],"skins":[{"unified":"2b50","native":"⭐"}],"version":1},"star2":{"id":"star2","name":"Glowing Star","keywords":["star2","night","sparkle","awesome","good","magic"],"skins":[{"unified":"1f31f","native":"🌟"}],"version":1},"stars":{"id":"stars","name":"Shooting Star","keywords":["stars","night","photo"],"skins":[{"unified":"1f320","native":"🌠"}],"version":1},"milky_way":{"id":"milky_way","name":"Milky Way","keywords":["photo","space","stars"],"skins":[{"unified":"1f30c","native":"🌌"}],"version":1},"cloud":{"id":"cloud","name":"Cloud","keywords":["weather","sky"],"skins":[{"unified":"2601-fe0f","native":"☁️"}],"version":1},"partly_sunny":{"id":"partly_sunny","name":"Sun Behind Cloud","keywords":["partly","sunny","weather","nature","cloudy","morning","fall","spring"],"skins":[{"unified":"26c5","native":"⛅"}],"version":1},"thunder_cloud_and_rain":{"id":"thunder_cloud_and_rain","name":"Cloud with Lightning and Rain","keywords":["thunder","weather"],"skins":[{"unified":"26c8-fe0f","native":"⛈️"}],"version":1},"mostly_sunny":{"id":"mostly_sunny","name":"Sun Behind Small Cloud","keywords":["mostly","sunny","weather"],"skins":[{"unified":"1f324-fe0f","native":"🌤️"}],"version":1},"barely_sunny":{"id":"barely_sunny","name":"Sun Behind Large Cloud","keywords":["barely","sunny","weather"],"skins":[{"unified":"1f325-fe0f","native":"🌥️"}],"version":1},"partly_sunny_rain":{"id":"partly_sunny_rain","name":"Sun Behind Rain Cloud","keywords":["partly","sunny","weather"],"skins":[{"unified":"1f326-fe0f","native":"🌦️"}],"version":1},"rain_cloud":{"id":"rain_cloud","name":"Cloud with Rain","keywords":["weather"],"skins":[{"unified":"1f327-fe0f","native":"🌧️"}],"version":1},"snow_cloud":{"id":"snow_cloud","name":"Cloud with Snow","keywords":["weather"],"skins":[{"unified":"1f328-fe0f","native":"🌨️"}],"version":1},"lightning":{"id":"lightning","name":"Cloud with Lightning","keywords":["weather","thunder"],"skins":[{"unified":"1f329-fe0f","native":"🌩️"}],"version":1},"tornado":{"id":"tornado","name":"Tornado","keywords":["cloud","weather","cyclone","twister"],"skins":[{"unified":"1f32a-fe0f","native":"🌪️"}],"version":1},"fog":{"id":"fog","name":"Fog","keywords":["weather"],"skins":[{"unified":"1f32b-fe0f","native":"🌫️"}],"version":1},"wind_blowing_face":{"id":"wind_blowing_face","name":"Wind Face","keywords":["blowing","gust","air"],"skins":[{"unified":"1f32c-fe0f","native":"🌬️"}],"version":1},"cyclone":{"id":"cyclone","name":"Cyclone","keywords":["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"skins":[{"unified":"1f300","native":"🌀"}],"version":1},"rainbow":{"id":"rainbow","name":"Rainbow","keywords":["nature","happy","unicorn","face","photo","sky","spring"],"skins":[{"unified":"1f308","native":"🌈"}],"version":1},"closed_umbrella":{"id":"closed_umbrella","name":"Closed Umbrella","keywords":["weather","rain","drizzle"],"skins":[{"unified":"1f302","native":"🌂"}],"version":1},"umbrella":{"id":"umbrella","name":"Umbrella","keywords":["weather","spring"],"skins":[{"unified":"2602-fe0f","native":"☂️"}],"version":1},"umbrella_with_rain_drops":{"id":"umbrella_with_rain_drops","name":"Umbrella with Rain Drops","keywords":["rainy","weather","spring"],"skins":[{"unified":"2614","native":"☔"}],"version":1},"umbrella_on_ground":{"id":"umbrella_on_ground","name":"Umbrella on Ground","keywords":["weather","summer"],"skins":[{"unified":"26f1-fe0f","native":"⛱️"}],"version":1},"zap":{"id":"zap","name":"High Voltage","keywords":["zap","thunder","weather","lightning","bolt","fast"],"skins":[{"unified":"26a1","native":"⚡"}],"version":1},"snowflake":{"id":"snowflake","name":"Snowflake","keywords":["winter","season","cold","weather","christmas","xmas"],"skins":[{"unified":"2744-fe0f","native":"❄️"}],"version":1},"snowman":{"id":"snowman","name":"Snowman","keywords":["winter","season","cold","weather","christmas","xmas","frozen"],"skins":[{"unified":"2603-fe0f","native":"☃️"}],"version":1},"snowman_without_snow":{"id":"snowman_without_snow","name":"Snowman Without Snow","keywords":["winter","season","cold","weather","christmas","xmas","frozen"],"skins":[{"unified":"26c4","native":"⛄"}],"version":1},"comet":{"id":"comet","name":"Comet","keywords":["space"],"skins":[{"unified":"2604-fe0f","native":"☄️"}],"version":1},"fire":{"id":"fire","name":"Fire","keywords":["hot","cook","flame"],"skins":[{"unified":"1f525","native":"🔥"}],"version":1},"droplet":{"id":"droplet","name":"Droplet","keywords":["water","drip","faucet","spring"],"skins":[{"unified":"1f4a7","native":"💧"}],"version":1},"ocean":{"id":"ocean","name":"Water Wave","keywords":["ocean","sea","nature","tsunami","disaster"],"skins":[{"unified":"1f30a","native":"🌊"}],"version":1},"jack_o_lantern":{"id":"jack_o_lantern","name":"Jack-O-Lantern","keywords":["jack","o","lantern","halloween","light","pumpkin","creepy","fall"],"skins":[{"unified":"1f383","native":"🎃"}],"version":1},"christmas_tree":{"id":"christmas_tree","name":"Christmas Tree","keywords":["festival","vacation","december","xmas","celebration"],"skins":[{"unified":"1f384","native":"🎄"}],"version":1},"fireworks":{"id":"fireworks","name":"Fireworks","keywords":["photo","festival","carnival","congratulations"],"skins":[{"unified":"1f386","native":"🎆"}],"version":1},"sparkler":{"id":"sparkler","name":"Sparkler","keywords":["stars","night","shine"],"skins":[{"unified":"1f387","native":"🎇"}],"version":1},"firecracker":{"id":"firecracker","name":"Firecracker","keywords":["dynamite","boom","explode","explosion","explosive"],"skins":[{"unified":"1f9e8","native":"🧨"}],"version":11},"sparkles":{"id":"sparkles","name":"Sparkles","keywords":["stars","shine","shiny","cool","awesome","good","magic"],"skins":[{"unified":"2728","native":"✨"}],"version":1},"balloon":{"id":"balloon","name":"Balloon","keywords":["party","celebration","birthday","circus"],"skins":[{"unified":"1f388","native":"🎈"}],"version":1},"tada":{"id":"tada","name":"Party Popper","keywords":["tada","congratulations","birthday","magic","circus","celebration"],"skins":[{"unified":"1f389","native":"🎉"}],"version":1},"confetti_ball":{"id":"confetti_ball","name":"Confetti Ball","keywords":["festival","party","birthday","circus"],"skins":[{"unified":"1f38a","native":"🎊"}],"version":1},"tanabata_tree":{"id":"tanabata_tree","name":"Tanabata Tree","keywords":["plant","nature","branch","summer","bamboo","wish","star","festival","tanzaku"],"skins":[{"unified":"1f38b","native":"🎋"}],"version":1},"bamboo":{"id":"bamboo","name":"Pine Decoration","keywords":["bamboo","japanese","plant","nature","vegetable","panda","new","years"],"skins":[{"unified":"1f38d","native":"🎍"}],"version":1},"dolls":{"id":"dolls","name":"Japanese Dolls","keywords":["toy","kimono"],"skins":[{"unified":"1f38e","native":"🎎"}],"version":1},"flags":{"id":"flags","name":"Carp Streamer","keywords":["flags","fish","japanese","koinobori","banner"],"skins":[{"unified":"1f38f","native":"🎏"}],"version":1},"wind_chime":{"id":"wind_chime","name":"Wind Chime","keywords":["nature","ding","spring","bell"],"skins":[{"unified":"1f390","native":"🎐"}],"version":1},"rice_scene":{"id":"rice_scene","name":"Moon Viewing Ceremony","keywords":["rice","scene","photo","japan","asia","tsukimi"],"skins":[{"unified":"1f391","native":"🎑"}],"version":1},"red_envelope":{"id":"red_envelope","name":"Red Envelope","keywords":["gift"],"skins":[{"unified":"1f9e7","native":"🧧"}],"version":11},"ribbon":{"id":"ribbon","name":"Ribbon","keywords":["decoration","pink","girl","bowtie"],"skins":[{"unified":"1f380","native":"🎀"}],"version":1},"gift":{"id":"gift","name":"Wrapped Gift","keywords":["present","birthday","christmas","xmas"],"skins":[{"unified":"1f381","native":"🎁"}],"version":1},"reminder_ribbon":{"id":"reminder_ribbon","name":"Reminder Ribbon","keywords":["sports","cause","support","awareness"],"skins":[{"unified":"1f397-fe0f","native":"🎗️"}],"version":1},"admission_tickets":{"id":"admission_tickets","name":"Admission Tickets","keywords":["sports","concert","entrance"],"skins":[{"unified":"1f39f-fe0f","native":"🎟️"}],"version":1},"ticket":{"id":"ticket","name":"Ticket","keywords":["event","concert","pass"],"skins":[{"unified":"1f3ab","native":"🎫"}],"version":1},"medal":{"id":"medal","name":"Military Medal","keywords":["award","winning","army"],"skins":[{"unified":"1f396-fe0f","native":"🎖️"}],"version":1},"trophy":{"id":"trophy","name":"Trophy","keywords":["win","award","contest","place","ftw","ceremony"],"skins":[{"unified":"1f3c6","native":"🏆"}],"version":1},"sports_medal":{"id":"sports_medal","name":"Sports Medal","keywords":["award","winning"],"skins":[{"unified":"1f3c5","native":"🏅"}],"version":1},"first_place_medal":{"id":"first_place_medal","name":"1st Place Medal","keywords":["first","award","winning"],"skins":[{"unified":"1f947","native":"🥇"}],"version":3},"second_place_medal":{"id":"second_place_medal","name":"2nd Place Medal","keywords":["second","award"],"skins":[{"unified":"1f948","native":"🥈"}],"version":3},"third_place_medal":{"id":"third_place_medal","name":"3rd Place Medal","keywords":["third","award"],"skins":[{"unified":"1f949","native":"🥉"}],"version":3},"soccer":{"id":"soccer","name":"Soccer Ball","keywords":["sports","football"],"skins":[{"unified":"26bd","native":"⚽"}],"version":1},"baseball":{"id":"baseball","name":"Baseball","keywords":["sports","balls"],"skins":[{"unified":"26be","native":"⚾"}],"version":1},"softball":{"id":"softball","name":"Softball","keywords":["sports","balls"],"skins":[{"unified":"1f94e","native":"🥎"}],"version":11},"basketball":{"id":"basketball","name":"Basketball","keywords":["sports","balls","NBA"],"skins":[{"unified":"1f3c0","native":"🏀"}],"version":1},"volleyball":{"id":"volleyball","name":"Volleyball","keywords":["sports","balls"],"skins":[{"unified":"1f3d0","native":"🏐"}],"version":1},"football":{"id":"football","name":"American Football","keywords":["sports","balls","NFL"],"skins":[{"unified":"1f3c8","native":"🏈"}],"version":1},"rugby_football":{"id":"rugby_football","name":"Rugby Football","keywords":["sports","team"],"skins":[{"unified":"1f3c9","native":"🏉"}],"version":1},"tennis":{"id":"tennis","name":"Tennis","keywords":["sports","balls","green"],"skins":[{"unified":"1f3be","native":"🎾"}],"version":1},"flying_disc":{"id":"flying_disc","name":"Flying Disc","keywords":["sports","frisbee","ultimate"],"skins":[{"unified":"1f94f","native":"🥏"}],"version":11},"bowling":{"id":"bowling","name":"Bowling","keywords":["sports","fun","play"],"skins":[{"unified":"1f3b3","native":"🎳"}],"version":1},"cricket_bat_and_ball":{"id":"cricket_bat_and_ball","name":"Cricket Game","keywords":["bat","and","ball","sports"],"skins":[{"unified":"1f3cf","native":"🏏"}],"version":1},"field_hockey_stick_and_ball":{"id":"field_hockey_stick_and_ball","name":"Field Hockey","keywords":["stick","and","ball","sports"],"skins":[{"unified":"1f3d1","native":"🏑"}],"version":1},"ice_hockey_stick_and_puck":{"id":"ice_hockey_stick_and_puck","name":"Ice Hockey","keywords":["stick","and","puck","sports"],"skins":[{"unified":"1f3d2","native":"🏒"}],"version":1},"lacrosse":{"id":"lacrosse","name":"Lacrosse","keywords":["sports","ball","stick"],"skins":[{"unified":"1f94d","native":"🥍"}],"version":11},"table_tennis_paddle_and_ball":{"id":"table_tennis_paddle_and_ball","name":"Ping Pong","keywords":["table","tennis","paddle","and","ball","sports","pingpong"],"skins":[{"unified":"1f3d3","native":"🏓"}],"version":1},"badminton_racquet_and_shuttlecock":{"id":"badminton_racquet_and_shuttlecock","name":"Badminton","keywords":["racquet","and","shuttlecock","sports"],"skins":[{"unified":"1f3f8","native":"🏸"}],"version":1},"boxing_glove":{"id":"boxing_glove","name":"Boxing Glove","keywords":["sports","fighting"],"skins":[{"unified":"1f94a","native":"🥊"}],"version":3},"martial_arts_uniform":{"id":"martial_arts_uniform","name":"Martial Arts Uniform","keywords":["judo","karate","taekwondo"],"skins":[{"unified":"1f94b","native":"🥋"}],"version":3},"goal_net":{"id":"goal_net","name":"Goal Net","keywords":["sports"],"skins":[{"unified":"1f945","native":"🥅"}],"version":3},"golf":{"id":"golf","name":"Flag in Hole","keywords":["golf","sports","business","summer"],"skins":[{"unified":"26f3","native":"⛳"}],"version":1},"ice_skate":{"id":"ice_skate","name":"Ice Skate","keywords":["sports"],"skins":[{"unified":"26f8-fe0f","native":"⛸️"}],"version":1},"fishing_pole_and_fish":{"id":"fishing_pole_and_fish","name":"Fishing Pole","keywords":["and","fish","food","hobby","summer"],"skins":[{"unified":"1f3a3","native":"🎣"}],"version":1},"diving_mask":{"id":"diving_mask","name":"Diving Mask","keywords":["sport","ocean"],"skins":[{"unified":"1f93f","native":"🤿"}],"version":12},"running_shirt_with_sash":{"id":"running_shirt_with_sash","name":"Running Shirt","keywords":["with","sash","play","pageant"],"skins":[{"unified":"1f3bd","native":"🎽"}],"version":1},"ski":{"id":"ski","name":"Skis","keywords":["ski","sports","winter","cold","snow"],"skins":[{"unified":"1f3bf","native":"🎿"}],"version":1},"sled":{"id":"sled","name":"Sled","keywords":["sleigh","luge","toboggan"],"skins":[{"unified":"1f6f7","native":"🛷"}],"version":5},"curling_stone":{"id":"curling_stone","name":"Curling Stone","keywords":["sports"],"skins":[{"unified":"1f94c","native":"🥌"}],"version":5},"dart":{"id":"dart","name":"Bullseye","keywords":["dart","direct","hit","game","play","bar","target"],"skins":[{"unified":"1f3af","native":"🎯"}],"version":1},"yo-yo":{"id":"yo-yo","name":"Yo-Yo","keywords":["yo","toy"],"skins":[{"unified":"1fa80","native":"🪀"}],"version":12},"kite":{"id":"kite","name":"Kite","keywords":["wind","fly"],"skins":[{"unified":"1fa81","native":"🪁"}],"version":12},"gun":{"id":"gun","name":"Pistol","keywords":["gun","violence","weapon","revolver"],"skins":[{"unified":"1f52b","native":"🔫"}],"version":1},"8ball":{"id":"8ball","name":"Billiards","keywords":["8ball","pool","8","ball","hobby","game","luck","magic"],"skins":[{"unified":"1f3b1","native":"🎱"}],"version":1},"crystal_ball":{"id":"crystal_ball","name":"Crystal Ball","keywords":["disco","party","magic","circus","fortune","teller"],"skins":[{"unified":"1f52e","native":"🔮"}],"version":1},"magic_wand":{"id":"magic_wand","name":"Magic Wand","keywords":["supernature","power"],"skins":[{"unified":"1fa84","native":"🪄"}],"version":13},"video_game":{"id":"video_game","name":"Video Game","keywords":["play","console","PS4","controller"],"skins":[{"unified":"1f3ae","native":"🎮"}],"version":1},"joystick":{"id":"joystick","name":"Joystick","keywords":["game","play"],"skins":[{"unified":"1f579-fe0f","native":"🕹️"}],"version":1},"slot_machine":{"id":"slot_machine","name":"Slot Machine","keywords":["bet","gamble","vegas","fruit","luck","casino"],"skins":[{"unified":"1f3b0","native":"🎰"}],"version":1},"game_die":{"id":"game_die","name":"Game Die","keywords":["dice","random","tabletop","play","luck"],"skins":[{"unified":"1f3b2","native":"🎲"}],"version":1},"jigsaw":{"id":"jigsaw","name":"Puzzle Piece","keywords":["jigsaw","interlocking"],"skins":[{"unified":"1f9e9","native":"🧩"}],"version":11},"teddy_bear":{"id":"teddy_bear","name":"Teddy Bear","keywords":["plush","stuffed"],"skins":[{"unified":"1f9f8","native":"🧸"}],"version":11},"pinata":{"id":"pinata","name":"Pinata","keywords":["mexico","candy","celebration"],"skins":[{"unified":"1fa85","native":"🪅"}],"version":13},"mirror_ball":{"id":"mirror_ball","name":"Mirror Ball","keywords":["disco","dance","party"],"skins":[{"unified":"1faa9","native":"🪩"}],"version":14},"nesting_dolls":{"id":"nesting_dolls","name":"Nesting Dolls","keywords":["matryoshka","toy"],"skins":[{"unified":"1fa86","native":"🪆"}],"version":13},"spades":{"id":"spades","name":"Spade Suit","keywords":["spades","poker","cards","suits","magic"],"skins":[{"unified":"2660-fe0f","native":"♠️"}],"version":1},"hearts":{"id":"hearts","name":"Heart Suit","keywords":["hearts","poker","cards","magic","suits"],"skins":[{"unified":"2665-fe0f","native":"♥️"}],"version":1},"diamonds":{"id":"diamonds","name":"Diamond Suit","keywords":["diamonds","poker","cards","magic","suits"],"skins":[{"unified":"2666-fe0f","native":"♦️"}],"version":1},"clubs":{"id":"clubs","name":"Club Suit","keywords":["clubs","poker","cards","magic","suits"],"skins":[{"unified":"2663-fe0f","native":"♣️"}],"version":1},"chess_pawn":{"id":"chess_pawn","name":"Chess Pawn","keywords":["expendable"],"skins":[{"unified":"265f-fe0f","native":"♟️"}],"version":11},"black_joker":{"id":"black_joker","name":"Joker","keywords":["black","poker","cards","game","play","magic"],"skins":[{"unified":"1f0cf","native":"🃏"}],"version":1},"mahjong":{"id":"mahjong","name":"Mahjong Red Dragon","keywords":["game","play","chinese","kanji"],"skins":[{"unified":"1f004","native":"🀄"}],"version":1},"flower_playing_cards":{"id":"flower_playing_cards","name":"Flower Playing Cards","keywords":["game","sunset","red"],"skins":[{"unified":"1f3b4","native":"🎴"}],"version":1},"performing_arts":{"id":"performing_arts","name":"Performing Arts","keywords":["acting","theater","drama"],"skins":[{"unified":"1f3ad","native":"🎭"}],"version":1},"frame_with_picture":{"id":"frame_with_picture","name":"Framed Picture","keywords":["frame","with","photography"],"skins":[{"unified":"1f5bc-fe0f","native":"🖼️"}],"version":1},"art":{"id":"art","name":"Artist Palette","keywords":["art","design","paint","draw","colors"],"skins":[{"unified":"1f3a8","native":"🎨"}],"version":1},"thread":{"id":"thread","name":"Thread","keywords":["needle","sewing","spool","string"],"skins":[{"unified":"1f9f5","native":"🧵"}],"version":11},"sewing_needle":{"id":"sewing_needle","name":"Sewing Needle","keywords":["stitches"],"skins":[{"unified":"1faa1","native":"🪡"}],"version":13},"yarn":{"id":"yarn","name":"Yarn","keywords":["ball","crochet","knit"],"skins":[{"unified":"1f9f6","native":"🧶"}],"version":11},"knot":{"id":"knot","name":"Knot","keywords":["rope","scout"],"skins":[{"unified":"1faa2","native":"🪢"}],"version":13},"eyeglasses":{"id":"eyeglasses","name":"Glasses","keywords":["eyeglasses","fashion","accessories","eyesight","nerdy","dork","geek"],"skins":[{"unified":"1f453","native":"👓"}],"version":1},"dark_sunglasses":{"id":"dark_sunglasses","name":"Sunglasses","keywords":["dark","face","cool","accessories"],"skins":[{"unified":"1f576-fe0f","native":"🕶️"}],"version":1},"goggles":{"id":"goggles","name":"Goggles","keywords":["eyes","protection","safety"],"skins":[{"unified":"1f97d","native":"🥽"}],"version":11},"lab_coat":{"id":"lab_coat","name":"Lab Coat","keywords":["doctor","experiment","scientist","chemist"],"skins":[{"unified":"1f97c","native":"🥼"}],"version":11},"safety_vest":{"id":"safety_vest","name":"Safety Vest","keywords":["protection"],"skins":[{"unified":"1f9ba","native":"🦺"}],"version":12},"necktie":{"id":"necktie","name":"Necktie","keywords":["shirt","suitup","formal","fashion","cloth","business"],"skins":[{"unified":"1f454","native":"👔"}],"version":1},"shirt":{"id":"shirt","name":"T-Shirt","keywords":["shirt","tshirt","t","fashion","cloth","casual","tee"],"skins":[{"unified":"1f455","native":"👕"}],"version":1},"jeans":{"id":"jeans","name":"Jeans","keywords":["fashion","shopping"],"skins":[{"unified":"1f456","native":"👖"}],"version":1},"scarf":{"id":"scarf","name":"Scarf","keywords":["neck","winter","clothes"],"skins":[{"unified":"1f9e3","native":"🧣"}],"version":5},"gloves":{"id":"gloves","name":"Gloves","keywords":["hands","winter","clothes"],"skins":[{"unified":"1f9e4","native":"🧤"}],"version":5},"coat":{"id":"coat","name":"Coat","keywords":["jacket"],"skins":[{"unified":"1f9e5","native":"🧥"}],"version":5},"socks":{"id":"socks","name":"Socks","keywords":["stockings","clothes"],"skins":[{"unified":"1f9e6","native":"🧦"}],"version":5},"dress":{"id":"dress","name":"Dress","keywords":["clothes","fashion","shopping"],"skins":[{"unified":"1f457","native":"👗"}],"version":1},"kimono":{"id":"kimono","name":"Kimono","keywords":["dress","fashion","women","female","japanese"],"skins":[{"unified":"1f458","native":"👘"}],"version":1},"sari":{"id":"sari","name":"Sari","keywords":["dress"],"skins":[{"unified":"1f97b","native":"🥻"}],"version":12},"one-piece_swimsuit":{"id":"one-piece_swimsuit","name":"One-Piece Swimsuit","keywords":["one","piece","fashion"],"skins":[{"unified":"1fa71","native":"🩱"}],"version":12},"briefs":{"id":"briefs","name":"Briefs","keywords":["clothing"],"skins":[{"unified":"1fa72","native":"🩲"}],"version":12},"shorts":{"id":"shorts","name":"Shorts","keywords":["clothing"],"skins":[{"unified":"1fa73","native":"🩳"}],"version":12},"bikini":{"id":"bikini","name":"Bikini","keywords":["swimming","female","woman","girl","fashion","beach","summer"],"skins":[{"unified":"1f459","native":"👙"}],"version":1},"womans_clothes":{"id":"womans_clothes","name":"Womans Clothes","keywords":["woman","s","fashion","shopping","bags","female"],"skins":[{"unified":"1f45a","native":"👚"}],"version":1},"folding_hand_fan":{"id":"folding_hand_fan","name":"Folding Hand Fan","keywords":["flamenco","hot"],"skins":[{"unified":"1faad","native":"🪭"}],"version":15},"purse":{"id":"purse","name":"Purse","keywords":["fashion","accessories","money","sales","shopping"],"skins":[{"unified":"1f45b","native":"👛"}],"version":1},"handbag":{"id":"handbag","name":"Handbag","keywords":["fashion","accessory","accessories","shopping"],"skins":[{"unified":"1f45c","native":"👜"}],"version":1},"pouch":{"id":"pouch","name":"Pouch","keywords":["clutch","bag","accessories","shopping"],"skins":[{"unified":"1f45d","native":"👝"}],"version":1},"shopping_bags":{"id":"shopping_bags","name":"Shopping Bags","keywords":["mall","buy","purchase"],"skins":[{"unified":"1f6cd-fe0f","native":"🛍️"}],"version":1},"school_satchel":{"id":"school_satchel","name":"Backpack","keywords":["school","satchel","student","education","bag"],"skins":[{"unified":"1f392","native":"🎒"}],"version":1},"thong_sandal":{"id":"thong_sandal","name":"Thong Sandal","keywords":["footwear","summer"],"skins":[{"unified":"1fa74","native":"🩴"}],"version":13},"mans_shoe":{"id":"mans_shoe","name":"Mans Shoe","keywords":["man","s","fashion","male"],"skins":[{"unified":"1f45e","native":"👞"}],"version":1},"athletic_shoe":{"id":"athletic_shoe","name":"Running Shoe","keywords":["athletic","shoes","sports","sneakers"],"skins":[{"unified":"1f45f","native":"👟"}],"version":1},"hiking_boot":{"id":"hiking_boot","name":"Hiking Boot","keywords":["backpacking","camping"],"skins":[{"unified":"1f97e","native":"🥾"}],"version":11},"womans_flat_shoe":{"id":"womans_flat_shoe","name":"Flat Shoe","keywords":["womans","ballet","slip","on","slipper"],"skins":[{"unified":"1f97f","native":"🥿"}],"version":11},"high_heel":{"id":"high_heel","name":"High-Heeled Shoe","keywords":["high","heel","heeled","fashion","shoes","female","pumps","stiletto"],"skins":[{"unified":"1f460","native":"👠"}],"version":1},"sandal":{"id":"sandal","name":"Womans Sandal","keywords":["woman","s","shoes","fashion","flip","flops"],"skins":[{"unified":"1f461","native":"👡"}],"version":1},"ballet_shoes":{"id":"ballet_shoes","name":"Ballet Shoes","keywords":["dance"],"skins":[{"unified":"1fa70","native":"🩰"}],"version":12},"boot":{"id":"boot","name":"Womans Boots","keywords":["boot","woman","s","shoes","fashion"],"skins":[{"unified":"1f462","native":"👢"}],"version":1},"hair_pick":{"id":"hair_pick","name":"Hair Pick","keywords":["afro","comb"],"skins":[{"unified":"1faae","native":"🪮"}],"version":15},"crown":{"id":"crown","name":"Crown","keywords":["king","kod","leader","royalty","lord"],"skins":[{"unified":"1f451","native":"👑"}],"version":1},"womans_hat":{"id":"womans_hat","name":"Womans Hat","keywords":["woman","s","fashion","accessories","female","lady","spring"],"skins":[{"unified":"1f452","native":"👒"}],"version":1},"tophat":{"id":"tophat","name":"Top Hat","keywords":["tophat","magic","gentleman","classy","circus"],"skins":[{"unified":"1f3a9","native":"🎩"}],"version":1},"mortar_board":{"id":"mortar_board","name":"Graduation Cap","keywords":["mortar","board","school","college","degree","university","hat","legal","learn","education"],"skins":[{"unified":"1f393","native":"🎓"}],"version":1},"billed_cap":{"id":"billed_cap","name":"Billed Cap","keywords":["baseball"],"skins":[{"unified":"1f9e2","native":"🧢"}],"version":5},"military_helmet":{"id":"military_helmet","name":"Military Helmet","keywords":["army","protection"],"skins":[{"unified":"1fa96","native":"🪖"}],"version":13},"helmet_with_white_cross":{"id":"helmet_with_white_cross","name":"Rescue Worker’s Helmet","keywords":["with","white","cross","worker","s","construction","build"],"skins":[{"unified":"26d1-fe0f","native":"⛑️"}],"version":1},"prayer_beads":{"id":"prayer_beads","name":"Prayer Beads","keywords":["dhikr","religious"],"skins":[{"unified":"1f4ff","native":"📿"}],"version":1},"lipstick":{"id":"lipstick","name":"Lipstick","keywords":["female","girl","fashion","woman"],"skins":[{"unified":"1f484","native":"💄"}],"version":1},"ring":{"id":"ring","name":"Ring","keywords":["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"skins":[{"unified":"1f48d","native":"💍"}],"version":1},"gem":{"id":"gem","name":"Gem Stone","keywords":["blue","ruby","diamond","jewelry"],"skins":[{"unified":"1f48e","native":"💎"}],"version":1},"mute":{"id":"mute","name":"Muted Speaker","keywords":["mute","sound","volume","silence","quiet"],"skins":[{"unified":"1f507","native":"🔇"}],"version":1},"speaker":{"id":"speaker","name":"Speaker","keywords":["low","volume","sound","silence","broadcast"],"skins":[{"unified":"1f508","native":"🔈"}],"version":1},"sound":{"id":"sound","name":"Speaker Medium Volume","keywords":["sound","broadcast"],"skins":[{"unified":"1f509","native":"🔉"}],"version":1},"loud_sound":{"id":"loud_sound","name":"Speaker High Volume","keywords":["loud","sound","noise","noisy","broadcast"],"skins":[{"unified":"1f50a","native":"🔊"}],"version":1},"loudspeaker":{"id":"loudspeaker","name":"Loudspeaker","keywords":["volume","sound"],"skins":[{"unified":"1f4e2","native":"📢"}],"version":1},"mega":{"id":"mega","name":"Megaphone","keywords":["mega","sound","speaker","volume"],"skins":[{"unified":"1f4e3","native":"📣"}],"version":1},"postal_horn":{"id":"postal_horn","name":"Postal Horn","keywords":["instrument","music"],"skins":[{"unified":"1f4ef","native":"📯"}],"version":1},"bell":{"id":"bell","name":"Bell","keywords":["sound","notification","christmas","xmas","chime"],"skins":[{"unified":"1f514","native":"🔔"}],"version":1},"no_bell":{"id":"no_bell","name":"Bell with Slash","keywords":["no","sound","volume","mute","quiet","silent"],"skins":[{"unified":"1f515","native":"🔕"}],"version":1},"musical_score":{"id":"musical_score","name":"Musical Score","keywords":["treble","clef","compose"],"skins":[{"unified":"1f3bc","native":"🎼"}],"version":1},"musical_note":{"id":"musical_note","name":"Musical Note","keywords":["score","tone","sound"],"skins":[{"unified":"1f3b5","native":"🎵"}],"version":1},"notes":{"id":"notes","name":"Musical Notes","keywords":["music","score"],"skins":[{"unified":"1f3b6","native":"🎶"}],"version":1},"studio_microphone":{"id":"studio_microphone","name":"Studio Microphone","keywords":["sing","recording","artist","talkshow"],"skins":[{"unified":"1f399-fe0f","native":"🎙️"}],"version":1},"level_slider":{"id":"level_slider","name":"Level Slider","keywords":["scale"],"skins":[{"unified":"1f39a-fe0f","native":"🎚️"}],"version":1},"control_knobs":{"id":"control_knobs","name":"Control Knobs","keywords":["dial"],"skins":[{"unified":"1f39b-fe0f","native":"🎛️"}],"version":1},"microphone":{"id":"microphone","name":"Microphone","keywords":["sound","music","PA","sing","talkshow"],"skins":[{"unified":"1f3a4","native":"🎤"}],"version":1},"headphones":{"id":"headphones","name":"Headphone","keywords":["headphones","music","score","gadgets"],"skins":[{"unified":"1f3a7","native":"🎧"}],"version":1},"radio":{"id":"radio","name":"Radio","keywords":["communication","music","podcast","program"],"skins":[{"unified":"1f4fb","native":"📻"}],"version":1},"saxophone":{"id":"saxophone","name":"Saxophone","keywords":["music","instrument","jazz","blues"],"skins":[{"unified":"1f3b7","native":"🎷"}],"version":1},"accordion":{"id":"accordion","name":"Accordion","keywords":["music"],"skins":[{"unified":"1fa97","native":"🪗"}],"version":13},"guitar":{"id":"guitar","name":"Guitar","keywords":["music","instrument"],"skins":[{"unified":"1f3b8","native":"🎸"}],"version":1},"musical_keyboard":{"id":"musical_keyboard","name":"Musical Keyboard","keywords":["piano","instrument","compose"],"skins":[{"unified":"1f3b9","native":"🎹"}],"version":1},"trumpet":{"id":"trumpet","name":"Trumpet","keywords":["music","brass"],"skins":[{"unified":"1f3ba","native":"🎺"}],"version":1},"violin":{"id":"violin","name":"Violin","keywords":["music","instrument","orchestra","symphony"],"skins":[{"unified":"1f3bb","native":"🎻"}],"version":1},"banjo":{"id":"banjo","name":"Banjo","keywords":["music","instructment"],"skins":[{"unified":"1fa95","native":"🪕"}],"version":12},"drum_with_drumsticks":{"id":"drum_with_drumsticks","name":"Drum","keywords":["with","drumsticks","music","instrument","snare"],"skins":[{"unified":"1f941","native":"🥁"}],"version":3},"long_drum":{"id":"long_drum","name":"Long Drum","keywords":["music"],"skins":[{"unified":"1fa98","native":"🪘"}],"version":13},"maracas":{"id":"maracas","name":"Maracas","keywords":["music","instrument","percussion"],"skins":[{"unified":"1fa87","native":"🪇"}],"version":15},"flute":{"id":"flute","name":"Flute","keywords":["bamboo","music","instrument","pied","piper"],"skins":[{"unified":"1fa88","native":"🪈"}],"version":15},"iphone":{"id":"iphone","name":"Mobile Phone","keywords":["iphone","technology","apple","gadgets","dial"],"skins":[{"unified":"1f4f1","native":"📱"}],"version":1},"calling":{"id":"calling","name":"Mobile Phone with Arrow","keywords":["calling","iphone","incoming"],"skins":[{"unified":"1f4f2","native":"📲"}],"version":1},"phone":{"id":"phone","name":"Telephone","keywords":["phone","technology","communication","dial"],"skins":[{"unified":"260e-fe0f","native":"☎️"}],"version":1},"telephone_receiver":{"id":"telephone_receiver","name":"Telephone Receiver","keywords":["technology","communication","dial"],"skins":[{"unified":"1f4de","native":"📞"}],"version":1},"pager":{"id":"pager","name":"Pager","keywords":["bbcall","oldschool","90s"],"skins":[{"unified":"1f4df","native":"📟"}],"version":1},"fax":{"id":"fax","name":"Fax Machine","keywords":["communication","technology"],"skins":[{"unified":"1f4e0","native":"📠"}],"version":1},"battery":{"id":"battery","name":"Battery","keywords":["power","energy","sustain"],"skins":[{"unified":"1f50b","native":"🔋"}],"version":1},"low_battery":{"id":"low_battery","name":"Low Battery","keywords":["drained","dead"],"skins":[{"unified":"1faab","native":"🪫"}],"version":14},"electric_plug":{"id":"electric_plug","name":"Electric Plug","keywords":["charger","power"],"skins":[{"unified":"1f50c","native":"🔌"}],"version":1},"computer":{"id":"computer","name":"Laptop","keywords":["computer","technology","screen","display","monitor"],"skins":[{"unified":"1f4bb","native":"💻"}],"version":1},"desktop_computer":{"id":"desktop_computer","name":"Desktop Computer","keywords":["technology","computing","screen"],"skins":[{"unified":"1f5a5-fe0f","native":"🖥️"}],"version":1},"printer":{"id":"printer","name":"Printer","keywords":["paper","ink"],"skins":[{"unified":"1f5a8-fe0f","native":"🖨️"}],"version":1},"keyboard":{"id":"keyboard","name":"Keyboard","keywords":["technology","computer","type","input","text"],"skins":[{"unified":"2328-fe0f","native":"⌨️"}],"version":1},"three_button_mouse":{"id":"three_button_mouse","name":"Computer Mouse","keywords":["three","button","click"],"skins":[{"unified":"1f5b1-fe0f","native":"🖱️"}],"version":1},"trackball":{"id":"trackball","name":"Trackball","keywords":["technology","trackpad"],"skins":[{"unified":"1f5b2-fe0f","native":"🖲️"}],"version":1},"minidisc":{"id":"minidisc","name":"Minidisc","keywords":["computer","disk","technology","record","data","90s"],"skins":[{"unified":"1f4bd","native":"💽"}],"version":1},"floppy_disk":{"id":"floppy_disk","name":"Floppy Disk","keywords":["oldschool","technology","save","90s","80s"],"skins":[{"unified":"1f4be","native":"💾"}],"version":1},"cd":{"id":"cd","name":"Optical Disc","keywords":["cd","disk","technology","dvd","90s"],"skins":[{"unified":"1f4bf","native":"💿"}],"version":1},"dvd":{"id":"dvd","name":"Dvd","keywords":["cd","disk","disc"],"skins":[{"unified":"1f4c0","native":"📀"}],"version":1},"abacus":{"id":"abacus","name":"Abacus","keywords":["calculation"],"skins":[{"unified":"1f9ee","native":"🧮"}],"version":11},"movie_camera":{"id":"movie_camera","name":"Movie Camera","keywords":["film","record"],"skins":[{"unified":"1f3a5","native":"🎥"}],"version":1},"film_frames":{"id":"film_frames","name":"Film Frames","keywords":["movie"],"skins":[{"unified":"1f39e-fe0f","native":"🎞️"}],"version":1},"film_projector":{"id":"film_projector","name":"Film Projector","keywords":["video","tape","record","movie"],"skins":[{"unified":"1f4fd-fe0f","native":"📽️"}],"version":1},"clapper":{"id":"clapper","name":"Clapper Board","keywords":["movie","film","record"],"skins":[{"unified":"1f3ac","native":"🎬"}],"version":1},"tv":{"id":"tv","name":"Television","keywords":["tv","technology","program","oldschool","show"],"skins":[{"unified":"1f4fa","native":"📺"}],"version":1},"camera":{"id":"camera","name":"Camera","keywords":["gadgets","photography"],"skins":[{"unified":"1f4f7","native":"📷"}],"version":1},"camera_with_flash":{"id":"camera_with_flash","name":"Camera with Flash","keywords":["photography","gadgets"],"skins":[{"unified":"1f4f8","native":"📸"}],"version":1},"video_camera":{"id":"video_camera","name":"Video Camera","keywords":["film","record"],"skins":[{"unified":"1f4f9","native":"📹"}],"version":1},"vhs":{"id":"vhs","name":"Videocassette","keywords":["vhs","record","video","oldschool","90s","80s"],"skins":[{"unified":"1f4fc","native":"📼"}],"version":1},"mag":{"id":"mag","name":"Magnifying Glass Tilted Left","keywords":["mag","search","zoom","find","detective"],"skins":[{"unified":"1f50d","native":"🔍"}],"version":1},"mag_right":{"id":"mag_right","name":"Magnifying Glass Tilted Right","keywords":["mag","search","zoom","find","detective"],"skins":[{"unified":"1f50e","native":"🔎"}],"version":1},"candle":{"id":"candle","name":"Candle","keywords":["fire","wax"],"skins":[{"unified":"1f56f-fe0f","native":"🕯️"}],"version":1},"bulb":{"id":"bulb","name":"Light Bulb","keywords":["electricity","idea"],"skins":[{"unified":"1f4a1","native":"💡"}],"version":1},"flashlight":{"id":"flashlight","name":"Flashlight","keywords":["dark","camping","sight","night"],"skins":[{"unified":"1f526","native":"🔦"}],"version":1},"izakaya_lantern":{"id":"izakaya_lantern","name":"Izakaya Lantern","keywords":["red","paper","light","halloween","spooky"],"skins":[{"unified":"1f3ee","native":"🏮"}],"version":1},"diya_lamp":{"id":"diya_lamp","name":"Diya Lamp","keywords":["lighting"],"skins":[{"unified":"1fa94","native":"🪔"}],"version":12},"notebook_with_decorative_cover":{"id":"notebook_with_decorative_cover","name":"Notebook with Decorative Cover","keywords":["classroom","notes","record","paper","study"],"skins":[{"unified":"1f4d4","native":"📔"}],"version":1},"closed_book":{"id":"closed_book","name":"Closed Book","keywords":["read","library","knowledge","textbook","learn"],"skins":[{"unified":"1f4d5","native":"📕"}],"version":1},"book":{"id":"book","name":"Open Book","keywords":["read","library","knowledge","literature","learn","study"],"skins":[{"unified":"1f4d6","native":"📖"}],"version":1},"green_book":{"id":"green_book","name":"Green Book","keywords":["read","library","knowledge","study"],"skins":[{"unified":"1f4d7","native":"📗"}],"version":1},"blue_book":{"id":"blue_book","name":"Blue Book","keywords":["read","library","knowledge","learn","study"],"skins":[{"unified":"1f4d8","native":"📘"}],"version":1},"orange_book":{"id":"orange_book","name":"Orange Book","keywords":["read","library","knowledge","textbook","study"],"skins":[{"unified":"1f4d9","native":"📙"}],"version":1},"books":{"id":"books","name":"Books","keywords":["literature","library","study"],"skins":[{"unified":"1f4da","native":"📚"}],"version":1},"notebook":{"id":"notebook","name":"Notebook","keywords":["stationery","record","notes","paper","study"],"skins":[{"unified":"1f4d3","native":"📓"}],"version":1},"ledger":{"id":"ledger","name":"Ledger","keywords":["notes","paper"],"skins":[{"unified":"1f4d2","native":"📒"}],"version":1},"page_with_curl":{"id":"page_with_curl","name":"Page with Curl","keywords":["documents","office","paper"],"skins":[{"unified":"1f4c3","native":"📃"}],"version":1},"scroll":{"id":"scroll","name":"Scroll","keywords":["documents","ancient","history","paper"],"skins":[{"unified":"1f4dc","native":"📜"}],"version":1},"page_facing_up":{"id":"page_facing_up","name":"Page Facing Up","keywords":["documents","office","paper","information"],"skins":[{"unified":"1f4c4","native":"📄"}],"version":1},"newspaper":{"id":"newspaper","name":"Newspaper","keywords":["press","headline"],"skins":[{"unified":"1f4f0","native":"📰"}],"version":1},"rolled_up_newspaper":{"id":"rolled_up_newspaper","name":"Rolled-Up Newspaper","keywords":["rolled","up","press","headline"],"skins":[{"unified":"1f5de-fe0f","native":"🗞️"}],"version":1},"bookmark_tabs":{"id":"bookmark_tabs","name":"Bookmark Tabs","keywords":["favorite","save","order","tidy"],"skins":[{"unified":"1f4d1","native":"📑"}],"version":1},"bookmark":{"id":"bookmark","name":"Bookmark","keywords":["favorite","label","save"],"skins":[{"unified":"1f516","native":"🔖"}],"version":1},"label":{"id":"label","name":"Label","keywords":["sale","tag"],"skins":[{"unified":"1f3f7-fe0f","native":"🏷️"}],"version":1},"moneybag":{"id":"moneybag","name":"Money Bag","keywords":["moneybag","dollar","payment","coins","sale"],"skins":[{"unified":"1f4b0","native":"💰"}],"version":1},"coin":{"id":"coin","name":"Coin","keywords":["money","currency"],"skins":[{"unified":"1fa99","native":"🪙"}],"version":13},"yen":{"id":"yen","name":"Yen Banknote","keywords":["money","sales","japanese","dollar","currency"],"skins":[{"unified":"1f4b4","native":"💴"}],"version":1},"dollar":{"id":"dollar","name":"Dollar Banknote","keywords":["money","sales","bill","currency"],"skins":[{"unified":"1f4b5","native":"💵"}],"version":1},"euro":{"id":"euro","name":"Euro Banknote","keywords":["money","sales","dollar","currency"],"skins":[{"unified":"1f4b6","native":"💶"}],"version":1},"pound":{"id":"pound","name":"Pound Banknote","keywords":["british","sterling","money","sales","bills","uk","england","currency"],"skins":[{"unified":"1f4b7","native":"💷"}],"version":1},"money_with_wings":{"id":"money_with_wings","name":"Money with Wings","keywords":["dollar","bills","payment","sale"],"skins":[{"unified":"1f4b8","native":"💸"}],"version":1},"credit_card":{"id":"credit_card","name":"Credit Card","keywords":["money","sales","dollar","bill","payment","shopping"],"skins":[{"unified":"1f4b3","native":"💳"}],"version":1},"receipt":{"id":"receipt","name":"Receipt","keywords":["accounting","expenses"],"skins":[{"unified":"1f9fe","native":"🧾"}],"version":11},"chart":{"id":"chart","name":"Chart Increasing with Yen","keywords":["green","square","graph","presentation","stats"],"skins":[{"unified":"1f4b9","native":"💹"}],"version":1},"email":{"id":"email","name":"Envelope","keywords":["email","letter","postal","inbox","communication"],"skins":[{"unified":"2709-fe0f","native":"✉️"}],"version":1},"e-mail":{"id":"e-mail","name":"E-Mail","keywords":["e","mail","communication","inbox"],"skins":[{"unified":"1f4e7","native":"📧"}],"version":1},"incoming_envelope":{"id":"incoming_envelope","name":"Incoming Envelope","keywords":["email","inbox"],"skins":[{"unified":"1f4e8","native":"📨"}],"version":1},"envelope_with_arrow":{"id":"envelope_with_arrow","name":"Envelope with Arrow","keywords":["email","communication"],"skins":[{"unified":"1f4e9","native":"📩"}],"version":1},"outbox_tray":{"id":"outbox_tray","name":"Outbox Tray","keywords":["inbox","email"],"skins":[{"unified":"1f4e4","native":"📤"}],"version":1},"inbox_tray":{"id":"inbox_tray","name":"Inbox Tray","keywords":["email","documents"],"skins":[{"unified":"1f4e5","native":"📥"}],"version":1},"package":{"id":"package","name":"Package","keywords":["mail","gift","cardboard","box","moving"],"skins":[{"unified":"1f4e6","native":"📦"}],"version":1},"mailbox":{"id":"mailbox","name":"Closed Mailbox with Raised Flag","keywords":["email","inbox","communication"],"skins":[{"unified":"1f4eb","native":"📫"}],"version":1},"mailbox_closed":{"id":"mailbox_closed","name":"Closed Mailbox with Lowered Flag","keywords":["email","communication","inbox"],"skins":[{"unified":"1f4ea","native":"📪"}],"version":1},"mailbox_with_mail":{"id":"mailbox_with_mail","name":"Open Mailbox with Raised Flag","keywords":["mail","email","inbox","communication"],"skins":[{"unified":"1f4ec","native":"📬"}],"version":1},"mailbox_with_no_mail":{"id":"mailbox_with_no_mail","name":"Open Mailbox with Lowered Flag","keywords":["no","mail","email","inbox"],"skins":[{"unified":"1f4ed","native":"📭"}],"version":1},"postbox":{"id":"postbox","name":"Postbox","keywords":["email","letter","envelope"],"skins":[{"unified":"1f4ee","native":"📮"}],"version":1},"ballot_box_with_ballot":{"id":"ballot_box_with_ballot","name":"Ballot Box with Ballot","keywords":["election","vote"],"skins":[{"unified":"1f5f3-fe0f","native":"🗳️"}],"version":1},"pencil2":{"id":"pencil2","name":"Pencil","keywords":["pencil2","stationery","write","paper","writing","school","study"],"skins":[{"unified":"270f-fe0f","native":"✏️"}],"version":1},"black_nib":{"id":"black_nib","name":"Black Nib","keywords":["pen","stationery","writing","write"],"skins":[{"unified":"2712-fe0f","native":"✒️"}],"version":1},"lower_left_fountain_pen":{"id":"lower_left_fountain_pen","name":"Fountain Pen","keywords":["lower","left","stationery","writing","write"],"skins":[{"unified":"1f58b-fe0f","native":"🖋️"}],"version":1},"lower_left_ballpoint_pen":{"id":"lower_left_ballpoint_pen","name":"Pen","keywords":["lower","left","ballpoint","stationery","writing","write"],"skins":[{"unified":"1f58a-fe0f","native":"🖊️"}],"version":1},"lower_left_paintbrush":{"id":"lower_left_paintbrush","name":"Paintbrush","keywords":["lower","left","drawing","creativity","art"],"skins":[{"unified":"1f58c-fe0f","native":"🖌️"}],"version":1},"lower_left_crayon":{"id":"lower_left_crayon","name":"Crayon","keywords":["lower","left","drawing","creativity"],"skins":[{"unified":"1f58d-fe0f","native":"🖍️"}],"version":1},"memo":{"id":"memo","name":"Memo","keywords":["pencil","write","documents","stationery","paper","writing","legal","exam","quiz","test","study","compose"],"skins":[{"unified":"1f4dd","native":"📝"}],"version":1},"briefcase":{"id":"briefcase","name":"Briefcase","keywords":["business","documents","work","law","legal","job","career"],"skins":[{"unified":"1f4bc","native":"💼"}],"version":1},"file_folder":{"id":"file_folder","name":"File Folder","keywords":["documents","business","office"],"skins":[{"unified":"1f4c1","native":"📁"}],"version":1},"open_file_folder":{"id":"open_file_folder","name":"Open File Folder","keywords":["documents","load"],"skins":[{"unified":"1f4c2","native":"📂"}],"version":1},"card_index_dividers":{"id":"card_index_dividers","name":"Card Index Dividers","keywords":["organizing","business","stationery"],"skins":[{"unified":"1f5c2-fe0f","native":"🗂️"}],"version":1},"date":{"id":"date","name":"Calendar","keywords":["date","schedule"],"skins":[{"unified":"1f4c5","native":"📅"}],"version":1},"calendar":{"id":"calendar","name":"Tear-off Calendar","keywords":["tear","off","schedule","date","planning"],"skins":[{"unified":"1f4c6","native":"📆"}],"version":1},"spiral_note_pad":{"id":"spiral_note_pad","name":"Spiral Notepad","keywords":["note","pad","memo","stationery"],"skins":[{"unified":"1f5d2-fe0f","native":"🗒️"}],"version":1},"spiral_calendar_pad":{"id":"spiral_calendar_pad","name":"Spiral Calendar","keywords":["pad","date","schedule","planning"],"skins":[{"unified":"1f5d3-fe0f","native":"🗓️"}],"version":1},"card_index":{"id":"card_index","name":"Card Index","keywords":["business","stationery"],"skins":[{"unified":"1f4c7","native":"📇"}],"version":1},"chart_with_upwards_trend":{"id":"chart_with_upwards_trend","name":"Chart Increasing","keywords":["with","upwards","trend","graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"skins":[{"unified":"1f4c8","native":"📈"}],"version":1},"chart_with_downwards_trend":{"id":"chart_with_downwards_trend","name":"Chart Decreasing","keywords":["with","downwards","trend","graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"skins":[{"unified":"1f4c9","native":"📉"}],"version":1},"bar_chart":{"id":"bar_chart","name":"Bar Chart","keywords":["graph","presentation","stats"],"skins":[{"unified":"1f4ca","native":"📊"}],"version":1},"clipboard":{"id":"clipboard","name":"Clipboard","keywords":["stationery","documents"],"skins":[{"unified":"1f4cb","native":"📋"}],"version":1},"pushpin":{"id":"pushpin","name":"Pushpin","keywords":["stationery","mark","here"],"skins":[{"unified":"1f4cc","native":"📌"}],"version":1},"round_pushpin":{"id":"round_pushpin","name":"Round Pushpin","keywords":["stationery","location","map","here"],"skins":[{"unified":"1f4cd","native":"📍"}],"version":1},"paperclip":{"id":"paperclip","name":"Paperclip","keywords":["documents","stationery"],"skins":[{"unified":"1f4ce","native":"📎"}],"version":1},"linked_paperclips":{"id":"linked_paperclips","name":"Linked Paperclips","keywords":["documents","stationery"],"skins":[{"unified":"1f587-fe0f","native":"🖇️"}],"version":1},"straight_ruler":{"id":"straight_ruler","name":"Straight Ruler","keywords":["stationery","calculate","length","math","school","drawing","architect","sketch"],"skins":[{"unified":"1f4cf","native":"📏"}],"version":1},"triangular_ruler":{"id":"triangular_ruler","name":"Triangular Ruler","keywords":["stationery","math","architect","sketch"],"skins":[{"unified":"1f4d0","native":"📐"}],"version":1},"scissors":{"id":"scissors","name":"Scissors","keywords":["stationery","cut"],"skins":[{"unified":"2702-fe0f","native":"✂️"}],"version":1},"card_file_box":{"id":"card_file_box","name":"Card File Box","keywords":["business","stationery"],"skins":[{"unified":"1f5c3-fe0f","native":"🗃️"}],"version":1},"file_cabinet":{"id":"file_cabinet","name":"File Cabinet","keywords":["filing","organizing"],"skins":[{"unified":"1f5c4-fe0f","native":"🗄️"}],"version":1},"wastebasket":{"id":"wastebasket","name":"Wastebasket","keywords":["bin","trash","rubbish","garbage","toss"],"skins":[{"unified":"1f5d1-fe0f","native":"🗑️"}],"version":1},"lock":{"id":"lock","name":"Lock","keywords":["locked","security","password","padlock"],"skins":[{"unified":"1f512","native":"🔒"}],"version":1},"unlock":{"id":"unlock","name":"Unlocked","keywords":["unlock","privacy","security"],"skins":[{"unified":"1f513","native":"🔓"}],"version":1},"lock_with_ink_pen":{"id":"lock_with_ink_pen","name":"Locked with Pen","keywords":["lock","ink","security","secret"],"skins":[{"unified":"1f50f","native":"🔏"}],"version":1},"closed_lock_with_key":{"id":"closed_lock_with_key","name":"Locked with Key","keywords":["closed","lock","security","privacy"],"skins":[{"unified":"1f510","native":"🔐"}],"version":1},"key":{"id":"key","name":"Key","keywords":["lock","door","password"],"skins":[{"unified":"1f511","native":"🔑"}],"version":1},"old_key":{"id":"old_key","name":"Old Key","keywords":["lock","door","password"],"skins":[{"unified":"1f5dd-fe0f","native":"🗝️"}],"version":1},"hammer":{"id":"hammer","name":"Hammer","keywords":["tools","build","create"],"skins":[{"unified":"1f528","native":"🔨"}],"version":1},"axe":{"id":"axe","name":"Axe","keywords":["tool","chop","cut"],"skins":[{"unified":"1fa93","native":"🪓"}],"version":12},"pick":{"id":"pick","name":"Pick","keywords":["tools","dig"],"skins":[{"unified":"26cf-fe0f","native":"⛏️"}],"version":1},"hammer_and_pick":{"id":"hammer_and_pick","name":"Hammer and Pick","keywords":["tools","build","create"],"skins":[{"unified":"2692-fe0f","native":"⚒️"}],"version":1},"hammer_and_wrench":{"id":"hammer_and_wrench","name":"Hammer and Wrench","keywords":["tools","build","create"],"skins":[{"unified":"1f6e0-fe0f","native":"🛠️"}],"version":1},"dagger_knife":{"id":"dagger_knife","name":"Dagger","keywords":["knife","weapon"],"skins":[{"unified":"1f5e1-fe0f","native":"🗡️"}],"version":1},"crossed_swords":{"id":"crossed_swords","name":"Crossed Swords","keywords":["weapon"],"skins":[{"unified":"2694-fe0f","native":"⚔️"}],"version":1},"bomb":{"id":"bomb","name":"Bomb","keywords":["boom","explode","explosion","terrorism"],"skins":[{"unified":"1f4a3","native":"💣"}],"version":1},"boomerang":{"id":"boomerang","name":"Boomerang","keywords":["weapon"],"skins":[{"unified":"1fa83","native":"🪃"}],"version":13},"bow_and_arrow":{"id":"bow_and_arrow","name":"Bow and Arrow","keywords":["sports"],"skins":[{"unified":"1f3f9","native":"🏹"}],"version":1},"shield":{"id":"shield","name":"Shield","keywords":["protection","security"],"skins":[{"unified":"1f6e1-fe0f","native":"🛡️"}],"version":1},"carpentry_saw":{"id":"carpentry_saw","name":"Carpentry Saw","keywords":["cut","chop"],"skins":[{"unified":"1fa9a","native":"🪚"}],"version":13},"wrench":{"id":"wrench","name":"Wrench","keywords":["tools","diy","ikea","fix","maintainer"],"skins":[{"unified":"1f527","native":"🔧"}],"version":1},"screwdriver":{"id":"screwdriver","name":"Screwdriver","keywords":["tools"],"skins":[{"unified":"1fa9b","native":"🪛"}],"version":13},"nut_and_bolt":{"id":"nut_and_bolt","name":"Nut and Bolt","keywords":["handy","tools","fix"],"skins":[{"unified":"1f529","native":"🔩"}],"version":1},"gear":{"id":"gear","name":"Gear","keywords":["cog"],"skins":[{"unified":"2699-fe0f","native":"⚙️"}],"version":1},"compression":{"id":"compression","name":"Clamp","keywords":["compression","tool"],"skins":[{"unified":"1f5dc-fe0f","native":"🗜️"}],"version":1},"scales":{"id":"scales","name":"Balance Scale","keywords":["scales","law","fairness","weight"],"skins":[{"unified":"2696-fe0f","native":"⚖️"}],"version":1},"probing_cane":{"id":"probing_cane","name":"White Cane","keywords":["probing","accessibility"],"skins":[{"unified":"1f9af","native":"🦯"}],"version":12},"link":{"id":"link","name":"Link","keywords":["rings","url"],"skins":[{"unified":"1f517","native":"🔗"}],"version":1},"chains":{"id":"chains","name":"Chains","keywords":["lock","arrest"],"skins":[{"unified":"26d3-fe0f","native":"⛓️"}],"version":1},"hook":{"id":"hook","name":"Hook","keywords":["tools"],"skins":[{"unified":"1fa9d","native":"🪝"}],"version":13},"toolbox":{"id":"toolbox","name":"Toolbox","keywords":["tools","diy","fix","maintainer","mechanic"],"skins":[{"unified":"1f9f0","native":"🧰"}],"version":11},"magnet":{"id":"magnet","name":"Magnet","keywords":["attraction","magnetic"],"skins":[{"unified":"1f9f2","native":"🧲"}],"version":11},"ladder":{"id":"ladder","name":"Ladder","keywords":["tools"],"skins":[{"unified":"1fa9c","native":"🪜"}],"version":13},"alembic":{"id":"alembic","name":"Alembic","keywords":["distilling","science","experiment","chemistry"],"skins":[{"unified":"2697-fe0f","native":"⚗️"}],"version":1},"test_tube":{"id":"test_tube","name":"Test Tube","keywords":["chemistry","experiment","lab","science"],"skins":[{"unified":"1f9ea","native":"🧪"}],"version":11},"petri_dish":{"id":"petri_dish","name":"Petri Dish","keywords":["bacteria","biology","culture","lab"],"skins":[{"unified":"1f9eb","native":"🧫"}],"version":11},"dna":{"id":"dna","name":"Dna","keywords":["biologist","genetics","life"],"skins":[{"unified":"1f9ec","native":"🧬"}],"version":11},"microscope":{"id":"microscope","name":"Microscope","keywords":["laboratory","experiment","zoomin","science","study"],"skins":[{"unified":"1f52c","native":"🔬"}],"version":1},"telescope":{"id":"telescope","name":"Telescope","keywords":["stars","space","zoom","science","astronomy"],"skins":[{"unified":"1f52d","native":"🔭"}],"version":1},"satellite_antenna":{"id":"satellite_antenna","name":"Satellite Antenna","keywords":["communication","future","radio","space"],"skins":[{"unified":"1f4e1","native":"📡"}],"version":1},"syringe":{"id":"syringe","name":"Syringe","keywords":["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"skins":[{"unified":"1f489","native":"💉"}],"version":1},"drop_of_blood":{"id":"drop_of_blood","name":"Drop of Blood","keywords":["period","hurt","harm","wound"],"skins":[{"unified":"1fa78","native":"🩸"}],"version":12},"pill":{"id":"pill","name":"Pill","keywords":["health","medicine","doctor","pharmacy","drug"],"skins":[{"unified":"1f48a","native":"💊"}],"version":1},"adhesive_bandage":{"id":"adhesive_bandage","name":"Adhesive Bandage","keywords":["heal"],"skins":[{"unified":"1fa79","native":"🩹"}],"version":12},"crutch":{"id":"crutch","name":"Crutch","keywords":["accessibility","assist"],"skins":[{"unified":"1fa7c","native":"🩼"}],"version":14},"stethoscope":{"id":"stethoscope","name":"Stethoscope","keywords":["health"],"skins":[{"unified":"1fa7a","native":"🩺"}],"version":12},"x-ray":{"id":"x-ray","name":"X-Ray","keywords":["x","ray","skeleton","medicine"],"skins":[{"unified":"1fa7b","native":"🩻"}],"version":14},"door":{"id":"door","name":"Door","keywords":["house","entry","exit"],"skins":[{"unified":"1f6aa","native":"🚪"}],"version":1},"elevator":{"id":"elevator","name":"Elevator","keywords":["lift"],"skins":[{"unified":"1f6d7","native":"🛗"}],"version":13},"mirror":{"id":"mirror","name":"Mirror","keywords":["reflection"],"skins":[{"unified":"1fa9e","native":"🪞"}],"version":13},"window":{"id":"window","name":"Window","keywords":["scenery"],"skins":[{"unified":"1fa9f","native":"🪟"}],"version":13},"bed":{"id":"bed","name":"Bed","keywords":["sleep","rest"],"skins":[{"unified":"1f6cf-fe0f","native":"🛏️"}],"version":1},"couch_and_lamp":{"id":"couch_and_lamp","name":"Couch and Lamp","keywords":["read","chill"],"skins":[{"unified":"1f6cb-fe0f","native":"🛋️"}],"version":1},"chair":{"id":"chair","name":"Chair","keywords":["sit","furniture"],"skins":[{"unified":"1fa91","native":"🪑"}],"version":12},"toilet":{"id":"toilet","name":"Toilet","keywords":["restroom","wc","washroom","bathroom","potty"],"skins":[{"unified":"1f6bd","native":"🚽"}],"version":1},"plunger":{"id":"plunger","name":"Plunger","keywords":["toilet"],"skins":[{"unified":"1faa0","native":"🪠"}],"version":13},"shower":{"id":"shower","name":"Shower","keywords":["clean","water","bathroom"],"skins":[{"unified":"1f6bf","native":"🚿"}],"version":1},"bathtub":{"id":"bathtub","name":"Bathtub","keywords":["clean","shower","bathroom"],"skins":[{"unified":"1f6c1","native":"🛁"}],"version":1},"mouse_trap":{"id":"mouse_trap","name":"Mouse Trap","keywords":["cheese"],"skins":[{"unified":"1faa4","native":"🪤"}],"version":13},"razor":{"id":"razor","name":"Razor","keywords":["cut"],"skins":[{"unified":"1fa92","native":"🪒"}],"version":12},"lotion_bottle":{"id":"lotion_bottle","name":"Lotion Bottle","keywords":["moisturizer","sunscreen"],"skins":[{"unified":"1f9f4","native":"🧴"}],"version":11},"safety_pin":{"id":"safety_pin","name":"Safety Pin","keywords":["diaper"],"skins":[{"unified":"1f9f7","native":"🧷"}],"version":11},"broom":{"id":"broom","name":"Broom","keywords":["cleaning","sweeping","witch"],"skins":[{"unified":"1f9f9","native":"🧹"}],"version":11},"basket":{"id":"basket","name":"Basket","keywords":["laundry"],"skins":[{"unified":"1f9fa","native":"🧺"}],"version":11},"roll_of_paper":{"id":"roll_of_paper","name":"Roll of Paper","keywords":[],"skins":[{"unified":"1f9fb","native":"🧻"}],"version":11},"bucket":{"id":"bucket","name":"Bucket","keywords":["water","container"],"skins":[{"unified":"1faa3","native":"🪣"}],"version":13},"soap":{"id":"soap","name":"Soap","keywords":["bar","bathing","cleaning","lather"],"skins":[{"unified":"1f9fc","native":"🧼"}],"version":11},"bubbles":{"id":"bubbles","name":"Bubbles","keywords":["soap","fun","carbonation","sparkling"],"skins":[{"unified":"1fae7","native":"🫧"}],"version":14},"toothbrush":{"id":"toothbrush","name":"Toothbrush","keywords":["hygiene","dental"],"skins":[{"unified":"1faa5","native":"🪥"}],"version":13},"sponge":{"id":"sponge","name":"Sponge","keywords":["absorbing","cleaning","porous"],"skins":[{"unified":"1f9fd","native":"🧽"}],"version":11},"fire_extinguisher":{"id":"fire_extinguisher","name":"Fire Extinguisher","keywords":["quench"],"skins":[{"unified":"1f9ef","native":"🧯"}],"version":11},"shopping_trolley":{"id":"shopping_trolley","name":"Shopping Cart","keywords":["trolley"],"skins":[{"unified":"1f6d2","native":"🛒"}],"version":3},"smoking":{"id":"smoking","name":"Cigarette","keywords":["smoking","kills","tobacco","joint","smoke"],"skins":[{"unified":"1f6ac","native":"🚬"}],"version":1},"coffin":{"id":"coffin","name":"Coffin","keywords":["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"skins":[{"unified":"26b0-fe0f","native":"⚰️"}],"version":1},"headstone":{"id":"headstone","name":"Headstone","keywords":["death","rip","grave"],"skins":[{"unified":"1faa6","native":"🪦"}],"version":13},"funeral_urn":{"id":"funeral_urn","name":"Funeral Urn","keywords":["dead","die","death","rip","ashes"],"skins":[{"unified":"26b1-fe0f","native":"⚱️"}],"version":1},"nazar_amulet":{"id":"nazar_amulet","name":"Nazar Amulet","keywords":["bead","charm"],"skins":[{"unified":"1f9ff","native":"🧿"}],"version":11},"hamsa":{"id":"hamsa","name":"Hamsa","keywords":["religion","protection"],"skins":[{"unified":"1faac","native":"🪬"}],"version":14},"moyai":{"id":"moyai","name":"Moai","keywords":["moyai","rock","easter","island"],"skins":[{"unified":"1f5ff","native":"🗿"}],"version":1},"placard":{"id":"placard","name":"Placard","keywords":["announcement"],"skins":[{"unified":"1faa7","native":"🪧"}],"version":13},"identification_card":{"id":"identification_card","name":"Identification Card","keywords":["document"],"skins":[{"unified":"1faaa","native":"🪪"}],"version":14},"atm":{"id":"atm","name":"Atm Sign","keywords":["money","sales","cash","blue","square","payment","bank"],"skins":[{"unified":"1f3e7","native":"🏧"}],"version":1},"put_litter_in_its_place":{"id":"put_litter_in_its_place","name":"Litter in Bin Sign","keywords":["put","its","place","blue","square","human","info"],"skins":[{"unified":"1f6ae","native":"🚮"}],"version":1},"potable_water":{"id":"potable_water","name":"Potable Water","keywords":["blue","square","liquid","restroom","cleaning","faucet"],"skins":[{"unified":"1f6b0","native":"🚰"}],"version":1},"wheelchair":{"id":"wheelchair","name":"Wheelchair Symbol","keywords":["blue","square","disabled","accessibility"],"skins":[{"unified":"267f","native":"♿"}],"version":1},"mens":{"id":"mens","name":"Men’s Room","keywords":["mens","men","s","toilet","restroom","wc","blue","square","gender","male"],"skins":[{"unified":"1f6b9","native":"🚹"}],"version":1},"womens":{"id":"womens","name":"Women’s Room","keywords":["womens","women","s","purple","square","woman","female","toilet","loo","restroom","gender"],"skins":[{"unified":"1f6ba","native":"🚺"}],"version":1},"restroom":{"id":"restroom","name":"Restroom","keywords":["blue","square","toilet","refresh","wc","gender"],"skins":[{"unified":"1f6bb","native":"🚻"}],"version":1},"baby_symbol":{"id":"baby_symbol","name":"Baby Symbol","keywords":["orange","square","child"],"skins":[{"unified":"1f6bc","native":"🚼"}],"version":1},"wc":{"id":"wc","name":"Water Closet","keywords":["wc","toilet","restroom","blue","square"],"skins":[{"unified":"1f6be","native":"🚾"}],"version":1},"passport_control":{"id":"passport_control","name":"Passport Control","keywords":["custom","blue","square"],"skins":[{"unified":"1f6c2","native":"🛂"}],"version":1},"customs":{"id":"customs","name":"Customs","keywords":["passport","border","blue","square"],"skins":[{"unified":"1f6c3","native":"🛃"}],"version":1},"baggage_claim":{"id":"baggage_claim","name":"Baggage Claim","keywords":["blue","square","airport","transport"],"skins":[{"unified":"1f6c4","native":"🛄"}],"version":1},"left_luggage":{"id":"left_luggage","name":"Left Luggage","keywords":["blue","square","travel"],"skins":[{"unified":"1f6c5","native":"🛅"}],"version":1},"warning":{"id":"warning","name":"Warning","keywords":["exclamation","wip","alert","error","problem","issue"],"skins":[{"unified":"26a0-fe0f","native":"⚠️"}],"version":1},"children_crossing":{"id":"children_crossing","name":"Children Crossing","keywords":["school","warning","danger","sign","driving","yellow","diamond"],"skins":[{"unified":"1f6b8","native":"🚸"}],"version":1},"no_entry":{"id":"no_entry","name":"No Entry","keywords":["limit","security","privacy","bad","denied","stop","circle"],"skins":[{"unified":"26d4","native":"⛔"}],"version":1},"no_entry_sign":{"id":"no_entry_sign","name":"Prohibited","keywords":["no","entry","sign","forbid","stop","limit","denied","disallow","circle"],"skins":[{"unified":"1f6ab","native":"🚫"}],"version":1},"no_bicycles":{"id":"no_bicycles","name":"No Bicycles","keywords":["cyclist","prohibited","circle"],"skins":[{"unified":"1f6b3","native":"🚳"}],"version":1},"no_smoking":{"id":"no_smoking","name":"No Smoking","keywords":["cigarette","blue","square","smell","smoke"],"skins":[{"unified":"1f6ad","native":"🚭"}],"version":1},"do_not_litter":{"id":"do_not_litter","name":"No Littering","keywords":["do","not","litter","trash","bin","garbage","circle"],"skins":[{"unified":"1f6af","native":"🚯"}],"version":1},"non-potable_water":{"id":"non-potable_water","name":"Non-Potable Water","keywords":["non","potable","drink","faucet","tap","circle"],"skins":[{"unified":"1f6b1","native":"🚱"}],"version":1},"no_pedestrians":{"id":"no_pedestrians","name":"No Pedestrians","keywords":["rules","crossing","walking","circle"],"skins":[{"unified":"1f6b7","native":"🚷"}],"version":1},"no_mobile_phones":{"id":"no_mobile_phones","name":"No Mobile Phones","keywords":["iphone","mute","circle"],"skins":[{"unified":"1f4f5","native":"📵"}],"version":1},"underage":{"id":"underage","name":"No One Under Eighteen","keywords":["underage","18","drink","pub","night","minor","circle"],"skins":[{"unified":"1f51e","native":"🔞"}],"version":1},"radioactive_sign":{"id":"radioactive_sign","name":"Radioactive","keywords":["sign","nuclear","danger"],"skins":[{"unified":"2622-fe0f","native":"☢️"}],"version":1},"biohazard_sign":{"id":"biohazard_sign","name":"Biohazard","keywords":["sign","danger"],"skins":[{"unified":"2623-fe0f","native":"☣️"}],"version":1},"arrow_up":{"id":"arrow_up","name":"Up Arrow","keywords":["blue","square","continue","top","direction"],"skins":[{"unified":"2b06-fe0f","native":"⬆️"}],"version":1},"arrow_upper_right":{"id":"arrow_upper_right","name":"Up-Right Arrow","keywords":["upper","right","up","blue","square","point","direction","diagonal","northeast"],"skins":[{"unified":"2197-fe0f","native":"↗️"}],"version":1},"arrow_right":{"id":"arrow_right","name":"Right Arrow","keywords":["blue","square","next"],"skins":[{"unified":"27a1-fe0f","native":"➡️"}],"version":1},"arrow_lower_right":{"id":"arrow_lower_right","name":"South East Arrow","keywords":["lower","right","down","blue","square","direction","diagonal","southeast"],"skins":[{"unified":"2198-fe0f","native":"↘️"}],"version":1},"arrow_down":{"id":"arrow_down","name":"Down Arrow","keywords":["blue","square","direction","bottom"],"skins":[{"unified":"2b07-fe0f","native":"⬇️"}],"version":1},"arrow_lower_left":{"id":"arrow_lower_left","name":"Down-Left Arrow","keywords":["lower","left","down","blue","square","direction","diagonal","southwest"],"skins":[{"unified":"2199-fe0f","native":"↙️"}],"version":1},"arrow_left":{"id":"arrow_left","name":"Left Arrow","keywords":["blue","square","previous","back"],"skins":[{"unified":"2b05-fe0f","native":"⬅️"}],"version":1},"arrow_upper_left":{"id":"arrow_upper_left","name":"Up-Left Arrow","keywords":["upper","left","up","blue","square","point","direction","diagonal","northwest"],"skins":[{"unified":"2196-fe0f","native":"↖️"}],"version":1},"arrow_up_down":{"id":"arrow_up_down","name":"Up Down Arrow","keywords":["blue","square","direction","way","vertical"],"skins":[{"unified":"2195-fe0f","native":"↕️"}],"version":1},"left_right_arrow":{"id":"left_right_arrow","name":"Left Right Arrow","keywords":["shape","direction","horizontal","sideways"],"skins":[{"unified":"2194-fe0f","native":"↔️"}],"version":1},"leftwards_arrow_with_hook":{"id":"leftwards_arrow_with_hook","name":"Right Arrow Curving Left","keywords":["leftwards","with","hook","back","return","blue","square","undo","enter"],"skins":[{"unified":"21a9-fe0f","native":"↩️"}],"version":1},"arrow_right_hook":{"id":"arrow_right_hook","name":"Left Arrow Curving Right","keywords":["hook","blue","square","return","rotate","direction"],"skins":[{"unified":"21aa-fe0f","native":"↪️"}],"version":1},"arrow_heading_up":{"id":"arrow_heading_up","name":"Right Arrow Curving Up","keywords":["heading","blue","square","direction","top"],"skins":[{"unified":"2934-fe0f","native":"⤴️"}],"version":1},"arrow_heading_down":{"id":"arrow_heading_down","name":"Right Arrow Curving Down","keywords":["heading","blue","square","direction","bottom"],"skins":[{"unified":"2935-fe0f","native":"⤵️"}],"version":1},"arrows_clockwise":{"id":"arrows_clockwise","name":"Clockwise Vertical Arrows","keywords":["sync","cycle","round","repeat"],"skins":[{"unified":"1f503","native":"🔃"}],"version":1},"arrows_counterclockwise":{"id":"arrows_counterclockwise","name":"Counterclockwise Arrows Button","keywords":["blue","square","sync","cycle"],"skins":[{"unified":"1f504","native":"🔄"}],"version":1},"back":{"id":"back","name":"Back Arrow","keywords":["words","return"],"skins":[{"unified":"1f519","native":"🔙"}],"version":1},"end":{"id":"end","name":"End Arrow","keywords":["words"],"skins":[{"unified":"1f51a","native":"🔚"}],"version":1},"on":{"id":"on","name":"On! Arrow","keywords":["on","words"],"skins":[{"unified":"1f51b","native":"🔛"}],"version":1},"soon":{"id":"soon","name":"Soon Arrow","keywords":["words"],"skins":[{"unified":"1f51c","native":"🔜"}],"version":1},"top":{"id":"top","name":"Top Arrow","keywords":["words","blue","square"],"skins":[{"unified":"1f51d","native":"🔝"}],"version":1},"place_of_worship":{"id":"place_of_worship","name":"Place of Worship","keywords":["religion","church","temple","prayer"],"skins":[{"unified":"1f6d0","native":"🛐"}],"version":1},"atom_symbol":{"id":"atom_symbol","name":"Atom Symbol","keywords":["science","physics","chemistry"],"skins":[{"unified":"269b-fe0f","native":"⚛️"}],"version":1},"om_symbol":{"id":"om_symbol","name":"Om","keywords":["symbol","hinduism","buddhism","sikhism","jainism"],"skins":[{"unified":"1f549-fe0f","native":"🕉️"}],"version":1},"star_of_david":{"id":"star_of_david","name":"Star of David","keywords":["judaism"],"skins":[{"unified":"2721-fe0f","native":"✡️"}],"version":1},"wheel_of_dharma":{"id":"wheel_of_dharma","name":"Wheel of Dharma","keywords":["hinduism","buddhism","sikhism","jainism"],"skins":[{"unified":"2638-fe0f","native":"☸️"}],"version":1},"yin_yang":{"id":"yin_yang","name":"Yin Yang","keywords":["balance"],"skins":[{"unified":"262f-fe0f","native":"☯️"}],"version":1},"latin_cross":{"id":"latin_cross","name":"Latin Cross","keywords":["christianity"],"skins":[{"unified":"271d-fe0f","native":"✝️"}],"version":1},"orthodox_cross":{"id":"orthodox_cross","name":"Orthodox Cross","keywords":["suppedaneum","religion"],"skins":[{"unified":"2626-fe0f","native":"☦️"}],"version":1},"star_and_crescent":{"id":"star_and_crescent","name":"Star and Crescent","keywords":["islam"],"skins":[{"unified":"262a-fe0f","native":"☪️"}],"version":1},"peace_symbol":{"id":"peace_symbol","name":"Peace Symbol","keywords":["hippie"],"skins":[{"unified":"262e-fe0f","native":"☮️"}],"version":1},"menorah_with_nine_branches":{"id":"menorah_with_nine_branches","name":"Menorah","keywords":["with","nine","branches","hanukkah","candles","jewish"],"skins":[{"unified":"1f54e","native":"🕎"}],"version":1},"six_pointed_star":{"id":"six_pointed_star","name":"Dotted Six-Pointed Star","keywords":["six","pointed","purple","square","religion","jewish","hexagram"],"skins":[{"unified":"1f52f","native":"🔯"}],"version":1},"khanda":{"id":"khanda","name":"Khanda","keywords":["Sikhism","religion"],"skins":[{"unified":"1faaf","native":"🪯"}],"version":15},"aries":{"id":"aries","name":"Aries","keywords":["sign","purple","square","zodiac","astrology"],"skins":[{"unified":"2648","native":"♈"}],"version":1},"taurus":{"id":"taurus","name":"Taurus","keywords":["purple","square","sign","zodiac","astrology"],"skins":[{"unified":"2649","native":"♉"}],"version":1},"gemini":{"id":"gemini","name":"Gemini","keywords":["sign","zodiac","purple","square","astrology"],"skins":[{"unified":"264a","native":"♊"}],"version":1},"cancer":{"id":"cancer","name":"Cancer","keywords":["sign","zodiac","purple","square","astrology"],"skins":[{"unified":"264b","native":"♋"}],"version":1},"leo":{"id":"leo","name":"Leo","keywords":["sign","purple","square","zodiac","astrology"],"skins":[{"unified":"264c","native":"♌"}],"version":1},"virgo":{"id":"virgo","name":"Virgo","keywords":["sign","zodiac","purple","square","astrology"],"skins":[{"unified":"264d","native":"♍"}],"version":1},"libra":{"id":"libra","name":"Libra","keywords":["sign","purple","square","zodiac","astrology"],"skins":[{"unified":"264e","native":"♎"}],"version":1},"scorpius":{"id":"scorpius","name":"Scorpio","keywords":["scorpius","sign","zodiac","purple","square","astrology"],"skins":[{"unified":"264f","native":"♏"}],"version":1},"sagittarius":{"id":"sagittarius","name":"Sagittarius","keywords":["sign","zodiac","purple","square","astrology"],"skins":[{"unified":"2650","native":"♐"}],"version":1},"capricorn":{"id":"capricorn","name":"Capricorn","keywords":["sign","zodiac","purple","square","astrology"],"skins":[{"unified":"2651","native":"♑"}],"version":1},"aquarius":{"id":"aquarius","name":"Aquarius","keywords":["sign","purple","square","zodiac","astrology"],"skins":[{"unified":"2652","native":"♒"}],"version":1},"pisces":{"id":"pisces","name":"Pisces","keywords":["purple","square","sign","zodiac","astrology"],"skins":[{"unified":"2653","native":"♓"}],"version":1},"ophiuchus":{"id":"ophiuchus","name":"Ophiuchus","keywords":["sign","purple","square","constellation","astrology"],"skins":[{"unified":"26ce","native":"⛎"}],"version":1},"twisted_rightwards_arrows":{"id":"twisted_rightwards_arrows","name":"Shuffle Tracks Button","keywords":["twisted","rightwards","arrows","blue","square","music","random"],"skins":[{"unified":"1f500","native":"🔀"}],"version":1},"repeat":{"id":"repeat","name":"Repeat Button","keywords":["loop","record"],"skins":[{"unified":"1f501","native":"🔁"}],"version":1},"repeat_one":{"id":"repeat_one","name":"Repeat Single Button","keywords":["one","blue","square","loop"],"skins":[{"unified":"1f502","native":"🔂"}],"version":1},"arrow_forward":{"id":"arrow_forward","name":"Play Button","keywords":["arrow","forward","blue","square","right","direction"],"skins":[{"unified":"25b6-fe0f","native":"▶️"}],"version":1},"fast_forward":{"id":"fast_forward","name":"Fast-Forward Button","keywords":["fast","forward","blue","square","play","speed","continue"],"skins":[{"unified":"23e9","native":"⏩"}],"version":1},"black_right_pointing_double_triangle_with_vertical_bar":{"id":"black_right_pointing_double_triangle_with_vertical_bar","name":"Next Track Button","keywords":["black","right","pointing","double","triangle","with","vertical","bar","forward","blue","square"],"skins":[{"unified":"23ed-fe0f","native":"⏭️"}],"version":1},"black_right_pointing_triangle_with_double_vertical_bar":{"id":"black_right_pointing_triangle_with_double_vertical_bar","name":"Play or Pause Button","keywords":["black","right","pointing","triangle","with","double","vertical","bar","blue","square"],"skins":[{"unified":"23ef-fe0f","native":"⏯️"}],"version":1},"arrow_backward":{"id":"arrow_backward","name":"Reverse Button","keywords":["arrow","backward","blue","square","left","direction"],"skins":[{"unified":"25c0-fe0f","native":"◀️"}],"version":1},"rewind":{"id":"rewind","name":"Fast Reverse Button","keywords":["rewind","play","blue","square"],"skins":[{"unified":"23ea","native":"⏪"}],"version":1},"black_left_pointing_double_triangle_with_vertical_bar":{"id":"black_left_pointing_double_triangle_with_vertical_bar","name":"Last Track Button","keywords":["black","left","pointing","double","triangle","with","vertical","bar","backward"],"skins":[{"unified":"23ee-fe0f","native":"⏮️"}],"version":1},"arrow_up_small":{"id":"arrow_up_small","name":"Upwards Button","keywords":["arrow","up","small","blue","square","triangle","direction","point","forward","top"],"skins":[{"unified":"1f53c","native":"🔼"}],"version":1},"arrow_double_up":{"id":"arrow_double_up","name":"Fast Up Button","keywords":["arrow","double","blue","square","direction","top"],"skins":[{"unified":"23eb","native":"⏫"}],"version":1},"arrow_down_small":{"id":"arrow_down_small","name":"Downwards Button","keywords":["arrow","down","small","blue","square","direction","bottom"],"skins":[{"unified":"1f53d","native":"🔽"}],"version":1},"arrow_double_down":{"id":"arrow_double_down","name":"Fast Down Button","keywords":["arrow","double","blue","square","direction","bottom"],"skins":[{"unified":"23ec","native":"⏬"}],"version":1},"double_vertical_bar":{"id":"double_vertical_bar","name":"Pause Button","keywords":["double","vertical","bar","blue","square"],"skins":[{"unified":"23f8-fe0f","native":"⏸️"}],"version":1},"black_square_for_stop":{"id":"black_square_for_stop","name":"Stop Button","keywords":["black","square","for","blue"],"skins":[{"unified":"23f9-fe0f","native":"⏹️"}],"version":1},"black_circle_for_record":{"id":"black_circle_for_record","name":"Record Button","keywords":["black","circle","for","blue","square"],"skins":[{"unified":"23fa-fe0f","native":"⏺️"}],"version":1},"eject":{"id":"eject","name":"Eject Button","keywords":["blue","square"],"skins":[{"unified":"23cf-fe0f","native":"⏏️"}],"version":1},"cinema":{"id":"cinema","name":"Cinema","keywords":["blue","square","record","film","movie","curtain","stage","theater"],"skins":[{"unified":"1f3a6","native":"🎦"}],"version":1},"low_brightness":{"id":"low_brightness","name":"Dim Button","keywords":["low","brightness","sun","afternoon","warm","summer"],"skins":[{"unified":"1f505","native":"🔅"}],"version":1},"high_brightness":{"id":"high_brightness","name":"Bright Button","keywords":["high","brightness","sun","light"],"skins":[{"unified":"1f506","native":"🔆"}],"version":1},"signal_strength":{"id":"signal_strength","name":"Antenna Bars","keywords":["signal","strength","blue","square","reception","phone","internet","connection","wifi","bluetooth"],"skins":[{"unified":"1f4f6","native":"📶"}],"version":1},"wireless":{"id":"wireless","name":"Wireless","keywords":["wifi","internet","contactless","signal"],"skins":[{"unified":"1f6dc","native":"🛜"}],"version":15},"vibration_mode":{"id":"vibration_mode","name":"Vibration Mode","keywords":["orange","square","phone"],"skins":[{"unified":"1f4f3","native":"📳"}],"version":1},"mobile_phone_off":{"id":"mobile_phone_off","name":"Mobile Phone off","keywords":["mute","orange","square","silence","quiet"],"skins":[{"unified":"1f4f4","native":"📴"}],"version":1},"female_sign":{"id":"female_sign","name":"Female Sign","keywords":["woman","women","lady","girl"],"skins":[{"unified":"2640-fe0f","native":"♀️"}],"version":4},"male_sign":{"id":"male_sign","name":"Male Sign","keywords":["man","boy","men"],"skins":[{"unified":"2642-fe0f","native":"♂️"}],"version":4},"transgender_symbol":{"id":"transgender_symbol","name":"Transgender Symbol","keywords":["lgbtq"],"skins":[{"unified":"26a7-fe0f","native":"⚧️"}],"version":13},"heavy_multiplication_x":{"id":"heavy_multiplication_x","name":"Multiply","keywords":["heavy","multiplication","x","sign","math","calculation"],"skins":[{"unified":"2716-fe0f","native":"✖️"}],"version":1},"heavy_plus_sign":{"id":"heavy_plus_sign","name":"Plus","keywords":["heavy","sign","math","calculation","addition","more","increase"],"skins":[{"unified":"2795","native":"➕"}],"version":1},"heavy_minus_sign":{"id":"heavy_minus_sign","name":"Minus","keywords":["heavy","sign","math","calculation","subtract","less"],"skins":[{"unified":"2796","native":"➖"}],"version":1},"heavy_division_sign":{"id":"heavy_division_sign","name":"Divide","keywords":["heavy","division","sign","math","calculation"],"skins":[{"unified":"2797","native":"➗"}],"version":1},"heavy_equals_sign":{"id":"heavy_equals_sign","name":"Heavy Equals Sign","keywords":["math"],"skins":[{"unified":"1f7f0","native":"🟰"}],"version":14},"infinity":{"id":"infinity","name":"Infinity","keywords":["forever"],"skins":[{"unified":"267e-fe0f","native":"♾️"}],"version":11},"bangbang":{"id":"bangbang","name":"Double Exclamation Mark","keywords":["bangbang","surprise"],"skins":[{"unified":"203c-fe0f","native":"‼️"}],"version":1},"interrobang":{"id":"interrobang","name":"Exclamation Question Mark","keywords":["interrobang","wat","punctuation","surprise"],"skins":[{"unified":"2049-fe0f","native":"⁉️"}],"version":1},"question":{"id":"question","name":"Red Question Mark","keywords":["doubt","confused"],"skins":[{"unified":"2753","native":"❓"}],"version":1},"grey_question":{"id":"grey_question","name":"White Question Mark","keywords":["grey","doubts","gray","huh","confused"],"skins":[{"unified":"2754","native":"❔"}],"version":1},"grey_exclamation":{"id":"grey_exclamation","name":"White Exclamation Mark","keywords":["grey","surprise","punctuation","gray","wow","warning"],"skins":[{"unified":"2755","native":"❕"}],"version":1},"exclamation":{"id":"exclamation","name":"Red Exclamation Mark","keywords":["heavy","danger","surprise","punctuation","wow","warning"],"skins":[{"unified":"2757","native":"❗"}],"version":1},"wavy_dash":{"id":"wavy_dash","name":"Wavy Dash","keywords":["draw","line","moustache","mustache","squiggle","scribble"],"skins":[{"unified":"3030-fe0f","native":"〰️"}],"version":1},"currency_exchange":{"id":"currency_exchange","name":"Currency Exchange","keywords":["money","sales","dollar","travel"],"skins":[{"unified":"1f4b1","native":"💱"}],"version":1},"heavy_dollar_sign":{"id":"heavy_dollar_sign","name":"Heavy Dollar Sign","keywords":["money","sales","payment","currency","buck"],"skins":[{"unified":"1f4b2","native":"💲"}],"version":1},"medical_symbol":{"id":"medical_symbol","name":"Medical Symbol","keywords":["staff","of","aesculapius","health","hospital"],"skins":[{"unified":"2695-fe0f","native":"⚕️"}],"version":4},"recycle":{"id":"recycle","name":"Recycling Symbol","keywords":["recycle","arrow","environment","garbage","trash"],"skins":[{"unified":"267b-fe0f","native":"♻️"}],"version":1},"fleur_de_lis":{"id":"fleur_de_lis","name":"Fleur-De-Lis","keywords":["fleur","de","lis","decorative","scout"],"skins":[{"unified":"269c-fe0f","native":"⚜️"}],"version":1},"trident":{"id":"trident","name":"Trident Emblem","keywords":["weapon","spear"],"skins":[{"unified":"1f531","native":"🔱"}],"version":1},"name_badge":{"id":"name_badge","name":"Name Badge","keywords":["fire","forbid"],"skins":[{"unified":"1f4db","native":"📛"}],"version":1},"beginner":{"id":"beginner","name":"Japanese Symbol for Beginner","keywords":["badge","shield"],"skins":[{"unified":"1f530","native":"🔰"}],"version":1},"o":{"id":"o","name":"Hollow Red Circle","keywords":["o","round"],"skins":[{"unified":"2b55","native":"⭕"}],"version":1},"white_check_mark":{"id":"white_check_mark","name":"Check Mark Button","keywords":["white","green","square","ok","agree","vote","election","answer","tick"],"skins":[{"unified":"2705","native":"✅"}],"version":1},"ballot_box_with_check":{"id":"ballot_box_with_check","name":"Check Box with Check","keywords":["ballot","ok","agree","confirm","black","square","vote","election","yes","tick"],"skins":[{"unified":"2611-fe0f","native":"☑️"}],"version":1},"heavy_check_mark":{"id":"heavy_check_mark","name":"Check Mark","keywords":["heavy","ok","nike","answer","yes","tick"],"skins":[{"unified":"2714-fe0f","native":"✔️"}],"version":1},"x":{"id":"x","name":"Cross Mark","keywords":["x","no","delete","remove","cancel","red"],"skins":[{"unified":"274c","native":"❌"}],"version":1},"negative_squared_cross_mark":{"id":"negative_squared_cross_mark","name":"Cross Mark Button","keywords":["negative","squared","x","green","square","no","deny"],"skins":[{"unified":"274e","native":"❎"}],"version":1},"curly_loop":{"id":"curly_loop","name":"Curly Loop","keywords":["scribble","draw","shape","squiggle"],"skins":[{"unified":"27b0","native":"➰"}],"version":1},"loop":{"id":"loop","name":"Double Curly Loop","keywords":["tape","cassette"],"skins":[{"unified":"27bf","native":"➿"}],"version":1},"part_alternation_mark":{"id":"part_alternation_mark","name":"Part Alternation Mark","keywords":["graph","presentation","stats","business","economics","bad"],"skins":[{"unified":"303d-fe0f","native":"〽️"}],"version":1},"eight_spoked_asterisk":{"id":"eight_spoked_asterisk","name":"Eight Spoked Asterisk","keywords":["star","sparkle","green","square"],"skins":[{"unified":"2733-fe0f","native":"✳️"}],"version":1},"eight_pointed_black_star":{"id":"eight_pointed_black_star","name":"Eight-Pointed Star","keywords":["eight","pointed","black","orange","square","shape","polygon"],"skins":[{"unified":"2734-fe0f","native":"✴️"}],"version":1},"sparkle":{"id":"sparkle","name":"Sparkle","keywords":["stars","green","square","awesome","good","fireworks"],"skins":[{"unified":"2747-fe0f","native":"❇️"}],"version":1},"copyright":{"id":"copyright","name":"Copyright","keywords":["ip","license","circle","law","legal"],"skins":[{"unified":"00a9-fe0f","native":"©️"}],"version":1},"registered":{"id":"registered","name":"Registered","keywords":["alphabet","circle"],"skins":[{"unified":"00ae-fe0f","native":"®️"}],"version":1},"tm":{"id":"tm","name":"Trade Mark","keywords":["tm","trademark","brand","law","legal"],"skins":[{"unified":"2122-fe0f","native":"™️"}],"version":1},"hash":{"id":"hash","name":"Hash Key","keywords":["keycap","","symbol","blue","square","twitter"],"skins":[{"unified":"0023-fe0f-20e3","native":"#️⃣"}],"version":1},"keycap_star":{"id":"keycap_star","name":"Keycap: *","keywords":["keycap","star",""],"skins":[{"unified":"002a-fe0f-20e3","native":"*️⃣"}],"version":2},"zero":{"id":"zero","name":"Keycap 0","keywords":["zero","numbers","blue","square","null"],"skins":[{"unified":"0030-fe0f-20e3","native":"0️⃣"}],"version":1},"one":{"id":"one","name":"Keycap 1","keywords":["one","blue","square","numbers"],"skins":[{"unified":"0031-fe0f-20e3","native":"1️⃣"}],"version":1},"two":{"id":"two","name":"Keycap 2","keywords":["two","numbers","prime","blue","square"],"skins":[{"unified":"0032-fe0f-20e3","native":"2️⃣"}],"version":1},"three":{"id":"three","name":"Keycap 3","keywords":["three","numbers","prime","blue","square"],"skins":[{"unified":"0033-fe0f-20e3","native":"3️⃣"}],"version":1},"four":{"id":"four","name":"Keycap 4","keywords":["four","numbers","blue","square"],"skins":[{"unified":"0034-fe0f-20e3","native":"4️⃣"}],"version":1},"five":{"id":"five","name":"Keycap 5","keywords":["five","numbers","blue","square","prime"],"skins":[{"unified":"0035-fe0f-20e3","native":"5️⃣"}],"version":1},"six":{"id":"six","name":"Keycap 6","keywords":["six","numbers","blue","square"],"skins":[{"unified":"0036-fe0f-20e3","native":"6️⃣"}],"version":1},"seven":{"id":"seven","name":"Keycap 7","keywords":["seven","numbers","blue","square","prime"],"skins":[{"unified":"0037-fe0f-20e3","native":"7️⃣"}],"version":1},"eight":{"id":"eight","name":"Keycap 8","keywords":["eight","blue","square","numbers"],"skins":[{"unified":"0038-fe0f-20e3","native":"8️⃣"}],"version":1},"nine":{"id":"nine","name":"Keycap 9","keywords":["nine","blue","square","numbers"],"skins":[{"unified":"0039-fe0f-20e3","native":"9️⃣"}],"version":1},"keycap_ten":{"id":"keycap_ten","name":"Keycap 10","keywords":["ten","numbers","blue","square"],"skins":[{"unified":"1f51f","native":"🔟"}],"version":1},"capital_abcd":{"id":"capital_abcd","name":"Input Latin Uppercase","keywords":["capital","abcd","alphabet","words","blue","square"],"skins":[{"unified":"1f520","native":"🔠"}],"version":1},"abcd":{"id":"abcd","name":"Input Latin Lowercase","keywords":["abcd","blue","square","alphabet"],"skins":[{"unified":"1f521","native":"🔡"}],"version":1},"symbols":{"id":"symbols","name":"Input Symbols","keywords":["blue","square","music","note","ampersand","percent","glyphs","characters"],"skins":[{"unified":"1f523","native":"🔣"}],"version":1},"abc":{"id":"abc","name":"Input Latin Letters","keywords":["abc","blue","square","alphabet"],"skins":[{"unified":"1f524","native":"🔤"}],"version":1},"a":{"id":"a","name":"A Button (blood Type)","keywords":["red","square","alphabet","letter"],"skins":[{"unified":"1f170-fe0f","native":"🅰️"}],"version":1},"ab":{"id":"ab","name":"Negative Squared Ab","keywords":["button","red","square","alphabet"],"skins":[{"unified":"1f18e","native":"🆎"}],"version":1},"b":{"id":"b","name":"B Button (blood Type)","keywords":["red","square","alphabet","letter"],"skins":[{"unified":"1f171-fe0f","native":"🅱️"}],"version":1},"cl":{"id":"cl","name":"Cl Button","keywords":["alphabet","words","red","square"],"skins":[{"unified":"1f191","native":"🆑"}],"version":1},"cool":{"id":"cool","name":"Cool Button","keywords":["words","blue","square"],"skins":[{"unified":"1f192","native":"🆒"}],"version":1},"free":{"id":"free","name":"Free Button","keywords":["blue","square","words"],"skins":[{"unified":"1f193","native":"🆓"}],"version":1},"information_source":{"id":"information_source","name":"Information","keywords":["source","blue","square","alphabet","letter"],"skins":[{"unified":"2139-fe0f","native":"ℹ️"}],"version":1},"id":{"id":"id","name":"Id Button","keywords":["purple","square","words"],"skins":[{"unified":"1f194","native":"🆔"}],"version":1},"m":{"id":"m","name":"Circled M","keywords":["alphabet","blue","circle","letter"],"skins":[{"unified":"24c2-fe0f","native":"Ⓜ️"}],"version":1},"new":{"id":"new","name":"New Button","keywords":["blue","square","words","start"],"skins":[{"unified":"1f195","native":"🆕"}],"version":1},"ng":{"id":"ng","name":"Ng Button","keywords":["blue","square","words","shape","icon"],"skins":[{"unified":"1f196","native":"🆖"}],"version":1},"o2":{"id":"o2","name":"O Button (blood Type)","keywords":["o2","alphabet","red","square","letter"],"skins":[{"unified":"1f17e-fe0f","native":"🅾️"}],"version":1},"ok":{"id":"ok","name":"Ok Button","keywords":["good","agree","yes","blue","square"],"skins":[{"unified":"1f197","native":"🆗"}],"version":1},"parking":{"id":"parking","name":"P Button","keywords":["parking","cars","blue","square","alphabet","letter"],"skins":[{"unified":"1f17f-fe0f","native":"🅿️"}],"version":1},"sos":{"id":"sos","name":"Sos Button","keywords":["help","red","square","words","emergency","911"],"skins":[{"unified":"1f198","native":"🆘"}],"version":1},"up":{"id":"up","name":"Up! Button","keywords":["up","blue","square","above","high"],"skins":[{"unified":"1f199","native":"🆙"}],"version":1},"vs":{"id":"vs","name":"Vs Button","keywords":["words","orange","square"],"skins":[{"unified":"1f19a","native":"🆚"}],"version":1},"koko":{"id":"koko","name":"Squared Katakana Koko","keywords":["japanese","here","button","blue","square","destination"],"skins":[{"unified":"1f201","native":"🈁"}],"version":1},"sa":{"id":"sa","name":"Squared Katakana Sa","keywords":["japanese","service","charge","button","blue","square"],"skins":[{"unified":"1f202-fe0f","native":"🈂️"}],"version":1},"u6708":{"id":"u6708","name":"Japanese “monthly Amount” Button","keywords":["u6708","monthly","amount","chinese","month","moon","orange","square","kanji"],"skins":[{"unified":"1f237-fe0f","native":"🈷️"}],"version":1},"u6709":{"id":"u6709","name":"Squared Cjk Unified Ideograph-6709","keywords":["u6709","japanese","not","free","of","charge","button","orange","square","chinese","have","kanji"],"skins":[{"unified":"1f236","native":"🈶"}],"version":1},"u6307":{"id":"u6307","name":"Japanese “reserved” Button","keywords":["u6307","reserved","chinese","point","green","square","kanji"],"skins":[{"unified":"1f22f","native":"🈯"}],"version":1},"ideograph_advantage":{"id":"ideograph_advantage","name":"Japanese “bargain” Button","keywords":["ideograph","advantage","bargain","chinese","kanji","obtain","get","circle"],"skins":[{"unified":"1f250","native":"🉐"}],"version":1},"u5272":{"id":"u5272","name":"Japanese “discount” Button","keywords":["u5272","discount","cut","divide","chinese","kanji","pink","square"],"skins":[{"unified":"1f239","native":"🈹"}],"version":1},"u7121":{"id":"u7121","name":"Japanese “free of Charge” Button","keywords":["u7121","free","charge","nothing","chinese","kanji","orange","square"],"skins":[{"unified":"1f21a","native":"🈚"}],"version":1},"u7981":{"id":"u7981","name":"Japanese “prohibited” Button","keywords":["u7981","prohibited","kanji","chinese","forbidden","limit","restricted","red","square"],"skins":[{"unified":"1f232","native":"🈲"}],"version":1},"accept":{"id":"accept","name":"Circled Ideograph Accept","keywords":["japanese","acceptable","button","ok","good","chinese","kanji","agree","yes","orange","circle"],"skins":[{"unified":"1f251","native":"🉑"}],"version":1},"u7533":{"id":"u7533","name":"Japanese “application” Button","keywords":["u7533","application","chinese","kanji","orange","square"],"skins":[{"unified":"1f238","native":"🈸"}],"version":1},"u5408":{"id":"u5408","name":"Japanese “passing Grade” Button","keywords":["u5408","passing","grade","chinese","join","kanji","red","square"],"skins":[{"unified":"1f234","native":"🈴"}],"version":1},"u7a7a":{"id":"u7a7a","name":"Japanese “vacancy” Button","keywords":["u7a7a","vacancy","kanji","chinese","empty","sky","blue","square"],"skins":[{"unified":"1f233","native":"🈳"}],"version":1},"congratulations":{"id":"congratulations","name":"Circled Ideograph Congratulation","keywords":["congratulations","japanese","button","chinese","kanji","red","circle"],"skins":[{"unified":"3297-fe0f","native":"㊗️"}],"version":1},"secret":{"id":"secret","name":"Circled Ideograph Secret","keywords":["japanese","button","privacy","chinese","sshh","kanji","red","circle"],"skins":[{"unified":"3299-fe0f","native":"㊙️"}],"version":1},"u55b6":{"id":"u55b6","name":"Squared Cjk Unified Ideograph-55b6","keywords":["u55b6","japanese","open","for","business","button","opening","hours","orange","square"],"skins":[{"unified":"1f23a","native":"🈺"}],"version":1},"u6e80":{"id":"u6e80","name":"Japanese “no Vacancy” Button","keywords":["u6e80","no","vacancy","full","chinese","red","square","kanji"],"skins":[{"unified":"1f235","native":"🈵"}],"version":1},"red_circle":{"id":"red_circle","name":"Red Circle","keywords":["shape","error","danger"],"skins":[{"unified":"1f534","native":"🔴"}],"version":1},"large_orange_circle":{"id":"large_orange_circle","name":"Orange Circle","keywords":["large","round"],"skins":[{"unified":"1f7e0","native":"🟠"}],"version":12},"large_yellow_circle":{"id":"large_yellow_circle","name":"Yellow Circle","keywords":["large","round"],"skins":[{"unified":"1f7e1","native":"🟡"}],"version":12},"large_green_circle":{"id":"large_green_circle","name":"Green Circle","keywords":["large","round"],"skins":[{"unified":"1f7e2","native":"🟢"}],"version":12},"large_blue_circle":{"id":"large_blue_circle","name":"Blue Circle","keywords":["large","shape","icon","button"],"skins":[{"unified":"1f535","native":"🔵"}],"version":1},"large_purple_circle":{"id":"large_purple_circle","name":"Purple Circle","keywords":["large","round"],"skins":[{"unified":"1f7e3","native":"🟣"}],"version":12},"large_brown_circle":{"id":"large_brown_circle","name":"Brown Circle","keywords":["large","round"],"skins":[{"unified":"1f7e4","native":"🟤"}],"version":12},"black_circle":{"id":"black_circle","name":"Black Circle","keywords":["shape","button","round"],"skins":[{"unified":"26ab","native":"⚫"}],"version":1},"white_circle":{"id":"white_circle","name":"White Circle","keywords":["shape","round"],"skins":[{"unified":"26aa","native":"⚪"}],"version":1},"large_red_square":{"id":"large_red_square","name":"Red Square","keywords":["large"],"skins":[{"unified":"1f7e5","native":"🟥"}],"version":12},"large_orange_square":{"id":"large_orange_square","name":"Orange Square","keywords":["large"],"skins":[{"unified":"1f7e7","native":"🟧"}],"version":12},"large_yellow_square":{"id":"large_yellow_square","name":"Yellow Square","keywords":["large"],"skins":[{"unified":"1f7e8","native":"🟨"}],"version":12},"large_green_square":{"id":"large_green_square","name":"Green Square","keywords":["large"],"skins":[{"unified":"1f7e9","native":"🟩"}],"version":12},"large_blue_square":{"id":"large_blue_square","name":"Blue Square","keywords":["large"],"skins":[{"unified":"1f7e6","native":"🟦"}],"version":12},"large_purple_square":{"id":"large_purple_square","name":"Purple Square","keywords":["large"],"skins":[{"unified":"1f7ea","native":"🟪"}],"version":12},"large_brown_square":{"id":"large_brown_square","name":"Brown Square","keywords":["large"],"skins":[{"unified":"1f7eb","native":"🟫"}],"version":12},"black_large_square":{"id":"black_large_square","name":"Black Large Square","keywords":["shape","icon","button"],"skins":[{"unified":"2b1b","native":"⬛"}],"version":1},"white_large_square":{"id":"white_large_square","name":"White Large Square","keywords":["shape","icon","stone","button"],"skins":[{"unified":"2b1c","native":"⬜"}],"version":1},"black_medium_square":{"id":"black_medium_square","name":"Black Medium Square","keywords":["shape","button","icon"],"skins":[{"unified":"25fc-fe0f","native":"◼️"}],"version":1},"white_medium_square":{"id":"white_medium_square","name":"White Medium Square","keywords":["shape","stone","icon"],"skins":[{"unified":"25fb-fe0f","native":"◻️"}],"version":1},"black_medium_small_square":{"id":"black_medium_small_square","name":"Black Medium Small Square","keywords":["icon","shape","button"],"skins":[{"unified":"25fe","native":"◾"}],"version":1},"white_medium_small_square":{"id":"white_medium_small_square","name":"White Medium Small Square","keywords":["shape","stone","icon","button"],"skins":[{"unified":"25fd","native":"◽"}],"version":1},"black_small_square":{"id":"black_small_square","name":"Black Small Square","keywords":["shape","icon"],"skins":[{"unified":"25aa-fe0f","native":"▪️"}],"version":1},"white_small_square":{"id":"white_small_square","name":"White Small Square","keywords":["shape","icon"],"skins":[{"unified":"25ab-fe0f","native":"▫️"}],"version":1},"large_orange_diamond":{"id":"large_orange_diamond","name":"Large Orange Diamond","keywords":["shape","jewel","gem"],"skins":[{"unified":"1f536","native":"🔶"}],"version":1},"large_blue_diamond":{"id":"large_blue_diamond","name":"Large Blue Diamond","keywords":["shape","jewel","gem"],"skins":[{"unified":"1f537","native":"🔷"}],"version":1},"small_orange_diamond":{"id":"small_orange_diamond","name":"Small Orange Diamond","keywords":["shape","jewel","gem"],"skins":[{"unified":"1f538","native":"🔸"}],"version":1},"small_blue_diamond":{"id":"small_blue_diamond","name":"Small Blue Diamond","keywords":["shape","jewel","gem"],"skins":[{"unified":"1f539","native":"🔹"}],"version":1},"small_red_triangle":{"id":"small_red_triangle","name":"Red Triangle Pointed Up","keywords":["small","shape","direction","top"],"skins":[{"unified":"1f53a","native":"🔺"}],"version":1},"small_red_triangle_down":{"id":"small_red_triangle_down","name":"Red Triangle Pointed Down","keywords":["small","shape","direction","bottom"],"skins":[{"unified":"1f53b","native":"🔻"}],"version":1},"diamond_shape_with_a_dot_inside":{"id":"diamond_shape_with_a_dot_inside","name":"Diamond with a Dot","keywords":["shape","inside","jewel","blue","gem","crystal","fancy"],"skins":[{"unified":"1f4a0","native":"💠"}],"version":1},"radio_button":{"id":"radio_button","name":"Radio Button","keywords":["input","old","music","circle"],"skins":[{"unified":"1f518","native":"🔘"}],"version":1},"white_square_button":{"id":"white_square_button","name":"White Square Button","keywords":["shape","input"],"skins":[{"unified":"1f533","native":"🔳"}],"version":1},"black_square_button":{"id":"black_square_button","name":"Black Square Button","keywords":["shape","input","frame"],"skins":[{"unified":"1f532","native":"🔲"}],"version":1},"checkered_flag":{"id":"checkered_flag","name":"Chequered Flag","keywords":["checkered","contest","finishline","race","gokart"],"skins":[{"unified":"1f3c1","native":"🏁"}],"version":1},"triangular_flag_on_post":{"id":"triangular_flag_on_post","name":"Triangular Flag","keywords":["on","post","mark","milestone","place"],"skins":[{"unified":"1f6a9","native":"🚩"}],"version":1},"crossed_flags":{"id":"crossed_flags","name":"Crossed Flags","keywords":["japanese","nation","country","border"],"skins":[{"unified":"1f38c","native":"🎌"}],"version":1},"waving_black_flag":{"id":"waving_black_flag","name":"Black Flag","keywords":["waving","pirate"],"skins":[{"unified":"1f3f4","native":"🏴"}],"version":1},"waving_white_flag":{"id":"waving_white_flag","name":"White Flag","keywords":["waving","losing","loser","lost","surrender","give","up","fail"],"skins":[{"unified":"1f3f3-fe0f","native":"🏳️"}],"version":1},"rainbow-flag":{"id":"rainbow-flag","name":"Rainbow Flag","keywords":["pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"skins":[{"unified":"1f3f3-fe0f-200d-1f308","native":"🏳️🌈"}],"version":4},"transgender_flag":{"id":"transgender_flag","name":"Transgender Flag","keywords":["lgbtq"],"skins":[{"unified":"1f3f3-fe0f-200d-26a7-fe0f","native":"🏳️⚧️"}],"version":13},"pirate_flag":{"id":"pirate_flag","name":"Pirate Flag","keywords":["skull","crossbones","banner"],"skins":[{"unified":"1f3f4-200d-2620-fe0f","native":"🏴☠️"}],"version":11},"flag-ac":{"id":"flag-ac","name":"Ascension Island Flag","keywords":["ac"],"skins":[{"unified":"1f1e6-1f1e8","native":"🇦🇨"}],"version":2},"flag-ad":{"id":"flag-ad","name":"Andorra Flag","keywords":["ad","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1e9","native":"🇦🇩"}],"version":2},"flag-ae":{"id":"flag-ae","name":"United Arab Emirates Flag","keywords":["ae","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1ea","native":"🇦🇪"}],"version":2},"flag-af":{"id":"flag-af","name":"Afghanistan Flag","keywords":["af","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1eb","native":"🇦🇫"}],"version":2},"flag-ag":{"id":"flag-ag","name":"Antigua & Barbuda Flag","keywords":["ag","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1ec","native":"🇦🇬"}],"version":2},"flag-ai":{"id":"flag-ai","name":"Anguilla Flag","keywords":["ai","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1ee","native":"🇦🇮"}],"version":2},"flag-al":{"id":"flag-al","name":"Albania Flag","keywords":["al","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f1","native":"🇦🇱"}],"version":2},"flag-am":{"id":"flag-am","name":"Armenia Flag","keywords":["am","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f2","native":"🇦🇲"}],"version":2},"flag-ao":{"id":"flag-ao","name":"Angola Flag","keywords":["ao","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f4","native":"🇦🇴"}],"version":2},"flag-aq":{"id":"flag-aq","name":"Antarctica Flag","keywords":["aq","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f6","native":"🇦🇶"}],"version":2},"flag-ar":{"id":"flag-ar","name":"Argentina Flag","keywords":["ar","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f7","native":"🇦🇷"}],"version":2},"flag-as":{"id":"flag-as","name":"American Samoa Flag","keywords":["as","ws","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f8","native":"🇦🇸"}],"version":2},"flag-at":{"id":"flag-at","name":"Austria Flag","keywords":["at","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1f9","native":"🇦🇹"}],"version":2},"flag-au":{"id":"flag-au","name":"Australia Flag","keywords":["au","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1fa","native":"🇦🇺"}],"version":2},"flag-aw":{"id":"flag-aw","name":"Aruba Flag","keywords":["aw","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1fc","native":"🇦🇼"}],"version":2},"flag-ax":{"id":"flag-ax","name":"Åland Islands Flag","keywords":["ax","aland","Aland","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1fd","native":"🇦🇽"}],"version":2},"flag-az":{"id":"flag-az","name":"Azerbaijan Flag","keywords":["az","nation","country","banner"],"skins":[{"unified":"1f1e6-1f1ff","native":"🇦🇿"}],"version":2},"flag-ba":{"id":"flag-ba","name":"Bosnia & Herzegovina Flag","keywords":["ba","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1e6","native":"🇧🇦"}],"version":2},"flag-bb":{"id":"flag-bb","name":"Barbados Flag","keywords":["bb","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1e7","native":"🇧🇧"}],"version":2},"flag-bd":{"id":"flag-bd","name":"Bangladesh Flag","keywords":["bd","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1e9","native":"🇧🇩"}],"version":2},"flag-be":{"id":"flag-be","name":"Belgium Flag","keywords":["be","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ea","native":"🇧🇪"}],"version":2},"flag-bf":{"id":"flag-bf","name":"Burkina Faso Flag","keywords":["bf","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1eb","native":"🇧🇫"}],"version":2},"flag-bg":{"id":"flag-bg","name":"Bulgaria Flag","keywords":["bg","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ec","native":"🇧🇬"}],"version":2},"flag-bh":{"id":"flag-bh","name":"Bahrain Flag","keywords":["bh","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ed","native":"🇧🇭"}],"version":2},"flag-bi":{"id":"flag-bi","name":"Burundi Flag","keywords":["bi","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ee","native":"🇧🇮"}],"version":2},"flag-bj":{"id":"flag-bj","name":"Benin Flag","keywords":["bj","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ef","native":"🇧🇯"}],"version":2},"flag-bl":{"id":"flag-bl","name":"St. Barthélemy Flag","keywords":["bl","st","barthelemy","saint","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f1","native":"🇧🇱"}],"version":2},"flag-bm":{"id":"flag-bm","name":"Bermuda Flag","keywords":["bm","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f2","native":"🇧🇲"}],"version":2},"flag-bn":{"id":"flag-bn","name":"Brunei Flag","keywords":["bn","darussalam","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f3","native":"🇧🇳"}],"version":2},"flag-bo":{"id":"flag-bo","name":"Bolivia Flag","keywords":["bo","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f4","native":"🇧🇴"}],"version":2},"flag-bq":{"id":"flag-bq","name":"Caribbean Netherlands Flag","keywords":["bq","bonaire","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f6","native":"🇧🇶"}],"version":2},"flag-br":{"id":"flag-br","name":"Brazil Flag","keywords":["br","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f7","native":"🇧🇷"}],"version":2},"flag-bs":{"id":"flag-bs","name":"Bahamas Flag","keywords":["bs","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f8","native":"🇧🇸"}],"version":2},"flag-bt":{"id":"flag-bt","name":"Bhutan Flag","keywords":["bt","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1f9","native":"🇧🇹"}],"version":2},"flag-bv":{"id":"flag-bv","name":"Bouvet Island Flag","keywords":["bv","norway"],"skins":[{"unified":"1f1e7-1f1fb","native":"🇧🇻"}],"version":2},"flag-bw":{"id":"flag-bw","name":"Botswana Flag","keywords":["bw","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1fc","native":"🇧🇼"}],"version":2},"flag-by":{"id":"flag-by","name":"Belarus Flag","keywords":["by","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1fe","native":"🇧🇾"}],"version":2},"flag-bz":{"id":"flag-bz","name":"Belize Flag","keywords":["bz","nation","country","banner"],"skins":[{"unified":"1f1e7-1f1ff","native":"🇧🇿"}],"version":2},"flag-ca":{"id":"flag-ca","name":"Canada Flag","keywords":["ca","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1e6","native":"🇨🇦"}],"version":2},"flag-cc":{"id":"flag-cc","name":"Cocos (keeling) Islands Flag","keywords":["cc","keeling","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1e8","native":"🇨🇨"}],"version":2},"flag-cd":{"id":"flag-cd","name":"Congo - Kinshasa Flag","keywords":["cd","democratic","republic","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1e9","native":"🇨🇩"}],"version":2},"flag-cf":{"id":"flag-cf","name":"Central African Republic Flag","keywords":["cf","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1eb","native":"🇨🇫"}],"version":2},"flag-cg":{"id":"flag-cg","name":"Congo - Brazzaville Flag","keywords":["cg","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1ec","native":"🇨🇬"}],"version":2},"flag-ch":{"id":"flag-ch","name":"Switzerland Flag","keywords":["ch","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1ed","native":"🇨🇭"}],"version":2},"flag-ci":{"id":"flag-ci","name":"Côte D’ivoire Flag","keywords":["ci","cote","d","ivoire","ivory","coast","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1ee","native":"🇨🇮"}],"version":2},"flag-ck":{"id":"flag-ck","name":"Cook Islands Flag","keywords":["ck","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1f0","native":"🇨🇰"}],"version":2},"flag-cl":{"id":"flag-cl","name":"Chile Flag","keywords":["cl","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1f1","native":"🇨🇱"}],"version":2},"flag-cm":{"id":"flag-cm","name":"Cameroon Flag","keywords":["cm","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1f2","native":"🇨🇲"}],"version":2},"cn":{"id":"cn","name":"China Flag","keywords":["cn","chinese","prc","country","nation","banner"],"skins":[{"unified":"1f1e8-1f1f3","native":"🇨🇳"}],"version":1},"flag-co":{"id":"flag-co","name":"Colombia Flag","keywords":["co","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1f4","native":"🇨🇴"}],"version":2},"flag-cp":{"id":"flag-cp","name":"Clipperton Island Flag","keywords":["cp"],"skins":[{"unified":"1f1e8-1f1f5","native":"🇨🇵"}],"version":2},"flag-cr":{"id":"flag-cr","name":"Costa Rica Flag","keywords":["cr","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1f7","native":"🇨🇷"}],"version":2},"flag-cu":{"id":"flag-cu","name":"Cuba Flag","keywords":["cu","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1fa","native":"🇨🇺"}],"version":2},"flag-cv":{"id":"flag-cv","name":"Cape Verde Flag","keywords":["cv","cabo","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1fb","native":"🇨🇻"}],"version":2},"flag-cw":{"id":"flag-cw","name":"Curaçao Flag","keywords":["cw","curacao","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1fc","native":"🇨🇼"}],"version":2},"flag-cx":{"id":"flag-cx","name":"Christmas Island Flag","keywords":["cx","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1fd","native":"🇨🇽"}],"version":2},"flag-cy":{"id":"flag-cy","name":"Cyprus Flag","keywords":["cy","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1fe","native":"🇨🇾"}],"version":2},"flag-cz":{"id":"flag-cz","name":"Czechia Flag","keywords":["cz","nation","country","banner"],"skins":[{"unified":"1f1e8-1f1ff","native":"🇨🇿"}],"version":2},"de":{"id":"de","name":"Germany Flag","keywords":["de","german","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1ea","native":"🇩🇪"}],"version":1},"flag-dg":{"id":"flag-dg","name":"Diego Garcia Flag","keywords":["dg"],"skins":[{"unified":"1f1e9-1f1ec","native":"🇩🇬"}],"version":2},"flag-dj":{"id":"flag-dj","name":"Djibouti Flag","keywords":["dj","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1ef","native":"🇩🇯"}],"version":2},"flag-dk":{"id":"flag-dk","name":"Denmark Flag","keywords":["dk","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1f0","native":"🇩🇰"}],"version":2},"flag-dm":{"id":"flag-dm","name":"Dominica Flag","keywords":["dm","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1f2","native":"🇩🇲"}],"version":2},"flag-do":{"id":"flag-do","name":"Dominican Republic Flag","keywords":["do","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1f4","native":"🇩🇴"}],"version":2},"flag-dz":{"id":"flag-dz","name":"Algeria Flag","keywords":["dz","nation","country","banner"],"skins":[{"unified":"1f1e9-1f1ff","native":"🇩🇿"}],"version":2},"flag-ea":{"id":"flag-ea","name":"Ceuta & Melilla Flag","keywords":["ea"],"skins":[{"unified":"1f1ea-1f1e6","native":"🇪🇦"}],"version":2},"flag-ec":{"id":"flag-ec","name":"Ecuador Flag","keywords":["ec","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1e8","native":"🇪🇨"}],"version":2},"flag-ee":{"id":"flag-ee","name":"Estonia Flag","keywords":["ee","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1ea","native":"🇪🇪"}],"version":2},"flag-eg":{"id":"flag-eg","name":"Egypt Flag","keywords":["eg","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1ec","native":"🇪🇬"}],"version":2},"flag-eh":{"id":"flag-eh","name":"Western Sahara Flag","keywords":["eh","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1ed","native":"🇪🇭"}],"version":2},"flag-er":{"id":"flag-er","name":"Eritrea Flag","keywords":["er","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1f7","native":"🇪🇷"}],"version":2},"es":{"id":"es","name":"Spain Flag","keywords":["es","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1f8","native":"🇪🇸"}],"version":1},"flag-et":{"id":"flag-et","name":"Ethiopia Flag","keywords":["et","nation","country","banner"],"skins":[{"unified":"1f1ea-1f1f9","native":"🇪🇹"}],"version":2},"flag-eu":{"id":"flag-eu","name":"European Union Flag","keywords":["eu","banner"],"skins":[{"unified":"1f1ea-1f1fa","native":"🇪🇺"}],"version":2},"flag-fi":{"id":"flag-fi","name":"Finland Flag","keywords":["fi","nation","country","banner"],"skins":[{"unified":"1f1eb-1f1ee","native":"🇫🇮"}],"version":2},"flag-fj":{"id":"flag-fj","name":"Fiji Flag","keywords":["fj","nation","country","banner"],"skins":[{"unified":"1f1eb-1f1ef","native":"🇫🇯"}],"version":2},"flag-fk":{"id":"flag-fk","name":"Falkland Islands Flag","keywords":["fk","malvinas","nation","country","banner"],"skins":[{"unified":"1f1eb-1f1f0","native":"🇫🇰"}],"version":2},"flag-fm":{"id":"flag-fm","name":"Micronesia Flag","keywords":["fm","federated","states","nation","country","banner"],"skins":[{"unified":"1f1eb-1f1f2","native":"🇫🇲"}],"version":2},"flag-fo":{"id":"flag-fo","name":"Faroe Islands Flag","keywords":["fo","nation","country","banner"],"skins":[{"unified":"1f1eb-1f1f4","native":"🇫🇴"}],"version":2},"fr":{"id":"fr","name":"France Flag","keywords":["fr","banner","nation","french","country"],"skins":[{"unified":"1f1eb-1f1f7","native":"🇫🇷"}],"version":1},"flag-ga":{"id":"flag-ga","name":"Gabon Flag","keywords":["ga","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1e6","native":"🇬🇦"}],"version":2},"gb":{"id":"gb","name":"United Kingdom Flag","keywords":["gb","uk","great","britain","northern","ireland","nation","country","banner","british","UK","english","england","union","jack"],"skins":[{"unified":"1f1ec-1f1e7","native":"🇬🇧"}],"version":1},"flag-gd":{"id":"flag-gd","name":"Grenada Flag","keywords":["gd","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1e9","native":"🇬🇩"}],"version":2},"flag-ge":{"id":"flag-ge","name":"Georgia Flag","keywords":["ge","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1ea","native":"🇬🇪"}],"version":2},"flag-gf":{"id":"flag-gf","name":"French Guiana Flag","keywords":["gf","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1eb","native":"🇬🇫"}],"version":2},"flag-gg":{"id":"flag-gg","name":"Guernsey Flag","keywords":["gg","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1ec","native":"🇬🇬"}],"version":2},"flag-gh":{"id":"flag-gh","name":"Ghana Flag","keywords":["gh","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1ed","native":"🇬🇭"}],"version":2},"flag-gi":{"id":"flag-gi","name":"Gibraltar Flag","keywords":["gi","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1ee","native":"🇬🇮"}],"version":2},"flag-gl":{"id":"flag-gl","name":"Greenland Flag","keywords":["gl","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f1","native":"🇬🇱"}],"version":2},"flag-gm":{"id":"flag-gm","name":"Gambia Flag","keywords":["gm","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f2","native":"🇬🇲"}],"version":2},"flag-gn":{"id":"flag-gn","name":"Guinea Flag","keywords":["gn","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f3","native":"🇬🇳"}],"version":2},"flag-gp":{"id":"flag-gp","name":"Guadeloupe Flag","keywords":["gp","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f5","native":"🇬🇵"}],"version":2},"flag-gq":{"id":"flag-gq","name":"Equatorial Guinea Flag","keywords":["gq","gn","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f6","native":"🇬🇶"}],"version":2},"flag-gr":{"id":"flag-gr","name":"Greece Flag","keywords":["gr","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f7","native":"🇬🇷"}],"version":2},"flag-gs":{"id":"flag-gs","name":"South Georgia & South Sandwich Islands Flag","keywords":["gs","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f8","native":"🇬🇸"}],"version":2},"flag-gt":{"id":"flag-gt","name":"Guatemala Flag","keywords":["gt","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1f9","native":"🇬🇹"}],"version":2},"flag-gu":{"id":"flag-gu","name":"Guam Flag","keywords":["gu","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1fa","native":"🇬🇺"}],"version":2},"flag-gw":{"id":"flag-gw","name":"Guinea-Bissau Flag","keywords":["gw","guinea","bissau","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1fc","native":"🇬🇼"}],"version":2},"flag-gy":{"id":"flag-gy","name":"Guyana Flag","keywords":["gy","nation","country","banner"],"skins":[{"unified":"1f1ec-1f1fe","native":"🇬🇾"}],"version":2},"flag-hk":{"id":"flag-hk","name":"Hong Kong Sar China Flag","keywords":["hk","nation","country","banner"],"skins":[{"unified":"1f1ed-1f1f0","native":"🇭🇰"}],"version":2},"flag-hm":{"id":"flag-hm","name":"Heard & Mcdonald Islands Flag","keywords":["hm"],"skins":[{"unified":"1f1ed-1f1f2","native":"🇭🇲"}],"version":2},"flag-hn":{"id":"flag-hn","name":"Honduras Flag","keywords":["hn","nation","country","banner"],"skins":[{"unified":"1f1ed-1f1f3","native":"🇭🇳"}],"version":2},"flag-hr":{"id":"flag-hr","name":"Croatia Flag","keywords":["hr","nation","country","banner"],"skins":[{"unified":"1f1ed-1f1f7","native":"🇭🇷"}],"version":2},"flag-ht":{"id":"flag-ht","name":"Haiti Flag","keywords":["ht","nation","country","banner"],"skins":[{"unified":"1f1ed-1f1f9","native":"🇭🇹"}],"version":2},"flag-hu":{"id":"flag-hu","name":"Hungary Flag","keywords":["hu","nation","country","banner"],"skins":[{"unified":"1f1ed-1f1fa","native":"🇭🇺"}],"version":2},"flag-ic":{"id":"flag-ic","name":"Canary Islands Flag","keywords":["ic","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1e8","native":"🇮🇨"}],"version":2},"flag-id":{"id":"flag-id","name":"Indonesia Flag","keywords":["id","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1e9","native":"🇮🇩"}],"version":2},"flag-ie":{"id":"flag-ie","name":"Ireland Flag","keywords":["ie","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1ea","native":"🇮🇪"}],"version":2},"flag-il":{"id":"flag-il","name":"Israel Flag","keywords":["il","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f1","native":"🇮🇱"}],"version":2},"flag-im":{"id":"flag-im","name":"Isle of Man Flag","keywords":["im","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f2","native":"🇮🇲"}],"version":2},"flag-in":{"id":"flag-in","name":"India Flag","keywords":["in","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f3","native":"🇮🇳"}],"version":2},"flag-io":{"id":"flag-io","name":"British Indian Ocean Territory Flag","keywords":["io","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f4","native":"🇮🇴"}],"version":2},"flag-iq":{"id":"flag-iq","name":"Iraq Flag","keywords":["iq","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f6","native":"🇮🇶"}],"version":2},"flag-ir":{"id":"flag-ir","name":"Iran Flag","keywords":["ir","islamic","republic","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f7","native":"🇮🇷"}],"version":2},"flag-is":{"id":"flag-is","name":"Iceland Flag","keywords":["is","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f8","native":"🇮🇸"}],"version":2},"it":{"id":"it","name":"Italy Flag","keywords":["it","nation","country","banner"],"skins":[{"unified":"1f1ee-1f1f9","native":"🇮🇹"}],"version":1},"flag-je":{"id":"flag-je","name":"Jersey Flag","keywords":["je","nation","country","banner"],"skins":[{"unified":"1f1ef-1f1ea","native":"🇯🇪"}],"version":2},"flag-jm":{"id":"flag-jm","name":"Jamaica Flag","keywords":["jm","nation","country","banner"],"skins":[{"unified":"1f1ef-1f1f2","native":"🇯🇲"}],"version":2},"flag-jo":{"id":"flag-jo","name":"Jordan Flag","keywords":["jo","nation","country","banner"],"skins":[{"unified":"1f1ef-1f1f4","native":"🇯🇴"}],"version":2},"jp":{"id":"jp","name":"Japan Flag","keywords":["jp","japanese","nation","country","banner","ja"],"skins":[{"unified":"1f1ef-1f1f5","native":"🇯🇵"}],"version":1},"flag-ke":{"id":"flag-ke","name":"Kenya Flag","keywords":["ke","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1ea","native":"🇰🇪"}],"version":2},"flag-kg":{"id":"flag-kg","name":"Kyrgyzstan Flag","keywords":["kg","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1ec","native":"🇰🇬"}],"version":2},"flag-kh":{"id":"flag-kh","name":"Cambodia Flag","keywords":["kh","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1ed","native":"🇰🇭"}],"version":2},"flag-ki":{"id":"flag-ki","name":"Kiribati Flag","keywords":["ki","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1ee","native":"🇰🇮"}],"version":2},"flag-km":{"id":"flag-km","name":"Comoros Flag","keywords":["km","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1f2","native":"🇰🇲"}],"version":2},"flag-kn":{"id":"flag-kn","name":"St. Kitts & Nevis Flag","keywords":["kn","st","saint","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1f3","native":"🇰🇳"}],"version":2},"flag-kp":{"id":"flag-kp","name":"North Korea Flag","keywords":["kp","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1f5","native":"🇰🇵"}],"version":2},"kr":{"id":"kr","name":"South Korea Flag","keywords":["kr","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1f7","native":"🇰🇷"}],"version":1},"flag-kw":{"id":"flag-kw","name":"Kuwait Flag","keywords":["kw","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1fc","native":"🇰🇼"}],"version":2},"flag-ky":{"id":"flag-ky","name":"Cayman Islands Flag","keywords":["ky","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1fe","native":"🇰🇾"}],"version":2},"flag-kz":{"id":"flag-kz","name":"Kazakhstan Flag","keywords":["kz","nation","country","banner"],"skins":[{"unified":"1f1f0-1f1ff","native":"🇰🇿"}],"version":2},"flag-la":{"id":"flag-la","name":"Laos Flag","keywords":["la","lao","democratic","republic","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1e6","native":"🇱🇦"}],"version":2},"flag-lb":{"id":"flag-lb","name":"Lebanon Flag","keywords":["lb","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1e7","native":"🇱🇧"}],"version":2},"flag-lc":{"id":"flag-lc","name":"St. Lucia Flag","keywords":["lc","st","saint","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1e8","native":"🇱🇨"}],"version":2},"flag-li":{"id":"flag-li","name":"Liechtenstein Flag","keywords":["li","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1ee","native":"🇱🇮"}],"version":2},"flag-lk":{"id":"flag-lk","name":"Sri Lanka Flag","keywords":["lk","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1f0","native":"🇱🇰"}],"version":2},"flag-lr":{"id":"flag-lr","name":"Liberia Flag","keywords":["lr","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1f7","native":"🇱🇷"}],"version":2},"flag-ls":{"id":"flag-ls","name":"Lesotho Flag","keywords":["ls","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1f8","native":"🇱🇸"}],"version":2},"flag-lt":{"id":"flag-lt","name":"Lithuania Flag","keywords":["lt","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1f9","native":"🇱🇹"}],"version":2},"flag-lu":{"id":"flag-lu","name":"Luxembourg Flag","keywords":["lu","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1fa","native":"🇱🇺"}],"version":2},"flag-lv":{"id":"flag-lv","name":"Latvia Flag","keywords":["lv","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1fb","native":"🇱🇻"}],"version":2},"flag-ly":{"id":"flag-ly","name":"Libya Flag","keywords":["ly","nation","country","banner"],"skins":[{"unified":"1f1f1-1f1fe","native":"🇱🇾"}],"version":2},"flag-ma":{"id":"flag-ma","name":"Morocco Flag","keywords":["ma","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1e6","native":"🇲🇦"}],"version":2},"flag-mc":{"id":"flag-mc","name":"Monaco Flag","keywords":["mc","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1e8","native":"🇲🇨"}],"version":2},"flag-md":{"id":"flag-md","name":"Moldova Flag","keywords":["md","republic","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1e9","native":"🇲🇩"}],"version":2},"flag-me":{"id":"flag-me","name":"Montenegro Flag","keywords":["me","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1ea","native":"🇲🇪"}],"version":2},"flag-mf":{"id":"flag-mf","name":"St. Martin Flag","keywords":["mf","st"],"skins":[{"unified":"1f1f2-1f1eb","native":"🇲🇫"}],"version":2},"flag-mg":{"id":"flag-mg","name":"Madagascar Flag","keywords":["mg","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1ec","native":"🇲🇬"}],"version":2},"flag-mh":{"id":"flag-mh","name":"Marshall Islands Flag","keywords":["mh","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1ed","native":"🇲🇭"}],"version":2},"flag-mk":{"id":"flag-mk","name":"North Macedonia Flag","keywords":["mk","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f0","native":"🇲🇰"}],"version":2},"flag-ml":{"id":"flag-ml","name":"Mali Flag","keywords":["ml","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f1","native":"🇲🇱"}],"version":2},"flag-mm":{"id":"flag-mm","name":"Myanmar (burma) Flag","keywords":["mm","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f2","native":"🇲🇲"}],"version":2},"flag-mn":{"id":"flag-mn","name":"Mongolia Flag","keywords":["mn","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f3","native":"🇲🇳"}],"version":2},"flag-mo":{"id":"flag-mo","name":"Macao Sar China Flag","keywords":["mo","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f4","native":"🇲🇴"}],"version":2},"flag-mp":{"id":"flag-mp","name":"Northern Mariana Islands Flag","keywords":["mp","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f5","native":"🇲🇵"}],"version":2},"flag-mq":{"id":"flag-mq","name":"Martinique Flag","keywords":["mq","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f6","native":"🇲🇶"}],"version":2},"flag-mr":{"id":"flag-mr","name":"Mauritania Flag","keywords":["mr","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f7","native":"🇲🇷"}],"version":2},"flag-ms":{"id":"flag-ms","name":"Montserrat Flag","keywords":["ms","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f8","native":"🇲🇸"}],"version":2},"flag-mt":{"id":"flag-mt","name":"Malta Flag","keywords":["mt","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1f9","native":"🇲🇹"}],"version":2},"flag-mu":{"id":"flag-mu","name":"Mauritius Flag","keywords":["mu","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1fa","native":"🇲🇺"}],"version":2},"flag-mv":{"id":"flag-mv","name":"Maldives Flag","keywords":["mv","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1fb","native":"🇲🇻"}],"version":2},"flag-mw":{"id":"flag-mw","name":"Malawi Flag","keywords":["mw","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1fc","native":"🇲🇼"}],"version":2},"flag-mx":{"id":"flag-mx","name":"Mexico Flag","keywords":["mx","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1fd","native":"🇲🇽"}],"version":2},"flag-my":{"id":"flag-my","name":"Malaysia Flag","keywords":["my","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1fe","native":"🇲🇾"}],"version":2},"flag-mz":{"id":"flag-mz","name":"Mozambique Flag","keywords":["mz","nation","country","banner"],"skins":[{"unified":"1f1f2-1f1ff","native":"🇲🇿"}],"version":2},"flag-na":{"id":"flag-na","name":"Namibia Flag","keywords":["na","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1e6","native":"🇳🇦"}],"version":2},"flag-nc":{"id":"flag-nc","name":"New Caledonia Flag","keywords":["nc","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1e8","native":"🇳🇨"}],"version":2},"flag-ne":{"id":"flag-ne","name":"Niger Flag","keywords":["ne","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1ea","native":"🇳🇪"}],"version":2},"flag-nf":{"id":"flag-nf","name":"Norfolk Island Flag","keywords":["nf","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1eb","native":"🇳🇫"}],"version":2},"flag-ng":{"id":"flag-ng","name":"Nigeria Flag","keywords":["ng","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1ec","native":"🇳🇬"}],"version":2},"flag-ni":{"id":"flag-ni","name":"Nicaragua Flag","keywords":["ni","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1ee","native":"🇳🇮"}],"version":2},"flag-nl":{"id":"flag-nl","name":"Netherlands Flag","keywords":["nl","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1f1","native":"🇳🇱"}],"version":2},"flag-no":{"id":"flag-no","name":"Norway Flag","keywords":["no","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1f4","native":"🇳🇴"}],"version":2},"flag-np":{"id":"flag-np","name":"Nepal Flag","keywords":["np","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1f5","native":"🇳🇵"}],"version":2},"flag-nr":{"id":"flag-nr","name":"Nauru Flag","keywords":["nr","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1f7","native":"🇳🇷"}],"version":2},"flag-nu":{"id":"flag-nu","name":"Niue Flag","keywords":["nu","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1fa","native":"🇳🇺"}],"version":2},"flag-nz":{"id":"flag-nz","name":"New Zealand Flag","keywords":["nz","nation","country","banner"],"skins":[{"unified":"1f1f3-1f1ff","native":"🇳🇿"}],"version":2},"flag-om":{"id":"flag-om","name":"Oman Flag","keywords":["om","symbol","nation","country","banner"],"skins":[{"unified":"1f1f4-1f1f2","native":"🇴🇲"}],"version":2},"flag-pa":{"id":"flag-pa","name":"Panama Flag","keywords":["pa","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1e6","native":"🇵🇦"}],"version":2},"flag-pe":{"id":"flag-pe","name":"Peru Flag","keywords":["pe","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1ea","native":"🇵🇪"}],"version":2},"flag-pf":{"id":"flag-pf","name":"French Polynesia Flag","keywords":["pf","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1eb","native":"🇵🇫"}],"version":2},"flag-pg":{"id":"flag-pg","name":"Papua New Guinea Flag","keywords":["pg","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1ec","native":"🇵🇬"}],"version":2},"flag-ph":{"id":"flag-ph","name":"Philippines Flag","keywords":["ph","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1ed","native":"🇵🇭"}],"version":2},"flag-pk":{"id":"flag-pk","name":"Pakistan Flag","keywords":["pk","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f0","native":"🇵🇰"}],"version":2},"flag-pl":{"id":"flag-pl","name":"Poland Flag","keywords":["pl","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f1","native":"🇵🇱"}],"version":2},"flag-pm":{"id":"flag-pm","name":"St. Pierre & Miquelon Flag","keywords":["pm","st","saint","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f2","native":"🇵🇲"}],"version":2},"flag-pn":{"id":"flag-pn","name":"Pitcairn Islands Flag","keywords":["pn","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f3","native":"🇵🇳"}],"version":2},"flag-pr":{"id":"flag-pr","name":"Puerto Rico Flag","keywords":["pr","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f7","native":"🇵🇷"}],"version":2},"flag-ps":{"id":"flag-ps","name":"Palestinian Territories Flag","keywords":["ps","palestine","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f8","native":"🇵🇸"}],"version":2},"flag-pt":{"id":"flag-pt","name":"Portugal Flag","keywords":["pt","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1f9","native":"🇵🇹"}],"version":2},"flag-pw":{"id":"flag-pw","name":"Palau Flag","keywords":["pw","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1fc","native":"🇵🇼"}],"version":2},"flag-py":{"id":"flag-py","name":"Paraguay Flag","keywords":["py","nation","country","banner"],"skins":[{"unified":"1f1f5-1f1fe","native":"🇵🇾"}],"version":2},"flag-qa":{"id":"flag-qa","name":"Qatar Flag","keywords":["qa","nation","country","banner"],"skins":[{"unified":"1f1f6-1f1e6","native":"🇶🇦"}],"version":2},"flag-re":{"id":"flag-re","name":"Réunion Flag","keywords":["re","reunion","nation","country","banner"],"skins":[{"unified":"1f1f7-1f1ea","native":"🇷🇪"}],"version":2},"flag-ro":{"id":"flag-ro","name":"Romania Flag","keywords":["ro","nation","country","banner"],"skins":[{"unified":"1f1f7-1f1f4","native":"🇷🇴"}],"version":2},"flag-rs":{"id":"flag-rs","name":"Serbia Flag","keywords":["rs","nation","country","banner"],"skins":[{"unified":"1f1f7-1f1f8","native":"🇷🇸"}],"version":2},"ru":{"id":"ru","name":"Russia Flag","keywords":["ru","russian","federation","nation","country","banner"],"skins":[{"unified":"1f1f7-1f1fa","native":"🇷🇺"}],"version":1},"flag-rw":{"id":"flag-rw","name":"Rwanda Flag","keywords":["rw","nation","country","banner"],"skins":[{"unified":"1f1f7-1f1fc","native":"🇷🇼"}],"version":2},"flag-sa":{"id":"flag-sa","name":"Saudi Arabia Flag","keywords":["sa","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1e6","native":"🇸🇦"}],"version":2},"flag-sb":{"id":"flag-sb","name":"Solomon Islands Flag","keywords":["sb","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1e7","native":"🇸🇧"}],"version":2},"flag-sc":{"id":"flag-sc","name":"Seychelles Flag","keywords":["sc","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1e8","native":"🇸🇨"}],"version":2},"flag-sd":{"id":"flag-sd","name":"Sudan Flag","keywords":["sd","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1e9","native":"🇸🇩"}],"version":2},"flag-se":{"id":"flag-se","name":"Sweden Flag","keywords":["se","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1ea","native":"🇸🇪"}],"version":2},"flag-sg":{"id":"flag-sg","name":"Singapore Flag","keywords":["sg","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1ec","native":"🇸🇬"}],"version":2},"flag-sh":{"id":"flag-sh","name":"St. Helena Flag","keywords":["sh","st","saint","ascension","tristan","cunha","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1ed","native":"🇸🇭"}],"version":2},"flag-si":{"id":"flag-si","name":"Slovenia Flag","keywords":["si","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1ee","native":"🇸🇮"}],"version":2},"flag-sj":{"id":"flag-sj","name":"Svalbard & Jan Mayen Flag","keywords":["sj"],"skins":[{"unified":"1f1f8-1f1ef","native":"🇸🇯"}],"version":2},"flag-sk":{"id":"flag-sk","name":"Slovakia Flag","keywords":["sk","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f0","native":"🇸🇰"}],"version":2},"flag-sl":{"id":"flag-sl","name":"Sierra Leone Flag","keywords":["sl","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f1","native":"🇸🇱"}],"version":2},"flag-sm":{"id":"flag-sm","name":"San Marino Flag","keywords":["sm","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f2","native":"🇸🇲"}],"version":2},"flag-sn":{"id":"flag-sn","name":"Senegal Flag","keywords":["sn","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f3","native":"🇸🇳"}],"version":2},"flag-so":{"id":"flag-so","name":"Somalia Flag","keywords":["so","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f4","native":"🇸🇴"}],"version":2},"flag-sr":{"id":"flag-sr","name":"Suriname Flag","keywords":["sr","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f7","native":"🇸🇷"}],"version":2},"flag-ss":{"id":"flag-ss","name":"South Sudan Flag","keywords":["ss","sd","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f8","native":"🇸🇸"}],"version":2},"flag-st":{"id":"flag-st","name":"São Tomé & Príncipe Flag","keywords":["st","sao","tome","principe","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1f9","native":"🇸🇹"}],"version":2},"flag-sv":{"id":"flag-sv","name":"El Salvador Flag","keywords":["sv","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1fb","native":"🇸🇻"}],"version":2},"flag-sx":{"id":"flag-sx","name":"Sint Maarten Flag","keywords":["sx","dutch","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1fd","native":"🇸🇽"}],"version":2},"flag-sy":{"id":"flag-sy","name":"Syria Flag","keywords":["sy","syrian","arab","republic","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1fe","native":"🇸🇾"}],"version":2},"flag-sz":{"id":"flag-sz","name":"Eswatini Flag","keywords":["sz","nation","country","banner"],"skins":[{"unified":"1f1f8-1f1ff","native":"🇸🇿"}],"version":2},"flag-ta":{"id":"flag-ta","name":"Tristan Da Cunha Flag","keywords":["ta"],"skins":[{"unified":"1f1f9-1f1e6","native":"🇹🇦"}],"version":2},"flag-tc":{"id":"flag-tc","name":"Turks & Caicos Islands Flag","keywords":["tc","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1e8","native":"🇹🇨"}],"version":2},"flag-td":{"id":"flag-td","name":"Chad Flag","keywords":["td","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1e9","native":"🇹🇩"}],"version":2},"flag-tf":{"id":"flag-tf","name":"French Southern Territories Flag","keywords":["tf","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1eb","native":"🇹🇫"}],"version":2},"flag-tg":{"id":"flag-tg","name":"Togo Flag","keywords":["tg","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1ec","native":"🇹🇬"}],"version":2},"flag-th":{"id":"flag-th","name":"Thailand Flag","keywords":["th","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1ed","native":"🇹🇭"}],"version":2},"flag-tj":{"id":"flag-tj","name":"Tajikistan Flag","keywords":["tj","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1ef","native":"🇹🇯"}],"version":2},"flag-tk":{"id":"flag-tk","name":"Tokelau Flag","keywords":["tk","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f0","native":"🇹🇰"}],"version":2},"flag-tl":{"id":"flag-tl","name":"Timor-Leste Flag","keywords":["tl","timor","leste","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f1","native":"🇹🇱"}],"version":2},"flag-tm":{"id":"flag-tm","name":"Turkmenistan Flag","keywords":["tm","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f2","native":"🇹🇲"}],"version":2},"flag-tn":{"id":"flag-tn","name":"Tunisia Flag","keywords":["tn","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f3","native":"🇹🇳"}],"version":2},"flag-to":{"id":"flag-to","name":"Tonga Flag","keywords":["to","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f4","native":"🇹🇴"}],"version":2},"flag-tr":{"id":"flag-tr","name":"Turkey Flag","keywords":["tr","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f7","native":"🇹🇷"}],"version":2},"flag-tt":{"id":"flag-tt","name":"Trinidad & Tobago Flag","keywords":["tt","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1f9","native":"🇹🇹"}],"version":2},"flag-tv":{"id":"flag-tv","name":"Tuvalu Flag","keywords":["tv","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1fb","native":"🇹🇻"}],"version":2},"flag-tw":{"id":"flag-tw","name":"Taiwan Flag","keywords":["tw","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1fc","native":"🇹🇼"}],"version":2},"flag-tz":{"id":"flag-tz","name":"Tanzania Flag","keywords":["tz","united","republic","nation","country","banner"],"skins":[{"unified":"1f1f9-1f1ff","native":"🇹🇿"}],"version":2},"flag-ua":{"id":"flag-ua","name":"Ukraine Flag","keywords":["ua","nation","country","banner"],"skins":[{"unified":"1f1fa-1f1e6","native":"🇺🇦"}],"version":2},"flag-ug":{"id":"flag-ug","name":"Uganda Flag","keywords":["ug","nation","country","banner"],"skins":[{"unified":"1f1fa-1f1ec","native":"🇺🇬"}],"version":2},"flag-um":{"id":"flag-um","name":"U.s. Outlying Islands Flag","keywords":["um","u","s"],"skins":[{"unified":"1f1fa-1f1f2","native":"🇺🇲"}],"version":2},"flag-un":{"id":"flag-un","name":"United Nations Flag","keywords":["un","banner"],"skins":[{"unified":"1f1fa-1f1f3","native":"🇺🇳"}],"version":4},"us":{"id":"us","name":"United States Flag","keywords":["us","america","nation","country","banner"],"skins":[{"unified":"1f1fa-1f1f8","native":"🇺🇸"}],"version":1},"flag-uy":{"id":"flag-uy","name":"Uruguay Flag","keywords":["uy","nation","country","banner"],"skins":[{"unified":"1f1fa-1f1fe","native":"🇺🇾"}],"version":2},"flag-uz":{"id":"flag-uz","name":"Uzbekistan Flag","keywords":["uz","nation","country","banner"],"skins":[{"unified":"1f1fa-1f1ff","native":"🇺🇿"}],"version":2},"flag-va":{"id":"flag-va","name":"Vatican City Flag","keywords":["va","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1e6","native":"🇻🇦"}],"version":2},"flag-vc":{"id":"flag-vc","name":"St. Vincent & Grenadines Flag","keywords":["vc","st","saint","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1e8","native":"🇻🇨"}],"version":2},"flag-ve":{"id":"flag-ve","name":"Venezuela Flag","keywords":["ve","bolivarian","republic","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1ea","native":"🇻🇪"}],"version":2},"flag-vg":{"id":"flag-vg","name":"British Virgin Islands Flag","keywords":["vg","bvi","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1ec","native":"🇻🇬"}],"version":2},"flag-vi":{"id":"flag-vi","name":"U.s. Virgin Islands Flag","keywords":["vi","u","s","us","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1ee","native":"🇻🇮"}],"version":2},"flag-vn":{"id":"flag-vn","name":"Vietnam Flag","keywords":["vn","viet","nam","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1f3","native":"🇻🇳"}],"version":2},"flag-vu":{"id":"flag-vu","name":"Vanuatu Flag","keywords":["vu","nation","country","banner"],"skins":[{"unified":"1f1fb-1f1fa","native":"🇻🇺"}],"version":2},"flag-wf":{"id":"flag-wf","name":"Wallis & Futuna Flag","keywords":["wf","nation","country","banner"],"skins":[{"unified":"1f1fc-1f1eb","native":"🇼🇫"}],"version":2},"flag-ws":{"id":"flag-ws","name":"Samoa Flag","keywords":["ws","nation","country","banner"],"skins":[{"unified":"1f1fc-1f1f8","native":"🇼🇸"}],"version":2},"flag-xk":{"id":"flag-xk","name":"Kosovo Flag","keywords":["xk","nation","country","banner"],"skins":[{"unified":"1f1fd-1f1f0","native":"🇽🇰"}],"version":2},"flag-ye":{"id":"flag-ye","name":"Yemen Flag","keywords":["ye","nation","country","banner"],"skins":[{"unified":"1f1fe-1f1ea","native":"🇾🇪"}],"version":2},"flag-yt":{"id":"flag-yt","name":"Mayotte Flag","keywords":["yt","nation","country","banner"],"skins":[{"unified":"1f1fe-1f1f9","native":"🇾🇹"}],"version":2},"flag-za":{"id":"flag-za","name":"South Africa Flag","keywords":["za","nation","country","banner"],"skins":[{"unified":"1f1ff-1f1e6","native":"🇿🇦"}],"version":2},"flag-zm":{"id":"flag-zm","name":"Zambia Flag","keywords":["zm","nation","country","banner"],"skins":[{"unified":"1f1ff-1f1f2","native":"🇿🇲"}],"version":2},"flag-zw":{"id":"flag-zw","name":"Zimbabwe Flag","keywords":["zw","nation","country","banner"],"skins":[{"unified":"1f1ff-1f1fc","native":"🇿🇼"}],"version":2},"flag-england":{"id":"flag-england","name":"England Flag","keywords":["english"],"skins":[{"unified":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","native":"🏴"}],"version":5},"flag-scotland":{"id":"flag-scotland","name":"Scotland Flag","keywords":["scottish"],"skins":[{"unified":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","native":"🏴"}],"version":5},"flag-wales":{"id":"flag-wales","name":"Wales Flag","keywords":["welsh"],"skins":[{"unified":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","native":"🏴"}],"version":5}},"aliases":{"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"},"sheet":{"cols":61,"rows":61}}');function au(e){return au="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},au(e)}function ru(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return ou(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(ou(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,ou(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,ou(f,"constructor",l),ou(l,"constructor",d),d.displayName="GeneratorFunction",ou(l,a,"GeneratorFunction"),ou(f),ou(f,a,"Generator"),ou(f,t,function(){return this}),ou(f,"toString",function(){return"[object Generator]"}),(ru=function(){return{w:r,m:u}})()}function ou(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}ou=function(e,n,i,t){function r(n,i){ou(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},ou(e,n,i,t)}function su(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function du(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return lu(e,n);var i={}.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)?lu(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function lu(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}function cu(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,t)}return i}function fu(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?cu(Object(i),!0).forEach(function(n){uu(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):cu(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function uu(e,n,i){return(n=function(e){var n=function(e){if("object"!=au(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=au(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==au(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}var hu=function(e){return(e||"").replace(/_/g," ").replace(/\b\w/g,function(e){return e.toUpperCase()})},mu=(0,t.memo)(function(e){var n=e.allocations,i=e.size,t=void 0===i?110:i,a=e.thickness,r=void 0===a?20:a,o=t/2,s=(t-r)/2,d=n.reduce(function(e,n){return e+(n.recommendedPct||0)},0);if(0===d)return(0,Ad.jsx)("svg",{width:t,height:t,children:(0,Ad.jsx)("circle",{cx:o,cy:o,r:s,fill:"none",stroke:"var(--border)",strokeWidth:r})});var l=0,c=n.map(function(e){var n=l/d*2*Math.PI-Math.PI/2,i=(l+=e.recommendedPct||0)/d*2*Math.PI-Math.PI/2,t=e.recommendedPct/d*360>180?1:0;return fu(fu({},e),{},{d:"M ".concat(o+s*Math.cos(n)," ").concat(o+s*Math.sin(n)," A ").concat(s," ").concat(s," 0 ").concat(t," 1 ").concat(o+s*Math.cos(i)," ").concat(o+s*Math.sin(i))})}),f=Math.abs(d-100)<.01;return(0,Ad.jsxs)("svg",{width:t,height:t,viewBox:"0 0 ".concat(t," ").concat(t),children:[c.map(function(e,n){var i;return(0,Ad.jsx)("path",{d:e.d,fill:"none",stroke:(null===(i=kl[e.channelType])||void 0===i?void 0:i.color)||"#999",strokeWidth:r,strokeLinecap:"butt"},n)}),(0,Ad.jsxs)("text",{x:o,y:o-4,textAnchor:"middle",style:{fontSize:15,fontWeight:700,fill:f?"var(--success)":"var(--danger)"},children:[d,"%"]}),(0,Ad.jsx)("text",{x:o,y:o+12,textAnchor:"middle",style:{fontSize:10,fill:"var(--text-dim)"},children:"total"})]})}),pu=(0,t.memo)(function(e){var n=e.value,i=e.onChange,a=du((0,t.useState)(!1),2),r=a[0],o=a[1],s=(0,t.useRef)(null),d=(0,t.useRef)(null),l=du((0,t.useState)(!1),2),c=l[0],f=l[1];return(0,t.useEffect)(function(){if(r){var e=function(e){s.current&&!s.current.contains(e.target)&&o(!1)};return document.addEventListener("mousedown",e),function(){return document.removeEventListener("mousedown",e)}}},[r]),(0,t.useEffect)(function(){if(r&&d.current){var e=d.current.getBoundingClientRect();f(e.bottom+360>window.innerHeight)}},[r]),(0,Ad.jsxs)("span",{ref:s,style:{position:"relative"},children:[(0,Ad.jsx)("button",{ref:d,onClick:function(e){e.stopPropagation(),o(!r)},className:"icon-picker-btn",children:n}),r&&(0,Ad.jsx)("div",{className:"icon-picker-popover",style:uu({},c?"bottom":"top",34),children:(0,Ad.jsx)(iu,{data:tu,onEmojiSelect:function(e){i(e.native),o(!1)},theme:"light",previewPosition:"none",skinTonePosition:"search",maxFrequentRows:1,navPosition:"bottom",perLine:7,emojiSize:22,emojiButtonSize:30})})]})}),gu=(0,t.memo)(function(e){var n=e.value,i=e.onChange,a=du((0,t.useState)(!1),2),r=a[0],o=a[1],s=(0,t.useRef)(null);return(0,t.useEffect)(function(){if(r){var e=function(e){s.current&&!s.current.contains(e.target)&&o(!1)};return document.addEventListener("mousedown",e),function(){return document.removeEventListener("mousedown",e)}}},[r]),(0,Ad.jsxs)("span",{ref:s,style:{position:"relative"},children:[(0,Ad.jsx)("button",{onClick:function(e){e.stopPropagation(),o(!r)},className:"color-picker-btn",style:{backgroundColor:n||"#999"}}),r&&(0,Ad.jsx)("div",{className:"color-picker-grid",children:["#7dca7d","#4fc3f7","#ffb74d","#ce93d8","#ef5350","#90a4ae","#4db6ac","#ff8a65","#aed581","#7986cb"].map(function(e){return(0,Ad.jsx)("button",{className:"color-picker-option ".concat(e===n?"active":""),style:{backgroundColor:e},onClick:function(n){n.stopPropagation(),i(e),o(!1)}},e)})})]})}),vu=(0,t.memo)(function(e){var n=e.channel,i=kl[n]||{};return(0,Ad.jsx)("span",{className:"channel-badge",style:{borderColor:i.color||"#666"},children:i.label||n})}),yu=(0,t.memo)(function(e){var n,i,a,r=e.editData,o=e.defaultCategory,s=e.defaultObjective,d=e.availableChannels,l=e.onSuccess,c=e.onCancel,f=el().apiCall,u=xl(),h=u.categories,m=u.objectives,p=d||yl,g=!!d,v=du((0,t.useState)((null==r?void 0:r.channelType)||(1===p.length?p[0]:"")),2),y=v[0],k=v[1],b=du((0,t.useState)((null==r?void 0:r.businessCategory)||o||""),2),w=b[0],_=b[1],x=du((0,t.useState)((null==r?void 0:r.objective)||s||""),2),C=x[0],S=x[1],T=du((0,t.useState)(null!==(n=null==r?void 0:r.recommendedPct)&&void 0!==n?n:""),2),I=T[0],A=T[1],j=du((0,t.useState)(null!==(i=null==r?void 0:r.minBudgetRequired)&&void 0!==i?i:0),2),E=j[0],P=j[1],M=du((0,t.useState)((null==r?void 0:r.rationale)||""),2),R=M[0],N=M[1],O=du((0,t.useState)(null===(a=null==r?void 0:r.isActive)||void 0===a||a),2),F=O[0],z=O[1],L=du((0,t.useState)(!1),2),q=L[0],B=L[1],H=du((0,t.useState)(null),2),D=H[0],U=H[1],W=!!r,K=g?"Add Channel to ".concat(hu(o)," · ").concat(hu(s)):W?"Edit Template":"Create Template",G=function(){var e,n=(e=ru().m(function e(n){var i,t;return ru().w(function(e){for(;;)switch(e.n){case 0:return n.preventDefault(),B(!0),U(null),i=W?"/api/admin/templates/".concat(r.templateId):"/api/admin/templates",e.n=1,f(i,W?"PUT":"POST",fu({channelType:y,businessCategory:w,objective:C,recommendedPct:parseFloat(I),minBudgetRequired:parseFloat(E)||0,rationale:R||null},W?{isActive:F}:{}));case 1:(t=e.v).ok?l():U(t.error||"Operation failed"),B(!1);case 2:return e.a(2)}},e)}),function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){su(r,t,a,o,s,"next",e)}function s(e){su(r,t,a,o,s,"throw",e)}o(void 0)})});return function(e){return n.apply(this,arguments)}}();return(0,Ad.jsxs)("div",{className:"admin-form",children:[(0,Ad.jsx)("h3",{children:K}),D&&(0,Ad.jsx)("div",{className:"error-message",children:D}),(0,Ad.jsxs)("form",{onSubmit:G,children:[(0,Ad.jsxs)("div",{className:"form-row-inline",children:[(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Channel"}),(0,Ad.jsxs)("select",{value:y,onChange:function(e){return k(e.target.value)},required:!0,disabled:q,children:[(0,Ad.jsx)("option",{value:"",children:"Select…"}),p.map(function(e){var n;return(0,Ad.jsx)("option",{value:e,children:(null===(n=kl[e])||void 0===n?void 0:n.label)||e},e)})]})]}),!g&&(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Category"}),(0,Ad.jsxs)("select",{value:w,onChange:function(e){return _(e.target.value)},required:!0,disabled:q,children:[(0,Ad.jsx)("option",{value:"",children:"Select…"}),h.map(function(e){return(0,Ad.jsxs)("option",{value:e.name,children:[e.icon," ",hu(e.name)]},e.name)})]})]}),!g&&(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Objective"}),(0,Ad.jsxs)("select",{value:C,onChange:function(e){return S(e.target.value)},required:!0,disabled:q,children:[(0,Ad.jsx)("option",{value:"",children:"Select…"}),m.map(function(e){return(0,Ad.jsx)("option",{value:e.name,children:hu(e.name)},e.name)})]})]})]}),(0,Ad.jsxs)("div",{className:"form-row-inline",children:[(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Recommended %"}),(0,Ad.jsx)("input",{type:"number",min:"0",max:"100",step:"0.01",value:I,onChange:function(e){return A(e.target.value)},required:!0,disabled:q})]}),(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Min Budget ($)"}),(0,Ad.jsx)("input",{type:"number",min:"0",step:"1",value:E,onChange:function(e){return P(e.target.value)},disabled:q})]}),W&&(0,Ad.jsxs)("div",{className:"form-group",children:[(0,Ad.jsx)("label",{children:"Active"}),(0,Ad.jsxs)("select",{value:F?"true":"false",onChange:function(e){return z("true"===e.target.value)},disabled:q,children:[(0,Ad.jsx)("option",{value:"true",children:"Yes"}),(0,Ad.jsx)("option",{value:"false",children:"No"})]})]})]}),(0,Ad.jsx)("div",{className:"form-row-inline",children:(0,Ad.jsxs)("div",{className:"form-group",style:{flex:"1 1 100%"},children:[(0,Ad.jsx)("label",{children:"Rationale"}),(0,Ad.jsx)("input",{type:"text",maxLength:"500",value:R,onChange:function(e){return N(e.target.value)},disabled:q,placeholder:"Why this allocation is recommended…"})]})}),(0,Ad.jsxs)("div",{className:"form-buttons",children:[(0,Ad.jsx)("button",{type:"button",className:"btn-cancel",onClick:c,disabled:q,children:"Cancel"}),(0,Ad.jsx)("button",{type:"submit",className:"btn-primary",disabled:q,children:q?"Saving...":W?"Update":"Create"})]})]})]})});function ku(){var e=el().refresh,n=xl(),i=n.templates,t=n.categories,a=n.objectives,r=n.catIconMap,o=n.objColorMap,s=n.catCounts,d=n.filtered,l=n.grouped,c=n.selectedCategory,f=n.setSelectedCategory,u=n.selectedObjective,h=n.setSelectedObjective,m=n.editMode,p=n.setEditMode,g=n.showForm,v=n.setShowForm,y=n.editingId,k=n.setEditingId,b=n.addingToGroup,w=n.setAddingToGroup,_=n.showNewCat,x=n.setShowNewCat,C=n.newCatName,S=n.setNewCatName,T=n.newCatIcon,I=n.setNewCatIcon,A=n.handleUpdateCategory,j=n.handleDeleteCategory,E=n.handleCreateCategory,P=n.handleUpdateObjective,M=n.handleDeleteTemplate;return(0,Ad.jsxs)("div",{className:"templates-layout",children:[(0,Ad.jsxs)("aside",{className:"templates-sidebar",children:[(0,Ad.jsxs)("div",{className:"sidebar-section",children:[(0,Ad.jsxs)("div",{className:"sidebar-section-header",children:[(0,Ad.jsx)("span",{className:"sidebar-section-title",children:"Categories"}),(0,Ad.jsx)("button",{className:"btn-icon-sm",onClick:function(){return p(!m)},title:m?"Done editing":"Edit categories",children:m?"✓":"✎"})]}),(0,Ad.jsx)("div",{className:"sidebar-list sidebar-list-scrollable",children:t.map(function(e){return(0,Ad.jsxs)("div",{className:"sidebar-item-wrapper",children:[(0,Ad.jsxs)("button",{className:"sidebar-item ".concat(c===e.name?"active":""),onClick:function(){return f(e.name)},children:[m?(0,Ad.jsx)(pu,{value:e.icon||"📋",onChange:function(n){return A(e.categoryId,{icon:n})}}):(0,Ad.jsx)("span",{className:"sidebar-item-icon",children:e.icon||"📋"}),(0,Ad.jsx)("span",{className:"sidebar-item-label",children:hu(e.name)}),(0,Ad.jsx)("span",{className:"sidebar-item-count",children:s[e.name]||0})]}),m&&(0,Ad.jsx)("button",{className:"btn-icon-xs btn-danger-icon",title:s[e.name]?"Has ".concat(s[e.name]," templates — remove them first"):"Delete category",disabled:!!s[e.name],onClick:function(n){n.stopPropagation(),j(e.categoryId,e.name)},children:"✕"})]},e.categoryId||e.name)})}),_?(0,Ad.jsxs)("div",{className:"sidebar-new-item",children:[(0,Ad.jsx)(pu,{value:T||"📋",onChange:function(e){return I(e)}}),(0,Ad.jsx)("input",{value:C,onChange:function(e){return S(e.target.value)},onKeyDown:function(e){return"Enter"===e.key&&E()},placeholder:"category_name",autoFocus:!0}),(0,Ad.jsx)("button",{className:"btn-icon-xs",onClick:E,children:"✓"}),(0,Ad.jsx)("button",{className:"btn-icon-xs",onClick:function(){x(!1),S(""),I("")},children:"✕"})]}):(0,Ad.jsxs)("button",{className:"sidebar-item sidebar-add-btn",onClick:function(){return x(!0)},children:[(0,Ad.jsx)("span",{className:"sidebar-item-icon",children:"+"}),(0,Ad.jsx)("span",{className:"sidebar-item-label",children:"Add Category"})]})]}),(0,Ad.jsxs)("div",{className:"sidebar-section",children:[(0,Ad.jsx)("div",{className:"sidebar-section-header",children:(0,Ad.jsx)("span",{className:"sidebar-section-title",children:"Objectives"})}),(0,Ad.jsxs)("div",{className:"sidebar-list sidebar-list-scrollable",children:[(0,Ad.jsxs)("button",{className:"sidebar-item ".concat(null===u?"active":""),onClick:function(){return h(null)},children:[(0,Ad.jsx)("span",{className:"sidebar-color-dot",style:{background:"var(--text-dim)"}}),(0,Ad.jsx)("span",{className:"sidebar-item-label",children:"All Objectives"})]}),a.map(function(e){return(0,Ad.jsxs)("button",{className:"sidebar-item ".concat(u===e.name?"active":""),onClick:function(){return h(u===e.name?null:e.name)},children:[m?(0,Ad.jsx)(gu,{value:e.color||"#999",onChange:function(n){return P(e.objectiveId,{color:n})}}):(0,Ad.jsx)("span",{className:"sidebar-color-dot",style:{background:e.color||"#999"}}),(0,Ad.jsx)("span",{className:"sidebar-item-label",children:hu(e.name)})]},e.objectiveId||e.name)})]})]})]}),(0,Ad.jsxs)("div",{className:"templates-content",children:[(0,Ad.jsx)("div",{className:"channel-legend-bar",children:yl.map(function(e){return(0,Ad.jsxs)("span",{className:"channel-chip",style:{borderColor:kl[e].color},children:[(0,Ad.jsx)("span",{className:"channel-chip-dot",style:{background:kl[e].color}}),kl[e].label]},e)})}),(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsxs)("div",{children:[(0,Ad.jsxs)("h2",{children:[c?hu(c):"Templates",u&&(0,Ad.jsx)("span",{className:"header-objective-tag",style:{background:o[u]||"#999"},children:hu(u)})]}),(0,Ad.jsxs)("span",{className:"filter-count",children:[d.length," template",1!==d.length?"s":""]})]}),(0,Ad.jsx)("button",{className:"btn-action",onClick:function(){v(!g),k(null)},children:g?"Cancel":"+ Add Template"})]}),g&&(0,Ad.jsx)(yu,{defaultCategory:c,defaultObjective:u,onSuccess:function(){v(!1),e()},onCancel:function(){return v(!1)}}),y&&(0,Ad.jsx)(yu,{editData:i.find(function(e){return e.templateId===y}),onSuccess:function(){k(null),e()},onCancel:function(){return k(null)}}),0===Object.keys(l).length&&!g&&(0,Ad.jsxs)("div",{className:"empty-state",children:[(0,Ad.jsx)("div",{className:"empty-state-icon",children:"📊"}),(0,Ad.jsx)("p",{children:"No templates for this combination yet."}),(0,Ad.jsxs)("p",{className:"text-dim",children:['Click "+ Add Template" to create one',u?", or deselect the objective filter.":"."]})]}),Object.entries(l).map(function(n){var i,t,a=du(n,2),s=a[0],d=a[1],l=du(s.split("|"),2),c=l[0],f=l[1],u=d.reduce(function(e,n){return e+(n.recommendedPct||0)},0),h=Math.abs(u-100)<.01;return(0,Ad.jsxs)("div",{className:"template-group",children:[(0,Ad.jsx)("div",{className:"template-group-header",children:(0,Ad.jsxs)("div",{className:"template-group-info",children:[(0,Ad.jsx)(mu,{allocations:d}),(0,Ad.jsxs)("div",{className:"template-group-meta",children:[(0,Ad.jsxs)("div",{className:"template-group-title",children:[(0,Ad.jsx)("span",{className:"cat-icon",children:r[c]||"📋"}),hu(c),(0,Ad.jsx)("span",{className:"objective-tag",style:{background:o[f]||"#999"},children:hu(f)})]}),(0,Ad.jsxs)("div",{className:"template-group-stats",children:[d.length," channel",1!==d.length?"s":""," · ",(0,Ad.jsxs)("span",{className:h?"text-success":"text-danger",children:[u,"% allocated ",h?"✓":"⚠"]})]}),(0,Ad.jsx)("div",{className:"template-group-channel-bars",children:d.map(function(e){var n,i,t;return(0,Ad.jsxs)("div",{className:"channel-bar",children:[(0,Ad.jsx)("span",{className:"channel-bar-color",style:{background:(null===(n=kl[e.channelType])||void 0===n?void 0:n.color)||"#999"}}),(0,Ad.jsx)("span",{className:"channel-bar-label",children:(null===(i=kl[e.channelType])||void 0===i?void 0:i.label)||e.channelType}),(0,Ad.jsxs)("span",{className:"channel-bar-pct",children:[e.recommendedPct,"%"]}),(0,Ad.jsx)("div",{className:"channel-bar-track",children:(0,Ad.jsx)("div",{className:"channel-bar-fill",style:{width:"".concat(e.recommendedPct,"%"),background:(null===(t=kl[e.channelType])||void 0===t?void 0:t.color)||"#999"}})})]},e.templateId)})})]})]})}),(0,Ad.jsxs)("table",{className:"data-table",children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{children:"Channel"}),(0,Ad.jsx)("th",{children:"Allocation %"}),(0,Ad.jsx)("th",{children:"Min Budget"}),(0,Ad.jsx)("th",{children:"Rationale"}),(0,Ad.jsx)("th",{children:"Active"}),(0,Ad.jsx)("th",{children:"Actions"})]})}),(0,Ad.jsx)("tbody",{children:d.sort(function(e,n){return(n.recommendedPct||0)-(e.recommendedPct||0)}).map(function(e){return(0,Ad.jsxs)("tr",{className:e.isActive?"":"row-inactive",children:[(0,Ad.jsx)("td",{children:(0,Ad.jsx)(vu,{channel:e.channelType})}),(0,Ad.jsxs)("td",{className:"number-cell",children:[e.recommendedPct,"%"]}),(0,Ad.jsxs)("td",{className:"number-cell",children:["$",e.minBudgetRequired]}),(0,Ad.jsx)("td",{className:"rationale-cell",title:e.rationale||"",children:(n=e.rationale,n?n.length>50?n.substring(0,50)+"…":n:"—")}),(0,Ad.jsx)("td",{children:e.isActive?"✓":"—"}),(0,Ad.jsxs)("td",{children:[(0,Ad.jsx)("button",{className:"btn-small",onClick:function(){return k(e.templateId)},children:"Edit"})," ",(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return M(e.templateId)},children:"Delete"})]})]},e.templateId);var n})})]}),(i=d.map(function(e){return e.channelType}),t=yl.filter(function(e){return!i.includes(e)}),0===t.length?null:(null==b?void 0:b.category)===c&&(null==b?void 0:b.objective)===f?(0,Ad.jsx)(yu,{defaultCategory:c,defaultObjective:f,availableChannels:t,onSuccess:function(){w(null),e()},onCancel:function(){return w(null)}}):(0,Ad.jsxs)("button",{className:"btn-small btn-add-channel",onClick:function(){return w({category:c,objective:f})},children:["+ Add Channel (",t.map(function(e){var n;return(null===(n=kl[e])||void 0===n?void 0:n.label)||e}).join(", "),")"]}))]},s)}),Object.keys(l).length>0&&(0,Ad.jsxs)("div",{className:"allocation-summary",children:[(0,Ad.jsx)("h3",{children:"Allocation Summary"}),(0,Ad.jsx)("div",{className:"summary-grid",children:Object.entries(l).map(function(e){var n=du(e,2),i=n[0],t=n[1],a=du(i.split("|"),2),o=a[0],s=a[1],d=t.reduce(function(e,n){return e+(n.recommendedPct||0)},0),l=Math.abs(d-100)<.01;return(0,Ad.jsxs)("div",{className:"summary-item ".concat(l?"":"summary-warning"),children:[(0,Ad.jsxs)("span",{className:"summary-label",children:[r[o]||"📋"," ",hu(o)," / ",hu(s)]}),(0,Ad.jsxs)("span",{className:"summary-pct ".concat(l?"summary-ok":"summary-bad"),children:[d,"%"]})]},i)})})]})]})]})}function bu(e){return bu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},bu(e)}function wu(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,t)}return i}function _u(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?wu(Object(i),!0).forEach(function(n){xu(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):wu(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function xu(e,n,i){return(n=function(e){var n=function(e){if("object"!=bu(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=bu(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==bu(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function Cu(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return Su(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(Su(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Su(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,Su(f,"constructor",l),Su(l,"constructor",d),d.displayName="GeneratorFunction",Su(l,a,"GeneratorFunction"),Su(f),Su(f,a,"Generator"),Su(f,t,function(){return this}),Su(f,"toString",function(){return"[object Generator]"}),(Cu=function(){return{w:r,m:u}})()}function Su(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Su=function(e,n,i,t){function r(n,i){Su(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},Su(e,n,i,t)}function Tu(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function Iu(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Tu(r,t,a,o,s,"next",e)}function s(e){Tu(r,t,a,o,s,"throw",e)}o(void 0)})}}function Au(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return ju(e,n);var i={}.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)?ju(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ju(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var Eu={panel:{padding:"24px",maxWidth:"1200px"},header:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:"24px",flexWrap:"wrap",gap:"12px"},headerLeft:{display:"flex",flexDirection:"column",gap:"4px"},title:{fontSize:"20px",fontWeight:600,color:"#111827",margin:0},subtitle:{fontSize:"13px",color:"#6B7280",margin:0},statsRow:{display:"flex",gap:"16px",alignItems:"center"},statBadge:function(e){return{display:"inline-flex",alignItems:"center",gap:"6px",padding:"4px 10px",borderRadius:"6px",fontSize:"12px",fontWeight:500,background:e+"14",color:e}},matrixSection:{marginBottom:"32px"},sectionTitle:{fontSize:"14px",fontWeight:600,color:"#374151",marginBottom:"12px",display:"flex",alignItems:"center",gap:"8px"},matrixTable:{width:"100%",borderCollapse:"separate",borderSpacing:"0",border:"1px solid #E5E7EB",borderRadius:"8px",overflow:"hidden"},matrixTh:{padding:"10px 16px",fontSize:"12px",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"#6B7280",background:"#F9FAFB",textAlign:"center",borderBottom:"1px solid #E5E7EB"},matrixThLeft:{padding:"10px 16px",fontSize:"12px",fontWeight:600,color:"#6B7280",background:"#F9FAFB",textAlign:"left",borderBottom:"1px solid #E5E7EB",borderRight:"1px solid #E5E7EB"},matrixObjCell:function(e){return{padding:"10px 16px",borderBottom:"1px solid #E5E7EB",borderRight:"1px solid #E5E7EB",background:"#fff",display:"flex",alignItems:"center",gap:"8px"}},objDot:function(e){return{width:"8px",height:"8px",borderRadius:"50%",background:e,flexShrink:0}},matrixCell:function(e){return{padding:"8px",borderBottom:"1px solid #E5E7EB",borderRight:"1px solid #E5E7EB",textAlign:"center",cursor:"pointer",transition:"background 0.15s",background:e?"#F0FDF4":"#fff",verticalAlign:"middle"}},matrixCellFilled:{fontSize:"11px",fontWeight:500,color:"#065F46",lineHeight:"1.3"},matrixCellEmpty:{color:"#D1D5DB",fontSize:"18px"},cardsSection:{display:"flex",flexDirection:"column",gap:"16px"},card:{border:"1px solid #E5E7EB",borderRadius:"10px",overflow:"hidden",background:"#fff"},cardHeader:function(e){return{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 20px",borderBottom:"1px solid #E5E7EB",background:e+"08",borderLeft:"4px solid ".concat(e)}},cardTitle:{display:"flex",alignItems:"center",gap:"10px"},cardTitleText:{fontSize:"15px",fontWeight:600,color:"#111827",textTransform:"capitalize"},cardCount:function(e){return{fontSize:"11px",padding:"2px 8px",borderRadius:"10px",background:e+"1A",color:e,fontWeight:500}},cardBody:{display:"flex",gap:"0",flexWrap:"wrap"},translationBlock:function(e){return{flex:"1 1 280px",padding:"16px 20px",borderRight:"1px solid #F3F4F6",borderBottom:"1px solid #F3F4F6",position:"relative"}},translationHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px"},channelLabel:function(e){return{fontSize:"12px",fontWeight:600,color:e,display:"flex",alignItems:"center",gap:"6px"}},providerValue:{fontSize:"13px",fontWeight:500,color:"#111827",marginBottom:"4px"},providerLabel:{fontSize:"12px",color:"#6B7280",marginBottom:"10px"},capsRow:{display:"flex",gap:"6px",flexWrap:"wrap",marginBottom:"6px"},capBadge:function(e){return{fontSize:"10px",fontWeight:500,padding:"2px 7px",borderRadius:"4px",background:e?"#ECFDF5":"#F9FAFB",color:e?"#065F46":"#9CA3AF",border:"1px solid ".concat(e?"#D1FAE5":"#E5E7EB")}},notes:{fontSize:"11px",color:"#9CA3AF",fontStyle:"italic",marginTop:"4px"},blockActions:{display:"flex",gap:"6px"},iconBtn:{background:"none",border:"none",cursor:"pointer",padding:"2px 4px",fontSize:"13px",color:"#9CA3AF",borderRadius:"4px",transition:"color 0.15s, background 0.15s"},addTranslationBlock:{flex:"1 1 280px",padding:"16px 20px",display:"flex",alignItems:"center",justifyContent:"center",borderRight:"1px solid #F3F4F6",borderBottom:"1px solid #F3F4F6",minHeight:"80px"},addBtn:{background:"none",border:"2px dashed #D1D5DB",borderRadius:"8px",padding:"8px 16px",color:"#9CA3AF",fontSize:"12px",fontWeight:500,cursor:"pointer",transition:"all 0.15s",width:"100%"},overlay:{position:"fixed",inset:0,background:"rgba(0,0,0,0.3)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3},formCard:{background:"#fff",borderRadius:"12px",width:"520px",maxHeight:"85vh",overflowY:"auto",boxShadow:"0 20px 60px rgba(0,0,0,0.15)"},formHeader:{padding:"20px 24px",borderBottom:"1px solid #E5E7EB",display:"flex",justifyContent:"space-between",alignItems:"center"},formTitle:{fontSize:"16px",fontWeight:600,color:"#111827",margin:0},formBody:{padding:"20px 24px",display:"flex",flexDirection:"column",gap:"16px"},formFooter:{padding:"16px 24px",borderTop:"1px solid #E5E7EB",display:"flex",justifyContent:"flex-end",gap:"10px"},fieldGroup:{display:"flex",flexDirection:"column",gap:"4px"},fieldLabel:{fontSize:"12px",fontWeight:600,color:"#374151"},fieldInput:{padding:"8px 12px",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",outline:"none",transition:"border-color 0.15s"},fieldSelect:{padding:"8px 12px",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",outline:"none",background:"#fff"},checkRow:{display:"flex",alignItems:"center",gap:"8px"},checkLabel:{fontSize:"13px",color:"#374151"},btnPrimary:{padding:"8px 18px",background:"#2563EB",color:"#fff",border:"none",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer"},btnSecondary:{padding:"8px 18px",background:"#fff",color:"#374151",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer"},btnDanger:{padding:"8px 18px",background:"#FEE2E2",color:"#DC2626",border:"1px solid #FECACA",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer"},loading:{padding:"60px",textAlign:"center",color:"#9CA3AF",fontSize:"14px"},error:{padding:"16px",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#DC2626",fontSize:"13px"},emptyState:{padding:"40px",textAlign:"center",color:"#9CA3AF",fontSize:"14px",border:"2px dashed #E5E7EB",borderRadius:"8px"}},Pu=[{key:"supportsObjectiveChange",short:"Objective",label:"Change Objective"},{key:"supportsBudgetChange",short:"Budget",label:"Change Budget"},{key:"supportsTargetingChange",short:"Targeting",label:"Change Targeting"},{key:"supportsStatusToggle",short:"Status",label:"Toggle Status"}];function Mu(){var e=function(){var e=(0,t.useContext)(Nl);if(!e)throw new Error("useObjectiveMappings must be used within <ObjectiveMappingsProvider>");return e}(),n=e.channels,i=e.objectives,a=(e.mappings,e.channelMap),r=e.objectiveColorMap,o=e.coverageMatrix,s=e.coverageStats,d=e.loading,l=e.metaError,c=e.createMapping,f=e.updateMapping,u=e.deleteMapping,h=e.getProviderObjectives,m=Au((0,t.useState)(null),2),p=m[0],g=m[1],v=(0,t.useMemo)(function(){return n.filter(function(e){return e.isActive})},[n]),y=(0,t.useMemo)(function(){return i.filter(function(e){return e.isActive}).sort(function(e,n){return e.sortOrder-n.sortOrder})},[i]),k=(0,t.useCallback)(function(){g({mode:"create",presets:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}})},[]),b=(0,t.useCallback)(function(e){g({mode:"edit",mapping:e})},[]),w=(0,t.useCallback)(function(){return g(null)},[]);return d?(0,Ad.jsx)("div",{style:Eu.loading,children:"Loading objective translations..."}):l?(0,Ad.jsxs)("div",{style:Eu.error,children:["Error loading metadata: ",l]}):(0,Ad.jsxs)("div",{style:Eu.panel,children:[(0,Ad.jsxs)("div",{style:Eu.header,children:[(0,Ad.jsxs)("div",{style:Eu.headerLeft,children:[(0,Ad.jsx)("h2",{style:Eu.title,children:"Objective Translations"}),(0,Ad.jsx)("p",{style:Eu.subtitle,children:"Maps platform objectives to provider-specific campaign types across channels"})]}),(0,Ad.jsxs)("div",{style:Eu.statsRow,children:[(0,Ad.jsxs)("span",{style:Eu.statBadge("#10B981"),children:[s.filled," mapped"]}),s.gaps>0&&(0,Ad.jsxs)("span",{style:Eu.statBadge("#EF4444"),children:[s.gaps," gap",1!==s.gaps?"s":""]}),(0,Ad.jsxs)("span",{style:Eu.statBadge("#6B7280"),children:[s.pct,"% coverage"]})]})]}),(0,Ad.jsxs)("div",{style:Eu.matrixSection,children:[(0,Ad.jsxs)("div",{style:Eu.sectionTitle,children:[(0,Ad.jsx)("span",{children:"Coverage Matrix"}),(0,Ad.jsxs)("span",{style:{fontSize:"11px",color:"#9CA3AF",fontWeight:400},children:["Click any cell to ","·"," add or edit"]})]}),(0,Ad.jsx)(Ru,{objectives:y,channels:v,matrix:o,colorMap:r,onClickCell:function(e,n,i){i?b(i):k({channelType:n.code,platformObjective:e.name})}})]}),(0,Ad.jsx)("div",{style:Eu.sectionTitle,children:(0,Ad.jsx)("span",{children:"Translations by Objective"})}),(0,Ad.jsxs)("div",{style:Eu.cardsSection,children:[y.map(function(e){return(0,Ad.jsx)(Nu,{objective:e,channels:v,channelMap:a,matrix:o,colorMap:r,onEdit:b,onAdd:function(n){return k({platformObjective:e.name,channelType:n})},onDelete:u},e.name)}),0===y.length&&(0,Ad.jsx)("div",{style:Eu.emptyState,children:"No active objectives defined. Add objectives in the Allocation Templates panel."})]}),p&&(0,Ad.jsx)(Ou,{mode:p.mode,presets:p.presets,mapping:p.mapping,channels:v,objectives:y,getProviderObjectives:h,onCreate:c,onUpdate:f,onClose:w})]})}var Ru=(0,t.memo)(function(e){var n=e.objectives,i=e.channels,t=e.matrix,a=e.colorMap,r=e.onClickCell;return n.length&&i.length?(0,Ad.jsxs)("table",{style:Eu.matrixTable,children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{style:Eu.matrixThLeft,children:"Objective"}),i.map(function(e){return(0,Ad.jsx)("th",{style:Eu.matrixTh,children:(0,Ad.jsxs)("span",{style:{color:e.color||"#6B7280"},children:[e.icon||""," ",e.label]})},e.code)})]})}),(0,Ad.jsx)("tbody",{children:n.map(function(e){var n=a[e.name]||"#6B7280";return(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("td",{style:{borderBottom:"1px solid #E5E7EB",borderRight:"1px solid #E5E7EB",padding:"10px 16px",background:"#fff"},children:(0,Ad.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,Ad.jsx)("span",{style:Eu.objDot(n)}),(0,Ad.jsx)("span",{style:{fontSize:"13px",fontWeight:500,color:"#111827",textTransform:"capitalize"},children:e.name})]})}),i.map(function(n){var i,a=null===(i=t[e.name])||void 0===i?void 0:i[n.code];return(0,Ad.jsx)("td",{style:Eu.matrixCell(!!a),onClick:function(){return r(e,n,a)},onMouseEnter:function(e){e.currentTarget.style.background=a?"#DCFCE7":"#F3F4F6"},onMouseLeave:function(e){e.currentTarget.style.background=a?"#F0FDF4":"#fff"},title:a?"".concat(a.providerObjectiveLabel,"\nClick to edit"):"No mapping — click to add",children:a?(0,Ad.jsx)("div",{style:Eu.matrixCellFilled,children:a.providerObjectiveLabel||a.providerObjective}):(0,Ad.jsx)("div",{style:Eu.matrixCellEmpty,children:"+"})},n.code)})]},e.name)})})]}):(0,Ad.jsx)("div",{style:Eu.emptyState,children:"Add channels and objectives to see the coverage matrix"})}),Nu=(0,t.memo)(function(e){var n=e.objective,i=e.channels,a=e.channelMap,r=e.matrix,o=e.colorMap,s=e.onEdit,d=e.onAdd,l=e.onDelete,c=o[n.name]||"#6B7280",f=r[n.name]||{},u=i.filter(function(e){return f[e.code]}),h=i.filter(function(e){return!f[e.code]}),m=Au((0,t.useState)(null),2),p=m[0],g=m[1],v=function(){var e=Iu(Cu().m(function e(n){var i;return Cu().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,l(n);case 1:null!=(i=e.v)&&i.ok&&g(null);case 2:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}();return(0,Ad.jsxs)("div",{style:Eu.card,children:[(0,Ad.jsx)("div",{style:Eu.cardHeader(c),children:(0,Ad.jsxs)("div",{style:Eu.cardTitle,children:[(0,Ad.jsx)("span",{style:Eu.objDot(c)}),(0,Ad.jsx)("span",{style:Eu.cardTitleText,children:n.name}),(0,Ad.jsxs)("span",{style:Eu.cardCount(c),children:[u.length,"/",i.length," channels"]})]})}),(0,Ad.jsxs)("div",{style:Eu.cardBody,children:[u.map(function(e){var n=f[e.code],i=a[e.code]||{},t=i.color||"#6B7280";return(0,Ad.jsxs)("div",{style:Eu.translationBlock(t),children:[(0,Ad.jsxs)("div",{style:Eu.translationHeader,children:[(0,Ad.jsxs)("div",{style:Eu.channelLabel(t),children:[i.icon||""," ",i.label||e.code]}),(0,Ad.jsxs)("div",{style:Eu.blockActions,children:[(0,Ad.jsx)("button",{style:Eu.iconBtn,onClick:function(){return s(n)},title:"Edit",onMouseEnter:function(e){e.target.style.color="#2563EB"},onMouseLeave:function(e){e.target.style.color="#9CA3AF"},children:"✏️"}),p===n.mappingId?(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("button",{style:_u(_u({},Eu.iconBtn),{},{color:"#DC2626",fontSize:"11px"}),onClick:function(){return v(n.mappingId)},children:"Confirm"}),(0,Ad.jsx)("button",{style:_u(_u({},Eu.iconBtn),{},{fontSize:"11px"}),onClick:function(){return g(null)},children:"Cancel"})]}):(0,Ad.jsx)("button",{style:Eu.iconBtn,onClick:function(){return g(n.mappingId)},title:"Delete",onMouseEnter:function(e){e.target.style.color="#DC2626"},onMouseLeave:function(e){e.target.style.color="#9CA3AF"},children:"🗑️"})]})]}),(0,Ad.jsx)("div",{style:Eu.providerValue,children:n.providerObjective}),(0,Ad.jsx)("div",{style:Eu.providerLabel,children:n.providerObjectiveLabel}),(0,Ad.jsx)("div",{style:Eu.capsRow,children:Pu.map(function(e){return(0,Ad.jsxs)("span",{style:Eu.capBadge(n[e.key]),children:[n[e.key]?"✓":"✗"," ",e.short]},e.key)})}),n.notes&&(0,Ad.jsx)("div",{style:Eu.notes,children:n.notes})]},e.code)}),h.map(function(e){var n=a[e.code]||{};return(0,Ad.jsx)("div",{style:Eu.addTranslationBlock,children:(0,Ad.jsxs)("button",{style:Eu.addBtn,onClick:function(){return d(e.code)},onMouseEnter:function(e){e.target.style.borderColor="#9CA3AF",e.target.style.color="#374151"},onMouseLeave:function(e){e.target.style.borderColor="#D1D5DB",e.target.style.color="#9CA3AF"},children:["+ Add ",n.label||e.code," translation"]})},e.code)})]})]})});function Ou(e){var n,i,a,r,o=e.mode,s=e.presets,d=e.mapping,l=e.channels,c=e.objectives,f=e.getProviderObjectives,u=e.onCreate,h=e.onUpdate,m=e.onClose,p="edit"===o,g=p?d:s||{},v=Au((0,t.useState)({channelType:g.channelType||"",platformObjective:g.platformObjective||"",providerObjective:g.providerObjective||"",providerObjectiveLabel:g.providerObjectiveLabel||"",supportsObjectiveChange:null!==(n=g.supportsObjectiveChange)&&void 0!==n&&n,supportsBudgetChange:null===(i=g.supportsBudgetChange)||void 0===i||i,supportsTargetingChange:null===(a=g.supportsTargetingChange)||void 0===a||a,supportsStatusToggle:null===(r=g.supportsStatusToggle)||void 0===r||r,notes:g.notes||""}),2),y=v[0],k=v[1],b=Au((0,t.useState)(!1),2),w=b[0],_=b[1],x=Au((0,t.useState)(null),2),C=x[0],S=x[1],T=(0,t.useMemo)(function(){return f(y.channelType)},[y.channelType,f]),I=function(e,n){if(k(function(i){return _u(_u({},i),{},xu({},e,n))}),"providerObjective"===e){var i=T.find(function(e){return e.value===n});i&&k(function(e){return _u(_u({},e),{},{providerObjective:n,providerObjectiveLabel:i.label})})}},A=function(){var e=Iu(Cu().m(function e(){var n,i,t,a;return Cu().w(function(e){for(;;)switch(e.p=e.n){case 0:if(S(null),y.channelType&&y.platformObjective&&y.providerObjective&&y.providerObjectiveLabel){e.n=1;break}return S("All required fields must be filled"),e.a(2);case 1:if(_(!0),e.p=2,!p){e.n=4;break}return e.n=3,h(d.mappingId,y);case 3:i=e.v,e.n=6;break;case 4:return e.n=5,u(y);case 5:i=e.v;case 6:null!==(n=i)&&void 0!==n&&n.ok?m():S((null===(t=i)||void 0===t?void 0:t.error)||"Operation failed"),e.n=8;break;case 7:e.p=7,a=e.v,S(a.message);case 8:return e.p=8,_(!1),e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(){return e.apply(this,arguments)}}();return(0,Ad.jsx)("div",{style:Eu.overlay,onClick:m,children:(0,Ad.jsxs)("div",{style:Eu.formCard,onClick:function(e){return e.stopPropagation()},children:[(0,Ad.jsxs)("div",{style:Eu.formHeader,children:[(0,Ad.jsx)("h3",{style:Eu.formTitle,children:p?"Edit Translation":"Add Translation"}),(0,Ad.jsx)("button",{style:Eu.iconBtn,onClick:m,children:"✕"})]}),(0,Ad.jsxs)("div",{style:Eu.formBody,children:[C&&(0,Ad.jsx)("div",{style:Eu.error,children:C}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Channel *"}),(0,Ad.jsxs)("select",{style:Eu.fieldSelect,value:y.channelType,onChange:function(e){return I("channelType",e.target.value)},disabled:p,children:[(0,Ad.jsx)("option",{value:"",children:"Select channel..."}),l.map(function(e){return(0,Ad.jsx)("option",{value:e.code,children:e.label},e.code)})]})]}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Platform Objective *"}),(0,Ad.jsxs)("select",{style:Eu.fieldSelect,value:y.platformObjective,onChange:function(e){return I("platformObjective",e.target.value)},disabled:p,children:[(0,Ad.jsx)("option",{value:"",children:"Select objective..."}),c.map(function(e){return(0,Ad.jsx)("option",{value:e.name,children:e.name},e.name)})]})]}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Provider Objective *"}),T.length>0?(0,Ad.jsxs)("select",{style:Eu.fieldSelect,value:y.providerObjective,onChange:function(e){return I("providerObjective",e.target.value)},children:[(0,Ad.jsx)("option",{value:"",children:"Select provider objective..."}),T.map(function(e){return(0,Ad.jsxs)("option",{value:e.value,children:[e.label," (",e.value,")"]},e.value)})]}):(0,Ad.jsx)("input",{style:Eu.fieldInput,value:y.providerObjective,onChange:function(e){return I("providerObjective",e.target.value)},placeholder:"e.g. MAXIMIZE_CONVERSIONS"})]}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Provider Objective Label *"}),(0,Ad.jsx)("input",{style:Eu.fieldInput,value:y.providerObjectiveLabel,onChange:function(e){return I("providerObjectiveLabel",e.target.value)},placeholder:"Human-readable label"})]}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Capability Flags"}),(0,Ad.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",marginTop:"4px"},children:Pu.map(function(e){return(0,Ad.jsxs)("label",{style:Eu.checkRow,children:[(0,Ad.jsx)("input",{type:"checkbox",checked:y[e.key]||!1,onChange:function(n){return I(e.key,n.target.checked)}}),(0,Ad.jsx)("span",{style:Eu.checkLabel,children:e.label})]},e.key)})})]}),(0,Ad.jsxs)("div",{style:Eu.fieldGroup,children:[(0,Ad.jsx)("label",{style:Eu.fieldLabel,children:"Notes"}),(0,Ad.jsx)("input",{style:Eu.fieldInput,value:y.notes,onChange:function(e){return I("notes",e.target.value)},placeholder:"Optional notes..."})]})]}),(0,Ad.jsxs)("div",{style:Eu.formFooter,children:[(0,Ad.jsx)("button",{style:Eu.btnSecondary,onClick:m,disabled:w,children:"Cancel"}),(0,Ad.jsx)("button",{style:Eu.btnPrimary,onClick:A,disabled:w,children:w?"Saving...":p?"Update":"Create"})]})]})})}function Fu(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return zu(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(zu(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,zu(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,zu(f,"constructor",l),zu(l,"constructor",d),d.displayName="GeneratorFunction",zu(l,a,"GeneratorFunction"),zu(f),zu(f,a,"Generator"),zu(f,t,function(){return this}),zu(f,"toString",function(){return"[object Generator]"}),(Fu=function(){return{w:r,m:u}})()}function zu(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}zu=function(e,n,i,t){function r(n,i){zu(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},zu(e,n,i,t)}function Lu(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function qu(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){Lu(r,t,a,o,s,"next",e)}function s(e){Lu(r,t,a,o,s,"throw",e)}o(void 0)})}}function Bu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Hu(e,n);var i={}.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)?Hu(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Hu(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var Du=[{value:"",label:"All Statuses"},{value:"draft",label:"Draft"},{value:"staged",label:"Staged"},{value:"active",label:"Active"},{value:"paused",label:"Paused"},{value:"completed",label:"Completed"},{value:"error",label:"Error"}];function Uu(){var e,n=el(),i=n.data,a=n.apiCall,r=n.refresh,o=Bu((0,t.useState)(""),2),s=o[0],d=o[1],l=Bu((0,t.useState)(""),2),c=l[0],f=l[1],u=Bu((0,t.useState)(""),2),h=u[0],m=u[1],p=Bu((0,t.useState)(""),2),g=p[0],v=p[1],y=Bu((0,t.useState)([]),2),k=y[0],b=y[1],w=Bu((0,t.useState)(null),2),_=w[0],x=w[1],C=Bu((0,t.useState)(!1),2),S=C[0],T=C[1],I=Bu((0,t.useState)(null),2),A=I[0],j=I[1],E=s||c||h||g,P=E?_:i,M=(null==P?void 0:P.initiatives)||[],R=null!==(e=null==P?void 0:P.totalCount)&&void 0!==e?e:M.length;(0,t.useEffect)(function(){var e=function(){var e=qu(Fu().m(function e(){var n;return Fu().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,a("/api/admin/clients");case 1:(n=e.v).ok&&n.clients&&b(n.clients);case 2:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();e()},[a]);var N=(0,t.useCallback)(qu(Fu().m(function e(){var n,i,t;return Fu().w(function(e){for(;;)switch(e.n){case 0:return T(!0),j(null),n=new URLSearchParams,s&&n.set("status",s),c&&n.set("clientId",c),h&&n.set("dateFrom",h),g&&n.set("dateTo",g),i=n.toString(),e.n=1,a("/api/admin/campaigns".concat(i?"?"+i:""));case 1:(t=e.v).ok?x(t):j(t.error||"Failed to load campaigns"),T(!1);case 2:return e.a(2)}},e)})),[a,s,c,h,g]);return(0,t.useEffect)(function(){if(E){var e=setTimeout(N,200);return function(){return clearTimeout(e)}}x(null)},[E,N]),(0,Ad.jsxs)("div",{className:"table-panel",children:[(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsxs)("h2",{children:["Campaigns (",R,")"]}),(0,Ad.jsx)("button",{className:"btn-action",onClick:E?N:r,children:"↻ Refresh"})]}),(0,Ad.jsxs)("div",{className:"filter-bar",children:[(0,Ad.jsxs)("div",{className:"filter-group",children:[(0,Ad.jsx)("label",{className:"filter-label",children:"Status"}),(0,Ad.jsx)("select",{className:"filter-select",value:s,onChange:function(e){return d(e.target.value)},children:Du.map(function(e){return(0,Ad.jsx)("option",{value:e.value,children:e.label},e.value)})})]}),(0,Ad.jsxs)("div",{className:"filter-group",children:[(0,Ad.jsx)("label",{className:"filter-label",children:"Client"}),(0,Ad.jsxs)("select",{className:"filter-select",value:c,onChange:function(e){return f(e.target.value)},children:[(0,Ad.jsx)("option",{value:"",children:"All Clients"}),k.map(function(e){return(0,Ad.jsx)("option",{value:e.clientId,children:e.clientName},e.clientId)})]})]}),(0,Ad.jsxs)("div",{className:"filter-group",children:[(0,Ad.jsx)("label",{className:"filter-label",children:"From"}),(0,Ad.jsx)("input",{type:"date",className:"filter-input",value:h,onChange:function(e){return m(e.target.value)}})]}),(0,Ad.jsxs)("div",{className:"filter-group",children:[(0,Ad.jsx)("label",{className:"filter-label",children:"To"}),(0,Ad.jsx)("input",{type:"date",className:"filter-input",value:g,onChange:function(e){return v(e.target.value)}})]}),E&&(0,Ad.jsx)("button",{className:"btn-clear-filters",onClick:function(){d(""),f(""),m(""),v(""),x(null)},children:"✕ Clear"})]}),S&&(0,Ad.jsx)("div",{style:{padding:"20px",textAlign:"center",color:"#6b7280"},children:"Loading..."}),A&&(0,Ad.jsxs)("div",{className:"error-message",style:{margin:"12px 0"},children:[(0,Ad.jsx)("strong",{children:"Error:"})," ",A]}),S||A||0!==M.length?!S&&!A&&(0,Ad.jsxs)("table",{className:"data-table",children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{style:{width:28}}),(0,Ad.jsx)("th",{children:"Client"}),(0,Ad.jsx)("th",{children:"Campaign"}),(0,Ad.jsx)("th",{children:"Objective"}),(0,Ad.jsx)("th",{children:"Budget"}),(0,Ad.jsx)("th",{children:"Channels"}),(0,Ad.jsx)("th",{children:"Status"}),(0,Ad.jsx)("th",{children:"Dates"})]})}),(0,Ad.jsx)("tbody",{children:M.map(function(e){return(0,Ad.jsx)(Wu,{initiative:e},e.initiativeId)})})]}):(0,Ad.jsxs)("div",{className:"empty-state",children:[(0,Ad.jsx)("div",{className:"empty-state-icon",children:E?"🔍":"📢"}),(0,Ad.jsx)("h3",{children:E?"No matching campaigns":"No campaigns yet"}),(0,Ad.jsx)("p",{children:E?"Try adjusting your filters to find what you're looking for.":"Campaigns will appear here once clients create them through the wizard."})]})]})}function Wu(e){var n,i=e.initiative,a=Bu((0,t.useState)(!1),2),r=a[0],o=a[1],s=i.channels||[];return(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsxs)("tr",{className:"initiative-row",style:{cursor:s.length>0?"pointer":"default"},onClick:function(){return s.length>0&&o(!r)},children:[(0,Ad.jsx)("td",{style:{textAlign:"center",color:"#9ca3af",fontSize:12},children:s.length>0&&(0,Ad.jsx)("span",{style:{display:"inline-block",transition:"transform 0.15s",transform:r?"rotate(90deg)":"rotate(0deg)"},children:"▶"})}),(0,Ad.jsx)("td",{children:i.clientName||"—"}),(0,Ad.jsx)("td",{style:{fontWeight:500},children:i.name||"—"}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)("span",{className:"objective-badge",children:(n=i.objective,n?n.charAt(0).toUpperCase()+n.slice(1).replace(/_/g," "):"—")})}),(0,Ad.jsx)("td",{children:Qu(i.totalBudget,i.budgetPeriod)}),(0,Ad.jsx)("td",{children:(0,Ad.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[s.map(function(e,n){return(0,Ad.jsx)(Ku,{channel:e},n)}),0===s.length&&(0,Ad.jsx)("span",{style:{color:"#9ca3af"},children:"—"})]})}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)(Gu,{status:i.status})}),(0,Ad.jsx)("td",{style:{fontSize:13},children:Yu(i.startDate,i.endDate)})]}),r&&s.map(function(e,n){return(0,Ad.jsxs)("tr",{className:"channel-detail-row",children:[(0,Ad.jsx)("td",{}),(0,Ad.jsx)("td",{colSpan:"7",children:(0,Ad.jsxs)("div",{className:"channel-detail",children:[(0,Ad.jsx)(Vu,{type:e.channelType}),(0,Ad.jsxs)("div",{className:"channel-detail-info",children:[(0,Ad.jsx)("span",{className:"channel-detail-type",children:(i=e.channelType,{google_ads:"Google Ads",meta:"Meta Ads",tiktok:"TikTok Ads"}[i]||i)}),(0,Ad.jsxs)("span",{className:"channel-detail-alloc",children:[null!=e.allocationPct?"".concat(e.allocationPct,"%"):"—",null!=e.channelBudget&&(0,Ad.jsxs)(Ad.Fragment,{children:[" · $",Number(e.channelBudget).toLocaleString()]})]})]}),(0,Ad.jsx)($u,{status:e.status}),e.externalCampaignId&&(0,Ad.jsx)("span",{className:"channel-detail-ext",title:e.externalCampaignId,children:Ju(e.externalCampaignId)}),e.providerStatus&&e.providerStatus!==e.status&&(0,Ad.jsxs)("span",{className:"channel-detail-provider",children:["Provider: ",e.providerStatus]})]})})]},"ch-".concat(n));var i})]})}function Ku(e){var n=e.channel,i={google_ads:{bg:"#e8f0fe",text:"#1a73e8",label:"Google"},meta:{bg:"#f3e8ff",text:"#7c3aed",label:"Meta"},tiktok:{bg:"#fff0f0",text:"#ff0050",label:"TikTok"}}[n.channelType]||{bg:"#f3f4f6",text:"#6b7280",label:n.channelType},t="error"===n.status;return(0,Ad.jsxs)("span",{className:"channel-badge",style:{background:t?"#fef2f2":i.bg,color:t?"#dc2626":i.text,opacity:t?.7:1},title:"".concat(i.label," — ").concat(n.status," (").concat(n.allocationPct||0,"%)"),children:[i.label,null!=n.allocationPct&&(0,Ad.jsxs)("span",{style:{opacity:.6,marginLeft:3,fontSize:10},children:[n.allocationPct,"%"]})]})}function Gu(e){var n=e.status,i=(n||"").toLowerCase(),t="status-default";return"active"===i||"launched"===i?t="status-active":"staged"===i||"pending"===i||"draft"===i?t="status-pending":"paused"===i?t="status-warning":"error"===i||"failed"===i?t="status-error":"completed"!==i&&"ended"!==i||(t="status-inactive"),(0,Ad.jsx)("span",{className:"status-badge ".concat(t),children:n||"—"})}function $u(e){var n=e.status,i=(n||"").toLowerCase(),t="status-default";return"active"===i||"submitted"===i?t="status-active":"pending"===i||"draft"===i||"pending_review"===i?t="status-pending":"error"===i&&(t="status-error"),(0,Ad.jsx)("span",{className:"status-badge ".concat(t),style:{fontSize:11},children:n||"—"})}function Vu(e){var n=e.type;return(0,Ad.jsx)("span",{style:{fontSize:16,marginRight:6},children:{google_ads:"🔍",meta:"📘",tiktok:"🎵"}[n]||"📢"})}function Qu(e,n){if(null==e)return"—";var i="$"+Number(e).toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0});return"monthly"===n?"".concat(i,"/mo"):"daily"===n?"".concat(i,"/day"):i}function Yu(e,n){if(!e&&!n)return"—";var i=function(e){return e?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric"}):"…"};return"".concat(i(e)," – ").concat(i(n))}function Ju(e){if(!e)return"";var n=e.split("/");return n.length>=2?"…/".concat(n.slice(-2).join("/")):e.length>20?"…"+e.slice(-18):e}function Xu(e){return Xu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xu(e)}function Zu(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=dh(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var t=0,a=function(){};return{s:a,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:a}}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 r,o=!0,s=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return o=e.done,e},e:function(e){s=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(s)throw r}}}}function eh(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,t)}return i}function nh(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?eh(Object(i),!0).forEach(function(n){ih(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):eh(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function ih(e,n,i){return(n=function(e){var n=function(e){if("object"!=Xu(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=Xu(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Xu(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function th(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return ah(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(ah(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,ah(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,ah(f,"constructor",l),ah(l,"constructor",d),d.displayName="GeneratorFunction",ah(l,a,"GeneratorFunction"),ah(f),ah(f,a,"Generator"),ah(f,t,function(){return this}),ah(f,"toString",function(){return"[object Generator]"}),(th=function(){return{w:r,m:u}})()}function ah(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}ah=function(e,n,i,t){function r(n,i){ah(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},ah(e,n,i,t)}function rh(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function oh(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){rh(r,t,a,o,s,"next",e)}function s(e){rh(r,t,a,o,s,"throw",e)}o(void 0)})}}function sh(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||dh(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dh(e,n){if(e){if("string"==typeof e)return lh(e,n);var i={}.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)?lh(e,n):void 0}}function lh(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var ch={google_ads:{label:"Google Ads",color:"#4285F4"},meta:{label:"Meta Ads",color:"#0668E1"},tiktok:{label:"TikTok Ads",color:"#010101"}},fh={age_skew:{label:"Age Skew",icon:"👤",description:"Adjusts channel mix based on audience age profile",values:{young:{label:"Young (18–34)",icon:"🎯"},mature:{label:"Mature (45+)",icon:"🏛️"}}},market_scope:{label:"Market Scope",icon:"📍",description:"Adjusts channel mix based on geographic targeting scope",values:{local:{label:"Local",icon:"🏘️"},regional:{label:"Regional",icon:"🗺️"},national:{label:"National",icon:"🌐"}}}},uh=function(e){return(e||"").replace(/_/g," ").replace(/\b\w/g,function(e){return e.toUpperCase()})};function hh(){var e=el().apiCall,n=sh((0,t.useState)([]),2),i=n[0],a=n[1],r=sh((0,t.useState)(!0),2),o=r[0],s=r[1],d=sh((0,t.useState)(null),2),l=d[0],c=d[1],f=sh((0,t.useState)(null),2),u=f[0],h=f[1],m=sh((0,t.useState)({}),2),p=m[0],g=m[1],v=sh((0,t.useState)(null),2),y=v[0],k=v[1],b=sh((0,t.useState)("restaurant"),2),w=b[0],_=b[1],x=sh((0,t.useState)("awareness"),2),C=x[0],S=x[1],T=sh((0,t.useState)("young"),2),I=T[0],A=T[1],j=sh((0,t.useState)("local"),2),E=j[0],P=j[1],M=sh((0,t.useState)(null),2),R=M[0],N=M[1],O=sh((0,t.useState)(!1),2),F=O[0],z=O[1];(0,t.useEffect)(function(){if(y){var e=setTimeout(function(){return k(null)},3e3);return function(){return clearTimeout(e)}}},[y]);var L=(0,t.useCallback)(oh(th().m(function n(){var i;return th().w(function(n){for(;;)switch(n.n){case 0:return s(!0),c(null),n.n=1,e("/api/admin/modifiers");case 1:(i=n.v).ok?a(i.modifiers||[]):c(i.error||"Failed to load modifiers"),s(!1);case 2:return n.a(2)}},n)})),[e]);(0,t.useEffect)(function(){L()},[L]);var q=function(e,n,i){g(function(t){return nh(nh({},t),{},ih({},e,nh(nh({},t[e]||{}),{},ih({},n,i))))})},B=function(e,n){var i;return void 0!==(null===(i=p[e.id])||void 0===i?void 0:i[n])?p[e.id][n]:e[n]},H=function(){var n=oh(th().m(function n(i){var t,r;return th().w(function(n){for(;;)switch(n.n){case 0:if(t=p[i.id]){n.n=1;break}return n.a(2);case 1:return h(i.id),n.n=2,e("/api/admin/modifiers/".concat(i.id),"PUT",t);case 2:(r=n.v).ok?(a(function(e){return e.map(function(e){return e.id===i.id?nh(nh({},e),t):e})}),g(function(e){var n=nh({},e);return delete n[i.id],n}),k("Modifier saved")):c(r.error||"Save failed"),h(null);case 3:return n.a(2)}},n)}));return function(e){return n.apply(this,arguments)}}(),D=function(){var e=oh(th().m(function e(n){var i,t,a,r;return th().w(function(e){for(;;)switch(e.p=e.n){case 0:i=Zu(n),e.p=1,i.s();case 2:if((t=i.n()).done){e.n=4;break}if(a=t.value,!p[a.id]){e.n=3;break}return e.n=3,H(a);case 3:e.n=2;break;case 4:e.n=6;break;case 5:e.p=5,r=e.v,i.e(r);case 6:return e.p=6,i.f(),e.f(6);case 7:return e.a(2)}},e,null,[[1,5,6,7]])}));return function(n){return e.apply(this,arguments)}}(),U=function(){var n=oh(th().m(function n(){var i;return th().w(function(n){for(;;)switch(n.n){case 0:return z(!0),n.n=1,e("/api/admin/modifiers/preview","POST",{businessCategory:w,objective:C,ageSkew:I||null,marketScope:E||null});case 1:(i=n.v).ok?N(i):N({warning:i.error||"Preview failed"}),z(!1);case 2:return n.a(2)}},n)}));return function(){return n.apply(this,arguments)}}(),W={};i.forEach(function(e){var n=e.factorType;W[n]||(W[n]={});var i=e.factorValue;W[n][i]||(W[n][i]=[]),W[n][i].push(e)});var K=Object.keys(p).length;return o?(0,Ad.jsxs)("div",{style:{padding:40,textAlign:"center",color:"#888"},children:[(0,Ad.jsx)("div",{className:"spinner"}),(0,Ad.jsx)("p",{children:"Loading modifiers…"})]}):(0,Ad.jsxs)("div",{className:"modifiers-panel",children:[y&&(0,Ad.jsx)("div",{className:"mod-toast",children:y}),l&&(0,Ad.jsxs)("div",{className:"error-message",style:{margin:"0 0 16px 0"},children:[(0,Ad.jsx)("strong",{children:"Error:"})," ",l,(0,Ad.jsx)("button",{onClick:function(){return c(null)},className:"mod-dismiss-btn",children:"✕"})]}),(0,Ad.jsxs)("div",{className:"mod-intro",children:[(0,Ad.jsx)("p",{children:"Audience modifiers adjust the base allocation template percentages based on the target audience's age profile and geographic scope. Positive values increase a channel's share; negative values decrease it. Results are normalized to 100% at recommendation time."}),K>0&&(0,Ad.jsxs)("span",{className:"mod-dirty-badge",children:[K," unsaved change",1!==K?"s":""]})]}),Object.entries(fh).map(function(e){var n=sh(e,2),i=n[0],t=n[1];return(0,Ad.jsxs)("div",{className:"mod-group",children:[(0,Ad.jsxs)("div",{className:"mod-group-header",children:[(0,Ad.jsx)("span",{className:"mod-group-icon",children:t.icon}),(0,Ad.jsxs)("div",{children:[(0,Ad.jsx)("h3",{className:"mod-group-title",children:t.label}),(0,Ad.jsx)("p",{className:"mod-group-desc",children:t.description})]})]}),Object.entries(t.values).map(function(e){var n,t=sh(e,2),a=t[0],r=t[1],o=(null===(n=W[i])||void 0===n?void 0:n[a])||[],s=o.some(function(e){return p[e.id]});return(0,Ad.jsxs)("div",{className:"mod-value-section",children:[(0,Ad.jsxs)("div",{className:"mod-value-header",children:[(0,Ad.jsx)("span",{className:"mod-value-icon",children:r.icon}),(0,Ad.jsx)("span",{className:"mod-value-label",children:r.label}),s&&(0,Ad.jsx)("button",{className:"mod-save-group-btn",onClick:function(){return D(o)},disabled:null!==u,children:u?"Saving…":"Save Changes"})]}),(0,Ad.jsxs)("div",{className:"mod-slider-list",children:[o.map(function(e){return(0,Ad.jsx)(mh,{mod:e,pctAdj:B(e,"pctAdjustment"),rationale:B(e,"rationale"),isActive:B(e,"isActive"),isDirty:!!p[e.id],isSaving:u===e.id,onChangePct:function(n){return q(e.id,"pctAdjustment",n)},onChangeRationale:function(n){return q(e.id,"rationale",n)},onToggleActive:function(){return q(e.id,"isActive",!B(e,"isActive"))},onSave:function(){return H(e)}},e.id)}),0===o.length&&(0,Ad.jsxs)("div",{className:"mod-empty",children:["No modifiers configured for ",r.label]})]})]},a)})]},i)}),(0,Ad.jsxs)("div",{className:"mod-group",style:{marginTop:24},children:[(0,Ad.jsxs)("div",{className:"mod-group-header",children:[(0,Ad.jsx)("span",{className:"mod-group-icon",children:"🧪"}),(0,Ad.jsxs)("div",{children:[(0,Ad.jsx)("h3",{className:"mod-group-title",children:"Preview Recommendation"}),(0,Ad.jsx)("p",{className:"mod-group-desc",children:"Test how modifiers affect the channel mix for a given scenario"})]})]}),(0,Ad.jsxs)("div",{className:"mod-preview-controls",children:[(0,Ad.jsxs)("div",{className:"mod-preview-field",children:[(0,Ad.jsx)("label",{children:"Category"}),(0,Ad.jsx)("input",{value:w,onChange:function(e){return _(e.target.value)},placeholder:"restaurant"})]}),(0,Ad.jsxs)("div",{className:"mod-preview-field",children:[(0,Ad.jsx)("label",{children:"Objective"}),(0,Ad.jsx)("input",{value:C,onChange:function(e){return S(e.target.value)},placeholder:"awareness"})]}),(0,Ad.jsxs)("div",{className:"mod-preview-field",children:[(0,Ad.jsx)("label",{children:"Age Skew"}),(0,Ad.jsxs)("select",{value:I,onChange:function(e){return A(e.target.value)},children:[(0,Ad.jsx)("option",{value:"",children:"None"}),(0,Ad.jsx)("option",{value:"young",children:"Young"}),(0,Ad.jsx)("option",{value:"mature",children:"Mature"})]})]}),(0,Ad.jsxs)("div",{className:"mod-preview-field",children:[(0,Ad.jsx)("label",{children:"Market Scope"}),(0,Ad.jsxs)("select",{value:E,onChange:function(e){return P(e.target.value)},children:[(0,Ad.jsx)("option",{value:"",children:"None"}),(0,Ad.jsx)("option",{value:"local",children:"Local"}),(0,Ad.jsx)("option",{value:"regional",children:"Regional"}),(0,Ad.jsx)("option",{value:"national",children:"National"})]})]}),(0,Ad.jsx)("button",{className:"mod-preview-btn",onClick:U,disabled:F,children:F?"Running…":"Run Preview"})]}),R&&(0,Ad.jsxs)("div",{className:"mod-preview-result",children:[R.warning&&!R.channels&&(0,Ad.jsxs)("div",{style:{color:"#b45309",fontSize:13,padding:"8px 0"},children:["⚠ ",R.warning]}),R.channels&&(0,Ad.jsxs)("div",{className:"mod-preview-channels",children:[(0,Ad.jsxs)("div",{className:"mod-preview-row mod-preview-header-row",children:[(0,Ad.jsx)("span",{className:"mod-preview-ch-dot-spacer"}),(0,Ad.jsx)("span",{className:"mod-preview-ch-name",style:{fontWeight:600,fontSize:11,textTransform:"uppercase",color:"#64748b"},children:"Channel"}),(0,Ad.jsx)("span",{className:"mod-preview-ch-val",style:{fontWeight:600,fontSize:11,textTransform:"uppercase",color:"#64748b"},children:"Base"}),(0,Ad.jsx)("span",{className:"mod-preview-ch-arrow"}),(0,Ad.jsx)("span",{className:"mod-preview-ch-val",style:{fontWeight:600,fontSize:11,textTransform:"uppercase",color:"#64748b"},children:"Adjusted"}),(0,Ad.jsx)("span",{className:"mod-preview-ch-diff-spacer"})]}),R.channels.map(function(e,n){var i=ch[e.channelType]||{},t=e.recommendedPct-e.basePct;return(0,Ad.jsxs)("div",{className:"mod-preview-row",children:[(0,Ad.jsx)("span",{className:"mod-preview-ch-dot",style:{background:i.color||"#999"}}),(0,Ad.jsx)("span",{className:"mod-preview-ch-name",children:i.label||uh(e.channelType)}),(0,Ad.jsxs)("span",{className:"mod-preview-ch-val",children:[e.basePct,"%"]}),(0,Ad.jsx)("span",{className:"mod-preview-ch-arrow",children:"→"}),(0,Ad.jsxs)("span",{className:"mod-preview-ch-val",style:{fontWeight:700},children:[e.recommendedPct,"%"]}),0!==t?(0,Ad.jsxs)("span",{className:"mod-preview-ch-diff ".concat(t>0?"pos":"neg"),children:[t>0?"+":"",t]}):(0,Ad.jsx)("span",{className:"mod-preview-ch-diff-spacer"})]},n)})]})]})]})]})}var mh=(0,t.memo)(function(e){var n=e.mod,i=e.pctAdj,t=e.rationale,a=e.isActive,r=e.isDirty,o=e.isSaving,s=e.onChangePct,d=e.onChangeRationale,l=e.onToggleActive,c=e.onSave,f=ch[n.channelType]||{},u=i>0,h=i<0;return(0,Ad.jsxs)("div",{className:"mod-row ".concat(a?"":"mod-row-disabled"," ").concat(r?"mod-row-dirty":""),children:[(0,Ad.jsxs)("div",{className:"mod-row-top",children:[(0,Ad.jsx)("span",{className:"mod-ch-dot",style:{background:f.color||"#999"}}),(0,Ad.jsx)("span",{className:"mod-ch-name",children:f.label||uh(n.channelType)}),(0,Ad.jsxs)("div",{className:"mod-slider-wrap",children:[(0,Ad.jsx)("span",{className:"mod-slider-tick mod-slider-tick-neg",children:"-30"}),(0,Ad.jsx)("input",{type:"range",min:-30,max:30,value:i,onChange:function(e){return s(parseInt(e.target.value))},className:"mod-slider",style:{"--slider-color":u?"#10b981":h?"#ef4444":"#94a3b8"}}),(0,Ad.jsx)("span",{className:"mod-slider-tick mod-slider-tick-pos",children:"+30"})]}),(0,Ad.jsxs)("span",{className:"mod-pct-badge ".concat(u?"pos":h?"neg":""),children:[i>0?"+":"",i,"%"]}),(0,Ad.jsxs)("label",{className:"mod-toggle",title:a?"Active":"Disabled",children:[(0,Ad.jsx)("input",{type:"checkbox",checked:a,onChange:l}),(0,Ad.jsx)("span",{className:"mod-toggle-track"})]}),r&&(0,Ad.jsx)("button",{className:"mod-save-btn",onClick:c,disabled:o,title:"Save",children:o?"…":"✓"})]}),(0,Ad.jsx)("div",{className:"mod-row-bottom",children:(0,Ad.jsx)("input",{className:"mod-rationale",value:t||"",onChange:function(e){return d(e.target.value)},placeholder:"Rationale…",maxLength:200})})]})});function ph(e){return ph="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ph(e)}function gh(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,t)}return i}function vh(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?gh(Object(i),!0).forEach(function(n){yh(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):gh(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function yh(e,n,i){return(n=function(e){var n=function(e){if("object"!=ph(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=ph(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ph(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function kh(){var e,n,i="function"==typeof Symbol?Symbol:{},t=i.iterator||"@@iterator",a=i.toStringTag||"@@toStringTag";function r(i,t,a,r){var d=t&&t.prototype instanceof s?t:s,l=Object.create(d.prototype);return bh(l,"_invoke",function(i,t,a){var r,s,d,l=0,c=a||[],f=!1,u={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,i){return r=n,s=0,d=e,u.n=i,o}};function h(i,t){for(s=i,d=t,n=0;!f&&l&&!a&&n<c.length;n++){var a,r=c[n],h=u.p,m=r[2];i>3?(a=m===t)&&(d=r[(s=r[4])?5:(s=3,3)],r[4]=r[5]=e):r[0]<=h&&((a=i<2&&h<r[1])?(s=0,u.v=t,u.n=r[1]):h<m&&(a=i<3||r[0]>t||t>m)&&(r[4]=i,r[5]=t,u.n=m,s=0))}if(a||i>1)return o;throw f=!0,t}return function(a,c,m){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,m),s=c,d=m;(n=s<2?e:d)||!f;){r||(s?s<3?(s>1&&(u.n=-1),h(s,d)):u.n=d:u.v=d);try{if(l=2,r){if(s||(a="next"),n=r[a]){if(!(n=n.call(r,d)))throw TypeError("iterator result is not an object");if(!n.done)return n;d=n.value,s<2&&(s=0)}else 1===s&&(n=r.return)&&n.call(r),s<2&&(d=TypeError("The iterator does not provide a '"+a+"' method"),s=1);r=e}else if((n=(f=u.n<0)?d:i.call(t,u))!==o)break}catch(n){r=e,s=1,d=n}finally{l=1}}return{value:n,done:f}}}(i,a,r),!0),l}var o={};function s(){}function d(){}function l(){}n=Object.getPrototypeOf;var c=[][t]?n(n([][t]())):(bh(n={},t,function(){return this}),n),f=l.prototype=s.prototype=Object.create(c);function u(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,bh(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=l,bh(f,"constructor",l),bh(l,"constructor",d),d.displayName="GeneratorFunction",bh(l,a,"GeneratorFunction"),bh(f),bh(f,a,"Generator"),bh(f,t,function(){return this}),bh(f,"toString",function(){return"[object Generator]"}),(kh=function(){return{w:r,m:u}})()}function bh(e,n,i,t){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}bh=function(e,n,i,t){function r(n,i){bh(e,n,function(e){return this._invoke(n,i,e)})}n?a?a(e,n,{value:i,enumerable:!t,configurable:!t,writable:!t}):e[n]=i:(r("next",0),r("throw",1),r("return",2))},bh(e,n,i,t)}function wh(e,n,i,t,a,r,o){try{var s=e[r](o),d=s.value}catch(e){return void i(e)}s.done?n(d):Promise.resolve(d).then(t,a)}function _h(e){return function(){var n=this,i=arguments;return new Promise(function(t,a){var r=e.apply(n,i);function o(e){wh(r,t,a,o,s,"next",e)}function s(e){wh(r,t,a,o,s,"throw",e)}o(void 0)})}}function xh(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Ch(e,n);var i={}.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)?Ch(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ch(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}var Sh=function(e){return(e||"").replace(/_/g," ").replace(/\b\w/g,function(e){return e.toUpperCase()})},Th=function(e){if(!e)return"—";var n=Math.floor((Date.now()-new Date(e).getTime())/864e5);return 0===n?"Today":1===n?"1 day ago":"".concat(n," days ago")},Ih=function(e){return e?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"—"},Ah={Active:{bg:"#dcfce7",color:"#166534",border:"#86efac"},Suspended:{bg:"#fef3c7",color:"#92400e",border:"#fcd34d"},Cancelled:{bg:"#fee2e2",color:"#991b1b",border:"#fca5a5"}};function jh(e){var n=e.activeTab;return"pending"===n?(0,Ad.jsx)(Eh,{}):"allClients"===n?(0,Ad.jsx)(Ph,{}):null}function Eh(){var e=el(),n=e.apiCall,i=e.sessionToken,a=xh((0,t.useState)([]),2),r=a[0],o=a[1],s=xh((0,t.useState)(!0),2),d=s[0],l=s[1],c=xh((0,t.useState)(null),2),f=c[0],u=c[1],h=xh((0,t.useState)(null),2),m=h[0],p=h[1],g=xh((0,t.useState)(null),2),v=g[0],y=g[1],k=xh((0,t.useState)(""),2),b=k[0],w=k[1],_=(0,t.useCallback)(_h(kh().m(function e(){var n,t,a;return kh().w(function(e){for(;;)switch(e.p=e.n){case 0:if(i){e.n=1;break}return e.a(2);case 1:return l(!0),u(null),e.p=2,e.n=3,fetch("".concat(Td,"/api/registration/pending"),{headers:{"X-Session-Token":i}});case 3:if((n=e.v).ok){e.n=4;break}throw new Error("HTTP ".concat(n.status));case 4:return e.n=5,n.json();case 5:t=e.v,o(t.applicants||[]),e.n=7;break;case 6:e.p=6,a=e.v,console.info("[Clients] Registration endpoint not available:",a.message),o([]),a.message.includes("404")||a.message.includes("Failed to fetch")||u(a.message);case 7:return e.p=7,l(!1),e.f(7);case 8:return e.a(2)}},e,null,[[2,6,7,8]])})),[i]);(0,t.useEffect)(function(){_()},[_]);var x=function(){var e=_h(kh().m(function e(i){var t;return kh().w(function(e){for(;;)switch(e.n){case 0:return p(i.registrationId),e.n=1,n("/api/admin/clients","POST",{registrationId:i.registrationId,name:i.businessName,websiteUrl:i.websiteUrl,businessCategory:i.businessCategory,description:i.businessDescription,contactName:i.contactName,contactEmail:i.contactEmail,contactPhone:i.contactPhone,entraSubjectId:i.entraSubjectId});case 1:(t=e.v).ok?_():alert(t.error||"Approval failed"),p(null);case 2:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}(),C=function(){var e=_h(kh().m(function e(i){var t;return kh().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,n("/api/registration/".concat(i,"/reject"),"POST",{reason:b});case 1:(t=e.v).ok?(y(null),w(""),_()):alert(t.error||"Rejection failed");case 2:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}();return d?(0,Ad.jsxs)("div",{className:"loading-container",children:[(0,Ad.jsx)("div",{className:"spinner"}),(0,Ad.jsx)("p",{children:"Checking for pending registrations…"})]}):(0,Ad.jsxs)("div",{className:"table-panel",children:[(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsxs)("div",{children:[(0,Ad.jsx)("h2",{children:"Pending Registrations"}),(0,Ad.jsx)("span",{style:{fontSize:13,color:"var(--text-dim)"},children:"New client applications awaiting review"})]}),(0,Ad.jsx)("button",{className:"btn-small",onClick:_,children:"↻ Refresh"})]}),f&&(0,Ad.jsxs)("div",{className:"error-message",style:{marginBottom:16},children:[(0,Ad.jsx)("strong",{children:"Error:"})," ",f]}),0===r.length&&!f&&(0,Ad.jsxs)("div",{className:"empty-state",children:[(0,Ad.jsx)("div",{className:"empty-state-icon",children:"✓"}),(0,Ad.jsx)("h3",{children:"All caught up!"}),(0,Ad.jsx)("p",{children:"No pending registrations to review."}),(0,Ad.jsx)("p",{style:{fontSize:12,color:"var(--text-dim)",marginTop:8},children:"When the registration system sends new applicants, they'll appear here."})]}),r.length>0&&(0,Ad.jsx)("div",{className:"client-cards",children:r.map(function(e){return(0,Ad.jsxs)("div",{className:"client-card",children:[(0,Ad.jsxs)("div",{className:"client-card-header",children:[(0,Ad.jsxs)("div",{className:"client-card-title",children:[(0,Ad.jsx)("h3",{children:e.businessName}),e.businessCategory&&(0,Ad.jsx)("span",{className:"category-tag",children:Sh(e.businessCategory)})]}),(0,Ad.jsxs)("span",{className:"client-card-date",children:["Registered ",Th(e.registeredUtc)]})]}),e.businessDescription&&(0,Ad.jsx)("p",{className:"client-card-desc",children:e.businessDescription}),(0,Ad.jsxs)("div",{className:"client-card-details",children:[e.contactName&&(0,Ad.jsxs)("div",{className:"detail-item",children:[(0,Ad.jsx)("span",{className:"detail-label",children:"Contact"}),(0,Ad.jsx)("span",{children:e.contactName})]}),e.contactEmail&&(0,Ad.jsxs)("div",{className:"detail-item",children:[(0,Ad.jsx)("span",{className:"detail-label",children:"Email"}),(0,Ad.jsx)("span",{children:e.contactEmail})]}),e.contactPhone&&(0,Ad.jsxs)("div",{className:"detail-item",children:[(0,Ad.jsx)("span",{className:"detail-label",children:"Phone"}),(0,Ad.jsx)("span",{children:e.contactPhone})]}),e.websiteUrl&&(0,Ad.jsxs)("div",{className:"detail-item",children:[(0,Ad.jsx)("span",{className:"detail-label",children:"Website"}),(0,Ad.jsx)("a",{href:e.websiteUrl,target:"_blank",rel:"noopener noreferrer",children:e.websiteUrl.replace(/^https?:\/\//,"")})]}),(0,Ad.jsxs)("div",{className:"detail-item",children:[(0,Ad.jsx)("span",{className:"detail-label",children:"Payment"}),(0,Ad.jsx)("span",{className:e.paymentVerified?"text-success":"text-warning",children:e.paymentVerified?"✓ Verified":"⚠ Unverified"})]})]}),(0,Ad.jsx)("div",{className:"client-card-actions",children:v===e.registrationId?(0,Ad.jsxs)("div",{className:"reject-form",children:[(0,Ad.jsx)("input",{type:"text",placeholder:"Reason for rejection…",value:b,onChange:function(e){return w(e.target.value)},autoFocus:!0}),(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return C(e.registrationId)},disabled:!b.trim(),children:"Confirm Reject"}),(0,Ad.jsx)("button",{className:"btn-small",onClick:function(){y(null),w("")},children:"Cancel"})]}):(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("button",{className:"btn-primary",onClick:function(){return x(e)},disabled:m===e.registrationId,style:{minWidth:100},children:m===e.registrationId?"Approving…":"Approve"}),(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return y(e.registrationId)},children:"Reject"})]})})]},e.registrationId)})})]})}function Ph(){var e=el().apiCall,n=xh((0,t.useState)([]),2),i=n[0],a=n[1],r=xh((0,t.useState)(!0),2),o=r[0],s=r[1],d=xh((0,t.useState)(null),2),l=d[0],c=d[1],f=xh((0,t.useState)("all"),2),u=f[0],h=f[1],m=xh((0,t.useState)(""),2),p=m[0],g=m[1],v=xh((0,t.useState)(null),2),y=v[0],k=v[1],b=xh((0,t.useState)(null),2),w=b[0],_=b[1],x=xh((0,t.useState)(!1),2),C=x[0],S=x[1],T=(0,t.useCallback)(_h(kh().m(function n(){var i,t;return kh().w(function(n){for(;;)switch(n.n){case 0:return s(!0),c(null),i="all"===u?"":"?status=".concat(u),n.n=1,e("/api/admin/clients".concat(i));case 1:null!=(t=n.v)&&t.ok?a(Array.isArray(t.clients)?t.clients:[]):(c((null==t?void 0:t.error)||"Failed to load clients"),a([])),s(!1);case 2:return n.a(2)}},n)})),[e,u]);(0,t.useEffect)(function(){T()},[T]);var I=(0,t.useCallback)(function(){var n=_h(kh().m(function n(i){var t;return kh().w(function(n){for(;;)switch(n.n){case 0:return S(!0),n.n=1,e("/api/admin/clients/".concat(i));case 1:null!=(t=n.v)&&t.ok&&_(t),S(!1);case 2:return n.a(2)}},n)}));return function(e){return n.apply(this,arguments)}}(),[e]),A=function(){var n=_h(kh().m(function n(i,t,a){var r,o;return kh().w(function(n){for(;;)switch(n.n){case 0:return r=a?{reason:a}:{},n.n=1,e("/api/admin/clients/".concat(t,"/").concat(i),"POST",r);case 1:null!=(o=n.v)&&o.ok?(T(),I(t)):alert((null==o?void 0:o.error)||"".concat(i," failed"));case 2:return n.a(2)}},n)}));return function(e,i,t){return n.apply(this,arguments)}}(),j=i.filter(function(e){if(!p.trim())return!0;var n=p.toLowerCase();return(e.clientName||"").toLowerCase().includes(n)||(e.contactEmail||"").toLowerCase().includes(n)||(e.contactName||"").toLowerCase().includes(n)});return(0,Ad.jsxs)("div",{className:"table-panel",children:[(0,Ad.jsxs)("div",{className:"panel-header",children:[(0,Ad.jsxs)("div",{children:[(0,Ad.jsx)("h2",{children:"All Clients"}),(0,Ad.jsxs)("span",{style:{fontSize:13,color:"var(--text-dim)"},children:[j.length," client",1!==j.length?"s":"","all"!==u?" (".concat(Sh(u),")"):""]})]}),(0,Ad.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,Ad.jsx)("input",{type:"text",placeholder:"Search name or email…",value:p,onChange:function(e){return g(e.target.value)},className:"client-search"}),(0,Ad.jsxs)("select",{value:u,onChange:function(e){return h(e.target.value)},className:"client-filter-select",children:[(0,Ad.jsx)("option",{value:"all",children:"All Statuses"}),(0,Ad.jsx)("option",{value:"Active",children:"Active"}),(0,Ad.jsx)("option",{value:"Suspended",children:"Suspended"}),(0,Ad.jsx)("option",{value:"Cancelled",children:"Cancelled"})]}),(0,Ad.jsx)("button",{className:"btn-small",onClick:T,children:"↻"})]})]}),l&&(0,Ad.jsxs)("div",{className:"error-message",style:{marginBottom:16},children:[(0,Ad.jsx)("strong",{children:"Error:"})," ",l]}),o&&(0,Ad.jsxs)("div",{className:"loading-container",children:[(0,Ad.jsx)("div",{className:"spinner"}),(0,Ad.jsx)("p",{children:"Loading clients…"})]}),!o&&0===j.length&&(0,Ad.jsxs)("div",{className:"empty-state",children:[(0,Ad.jsx)("div",{className:"empty-state-icon",children:"📋"}),(0,Ad.jsx)("h3",{children:"No clients found"}),(0,Ad.jsx)("p",{children:p?"Try a different search term.":"Approved clients will appear here."})]}),!o&&j.length>0&&(0,Ad.jsxs)("table",{className:"data-table",children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{style:{width:30}}),(0,Ad.jsx)("th",{children:"Client"}),(0,Ad.jsx)("th",{children:"Category"}),(0,Ad.jsx)("th",{children:"Status"}),(0,Ad.jsx)("th",{children:"Contact"}),(0,Ad.jsx)("th",{children:"Tier"}),(0,Ad.jsx)("th",{children:"Created"})]})}),(0,Ad.jsx)("tbody",{children:j.map(function(n){return(0,Ad.jsx)(Mh,{client:n,expanded:y===n.clientId,detail:y===n.clientId?w:null,detailLoading:y===n.clientId&&C,onToggle:function(){return e=n.clientId,void(y===e?(k(null),_(null)):(k(e),I(e)));var e},onStatusAction:A,onRefresh:T,apiCall:e},n.clientId)})})]})]})}var Mh=(0,t.memo)(function(e){var n,i,a,r=e.client,o=e.expanded,s=e.detail,d=e.detailLoading,l=e.onToggle,c=e.onStatusAction,f=e.onRefresh,u=e.apiCall,h=xh((0,t.useState)(null),2),m=h[0],p=h[1],g=xh((0,t.useState)(""),2),v=g[0],y=g[1],k=xh((0,t.useState)(!1),2),b=k[0],w=k[1],_=xh((0,t.useState)({}),2),x=_[0],C=_[1],S=xh((0,t.useState)(!1),2),T=S[0],I=S[1],A=Ah[r.status]||{},j=function(){var e=_h(kh().m(function e(){return kh().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,c(m.action,r.clientId,v);case 1:p(null),y("");case 2:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}(),E=function(){var e=_h(kh().m(function e(){var n;return kh().w(function(e){for(;;)switch(e.n){case 0:return I(!0),e.n=1,u("/api/admin/clients/".concat(r.clientId),"PUT",x);case 1:null!=(n=e.v)&&n.ok?(w(!1),C({}),f()):alert((null==n?void 0:n.error)||"Update failed"),I(!1);case 2:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();return(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsxs)("tr",{className:"client-row ".concat(o?"expanded":""),onClick:l,children:[(0,Ad.jsx)("td",{className:"expand-toggle",children:o?"▾":"▸"}),(0,Ad.jsx)("td",{children:(0,Ad.jsxs)("div",{className:"client-name-cell",children:[(0,Ad.jsx)("strong",{children:r.clientName}),r.websiteUrl&&(0,Ad.jsx)("span",{className:"client-url",children:r.websiteUrl.replace(/^https?:\/\//,"")})]})}),(0,Ad.jsxs)("td",{children:[r.categoryIcon&&(0,Ad.jsx)("span",{style:{marginRight:4},children:r.categoryIcon}),r.categoryName?Sh(r.categoryName):"—"]}),(0,Ad.jsx)("td",{children:(0,Ad.jsx)("span",{className:"status-badge",style:{background:A.bg,color:A.color,border:"1px solid ".concat(A.border)},children:r.status})}),(0,Ad.jsx)("td",{children:r.contactEmail||"—"}),(0,Ad.jsx)("td",{children:Sh(r.serviceTier||"self_service")}),(0,Ad.jsx)("td",{children:Ih(r.createdUtc)})]}),o&&(0,Ad.jsx)("tr",{className:"client-detail-row",children:(0,Ad.jsx)("td",{colSpan:"7",children:(0,Ad.jsxs)("div",{className:"client-detail",children:[d&&(0,Ad.jsx)("p",{style:{color:"var(--text-dim)"},children:"Loading detail…"}),!d&&!b&&(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsxs)("div",{className:"detail-section-header",children:[(0,Ad.jsx)("h4",{children:"Profile"}),(0,Ad.jsx)("button",{className:"btn-small",onClick:function(){C({name:r.clientName||"",contactName:r.contactName||"",contactEmail:r.contactEmail||"",contactPhone:r.contactPhone||"",websiteUrl:r.websiteUrl||"",description:r.description||"",notes:r.notes||""}),w(!0)},children:"Edit"})]}),(0,Ad.jsxs)("div",{className:"detail-grid",children:[(0,Ad.jsx)(Rh,{label:"Business Name",value:r.clientName}),(0,Ad.jsx)(Rh,{label:"Contact Name",value:r.contactName}),(0,Ad.jsx)(Rh,{label:"Email",value:r.contactEmail}),(0,Ad.jsx)(Rh,{label:"Phone",value:r.contactPhone}),(0,Ad.jsx)(Rh,{label:"Website",value:r.websiteUrl,link:!0}),(0,Ad.jsx)(Rh,{label:"Category",value:r.categoryName?"".concat(r.categoryIcon||""," ").concat(Sh(r.categoryName)):null}),(0,Ad.jsx)(Rh,{label:"Description",value:r.description,wide:!0})]})]}),(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsx)("h4",{children:"Service Configuration"}),(0,Ad.jsxs)("div",{className:"detail-grid",children:[(0,Ad.jsx)(Rh,{label:"Tier",value:Sh(r.serviceTier||"self_service")}),(0,Ad.jsx)(Rh,{label:"Monthly Fee",value:(a=r.monthlyFeeCents,null!=a?"$".concat((a/100).toFixed(2)):"—")}),(0,Ad.jsx)(Rh,{label:"Ad Spend Margin",value:null!=r.adSpendMarginPct?"".concat(r.adSpendMarginPct,"%"):null})]})]}),(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsx)("h4",{children:"Admin Notes"}),(0,Ad.jsx)("p",{className:"admin-notes",children:r.notes||"No notes."})]}),(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsx)("h4",{children:"Actions"}),m?(0,Ad.jsxs)("div",{className:"action-confirm",children:[(0,Ad.jsxs)("p",{children:[(0,Ad.jsx)("strong",{children:m.label})," this client?",("suspend"===m.action||"cancel"===m.action)&&(0,Ad.jsx)("span",{children:" Active campaigns will be paused."})]}),("suspend"===m.action||"cancel"===m.action)&&(0,Ad.jsx)("input",{type:"text",placeholder:"Reason (required)…",value:v,onChange:function(e){return y(e.target.value)},autoFocus:!0}),(0,Ad.jsxs)("div",{style:{display:"flex",gap:8,marginTop:8},children:[(0,Ad.jsx)("button",{className:"btn-primary",onClick:j,disabled:("suspend"===m.action||"cancel"===m.action)&&!v.trim(),style:{minWidth:80},children:"Confirm"}),(0,Ad.jsx)("button",{className:"btn-cancel",onClick:function(){p(null),y("")},children:"Cancel"})]})]}):(0,Ad.jsxs)("div",{className:"action-buttons",children:["Active"===r.status&&(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("button",{className:"btn-small",style:{background:"#fef3c7",color:"#92400e"},onClick:function(){return p({action:"suspend",label:"Suspend"})},children:"Suspend"}),(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return p({action:"cancel",label:"Cancel"})},children:"Cancel Account"})]}),"Suspended"===r.status&&(0,Ad.jsxs)(Ad.Fragment,{children:[(0,Ad.jsx)("button",{className:"btn-primary",style:{fontSize:12,padding:"5px 12px"},onClick:function(){return p({action:"reactivate",label:"Reactivate"})},children:"Reactivate"}),(0,Ad.jsx)("button",{className:"btn-small btn-danger",onClick:function(){return p({action:"cancel",label:"Cancel"})},children:"Cancel Account"})]}),"Cancelled"===r.status&&(0,Ad.jsxs)("p",{style:{fontSize:13,color:"var(--text-dim)"},children:["Account cancelled ",r.cancelledUtc?"on ".concat(Ih(r.cancelledUtc)):"",".",r.cancelledReason&&(0,Ad.jsxs)("span",{children:[" Reason: ",r.cancelledReason]})]})]})]}),(null==s||null===(n=s.statusHistory)||void 0===n?void 0:n.length)>0&&(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsx)("h4",{children:"Status History"}),(0,Ad.jsx)("div",{className:"status-timeline",children:s.statusHistory.map(function(e,n){return(0,Ad.jsxs)("div",{className:"timeline-entry",children:[(0,Ad.jsx)("div",{className:"timeline-dot"}),(0,Ad.jsxs)("div",{className:"timeline-content",children:[(0,Ad.jsx)("span",{className:"timeline-action",children:e.fromStatus?"".concat(e.fromStatus," → ").concat(e.toStatus):"Created as ".concat(e.toStatus)}),e.reason&&(0,Ad.jsxs)("span",{className:"timeline-reason",children:["— ",e.reason]}),(0,Ad.jsxs)("span",{className:"timeline-meta",children:[(i=e.changedUtc,i?new Date(i).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}):"—"),e.changedByName&&" by ".concat(e.changedByName)]})]})]},n);var i})})]}),(null==s||null===(i=s.users)||void 0===i?void 0:i.length)>0&&(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsxs)("h4",{children:["Users (",s.users.length,")"]}),(0,Ad.jsxs)("table",{className:"data-table",style:{fontSize:12},children:[(0,Ad.jsx)("thead",{children:(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("th",{children:"Name"}),(0,Ad.jsx)("th",{children:"Email"}),(0,Ad.jsx)("th",{children:"Role"}),(0,Ad.jsx)("th",{children:"Status"})]})}),(0,Ad.jsx)("tbody",{children:s.users.map(function(e){return(0,Ad.jsxs)("tr",{children:[(0,Ad.jsx)("td",{children:e.displayName||"—"}),(0,Ad.jsx)("td",{children:e.email||"—"}),(0,Ad.jsx)("td",{children:e.role}),(0,Ad.jsx)("td",{children:e.status})]},e.userId)})})]})]})]}),!d&&b&&(0,Ad.jsxs)("div",{className:"detail-section",children:[(0,Ad.jsx)("h4",{children:"Edit Client"}),(0,Ad.jsxs)("div",{className:"edit-form",children:[(0,Ad.jsxs)("div",{className:"form-row-inline",children:[(0,Ad.jsx)(Nh,{label:"Business Name",value:x.name,onChange:function(e){return C(function(n){return vh(vh({},n),{},{name:e})})}}),(0,Ad.jsx)(Nh,{label:"Contact Name",value:x.contactName,onChange:function(e){return C(function(n){return vh(vh({},n),{},{contactName:e})})}})]}),(0,Ad.jsxs)("div",{className:"form-row-inline",children:[(0,Ad.jsx)(Nh,{label:"Email",value:x.contactEmail,onChange:function(e){return C(function(n){return vh(vh({},n),{},{contactEmail:e})})}}),(0,Ad.jsx)(Nh,{label:"Phone",value:x.contactPhone,onChange:function(e){return C(function(n){return vh(vh({},n),{},{contactPhone:e})})}})]}),(0,Ad.jsx)("div",{className:"form-row-inline",children:(0,Ad.jsx)(Nh,{label:"Website URL",value:x.websiteUrl,onChange:function(e){return C(function(n){return vh(vh({},n),{},{websiteUrl:e})})}})}),(0,Ad.jsx)("div",{className:"form-row-inline",children:(0,Ad.jsx)(Nh,{label:"Description",value:x.description,onChange:function(e){return C(function(n){return vh(vh({},n),{},{description:e})})},wide:!0})}),(0,Ad.jsx)("div",{className:"form-row-inline",children:(0,Ad.jsx)(Nh,{label:"Admin Notes",value:x.notes,onChange:function(e){return C(function(n){return vh(vh({},n),{},{notes:e})})},wide:!0})}),(0,Ad.jsxs)("div",{className:"form-buttons",style:{marginTop:12},children:[(0,Ad.jsx)("button",{className:"btn-cancel",onClick:function(){return w(!1)},disabled:T,children:"Cancel"}),(0,Ad.jsx)("button",{className:"btn-primary",onClick:E,disabled:T,children:T?"Saving…":"Save Changes"})]})]})]})]})})})]})});function Rh(e){var n=e.label,i=e.value,t=e.link,a=e.wide;return(0,Ad.jsxs)("div",{className:"detail-field ".concat(a?"detail-field-wide":""),children:[(0,Ad.jsx)("span",{className:"detail-label",children:n}),t&&i?(0,Ad.jsx)("a",{href:i.startsWith("http")?i:"https://".concat(i),target:"_blank",rel:"noopener noreferrer",children:i.replace(/^https?:\/\//,"")}):(0,Ad.jsx)("span",{children:i||"—"})]})}function Nh(e){var n=e.label,i=e.value,t=e.onChange,a=e.wide;return(0,Ad.jsxs)("div",{className:"form-group ".concat(a?"form-group-wide":""),children:[(0,Ad.jsx)("label",{children:n}),(0,Ad.jsx)("input",{type:"text",value:i||"",onChange:function(e){return t(e.target.value)}})]})}function Oh(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}function Fh(){var e,n,i=el(),a=i.session,r=i.activeCategory,o=i.activeTab,s=i.tabs,d=i.collapsed,l=i.setActiveCategory,c=i.setActiveTab,f=i.setCollapsed,u=i.data,h=i.loading,m=i.error,p=(0,t.useRef)(null),g=(e=(0,t.useState)(!1),n=2,function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return Oh(e,n);var i={}.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)?Oh(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=g[0],y=g[1];return(0,t.useEffect)(function(){if(null==a||!a.sessionToken){var e=setTimeout(function(){return y(!0)},3e3);return function(){return clearTimeout(e)}}y(!0)},[null==a?void 0:a.sessionToken]),(0,Ad.jsxs)("div",{className:"dashboard-layout",children:[(0,Ad.jsx)(Ll,{activeCategory:r,onSelectCategory:l,collapsed:d,onToggleCollapse:function(){return f(function(e){return!e})}}),(0,Ad.jsxs)("div",{className:"dashboard-main",children:[(0,Ad.jsxs)("header",{className:"dashboard-header",children:[(0,Ad.jsxs)("div",{className:"dashboard-header-top",children:[(0,Ad.jsx)("h1",{className:"dashboard-title",children:Xd[r]||r}),(0,Ad.jsx)("div",{className:"dashboard-header-right",children:(0,Ad.jsxs)("span",{className:"dashboard-meta",children:[(null==a?void 0:a.clientName)&&(0,Ad.jsxs)("span",{children:[(0,Ad.jsx)("strong",{children:"Client:"})," ",a.clientName]}),(null==a?void 0:a.role)&&(0,Ad.jsxs)("span",{children:[(0,Ad.jsx)("strong",{children:"Role:"})," ",a.role]})]})})]}),s.length>1&&(0,Ad.jsx)("div",{className:"dashboard-tabs",ref:p,children:s.map(function(e){return(0,Ad.jsx)("button",{className:"tab-btn ".concat(o===e.id?"active":""),onClick:function(){return c(e.id)},children:e.label},e.id)})})]}),(0,Ad.jsxs)("div",{className:"dashboard-content",children:[v&&(!a||!a.sessionToken)&&(0,Ad.jsxs)("div",{className:"error-message",style:{margin:"0 0 16px 0",background:"#fef3cd",border:"1px solid #ffc107",color:"#856404"},children:[(0,Ad.jsx)("strong",{children:"⚠ Session Issue:"})," ",a?"Session exists but missing sessionToken. Keys present: [".concat(Object.keys(a).join(", "),"]"):"No session object. The Gateway may not have responded correctly."," ","— Open browser DevTools (F12 → Console) and look for ",(0,Ad.jsx)("code",{children:"[Auth]"})," logs."]}),h&&!u&&(0,Ad.jsxs)("div",{className:"loading-container",children:[(0,Ad.jsx)("div",{className:"spinner"}),(0,Ad.jsx)("p",{children:"Loading..."})]}),h&&u&&(0,Ad.jsx)("div",{style:{padding:"4px 12px",fontSize:"12px",color:"#888",textAlign:"right"},children:"Refreshing…"}),m&&!h&&(0,Ad.jsxs)("div",{className:"error-message",style:{margin:"0 0 16px 0"},children:[(0,Ad.jsx)("strong",{children:"Error:"})," ",m]}),(u||m&&"templates"===o||"objectives"===o||"modifiers"===o||"pending"===o||"allClients"===o)&&(0,Ad.jsxs)("div",{className:"data-panel",style:{opacity:h?.6:1,transition:"opacity 0.2s"},children:["overview"===o&&u&&(0,Ad.jsx)(zh,{data:u}),"sessions"===o&&u&&(0,Ad.jsx)(Xl,{}),"users"===o&&u&&(0,Ad.jsx)(Kl,{}),"templates"===o&&(0,Ad.jsx)(Cl,{children:(0,Ad.jsx)(ku,{})}),"objectives"===o&&(0,Ad.jsx)(Ol,{children:(0,Ad.jsx)(Mu,{})}),"modifiers"===o&&(0,Ad.jsx)(hh,{}),"campaigns"===o&&u&&(0,Ad.jsx)(Uu,{}),("pending"===o||"allClients"===o)&&(0,Ad.jsx)(jh,{activeTab:o})]}),!h&&!m&&!u&&!Jd[o]&&"pending"!==o&&"allClients"!==o&&(0,Ad.jsxs)("div",{className:"placeholder-panel",children:[(0,Ad.jsx)("div",{className:"placeholder-icon",children:"🚧"}),(0,Ad.jsx)("h3",{children:o.charAt(0).toUpperCase()+o.slice(1)}),(0,Ad.jsx)("p",{children:"This section is under development."})]}),!h&&!m&&!u&&"templates"!==o&&"modifiers"!==o&&"pending"!==o&&"allClients"!==o&&Jd[o]&&(0,Ad.jsx)("div",{style:{padding:"40px",textAlign:"center",color:"#888"},children:(0,Ad.jsx)("p",{children:"No data loaded. Check the browser console for logs."})})]})]})]})}function zh(e){var n=e.data;return(0,Ad.jsxs)("div",{className:"overview-panel",children:[(0,Ad.jsxs)("div",{className:"stats-grid",children:[(0,Ad.jsx)(Lh,{label:"Active Clients",value:n.activeClients}),(0,Ad.jsx)(Lh,{label:"Active Users",value:n.activeUsers}),(0,Ad.jsx)(Lh,{label:"Active Sessions",value:n.activeSessions}),(0,Ad.jsx)(Lh,{label:"API Calls (24h)",value:n.apiCalls24h})]}),(0,Ad.jsxs)("p",{className:"server-time",children:["Server Time: ",new Date(n.serverTimeUtc).toLocaleString()]})]})}function Lh(e){var n=e.label,i=e.value;return(0,Ad.jsxs)("div",{className:"stat-card",children:[(0,Ad.jsx)("div",{className:"stat-value",children:null!=i?i:"—"}),(0,Ad.jsx)("div",{className:"stat-label",children:n})]})}function qh(e,n){(null==n||n>e.length)&&(n=e.length);for(var i=0,t=Array(n);i<n;i++)t[i]=e[i];return t}function Bh(){var e,n,i=Hd(),a=i.isLoading,r=i.isSignedIn,o=i.isRegistered,s=i.needsRegistration,d=(i.error,e=(0,t.useState)(!0),n=2,function(e){if(Array.isArray(e))return e}(e)||function(e,n){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var t,a,r,o,s=[],d=!0,l=!1;try{if(r=(i=i.call(e)).next,0===n){if(Object(i)!==i)return;d=!1}else for(;!(d=(t=r.call(i)).done)&&(s.push(t.value),s.length!==n);d=!0);}catch(e){l=!0,a=e}finally{try{if(!d&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return qh(e,n);var i={}.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)?qh(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=d[0],c=d[1];return(0,t.useEffect)(function(){var e=setTimeout(function(){return c(!1)},500);return function(){return clearTimeout(e)}},[]),a||l?(0,Ad.jsx)(il,{children:(0,Ad.jsxs)("div",{className:"loading-container",children:[(0,Ad.jsx)("div",{className:"spinner"}),(0,Ad.jsx)("p",{children:"Loading..."})]})}):r?s&&!o?(0,Ad.jsx)(il,{children:(0,Ad.jsx)(ll,{})}):(0,Ad.jsx)(nl,{children:(0,Ad.jsx)(Fh,{})}):(0,Ad.jsx)(il,{children:(0,Ad.jsx)(tl,{})})}var Hh=i(72),Dh=i.n(Hh),Uh=i(825),Wh=i.n(Uh),Kh=i(659),Gh=i.n(Kh),$h=i(56),Vh=i.n($h),Qh=i(159),Yh=i.n(Qh),Jh=i(113),Xh=i.n(Jh),Zh=i(877),em={};em.styleTagTransform=Xh(),em.setAttributes=Vh(),em.insert=Gh().bind(null,"head"),em.domAPI=Wh(),em.insertStyleElement=Yh(),Dh()(Zh.A,em),Zh.A&&Zh.A.locals&&Zh.A.locals;var nm=i(336),im={};im.styleTagTransform=Xh(),im.setAttributes=Vh(),im.insert=Gh().bind(null,"head"),im.domAPI=Wh(),im.insertStyleElement=Yh(),Dh()(nm.A,im),nm.A&&nm.A.locals&&nm.A.locals;var tm=i(27),am={};am.styleTagTransform=Xh(),am.setAttributes=Vh(),am.insert=Gh().bind(null,"head"),am.domAPI=Wh(),am.insertStyleElement=Yh(),Dh()(tm.A,am),tm.A&&tm.A.locals&&tm.A.locals,(0,a.H)(document.getElementById("root")).render((0,Ad.jsx)(t.StrictMode,{children:(0,Ad.jsx)(Ud,{children:(0,Ad.jsx)(Bh,{})})}))})(); |