@embedreach/components 0.3.29 → 0.3.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -83,7 +83,7 @@ function sle(e,a){return e?function(e){return"function"==typeof e&&(()=>{const a
83
83
  *
84
84
  * This source code is licensed under the MIT license found in the
85
85
  * LICENSE file in the root directory of this source tree.
86
- */uxe.exports="production"===process.env.NODE_ENV?function(){if(lxe)return cxe;lxe=1;var e="function"==typeof Object.is?Object.is:function(e,a){return e===a&&(0!==e||1/e==1/a)||e!=e&&a!=a},a=n.useState,t=n.useEffect,i=n.useLayoutEffect,r=n.useDebugValue;function o(a){var n=a.getSnapshot;a=a.value;try{var t=n();return!e(a,t)}catch(i){return!0}}var s="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,a){return a()}:function(e,n){var s=n(),l=a({inst:{value:s,getSnapshot:n}}),u=l[0].inst,c=l[1];return i((function(){u.value=s,u.getSnapshot=n,o(u)&&c({inst:u})}),[e,s,n]),t((function(){return o(u)&&c({inst:u}),e((function(){o(u)&&c({inst:u})}))}),[e]),r(s),s};return cxe.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:s,cxe}():(dxe||(dxe=1,"production"!==process.env.NODE_ENV&&function(){function e(e){var a=e.getSnapshot;e=e.value;try{var n=a();return!t(e,n)}catch(i){return!0}}"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=n,t="function"==typeof Object.is?Object.is:function(e,a){return e===a&&(0!==e||1/e==1/a)||e!=e&&a!=a},i=a.useState,r=a.useEffect,o=a.useLayoutEffect,s=a.useDebugValue,l=!1,u=!1,c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,a){return a()}:function(n,c){l||void 0===a.startTransition||(l=!0);var d=c();if(!u){var m=c();t(d,m)||(u=!0)}var h=(m=i({inst:{value:d,getSnapshot:c}}))[0].inst,p=m[1];return o((function(){h.value=d,h.getSnapshot=c,e(h)&&p({inst:h})}),[n,d,c]),r((function(){return e(h)&&p({inst:h}),n((function(){e(h)&&p({inst:h})}))}),[n]),s(d),d};mxe.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:c,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),mxe);var hxe=uxe.exports,pxe='[cmdk-group=""]',gxe='[cmdk-group-items=""]',fxe='[cmdk-item=""]',vxe=`${fxe}:not([aria-disabled="true"])`,yxe="cmdk-item-select",kxe="data-value",bxe=(e,a,n)=>sxe(e,a,n),Sxe=r.createContext(void 0),wxe=()=>r.useContext(Sxe),Axe=r.createContext(void 0),Cxe=()=>r.useContext(Axe),Mxe=r.createContext(void 0),Txe=r.forwardRef(((e,a)=>{let n=Ixe((()=>{var a,n;return{search:"",value:null!=(n=null!=(a=e.value)?a:e.defaultValue)?n:"",filtered:{count:0,items:new Map,groups:new Set}}})),t=Ixe((()=>new Set)),i=Ixe((()=>new Map)),o=Ixe((()=>new Map)),s=Ixe((()=>new Set)),l=Oxe(e),{label:u,children:c,value:d,onValueChange:m,filter:h,shouldFilter:p,loop:g,disablePointerSelection:f=!1,vimBindings:v=!0,...y}=e,k=_M(),b=_M(),S=_M(),w=r.useRef(null),A=Vxe();Kxe((()=>{if(void 0!==d){let e=d.trim();n.current.value=e,C.emit()}}),[d]),Kxe((()=>{A(6,j)}),[]);let C=r.useMemo((()=>({subscribe:e=>(s.current.add(e),()=>s.current.delete(e)),snapshot:()=>n.current,setState:(e,a,t)=>{var i,r,o;if(!Object.is(n.current[e],a)){if(n.current[e]=a,"search"===e)E(),x(),A(1,N);else if("value"===e&&(t||A(5,j),void 0!==(null==(i=l.current)?void 0:i.value))){return void(null==(o=(r=l.current).onValueChange)||o.call(r,null!=a?a:""))}C.emit()}},emit:()=>{s.current.forEach((e=>e()))}})),[]),M=r.useMemo((()=>({value:(e,a,t)=>{var i;a!==(null==(i=o.current.get(e))?void 0:i.value)&&(o.current.set(e,{value:a,keywords:t}),n.current.filtered.items.set(e,T(a,t)),A(2,(()=>{x(),C.emit()})))},item:(e,a)=>(t.current.add(e),a&&(i.current.has(a)?i.current.get(a).add(e):i.current.set(a,new Set([e]))),A(3,(()=>{E(),x(),n.current.value||N(),C.emit()})),()=>{o.current.delete(e),t.current.delete(e),n.current.filtered.items.delete(e);let a=_();A(4,(()=>{E(),(null==a?void 0:a.getAttribute("id"))===e&&N(),C.emit()}))}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{o.current.delete(e),i.current.delete(e)}),filter:()=>l.current.shouldFilter,label:u||e["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:k,inputId:S,labelId:b,listInnerRef:w})),[]);function T(e,a){var t,i;let r=null!=(i=null==(t=l.current)?void 0:t.filter)?i:bxe;return e?r(e,n.current.search,a):0}function x(){if(!n.current.search||!1===l.current.shouldFilter)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach((n=>{let t=i.current.get(n),r=0;t.forEach((a=>{let n=e.get(a);r=Math.max(n,r)})),a.push([n,r])}));let t=w.current;P().sort(((a,n)=>{var t,i;let r=a.getAttribute("id"),o=n.getAttribute("id");return(null!=(t=e.get(o))?t:0)-(null!=(i=e.get(r))?i:0)})).forEach((e=>{let a=e.closest(gxe);a?a.appendChild(e.parentElement===a?e:e.closest(`${gxe} > *`)):t.appendChild(e.parentElement===t?e:e.closest(`${gxe} > *`))})),a.sort(((e,a)=>a[1]-e[1])).forEach((e=>{var a;let n=null==(a=w.current)?void 0:a.querySelector(`${pxe}[${kxe}="${encodeURIComponent(e[0])}"]`);null==n||n.parentElement.appendChild(n)}))}function N(){let e=P().find((e=>"true"!==e.getAttribute("aria-disabled"))),a=null==e?void 0:e.getAttribute(kxe);C.setState("value",a||void 0)}function E(){var e,a,r,s;if(!n.current.search||!1===l.current.shouldFilter)return void(n.current.filtered.count=t.current.size);n.current.filtered.groups=new Set;let u=0;for(let i of t.current){let t=T(null!=(a=null==(e=o.current.get(i))?void 0:e.value)?a:"",null!=(s=null==(r=o.current.get(i))?void 0:r.keywords)?s:[]);n.current.filtered.items.set(i,t),t>0&&u++}for(let[t,o]of i.current)for(let e of o)if(n.current.filtered.items.get(e)>0){n.current.filtered.groups.add(t);break}n.current.filtered.count=u}function j(){var e,a,n;let t=_();t&&((null==(e=t.parentElement)?void 0:e.firstChild)===t&&(null==(n=null==(a=t.closest(pxe))?void 0:a.querySelector('[cmdk-group-heading=""]'))||n.scrollIntoView({block:"nearest"})),t.scrollIntoView({block:"nearest"}))}function _(){var e;return null==(e=w.current)?void 0:e.querySelector(`${fxe}[aria-selected="true"]`)}function P(){var e;return Array.from((null==(e=w.current)?void 0:e.querySelectorAll(vxe))||[])}function L(e){let a=P()[e];a&&C.setState("value",a.getAttribute(kxe))}function B(e){var a;let n=_(),t=P(),i=t.findIndex((e=>e===n)),r=t[i+e];null!=(a=l.current)&&a.loop&&(r=i+e<0?t[t.length-1]:i+e===t.length?t[0]:t[i+e]),r&&C.setState("value",r.getAttribute(kxe))}function R(e){let a,n=_(),t=null==n?void 0:n.closest(pxe);for(;t&&!a;)t=e>0?Dxe(t,pxe):zxe(t,pxe),a=null==t?void 0:t.querySelector(vxe);a?C.setState("value",a.getAttribute(kxe)):B(e)}let D=()=>L(P().length-1),z=e=>{e.preventDefault(),e.metaKey?D():e.altKey?R(1):B(1)},O=e=>{e.preventDefault(),e.metaKey?L(0):e.altKey?R(-1):B(-1)};return r.createElement(fM.div,{ref:a,tabIndex:-1,...y,"cmdk-root":"",onKeyDown:e=>{var a;if(null==(a=y.onKeyDown)||a.call(y,e),!e.defaultPrevented)switch(e.key){case"n":case"j":v&&e.ctrlKey&&z(e);break;case"ArrowDown":z(e);break;case"p":case"k":v&&e.ctrlKey&&O(e);break;case"ArrowUp":O(e);break;case"Home":e.preventDefault(),L(0);break;case"End":e.preventDefault(),D();break;case"Enter":if(!e.nativeEvent.isComposing&&229!==e.keyCode){e.preventDefault();let a=_();if(a){let e=new Event(yxe);a.dispatchEvent(e)}}}}},r.createElement("label",{"cmdk-label":"",htmlFor:M.inputId,id:M.labelId,style:Uxe},u),Jxe(e,(e=>r.createElement(Axe.Provider,{value:C},r.createElement(Sxe.Provider,{value:M},e)))))})),xxe=r.forwardRef(((e,a)=>{var n,t;let i=_M(),o=r.useRef(null),s=r.useContext(Mxe),l=wxe(),u=Oxe(e),c=null!=(t=null==(n=u.current)?void 0:n.forceMount)?t:null==s?void 0:s.forceMount;Kxe((()=>{if(!c)return l.item(i,null==s?void 0:s.id)}),[c]);let d=Gxe(i,o,[e.value,e.children,o],e.keywords),m=Cxe(),h=Fxe((e=>e.value&&e.value===d.current)),p=Fxe((e=>!(!c&&!1!==l.filter())||(!e.search||e.filtered.items.get(i)>0)));function g(){var e,a;f(),null==(a=(e=u.current).onSelect)||a.call(e,d.current)}function f(){m.setState("value",d.current,!0)}if(r.useEffect((()=>{let a=o.current;if(a&&!e.disabled)return a.addEventListener(yxe,g),()=>a.removeEventListener(yxe,g)}),[p,e.onSelect,e.disabled]),!p)return null;let{disabled:v,value:y,onSelect:k,forceMount:b,keywords:S,...w}=e;return r.createElement(fM.div,{ref:Hxe([o,a]),...w,id:i,"cmdk-item":"",role:"option","aria-disabled":!!v,"aria-selected":!!h,"data-disabled":!!v,"data-selected":!!h,onPointerMove:v||l.getDisablePointerSelection()?void 0:f,onClick:v?void 0:g},e.children)})),Nxe=r.forwardRef(((e,a)=>{let{heading:n,children:t,forceMount:i,...o}=e,s=_M(),l=r.useRef(null),u=r.useRef(null),c=_M(),d=wxe(),m=Fxe((e=>!(!i&&!1!==d.filter())||(!e.search||e.filtered.groups.has(s))));Kxe((()=>d.group(s)),[]),Gxe(s,l,[e.value,e.heading,u]);let h=r.useMemo((()=>({id:s,forceMount:i})),[i]);return r.createElement(fM.div,{ref:Hxe([l,a]),...o,"cmdk-group":"",role:"presentation",hidden:!m||void 0},n&&r.createElement("div",{ref:u,"cmdk-group-heading":"","aria-hidden":!0,id:c},n),Jxe(e,(e=>r.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?c:void 0},r.createElement(Mxe.Provider,{value:h},e)))))})),Exe=r.forwardRef(((e,a)=>{let{alwaysRender:n,...t}=e,i=r.useRef(null),o=Fxe((e=>!e.search));return n||o?r.createElement(fM.div,{ref:Hxe([i,a]),...t,"cmdk-separator":"",role:"separator"}):null})),jxe=r.forwardRef(((e,a)=>{let{onValueChange:n,...t}=e,i=null!=e.value,o=Cxe(),s=Fxe((e=>e.search)),l=Fxe((e=>e.value)),u=wxe(),c=r.useMemo((()=>{var e;let a=null==(e=u.listInnerRef.current)?void 0:e.querySelector(`${fxe}[${kxe}="${encodeURIComponent(l)}"]`);return null==a?void 0:a.getAttribute("id")}),[]);return r.useEffect((()=>{null!=e.value&&o.setState("search",e.value)}),[e.value]),r.createElement(fM.input,{ref:a,...t,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":u.listId,"aria-labelledby":u.labelId,"aria-activedescendant":c,id:u.inputId,type:"text",value:i?e.value:s,onChange:e=>{i||o.setState("search",e.target.value),null==n||n(e.target.value)}})})),_xe=r.forwardRef(((e,a)=>{let{children:n,label:t="Suggestions",...i}=e,o=r.useRef(null),s=r.useRef(null),l=wxe();return r.useEffect((()=>{if(s.current&&o.current){let e,a=s.current,n=o.current,t=new ResizeObserver((()=>{e=requestAnimationFrame((()=>{n.style.setProperty("--cmdk-list-height",a.offsetHeight.toFixed(1)+"px")}))}));return t.observe(a),()=>{cancelAnimationFrame(e),t.unobserve(a)}}}),[]),r.createElement(fM.div,{ref:Hxe([o,a]),...i,"cmdk-list":"",role:"listbox","aria-label":t,id:l.listId},Jxe(e,(e=>r.createElement("div",{ref:Hxe([s,l.listInnerRef]),"cmdk-list-sizer":""},e))))})),Pxe=r.forwardRef(((e,a)=>{let{open:n,onOpenChange:t,overlayClassName:i,contentClassName:o,container:s,...l}=e;return r.createElement(si,{open:n,onOpenChange:t},r.createElement(ui,{container:s},r.createElement(ci,{"cmdk-overlay":"",className:i}),r.createElement(di,{"aria-label":e.label,"cmdk-dialog":"",className:o},r.createElement(Txe,{ref:a,...l}))))})),Lxe=r.forwardRef(((e,a)=>Fxe((e=>0===e.filtered.count))?r.createElement(fM.div,{ref:a,...e,"cmdk-empty":"",role:"presentation"}):null)),Bxe=r.forwardRef(((e,a)=>{let{progress:n,children:t,label:i="Loading...",...o}=e;return r.createElement(fM.div,{ref:a,...o,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Jxe(e,(e=>r.createElement("div",{"aria-hidden":!0},e))))})),Rxe=Object.assign(Txe,{List:_xe,Item:xxe,Input:jxe,Group:Nxe,Separator:Exe,Dialog:Pxe,Empty:Lxe,Loading:Bxe});function Dxe(e,a){let n=e.nextElementSibling;for(;n;){if(n.matches(a))return n;n=n.nextElementSibling}}function zxe(e,a){let n=e.previousElementSibling;for(;n;){if(n.matches(a))return n;n=n.previousElementSibling}}function Oxe(e){let a=r.useRef(e);return Kxe((()=>{a.current=e})),a}var Kxe="undefined"==typeof window?r.useEffect:r.useLayoutEffect;function Ixe(e){let a=r.useRef();return void 0===a.current&&(a.current=e()),a}function Hxe(e){return a=>{e.forEach((e=>{"function"==typeof e?e(a):null!=e&&(e.current=a)}))}}function Fxe(e){let a=Cxe(),n=()=>e(a.snapshot());return hxe.useSyncExternalStore(a.subscribe,n,n)}function Gxe(e,a,n,t=[]){let i=r.useRef(),o=wxe();return Kxe((()=>{var r;let s=(()=>{var e;for(let a of n){if("string"==typeof a)return a.trim();if("object"==typeof a&&"current"in a)return a.current?null==(e=a.current.textContent)?void 0:e.trim():i.current}})(),l=t.map((e=>e.trim()));o.value(e,s,l),null==(r=a.current)||r.setAttribute(kxe,s),i.current=s})),i}var Vxe=()=>{let[e,a]=r.useState(),n=Ixe((()=>new Map));return Kxe((()=>{n.current.forEach((e=>e())),n.current=new Map}),[e]),(e,t)=>{n.current.set(e,t),a({})}};function Jxe({asChild:e,children:a},n){return e&&r.isValidElement(a)?r.cloneElement(function(e){let a=e.type;return"function"==typeof a?a(e.props):"render"in a?a.render(e.props):e}(a),{ref:a.ref},n(a.props.children)):n(a)}var Uxe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Wxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe,{ref:t,className:Fa("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...n})));Wxe.displayName=Rxe.displayName;const qxe=r.forwardRef((({className:e,searchIcon:n,...t},i)=>a.jsxs("div",{className:"flex items-center border-b px-3",children:[n||a.jsx(le,{className:"mr-2 h-4 w-4 shrink-0 opacity-50 "}),a.jsx(Rxe.Input,{ref:i,className:Fa("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...t})]})));qxe.displayName=Rxe.Input.displayName;const Zxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.List,{ref:t,className:Fa("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...n})));Zxe.displayName=Rxe.List.displayName;const $xe=r.forwardRef(((e,n)=>a.jsx(Rxe.Empty,{ref:n,className:"py-6 text-center text-sm",...e})));$xe.displayName=Rxe.Empty.displayName;const Yxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Group,{ref:t,className:Fa("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...n})));Yxe.displayName=Rxe.Group.displayName;r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Separator,{ref:t,className:Fa("-mx-1 h-px bg-border",e),...n}))).displayName=Rxe.Separator.displayName;const Qxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Item,{ref:t,className:Fa("relative flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e),...n})));Qxe.displayName=Rxe.Item.displayName;const Xxe=(e,a=200,n=32)=>{if(e.length<=20)return e;const t=Math.floor((a-n-16)/8);return e.length<=t?e:e.substring(0,t-3)+"..."},eNe=({options:e,value:n,onChange:t,placeholder:i,className:o="",disableInput:s=!1,disabled:l=!1})=>{const[u,c]=r.useState(!1);return a.jsxs(Hde,{modal:!0,open:!l&&u,onOpenChange:l?void 0:c,children:[a.jsx(Fde,{asChild:!0,children:a.jsxs(Wa,{"aria-expanded":u,disabled:l,className:Fa("w-full overflow-hidden justify-between",l&&"bg-gray-50 text-gray-700 cursor-not-allowed",o),variant:"outline",children:[a.jsx("span",{className:"truncate",title:n?e.find((e=>e.value===n))?.label:i,children:n?Xxe(e.find((e=>e.value===n))?.label||"",200,32):i}),a.jsx(C,{className:"ml-2 h-4 w-4 flex-shrink-0 opacity-50"})]})}),a.jsx(Gde,{className:Fa("w-full min-w-[120px] max-w-[600px] p-0",o),children:a.jsxs(Wxe,{children:[!s&&a.jsx(qxe,{placeholder:`${i}...`}),a.jsxs(Zxe,{children:[a.jsxs($xe,{children:["No ",i.toLowerCase()," found."]}),a.jsx(Yxe,{children:e.map((e=>a.jsxs(Qxe,{value:e.value,onSelect:e=>{t(e===n?"":e),c(!1)},children:[a.jsx(k,{className:Fa("mr-2 h-4 w-4",n===e.value?"opacity-100":"opacity-0")}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:e.label}),e.description&&a.jsx("span",{className:"text-xs text-muted-foreground",children:e.description})]})]},e.id||e.value)))})]})]})})]})};var aNe="Switch",[nNe,tNe]=uM(aNe),[iNe,rNe]=nNe(aNe),oNe=r.forwardRef(((e,n)=>{const{__scopeSwitch:t,name:i,checked:o,defaultChecked:s,required:l,disabled:u,value:c="on",onCheckedChange:d,form:m,...h}=e,[p,g]=r.useState(null),f=He(n,(e=>g(e))),v=r.useRef(!1),y=!p||(m||!!p.closest("form")),[k=!1,b]=oT({prop:o,defaultProp:s,onChange:d});return a.jsxs(iNe,{scope:t,checked:k,disabled:u,children:[a.jsx(fM.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":cNe(k),"data-disabled":u?"":void 0,disabled:u,value:c,...h,ref:f,onClick:lM(e.onClick,(e=>{b((e=>!e)),y&&(v.current=e.isPropagationStopped(),v.current||e.stopPropagation())}))}),y&&a.jsx(uNe,{control:p,bubbles:!v.current,name:i,value:c,checked:k,required:l,disabled:u,form:m,style:{transform:"translateX(-100%)"}})]})}));oNe.displayName=aNe;var sNe="SwitchThumb",lNe=r.forwardRef(((e,n)=>{const{__scopeSwitch:t,...i}=e,r=rNe(sNe,t);return a.jsx(fM.span,{"data-state":cNe(r.checked),"data-disabled":r.disabled?"":void 0,...i,ref:n})}));lNe.displayName=sNe;var uNe=e=>{const{control:n,checked:t,bubbles:i=!0,...o}=e,s=r.useRef(null),l=GMe(t),u=BM(n);return r.useEffect((()=>{const e=s.current,a=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(a,"checked").set;if(l!==t&&n){const a=new Event("click",{bubbles:i});n.call(e,t),e.dispatchEvent(a)}}),[l,t,i]),a.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...o,tabIndex:-1,ref:s,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function cNe(e){return e?"checked":"unchecked"}var dNe=oNe,mNe=lNe;const hNe=r.forwardRef((({className:e,...n},t)=>a.jsx(dNe,{className:Fa("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input/50",e),...n,ref:t,children:a.jsx(mNe,{className:Fa("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})));function pNe(e,a,{checkForDefaultPrevented:n=!0}={}){return function(t){if(e?.(t),!1===n||!t.defaultPrevented)return a?.(t)}}function gNe(e,n=[]){let t=[];const i=()=>{const a=t.map((e=>r.createContext(e)));return function(n){const t=n?.[e]||a;return r.useMemo((()=>({[`__scope${e}`]:{...n,[e]:t}})),[n,t])}};return i.scopeName=e,[function(n,i){const o=r.createContext(i),s=t.length;t=[...t,i];const l=n=>{const{scope:t,children:i,...l}=n,u=t?.[e]?.[s]||o,c=r.useMemo((()=>l),Object.values(l));return a.jsx(u.Provider,{value:c,children:i})};return l.displayName=n+"Provider",[l,function(a,t){const l=r.useContext(t?.[e]?.[s]||o);if(l)return l;if(void 0!==i)return i;throw new Error(`\`${a}\` must be used within \`${n}\``)}]},fNe(i,...n)]}function fNe(...e){const a=e[0];if(1===e.length)return a;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const t=n.reduce(((a,{useScope:n,scopeName:t})=>({...a,...n(e)[`__scope${t}`]})),{});return r.useMemo((()=>({[`__scope${a.scopeName}`]:t})),[t])}};return n.scopeName=a.scopeName,n}function vNe(e,a){if("function"==typeof e)return e(a);null!=e&&(e.current=a)}function yNe(...e){return a=>{let n=!1;const t=e.map((e=>{const t=vNe(e,a);return n||"function"!=typeof t||(n=!0),t}));if(n)return()=>{for(let a=0;a<t.length;a++){const n=t[a];"function"==typeof n?n():vNe(e[a],null)}}}}function kNe(...e){return r.useCallback(yNe(...e),e)}function bNe(e){const n=SNe(e),t=r.forwardRef(((e,t)=>{const{children:i,...o}=e,s=r.Children.toArray(i),l=s.find(ANe);if(l){const e=l.props.children,i=s.map((a=>a===l?r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null:a));return a.jsx(n,{...o,ref:t,children:r.isValidElement(e)?r.cloneElement(e,void 0,i):null})}return a.jsx(n,{...o,ref:t,children:i})}));return t.displayName=`${e}.Slot`,t}function SNe(e){const a=r.forwardRef(((e,a)=>{const{children:n,...t}=e;if(r.isValidElement(n)){const e=function(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning;if(n)return e.ref;if(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n)return e.props.ref;return e.props.ref||e.ref}(n),i=function(e,a){const n={...a};for(const t in a){const i=e[t],r=a[t];/^on[A-Z]/.test(t)?i&&r?n[t]=(...e)=>{r(...e),i(...e)}:i&&(n[t]=i):"style"===t?n[t]={...i,...r}:"className"===t&&(n[t]=[i,r].filter(Boolean).join(" "))}return{...e,...n}}(t,n.props);return n.type!==r.Fragment&&(i.ref=a?yNe(a,e):e),r.cloneElement(n,i)}return r.Children.count(n)>1?r.Children.only(null):null}));return a.displayName=`${e}.SlotClone`,a}hNe.displayName=dNe.displayName;var wNe=Symbol("radix.slottable");function ANe(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===wNe}var CNe=globalThis?.document?r.useLayoutEffect:()=>{},MNe=r[" useId ".trim().toString()]||(()=>{}),TNe=0;function xNe(e){const[a,n]=r.useState(MNe());return CNe((()=>{n((e=>e??String(TNe++)))}),[e]),e||(a?`radix-${a}`:"")}var NNe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce(((e,n)=>{const t=bNe(`Primitive.${n}`),i=r.forwardRef(((e,i)=>{const{asChild:r,...o}=e,s=r?t:n;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),a.jsx(s,{...o,ref:i})}));return i.displayName=`Primitive.${n}`,{...e,[n]:i}}),{});var ENe=r[" useInsertionEffect ".trim().toString()]||CNe;function jNe({prop:e,defaultProp:a,onChange:n=()=>{},caller:t}){const[i,o,s]=function({defaultProp:e,onChange:a}){const[n,t]=r.useState(e),i=r.useRef(n),o=r.useRef(a);return ENe((()=>{o.current=a}),[a]),r.useEffect((()=>{i.current!==n&&(o.current?.(n),i.current=n)}),[n,i]),[n,t,o]}({defaultProp:a,onChange:n}),l=void 0!==e,u=l?e:i;{const a=r.useRef(void 0!==e);r.useEffect((()=>{const e=a.current;if(e!==l){}a.current=l}),[l,t])}const c=r.useCallback((a=>{if(l){const n=function(e){return"function"==typeof e}(a)?a(e):a;n!==e&&s.current?.(n)}else o(a)}),[l,e,o,s]);return[u,c]}var _Ne=r.createContext(void 0);function PNe(e){const a=r.useContext(_Ne);return e||a||"ltr"}var LNe="rovingFocusGroup.onEntryFocus",BNe={bubbles:!1,cancelable:!0},RNe="RovingFocusGroup",[DNe,zNe,ONe]=function(e){const t=e+"CollectionProvider",[i,r]=gNe(t),[o,s]=i(t,{collectionRef:{current:null},itemMap:new Map}),l=e=>{const{scope:t,children:i}=e,r=n.useRef(null),s=n.useRef(new Map).current;return a.jsx(o,{scope:t,itemMap:s,collectionRef:r,children:i})};l.displayName=t;const u=e+"CollectionSlot",c=bNe(u),d=n.forwardRef(((e,n)=>{const{scope:t,children:i}=e,r=kNe(n,s(u,t).collectionRef);return a.jsx(c,{ref:r,children:i})}));d.displayName=u;const m=e+"CollectionItemSlot",h="data-radix-collection-item",p=bNe(m),g=n.forwardRef(((e,t)=>{const{scope:i,children:r,...o}=e,l=n.useRef(null),u=kNe(t,l),c=s(m,i);return n.useEffect((()=>(c.itemMap.set(l,{ref:l,...o}),()=>{c.itemMap.delete(l)}))),a.jsx(p,{[h]:"",ref:u,children:r})}));return g.displayName=m,[{Provider:l,Slot:d,ItemSlot:g},function(a){const t=s(e+"CollectionConsumer",a);return n.useCallback((()=>{const e=t.collectionRef.current;if(!e)return[];const a=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(t.itemMap.values()).sort(((e,n)=>a.indexOf(e.ref.current)-a.indexOf(n.ref.current)))}),[t.collectionRef,t.itemMap])},r]}(RNe),[KNe,INe]=gNe(RNe,[ONe]),[HNe,FNe]=KNe(RNe),GNe=r.forwardRef(((e,n)=>a.jsx(DNe.Provider,{scope:e.__scopeRovingFocusGroup,children:a.jsx(DNe.Slot,{scope:e.__scopeRovingFocusGroup,children:a.jsx(VNe,{...e,ref:n})})})));GNe.displayName=RNe;var VNe=r.forwardRef(((e,n)=>{const{__scopeRovingFocusGroup:t,orientation:i,loop:o=!1,dir:s,currentTabStopId:l,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:m=!1,...h}=e,p=r.useRef(null),g=kNe(n,p),f=PNe(s),[v,y]=jNe({prop:l,defaultProp:u??null,onChange:c,caller:RNe}),[k,b]=r.useState(!1),S=function(e){const a=r.useRef(e);return r.useEffect((()=>{a.current=e})),r.useMemo((()=>(...e)=>a.current?.(...e)),[])}(d),w=zNe(t),A=r.useRef(!1),[C,M]=r.useState(0);return r.useEffect((()=>{const e=p.current;if(e)return e.addEventListener(LNe,S),()=>e.removeEventListener(LNe,S)}),[S]),a.jsx(HNe,{scope:t,orientation:i,dir:f,loop:o,currentTabStopId:v,onItemFocus:r.useCallback((e=>y(e)),[y]),onItemShiftTab:r.useCallback((()=>b(!0)),[]),onFocusableItemAdd:r.useCallback((()=>M((e=>e+1))),[]),onFocusableItemRemove:r.useCallback((()=>M((e=>e-1))),[]),children:a.jsx(NNe.div,{tabIndex:k||0===C?-1:0,"data-orientation":i,...h,ref:g,style:{outline:"none",...e.style},onMouseDown:pNe(e.onMouseDown,(()=>{A.current=!0})),onFocus:pNe(e.onFocus,(e=>{if(e.target===e.currentTarget&&!A.current&&!k){const a=new CustomEvent(LNe,BNe);if(e.currentTarget.dispatchEvent(a),!a.defaultPrevented){const e=w().filter((e=>e.focusable));qNe([e.find((e=>e.active)),e.find((e=>e.id===v)),...e].filter(Boolean).map((e=>e.ref.current)),m)}}A.current=!1})),onBlur:pNe(e.onBlur,(()=>b(!1)))})})})),JNe="RovingFocusGroupItem",UNe=r.forwardRef(((e,n)=>{const{__scopeRovingFocusGroup:t,focusable:i=!0,active:o=!1,tabStopId:s,children:l,...u}=e,c=xNe(),d=s||c,m=FNe(JNe,t),h=m.currentTabStopId===d,p=zNe(t),{onFocusableItemAdd:g,onFocusableItemRemove:f,currentTabStopId:v}=m;return r.useEffect((()=>{if(i)return g(),()=>f()}),[i,g,f]),a.jsx(DNe.ItemSlot,{scope:t,id:d,focusable:i,active:o,children:a.jsx(NNe.span,{tabIndex:h?0:-1,"data-orientation":m.orientation,...u,ref:n,onMouseDown:pNe(e.onMouseDown,(e=>{i?m.onItemFocus(d):e.preventDefault()})),onFocus:pNe(e.onFocus,(()=>m.onItemFocus(d))),onKeyDown:pNe(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void m.onItemShiftTab();if(e.target!==e.currentTarget)return;const a=function(e,a,n){const t=function(e,a){return"rtl"!==a?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===a&&["ArrowLeft","ArrowRight"].includes(t)||"horizontal"===a&&["ArrowUp","ArrowDown"].includes(t)?void 0:WNe[t]}(e,m.orientation,m.dir);if(void 0!==a){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=p().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===a)i.reverse();else if("prev"===a||"next"===a){"prev"===a&&i.reverse();const r=i.indexOf(e.currentTarget);i=m.loop?(t=r+1,(n=i).map(((e,a)=>n[(t+a)%n.length]))):i.slice(r+1)}setTimeout((()=>qNe(i)))}var n,t})),children:"function"==typeof l?l({isCurrentTabStop:h,hasTabStop:null!=v}):l})})}));UNe.displayName=JNe;var WNe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function qNe(e,a=!1){const n=document.activeElement;for(const t of e){if(t===n)return;if(t.focus({preventScroll:a}),document.activeElement!==n)return}}var ZNe=GNe,$Ne=UNe;var YNe=e=>{const{present:a,children:n}=e,t=function(e){const[a,n]=r.useState(),t=r.useRef(null),i=r.useRef(e),o=r.useRef("none"),s=e?"mounted":"unmounted",[l,u]=function(e,a){return r.useReducer(((e,n)=>a[e][n]??e),e)}(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return r.useEffect((()=>{const e=QNe(t.current);o.current="mounted"===l?e:"none"}),[l]),CNe((()=>{const a=t.current,n=i.current;if(n!==e){const t=o.current,r=QNe(a);if(e)u("MOUNT");else if("none"===r||"none"===a?.display)u("UNMOUNT");else{u(n&&t!==r?"ANIMATION_OUT":"UNMOUNT")}i.current=e}}),[e,u]),CNe((()=>{if(a){let e;const n=a.ownerDocument.defaultView??window,r=r=>{const o=QNe(t.current).includes(r.animationName);if(r.target===a&&o&&(u("ANIMATION_END"),!i.current)){const t=a.style.animationFillMode;a.style.animationFillMode="forwards",e=n.setTimeout((()=>{"forwards"===a.style.animationFillMode&&(a.style.animationFillMode=t)}))}},s=e=>{e.target===a&&(o.current=QNe(t.current))};return a.addEventListener("animationstart",s),a.addEventListener("animationcancel",r),a.addEventListener("animationend",r),()=>{n.clearTimeout(e),a.removeEventListener("animationstart",s),a.removeEventListener("animationcancel",r),a.removeEventListener("animationend",r)}}u("ANIMATION_END")}),[a,u]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:r.useCallback((e=>{t.current=e?getComputedStyle(e):null,n(e)}),[])}}(a),i="function"==typeof n?n({present:t.isPresent}):r.Children.only(n),o=kNe(t.ref,function(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning;if(n)return e.ref;if(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n)return e.props.ref;return e.props.ref||e.ref}(i));return"function"==typeof n||t.isPresent?r.cloneElement(i,{ref:o}):null};function QNe(e){return e?.animationName||"none"}YNe.displayName="Presence";var XNe="Tabs",[eEe,aEe]=gNe(XNe,[INe]),nEe=INe(),[tEe,iEe]=eEe(XNe),rEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,onValueChange:r,defaultValue:o,orientation:s="horizontal",dir:l,activationMode:u="automatic",...c}=e,d=PNe(l),[m,h]=jNe({prop:i,onChange:r,defaultProp:o??"",caller:XNe});return a.jsx(tEe,{scope:t,baseId:xNe(),value:m,onValueChange:h,orientation:s,dir:d,activationMode:u,children:a.jsx(NNe.div,{dir:d,"data-orientation":s,...c,ref:n})})}));rEe.displayName=XNe;var oEe="TabsList",sEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,loop:i=!0,...r}=e,o=iEe(oEe,t),s=nEe(t);return a.jsx(ZNe,{asChild:!0,...s,orientation:o.orientation,dir:o.dir,loop:i,children:a.jsx(NNe.div,{role:"tablist","aria-orientation":o.orientation,...r,ref:n})})}));sEe.displayName=oEe;var lEe="TabsTrigger",uEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,disabled:r=!1,...o}=e,s=iEe(lEe,t),l=nEe(t),u=mEe(s.baseId,i),c=hEe(s.baseId,i),d=i===s.value;return a.jsx($Ne,{asChild:!0,...l,focusable:!r,active:d,children:a.jsx(NNe.button,{type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:u,...o,ref:n,onMouseDown:pNe(e.onMouseDown,(e=>{r||0!==e.button||!1!==e.ctrlKey?e.preventDefault():s.onValueChange(i)})),onKeyDown:pNe(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&s.onValueChange(i)})),onFocus:pNe(e.onFocus,(()=>{d||r||!("manual"!==s.activationMode)||s.onValueChange(i)}))})})}));uEe.displayName=lEe;var cEe="TabsContent",dEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,forceMount:o,children:s,...l}=e,u=iEe(cEe,t),c=mEe(u.baseId,i),d=hEe(u.baseId,i),m=i===u.value,h=r.useRef(m);return r.useEffect((()=>{const e=requestAnimationFrame((()=>h.current=!1));return()=>cancelAnimationFrame(e)}),[]),a.jsx(YNe,{present:o||m,children:({present:t})=>a.jsx(NNe.div,{"data-state":m?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":c,hidden:!t,id:d,tabIndex:0,...l,ref:n,style:{...e.style,animationDuration:h.current?"0s":void 0},children:t&&s})})}));function mEe(e,a){return`${e}-trigger-${a}`}function hEe(e,a){return`${e}-content-${a}`}dEe.displayName=cEe;var pEe=sEe,gEe=uEe,fEe=dEe;const vEe=rEe,yEe=r.forwardRef((({className:e,...n},t)=>a.jsx(pEe,{ref:t,className:Fa("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...n})));yEe.displayName=pEe.displayName;const kEe=r.forwardRef((({className:e,...n},t)=>a.jsx(gEe,{ref:t,className:Fa("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...n})));kEe.displayName=gEe.displayName;const bEe=r.forwardRef((({className:e,...n},t)=>a.jsx(fEe,{ref:t,className:Fa("ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...n})));bEe.displayName=fEe.displayName;var SEe=(e=>(e.Today="today",e.Yesterday="yesterday",e.Tomorrow="tomorrow",e.LastWeek="last-week",e.NextWeek="next-week",e.FifteenDaysAgo="fifteen-days-ago",e.FifteenDaysFromNow="fifteen-days-from-now",e))(SEe||{});const wEe=(e,a)=>{const n=new Date;n.setHours(0,0,0,0);let t=new Date(n);switch(e){case SEe.Today:break;case SEe.Yesterday:t.setDate(n.getDate()-1);break;case SEe.Tomorrow:t.setDate(n.getDate()+1);break;case SEe.LastWeek:t.setDate(n.getDate()-7);break;case SEe.NextWeek:t.setDate(n.getDate()+7);break;case SEe.FifteenDaysAgo:t.setDate(n.getDate()-15);break;case SEe.FifteenDaysFromNow:t.setDate(n.getDate()+15);break;default:throw new Error("Invalid single date preset")}return t},AEe=e=>{(new Date).setHours(0,0,0,0);let a=0;switch(e){case SEe.Today:a=0;break;case SEe.Yesterday:case SEe.Tomorrow:a=1;break;case SEe.LastWeek:case SEe.NextWeek:a=7;break;case SEe.FifteenDaysAgo:case SEe.FifteenDaysFromNow:a=15;break;default:return null}const n=[SEe.Tomorrow,SEe.NextWeek,SEe.FifteenDaysFromNow].includes(e);return{type:"relative",value:a,unit:qTe.DAYS,direction:n?"after":"before"}},CEe=KA.union([KA.date(),KA.string().transform((e=>{if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const[a,n,t]=e.split("-").map(Number);return new Date(a,n-1,t)}return new Date(e)}))]).refine((e=>!isNaN(e.getTime())),{message:"Invalid date"}),MEe=e=>!(!e||"object"!=typeof e)&&(void 0===e.value||!("number"!=typeof e.value||e.value<0)&&(e.unit===qTe.DAYS&&(("before"===e.direction||"after"===e.direction)&&"relative"===e.type))),TEe=e=>!e||void 0===e.value||e.value<=730,xEe=e=>!(e.startDate&&"object"==typeof e.startDate&&"type"in e.startDate&&"relative"===e.startDate.type&&!TEe(e.startDate))&&!(e.endDate&&"object"==typeof e.endDate&&"type"in e.endDate&&"relative"===e.endDate.type&&!TEe(e.endDate)),NEe=e=>!(!e.startDate||!e.endDate)&&(!("object"==typeof e.startDate&&"type"in e.startDate&&!MEe(e.startDate))&&!("object"==typeof e.endDate&&"type"in e.endDate&&!MEe(e.endDate))),EEe=e=>{const{date:a,fieldType:n}=e;return n===Toe.Date?new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),0,0,0,0)):a},jEe=e=>{if(e instanceof Date)return e.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});if("object"==typeof e&&"type"in e&&"relative"===e.type){return void 0===e.value?"Select days...":`${e.value} days ${e.direction} today`}if("object"==typeof e&&"startDate"in e&&"endDate"in e){const a=e;return`${jEe(a.startDate)} - ${jEe(a.endDate)}`}return"Select date..."},_Ee=({isOpen:e,onClose:n,onConfirm:t,fieldType:i,operator:o,currentValue:s,toast:l})=>{const u=s.length>0&&"object"==typeof s[0]&&"type"in s[0]&&"relative"===s[0].type,c=s.length>0&&"object"==typeof s[0]&&"startDate"in s[0]&&"endDate"in s[0],d=o===Noe.BETWEEN_MONTH_DAY||o===Noe.BETWEEN_MONTH_DAY_YEAR,[m,h]=r.useState((()=>{if(!d){if((i===Toe.Date||i===Toe.DateTime)&&s.length>0&&!u&&!c){const e=CEe.safeParse(s[0]);return e.success?e.data:new Date}return new Date}})),[p]=r.useState(u?s[0]:{type:"relative",value:0,unit:qTe.DAYS,direction:"before"}),[g,f]=r.useState((()=>{if(c)return s[0];if(d){const e=new Date;e.setDate(e.getDate()-1);const a=new Date;return a.setDate(a.getDate()+1),{startDate:EEe({date:e,fieldType:i}),endDate:EEe({date:a,fieldType:i})}}})),[v,y]=r.useState((()=>{if(u&&s.length>0){const e=s[0];if(void 0!==e.value)return`${e.value} days ${"before"===e.direction?"ago":"from now"}`}return""})),[k,b]=r.useState(""),[S,w]=r.useState(""),[A,C]=r.useState((()=>{if(u&&s.length>0){const e=s[0];if(void 0!==e.value){const a=Object.values(SEe);let n=null;for(const t of a){const a=AEe(t);if(a&&a.value===e.value&&a.direction===e.direction){n=t;break}}return!n}}return!1})),{parseDate:M,isParsing:T,parseError:x,parseResult:N}=Boe(),[E,j]=r.useState(null),[_,P]=r.useState(!1),L=r.useRef(null),[B,R]=r.useState(null),[D,z]=r.useState(u?"relative":"specific");r.useEffect((()=>{if(!d&&s.length>0){const e=s[0];e instanceof Date?(h(EEe({date:e,fieldType:i})),y(""),C(!1),R(null),z("specific")):"object"==typeof e&&null!==e&&"type"in e&&"relative"===e.type&&(h(void 0),z("relative"))}else d||(h(new Date),y(""),C(!1),R(null),z("specific"))}),[s,d,i]),r.useEffect((()=>{if(!d&&s.length>0){const a=s[0];try{if(a instanceof Date){const e=(e=>{(new Date).setHours(0,0,0,0);const a=Object.values(SEe);for(const t of a)try{if(wEe(t).getTime()===e.getTime())return t}catch(n){continue}return null})(a);R(e||null)}else if("object"==typeof a&&null!==a&&"type"in a&&"relative"===a.type){const e=a;if(void 0!==e.value){const a=Object.values(SEe);let n=null;for(const t of a){const a=AEe(t);if(a&&a.value===e.value&&a.direction===e.direction){n=t;break}}R(n||null)}else R(null)}else R(null)}catch(e){R(null)}}}),[s,d]);const O=e=>{try{R(e),y(""),C(!1),j(null),P(!1);const a=AEe(e);a&&(TEe(a)?j(a):(R(null),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"})))}catch(a){R(null)}},K=r.useCallback((e=>{if(!e.trim())return j(null),void P(!1);L.current&&clearTimeout(L.current),L.current=setTimeout((()=>{M({userInput:e,operator:o})}),800)}),[M,o]),I=r.useCallback(((e,a)=>{if(!e.trim()||!a.trim())return j(null),void P(!1);L.current&&clearTimeout(L.current),L.current=setTimeout((()=>{M({userInput:`between ${e} and ${a}`,operator:o})}),800)}),[M,o]);r.useEffect((()=>{d&&k.trim()&&S.trim()&&I(k,S)}),[k,S,d,I]),r.useEffect((()=>{if(N)if(N.success&&N.parsedDate)if("object"==typeof N.parsedDate&&"type"in N.parsedDate&&"relative"===N.parsedDate.type){const e=N.parsedDate;TEe(e)?(j(e),P(!1)):(j(null),P(!0),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}))}else if("object"==typeof N.parsedDate&&"startDate"in N.parsedDate&&"endDate"in N.parsedDate){const e=N.parsedDate;xEe(e)?(j(e),P(!1)):(j(null),P(!0),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}))}else j(null),P(!0);else j(null),P(!0)}),[N,l]),r.useEffect((()=>{x&&(j(null),P(!0))}),[x]),r.useEffect((()=>()=>{L.current&&clearTimeout(L.current)}),[]);const H=o===Noe.EQUALS_MONTH_DAY||o===Noe.EQUALS_MONTH_DAY_YEAR||o===Noe.GREATER_THAN||o===Noe.LESS_THAN,F=e=>{const a=e.startDate??g?.startDate,n=e.endDate??g?.endDate,t=a&&"object"==typeof a&&"type"in a,i=n&&"object"==typeof n&&"type"in n;if(a&&n){if(t!==i)return void l({title:"Invalid date range",description:"Both start and end dates must be of the same type (either both absolute or both relative).",variant:"destructive"});if(!t&&!i&&(r={finalStartDate:a,finalEndDate:n}).finalStartDate&&r.finalEndDate&&!(r.finalStartDate<r.finalEndDate))return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"});if(t){if(!MEe(a)||!MEe(n))return void l({title:"Invalid relative date",description:"Please enter valid relative dates.",variant:"destructive"});const e=a,t=n,i=o===Noe.BETWEEN_MONTH_DAY||o===Noe.BETWEEN_MONTH_DAY_YEAR;if(!i&&e.direction!==t.direction)return void l({title:"Invalid date range",description:"Start and end dates must be in the same direction (both in the past or both in the future).",variant:"destructive"});if(i){const a=new Date,n=new Date(a),i=new Date(a);if(n.setDate("before"===e.direction?a.getDate()-e.value:a.getDate()+e.value),i.setDate("before"===t.direction?a.getDate()-t.value:a.getDate()+t.value),n>=i)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}else if("before"===e.direction){if(e.value<=t.value)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}else if("after"===e.direction&&e.value>=t.value)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}}var r;f(e)},G=()=>{if(d){if("relative"===D){if(A&&v.trim()&&E&&"startDate"in E&&"endDate"in E)return NEe(E)?xEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid date range",description:"The parsed date range is invalid.",variant:"destructive"});if(A&&(k.trim()||S.trim())&&E&&"startDate"in E&&"endDate"in E)return NEe(E)?xEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid date range",description:"The parsed date range is invalid.",variant:"destructive"})}if(A&&!E)return v.trim()||k.trim()||S.trim()?void l({title:"Invalid input",description:'Please enter a valid date range expression like "between 5 days ago and 3 days ago".',variant:"destructive"}):void l({title:"Input required",description:"Please enter a date range expression.",variant:"destructive"});if("specific"!==D||!g?.startDate||!g?.endDate)return"specific"===D?void l({title:"Date range required",description:"Please select both start and end dates.",variant:"destructive"}):void l({title:"Invalid input",description:"Please enter a valid date range expression or switch to specific dates.",variant:"destructive"});t([{startDate:g.startDate,endDate:g.endDate}]),n()}else if(null!==B)try{const e=AEe(B);return e&&MEe(e)?TEe(e)?(t([e]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid preset",description:"The selected preset is not valid.",variant:"destructive"})}catch(e){return void l({title:"Invalid preset",description:"The selected preset is not valid.",variant:"destructive"})}else if(A){if(!v.trim())return void l({title:"Input required",description:"Please enter a custom date or select a preset.",variant:"destructive"});if(E&&"type"in E&&"relative"===E.type&&MEe(E))return TEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"});const e=(e=>{const a=e.trim().toLowerCase().match(/^(\d+)\s+days?\s+(ago|from now)$/);if(a)return{type:"relative",value:parseInt(a[1],10),unit:qTe.DAYS,direction:"ago"===a[2]?"before":"after"};return null})(v);if(!e||!MEe(e))return void l({title:"Invalid input",description:'Please enter a valid date expression like "14 days ago", "last week", or "3 days from now".',variant:"destructive"});if(!TEe(e))return void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"});t([e]),n()}else"relative"===D&&H?(t([p]),n()):"specific"===D&&m?(t([EEe({date:m,fieldType:i})]),n()):(t([]),n())};return a.jsx(fi,{open:e,onOpenChange:e=>{e||G()},children:a.jsxs(bi,{className:d?"w-[600px] max-w-none":"w-[500px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Select Date"})}),a.jsxs(vEe,{value:D,onValueChange:e=>{z(e),"specific"===e?(m||h(new Date),y(""),C(!1),R(null),j(null),P(!1)):"relative"===e&&h(void 0)},className:"w-full",children:[a.jsxs(yEe,{className:"grid w-full grid-cols-2",children:[a.jsx(kEe,{value:"relative",children:"Relative"}),a.jsx(kEe,{value:"specific",children:"Specific"})]}),a.jsxs(bEe,{value:"relative",className:"space-y-4 mt-4",children:[T&&a.jsxs("div",{className:"flex items-center gap-2 text-xs text-blue-600 bg-blue-50 border border-blue-200 rounded-md p-2",children:[a.jsx("div",{className:"animate-spin h-3 w-3 border border-blue-600 border-t-transparent rounded-full"}),"AI is parsing your date..."]}),E&&!T&&a.jsxs("div",{className:"flex items-center gap-2 text-xs text-green-600 bg-green-50 border border-green-200 rounded-md p-2",children:[a.jsx("div",{className:"text-green-500",children:"✓"}),a.jsxs("div",{children:["Parsed as:"," ",d&&"startDate"in E&&"endDate"in E?`${jEe(E.startDate)} to ${jEe(E.endDate)}`:jEe(E)]})]}),!d&&a.jsxs("div",{className:"space-y-4",children:[a.jsx(Tge,{className:"text-sm font-medium",children:"Quick Select"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx("div",{className:"flex justify-center",children:a.jsx(Wa,{variant:B===SEe.Today?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Today)},className:"px-6 py-2 h-auto",children:a.jsxs("div",{className:"flex flex-col items-center",children:[a.jsx("span",{className:"font-medium text-sm",children:"Today"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Current date"})]})},SEe.Today)}),a.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[a.jsx(Wa,{variant:B===SEe.Yesterday?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Yesterday)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Yesterday"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Previous day"})]})},SEe.Yesterday),a.jsx(Wa,{variant:B===SEe.Tomorrow?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Tomorrow)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Tomorrow"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Next day"})]})},SEe.Tomorrow),a.jsx(Wa,{variant:B===SEe.LastWeek?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.LastWeek)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Last Week"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"7 days ago"})]})},SEe.LastWeek),a.jsx(Wa,{variant:B===SEe.NextWeek?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.NextWeek)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Next Week"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"7 days from now"})]})},SEe.NextWeek),a.jsx(Wa,{variant:B===SEe.FifteenDaysAgo?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.FifteenDaysAgo)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"15 Days Ago"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Two weeks ago"})]})},SEe.FifteenDaysAgo),a.jsx(Wa,{variant:B===SEe.FifteenDaysFromNow?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.FifteenDaysFromNow)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"15 Days From Now"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Two weeks ahead"})]})},SEe.FifteenDaysFromNow)]})]})]}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(Tge,{children:"Custom"}),d?a.jsxs("div",{className:"space-y-3",children:[a.jsx("div",{className:"flex gap-2 p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. between 5 days ago and 3 days ago",value:v,onChange:e=>{const a=e.target.value;y(a),C(!0),P(!1),b(""),w(""),K(a)},onFocus:()=>{C(!0)},className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 "+(T?"opacity-50":"")})}),a.jsxs("div",{className:"flex items-center",children:[a.jsx("div",{className:"flex-1 h-px bg-gray-200"}),a.jsx("span",{className:"px-3 text-xs text-gray-500",children:"OR"}),a.jsx("div",{className:"flex-1 h-px bg-gray-200"})]}),a.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-sm",children:"Start"}),a.jsx("div",{className:"p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 5 days ago",value:k,onChange:e=>{b(e.target.value),C(!0),P(!1),j(null),y("")},onFocus:()=>C(!0),className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 text-sm"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-sm",children:"End"}),a.jsx("div",{className:"p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 3 days ago",value:S,onChange:e=>{w(e.target.value),C(!0),P(!1),j(null),y("")},onFocus:()=>C(!0),className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 text-sm"})})]})]})]}):a.jsx("div",{className:"flex gap-2 p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 14 days ago, last week, 3 days from now",value:v,onChange:e=>{const a=e.target.value;y(a),C(!0),P(!1),R(null),K(a)},onFocus:()=>{C(!0),R(null),y(""),C(!1),j(null),P(!1)},className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 "+(T?"opacity-50":"")})})]})]}),a.jsx(bEe,{value:"specific",className:"space-y-4 mt-4",children:a.jsxs("div",d?{className:"space-y-3 flex flex-col items-center",children:[a.jsx(Tge,{children:"Choose date range"}),a.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-center",children:"Start Date"}),a.jsx(qpe,{mode:"single",selected:g?.startDate instanceof Date||"string"==typeof g?.startDate?g.startDate instanceof Date?g.startDate:new Date(g.startDate):void 0,onSelect:e=>{if(e){const a=EEe({date:e,fieldType:i});f({...g,startDate:a}),F({...g,startDate:a})}},className:"rounded-md border",disabled:()=>!1})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-center",children:"End Date"}),a.jsx(qpe,{mode:"single",selected:g?.endDate instanceof Date||"string"==typeof g?.endDate?g.endDate instanceof Date?g.endDate:new Date(g.endDate):void 0,onSelect:e=>{if(e){const a=EEe({date:e,fieldType:i});f({...g,endDate:a}),F({...g,endDate:a})}},className:"rounded-md border",disabled:()=>!1})]})]})]}:{className:"space-y-3 flex flex-col items-center",children:[a.jsx(Tge,{children:"Choose specific date"}),a.jsx(qpe,{mode:"single",selected:m,onSelect:e=>{if(e&&((a=e)instanceof Date?!isNaN(a.getTime()):"object"==typeof a&&"type"in a&&"relative"===a.type&&MEe(a))){const a=EEe({date:e,fieldType:i});h(a),y(""),C(!1),R(null),j(null),P(!1)}else e||h(void 0);var a},className:"rounded-md border",disabled:()=>!1})]})})]}),a.jsxs("div",{className:"space-y-3 pt-4",children:[_&&!T&&v.trim()&&A&&a.jsxs("div",{className:"flex items-center gap-2 text-sm text-red-600 bg-red-50 border border-red-200 rounded-md p-3",children:[a.jsx("div",{className:"text-red-500",children:"⚠"}),a.jsxs("div",{children:[a.jsx("div",{className:"font-medium",children:"Could not parse date"}),a.jsx("div",{className:"text-xs text-red-500 mt-1",children:'Try formats like "14 days ago", "last week", or "3 days from now"'})]})]}),a.jsxs("div",{className:"flex justify-end space-x-2",children:[a.jsx(Wa,{variant:"destructive",onClick:()=>{n()},disabled:T,children:"Cancel"}),a.jsx(Wa,{onClick:G,disabled:T,children:T?"Parsing...":"Confirm"})]})]})]})})},PEe=({value:e,onClick:n,operator:t,disabled:i=!1})=>{if(t===Noe.BETWEEN_MONTH_DAY||t===Noe.BETWEEN_MONTH_DAY_YEAR){const t=e.length>0?e[0]:null,r=t?.startDate?jEe(t.startDate):"Start date...",o=t?.endDate?jEe(t.endDate):"End date...";return a.jsxs("div",{className:"flex gap-2",children:[a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[140px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:r,children:Xxe(r,140,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[140px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:o,children:Xxe(o,140,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]})]})}const r=e.length>0?jEe(e[0]):"Select date...";return a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[200px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:r,children:Xxe(r,200,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]})},LEe=({fieldType:e,operator:n,value:t,onChange:i,options:o,toast:s,viewOnly:l=!1})=>{const[u,c]=r.useState(!1);if(e===Toe.String||e===Toe.ReachResource||e===Toe.Array)return n===Noe.EXISTS||n===Noe.NOT_EXISTS?l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null:a.jsx(pTe,{options:(o||[]).map((e=>({category:"Options",items:[{label:e.displayName,value:e.id}]}))),onValueChange:e=>{l||i(e)},selectedValues:t.filter((e=>null!=e&&void 0!==e&&""!==e)).map((e=>{const a=(o||[]).find((a=>a.id===String(e)||a.displayName===String(e)||a.id===a.displayName&&a.id===String(e)));return a?.id||String(e)})),setSelectedValues:e=>{l||i(e)},isLoading:!o||0===o.length});if(e===Toe.Date||e===Toe.DateTime){if(n===Noe.EXISTS||n===Noe.NOT_EXISTS)return l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null;return n===Noe.EQUALS_MONTH_DAY||n===Noe.EQUALS_MONTH_DAY_YEAR||n===Noe.GREATER_THAN||n===Noe.LESS_THAN||(n===Noe.BETWEEN_MONTH_DAY||n===Noe.BETWEEN_MONTH_DAY_YEAR)||n===Noe.EQUALS?a.jsxs(a.Fragment,{children:[a.jsx(PEe,{value:t,onClick:()=>!l&&c(!0),operator:n,disabled:l}),!l&&a.jsx(_Ee,{isOpen:u,onClose:()=>c(!1),onConfirm:i,fieldType:e,operator:n,currentValue:t,toast:s})]}):null}if(e===Toe.Number||e===Toe.Integer)return n===Noe.EXISTS||n===Noe.NOT_EXISTS?l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null:a.jsx(Lo,{type:"number",value:t.length>0?String(t[0]):"",onChange:e=>!l&&i([Number(e.target.value)]),className:"w-[200px]",disabled:l});if(e===Toe.Boolean){if(n===Noe.EXISTS||n===Noe.NOT_EXISTS)return l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null;const e=t.length>0&&Boolean(t[0]);return a.jsx(hNe,{checked:e,onCheckedChange:e=>!l&&i([e]),disabled:l})}return a.jsx(Lo,{value:t.length>0?String(t[0]):"",onChange:e=>!l&&i([e.target.value]),className:"w-[200px]",disabled:l||!0})},BEe=({condition:e,onUpdate:i,onDuplicate:r,onDelete:o,segmentsConditions:s,totalConditions:l,viewOnly:u=!1})=>{const{toast:c}=Ck(),[d,m]=n.useState(!1),[h,p]=n.useState(!1),g=n.useRef(null),[f,v]=n.useState({top:0,right:0}),y=n.useRef(null),k=(e=>{const a=s.conditions.find((a=>a.field===e));return a||null})(e.field)||{operators:[],type:Toe.String,options:void 0,description:void 0},b=k.operators,S=k.type,w=s.conditions.map((e=>({value:e.field,label:XTe[e.field]||e.field,description:e.description})));n.useEffect((()=>{setTimeout((()=>document.body.style.pointerEvents=""),0)}),[]),n.useEffect((()=>{if((d||h)&&g.current){const e=g.current.getBoundingClientRect();v({top:e.top-12,right:window.innerWidth-e.right-12})}}),[d,h]);return a.jsxs(a.Fragment,{children:[!u&&t.createPortal(a.jsxs("div",{className:"fixed flex gap-1 z-50 transition-all duration-200 ease-in-out pointer-events-none",style:{top:f.top,right:f.right,opacity:d||h?1:0,transform:d||h?"scale(1)":"scale(0.8)",pointerEvents:d||h?"auto":"none"},onMouseEnter:()=>{y.current&&clearTimeout(y.current),p(!0)},onMouseLeave:()=>{p(!1),y.current=setTimeout((()=>{m(!1)}),100)},children:[a.jsx(Wa,{size:"sm",variant:"secondary",onClick:r,className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-gray-50",children:a.jsx(L,{className:"h-3 w-3"})}),l>1&&a.jsx(Wa,{size:"sm",variant:"secondary",onClick:o,className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-red-50 hover:border-red-200 hover:text-red-600",children:a.jsx(be,{className:"h-3 w-3"})})]}),document.body),a.jsx("div",{ref:g,className:"bg-white rounded-lg border border-gray-200 p-4 transition-all duration-200 "+(u?"bg-gray-50 border-gray-300":"hover:border-gray-300 hover:shadow-sm"),onMouseEnter:u?void 0:()=>{y.current&&clearTimeout(y.current),m(!0)},onMouseLeave:u?void 0:()=>{y.current=setTimeout((()=>{h||m(!1)}),100)},children:a.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch gap-3 min-w-0 w-full",children:[a.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[(k.description||e.field)&&a.jsx(ex,{title:"Field Information",description:k.description||`This field represents: ${e.field}`,Icon:H,size:"small",iconColor:"text-gray-400 hover:text-gray-600",children:a.jsx(Wa,{size:"sm",variant:"secondary",className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-blue-50 hover:border-blue-200 hover:text-blue-600 flex-shrink-0",children:a.jsx(H,{className:"h-3 w-3"})})}),a.jsx(eNe,{options:w,value:e.field,placeholder:"Select field",onChange:a=>{const n=a,t=s.conditions.find((e=>e.field===n));if(!t)return;const r=t.operators.map((e=>({value:e,label:QTe(e,t.type),fieldType:t.type}))),o=r[0]?.value;let l=[];switch(t.type){case Toe.Boolean:l=[!1];break;case Toe.Number:l=[0];break;case Toe.Date:case Toe.DateTime:l=[new Date];break;default:l=[]}i({...e,field:n,operator:o,value:l})},className:"w-full",disableInput:!0,disabled:u})]}),a.jsxs("div",{className:"flex-1 min-w-0 max-w-xs flex gap-2 items-center",children:[(e.operator===Noe.EQUALS_MONTH_DAY||e.operator===Noe.EQUALS_MONTH_DAY_YEAR||e.operator===Noe.BETWEEN_MONTH_DAY||e.operator===Noe.BETWEEN_MONTH_DAY_YEAR)&&a.jsx("div",{className:"flex items-center",children:(e=>{let n;switch(e){case Noe.EQUALS_MONTH_DAY:n="This operator will check if only the month and day are equal. This is useful for things like birthday, where year does not matter. Use this for segments you would like to reuse annually.";break;case Noe.EQUALS_MONTH_DAY_YEAR:n="This operator will check if only the month and day are equal. This is useful for things like appointment dates, where the specific date is important.";break;case Noe.BETWEEN_MONTH_DAY:n="This operator will check if the date is between the two dates, but only checking the month and the day, not the year. This is helpful for things like birthday, where year does not matter. Use this for segments you would like to rescuer annually.";break;case Noe.BETWEEN_MONTH_DAY_YEAR:n="This operator will check if the date is between the two dates, checking the month, day and year. This is helpful for things like appointment dates, where specific day, month and year is important";break;default:return null}return a.jsx(ex,{title:n})})(e.operator)}),a.jsx(eNe,{options:b.map((e=>({value:e,label:e?QTe(e,S):e}))),value:e.operator,onChange:a=>{const n=a;i({...e,operator:n,value:[]})},placeholder:"Select operator",className:"w-full",disableInput:!0,disabled:u})]}),a.jsx("div",{className:"flex-1 min-w-0 max-w-full overflow-x-hidden",children:a.jsx(LEe,{fieldType:S,operator:e.operator,options:"string"==typeof e.value[0]&&e.value[0]&&Array.isArray(k.options)?[...(k.options||[]).map((e=>({displayName:e.displayName,id:e.id}))),...e.value.filter((e=>e&&"string"==typeof e&&""!==e.trim()&&!k.options?.some((a=>a.id===e||a.displayName===e)))).map((e=>({displayName:e,id:e})))]:k.options?.map((e=>({displayName:e.displayName,id:e.id})))||[],value:e.value,onChange:a=>i({...e,value:a}),toast:c,viewOnly:u})})]})})]})},REe=({segment:e,setSegment:n,segmentsConditions:t,updateCondition:i,duplicateCondition:r,deleteCondition:o,addCondition:s,businessId:l,viewOnly:u=!1,segmentType:c,existingSegmentConditions:d})=>{const{data:m,isLoading:h,error:p}=Roe(e.type,e.conditions,l,{debounceMs:500},d),g=m?.recipients.map((e=>({firstName:e.firstName??"",lastName:e.lastName??"",email:e.email,phone:e.phone})))??[],f=m?.estimatedTotal??0;return a.jsx(ooe,{className:"flex-1 flex flex-col overflow-visible",children:a.jsxs("div",{className:"flex h-full gap-6 overflow-visible",children:[a.jsxs("div",{className:"flex-1 flex flex-col overflow-visible",children:[a.jsxs("div",{className:"mb-6 grid grid-cols-2 gap-2",children:[a.jsxs("div",{className:"grid gap-2",children:[a.jsxs("div",{className:"flex items-center gap-0",children:[a.jsx(Tge,{children:"Name"}),!u&&a.jsx("span",{className:"text-xs text-red-500 ml-1 align-super",children:"*"})]}),a.jsx(Lo,{placeholder:`${qx("engage:segment")} name`,value:e.name,onChange:a=>n({...e,name:a.target.value}),disabled:u,className:u?"bg-gray-50 text-gray-700":""})]}),a.jsxs("div",{className:"grid gap-2",children:[a.jsx(Tge,{children:"Description"}),a.jsx(Lo,{placeholder:`${qx("engage:segment")} description`,value:e.description,onChange:a=>n({...e,description:a.target.value}),disabled:u,className:u?"bg-gray-50 text-gray-700":""})]})]}),"sql"===c&&a.jsxs("div",{className:"mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),a.jsx("p",{className:"text-sm text-blue-700 font-medium",children:"Custom Segment"})]}),a.jsx("p",{className:"text-sm text-blue-600 mt-1",children:"This segment is managed by your admin and cannot be edited here."})]}),a.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden pb-8",children:a.jsx("div",{className:"grid overflow-visible",children:a.jsxs(jd,{mode:"popLayout",children:["sql"!==c&&e.conditions.map(((n,s)=>a.jsxs(gk.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},transition:{type:"spring",stiffness:300,damping:30,mass:.5},style:{overflow:"visible"},children:[s>0&&a.jsxs(gk.div,{className:"relative flex items-center py-2",initial:{opacity:0},animate:{opacity:1},transition:{delay:.1},children:[a.jsx(gk.div,{className:"h-px flex-1 bg-border",initial:{scaleX:0},animate:{scaleX:1},transition:{type:"spring",stiffness:300,damping:30,mass:.5}}),a.jsx(gk.span,{className:"text-muted-foreground text-xs",initial:{opacity:0},animate:{opacity:1},transition:{delay:.2},children:"AND"}),a.jsx(gk.div,{className:"h-px flex-1 bg-border",initial:{scaleX:0},animate:{scaleX:1},transition:{type:"spring",stiffness:300,damping:30,mass:.5}})]}),a.jsx(BEe,{condition:n,onUpdate:e=>i(s,e),segmentsConditions:t,onDuplicate:()=>r(s),onDelete:()=>o(s),totalConditions:e.conditions.length,viewOnly:u})]},`${n.field}-${n.operator}-${s}`))),!u&&"sql"!==c&&a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{type:"spring",stiffness:300,damping:30,mass:.5},className:"pt-4",children:a.jsxs(Wa,{variant:"secondary",onClick:s,children:[a.jsx(oe,{className:"h-4 w-4"}),"Add Condition"]})},"add-condition-button")]})})})]}),a.jsxs("div",{className:"w-96 flex flex-col h-full overflow-hidden",children:[a.jsxs("div",{className:"mb-4 flex-shrink-0",children:[a.jsx("h3",{className:"text-lg font-semibold text-foreground",children:"Recipients Preview"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:h?"Loading recipients...":f>0?`${f.toLocaleString()} users match your conditions`:"No users match your conditions"})]}),a.jsx("div",{className:"flex-1 min-h-0 flex flex-col",children:h?a.jsx("div",{className:"flex items-center justify-center h-full",children:a.jsx("div",{className:"animate-spin h-6 w-6 border-2 border-blue-600 border-t-transparent rounded-full"})}):p?a.jsx("div",{className:"flex items-center justify-center h-full text-red-600",children:a.jsx("p",{children:"Error loading recipients"})}):a.jsx(YTe,{recipients:g,filter:"all",audienceMode:UTe.SEGMENTS,isSegmentBuilder:!0})})]})]})})},DEe=({segmentId:e,setOpen:n,setTextToSegment:t,promptBuilderStyle:i,textToSegment:r,viewOnly:o=!1})=>a.jsx("div",{children:a.jsx(Si,{className:"",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Ai,{className:"text-3xl font-normal",children:o?`View ${qx("engage:segment")}`:e?`Edit ${qx("engage:segment")}`:`Create ${qx("engage:segment")}`}),a.jsxs("div",{className:"flex items-center gap-2",children:[!o&&!1===i&&!1===r&&a.jsx(zT,{children:a.jsxs(OT,{children:[a.jsx(KT,{asChild:!0,children:a.jsx(Wa,{variant:"outline",size:"sm",onClick:()=>t(!0),children:a.jsx(fe,{className:"h-4 w-3"})})}),a.jsx(IT,{children:a.jsxs("p",{children:["Use AI to create ",qx("engage:segment")," by describing them in natural language"]})})]})}),a.jsx(Wa,{variant:"ghost",size:"icon",onClick:()=>{n(!1)},className:"h-8 w-8",children:a.jsx(Ee,{className:"h-4 w-4"})})]})]})})}),zEe=({setTextToSegment:e,setSegment:t,setSegmentName:i,setSegmentDescription:r,currentSegment:o})=>{const[s,l]=n.useState(""),[u,c]=n.useState(!1),[d,m]=n.useState(!1),[h,p]=n.useState(),[g,f]=n.useState(null),v=n.useRef(null),{toast:y}=Ck(),{sendNotificationAsync:k}=lS();n.useEffect((()=>{if(g&&i&&r){const a=`${g.title}-${g.description}-${JSON.stringify(g.conditions)}`;if(v.current===a)return;v.current=a,i&&r&&(!g.title||o?.name&&""!==o.name.trim()||i(g.title),!g.description||o?.description&&""!==o.description.trim()||r(g.description)),t(g.conditions),f(null),e(!1)}}),[g]);return a.jsxs("div",{className:"flex flex-col gap-6 p-4",children:[a.jsxs("div",{className:"space-y-2 text-center",children:[a.jsx("h3",{className:"text-lg font-semibold text-foreground",children:"Describe your audience"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Describe the audience you want to target in plain language, and our AI will create the conditions for you."})]}),a.jsx(jd,{mode:"wait",children:d&&h&&a.jsx(gk.div,{initial:{opacity:0,y:20,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-20,scale:.95},transition:{type:"spring",stiffness:300,damping:30,duration:.3},className:"rounded-lg border border-amber-200 bg-amber-50 p-4",children:a.jsxs("div",{className:"flex items-start gap-3",children:[a.jsx("div",{className:"flex-shrink-0",children:a.jsx("div",{className:"h-5 w-5 rounded-full bg-amber-100 flex items-center justify-center",children:a.jsx("span",{className:"text-amber-600 text-sm font-medium",children:"💡"})})}),a.jsxs("div",{className:"flex-1",children:[a.jsx("h4",{className:"text-sm font-medium text-amber-800",children:"Let's try again with a better description"}),a.jsx("p",{className:"mt-1 text-sm text-amber-700",children:h}),a.jsx("p",{className:"mt-2 text-xs text-amber-600",children:"Refine your description above and try again, or use the manual builder if you prefer. Be sure to check what fields are available in the manual builder."})]})]})},"error-display")}),a.jsxs("div",{className:"space-y-4 flex flex-col items-center",children:[a.jsxs(jd,{mode:"wait",children:[u&&a.jsx(gk.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:-20},transition:{type:"spring",stiffness:400,damping:25,duration:.25},children:a.jsx(ooe,{children:a.jsx("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:a.jsx(gk.div,{animate:{rotate:360},transition:{duration:2,repeat:1/0,ease:"linear"},children:a.jsx(fd,{})})})})},"loading-state"),!u&&a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{type:"spring",stiffness:300,damping:30,duration:.3},className:"w-full max-w-2xl",children:a.jsx(ooe,{children:a.jsx(vge,{placeholder:"Describe your target audience...",className:"min-h-[120px] resize-none w-full",value:s,onChange:e=>l(e.target.value),disabled:u})})},"input-state")]}),a.jsx(jd,{mode:"wait",children:!u&&a.jsxs(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{type:"spring",stiffness:300,damping:30,duration:.3,delay:.1},className:"flex justify-center gap-2",children:[d&&a.jsx(gk.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{type:"spring",stiffness:400,damping:25,duration:.25},children:a.jsx(Wa,{variant:"outline",onClick:()=>{m(!1),p(void 0)},disabled:u,children:"Try Again"})}),a.jsxs(Wa,{onClick:async()=>{if(!s)return void y({title:"Please enter a description",description:"Please enter a description of your target audience",variant:"destructive"});c(!0),m(!1),p(void 0);const a=await(async e=>(await aS(`${Tk}/text-to-segment`,{method:"POST",body:JSON.stringify(e)})).data)({text:s,userCustomVerb:qx("engage:user")});if(k({message:"💬 New AI Segment requested",product:"engage",details:{userInput:s,response:a}}),a.success&&a.conditions){if(0===a.conditions.length)return m(!0),p("Received empty segment conditions from AI. This might indicate a system issue."),y({title:`${qx("engage:segment")} build failed`,description:"Something unexpected happened. Please try again or use manual builder.",variant:"destructive"}),void e(!1);f({conditions:a.conditions,title:a.title,description:a.description})}else m(!0),p(a.failureReason);c(!1)},disabled:u||!s.trim(),children:[a.jsx(fe,{className:"h-4 w-4"}),d?"Generate Again":`Generate ${qx("engage:segment")}`]}),a.jsx(Wa,{variant:"ghost",onClick:()=>{e(!1)},disabled:u,children:"Cancel"})]},"button-group")})]})]})};function OEe({segmentId:e,setOpen:n,onSegmentUpdated:t,viewOnly:i=!1}){const{toast:o}=Ck(),{data:s}=rS(),l=void 0===e,[u,c]=r.useState(!1),[d,m]=r.useState(null),{segment:h,isLoading:p}=Loe(e||""),{updateSegment:g}=(e=>{const a=jb(),n=Kb({mutationFn:a=>{if(!e)throw new Error("Segment ID is required");return Moe(e,a)},onSuccess:()=>{a.invalidateQueries({queryKey:Eoe.all})}});return{updateSegment:n.mutate,isUpdating:n.isPending,updateError:n.error,isUpdateSuccess:n.isSuccess}})(e),{createSegment:f,isCreating:v,segmentsConditions:y}=joe(),[k,b]=r.useState(!1),[S,w]=r.useState(!i&&!!l);if(r.useEffect((()=>{if(y)if(h){const e=h.conditions.map((e=>({field:e.field,operator:e.operator,value:e.value})));m({version:"1.0",id:h.id,name:h.name,description:h.description,logic:"AND",conditions:e,type:h.type})}else m((e=>({version:"1.0",id:"",name:e?.name||"",description:e?.description||"",logic:"AND",conditions:[{field:y.conditions[0].field,operator:y.conditions[0].operators[0],value:[]}],type:xoe.CUSTOM})))}),[h,y]),!y||p||!d)return a.jsx("div",{className:"flex h-full items-center justify-center",children:a.jsx(fd,{})});const A=e=>e.value.some((e=>"object"==typeof e&&"type"in e&&"relative"===e.type)),C=e=>e.value.some((e=>"object"==typeof e&&"startDate"in e&&"endDate"in e));return a.jsxs(a.Fragment,{children:[a.jsx(DEe,{segmentId:e,setOpen:n,setTextToSegment:b,promptBuilderStyle:S,textToSegment:k,viewOnly:i},"segment-builder-header"),!i&&S?a.jsx(ooe,{className:"flex-1 flex items-center justify-center",children:a.jsx(ZTe,{onSelectStyle:e=>{"ai"===e&&b(!0),w(!1)}})},"prompt-builder-style"):a.jsx(ooe,{className:"flex-1 flex flex-col overflow-hidden",children:a.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[a.jsx("div",{className:"flex flex-1 flex-col px-8 py-2 overflow-hidden",children:a.jsx("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden",children:a.jsx(jd,{children:!i&&k?a.jsx(ooe,{className:"flex items-center justify-center min-h-full",children:a.jsx(zEe,{setTextToSegment:b,setSegment:e=>{m((a=>a?{...a,conditions:e}:null))},setSegmentName:e=>{m((a=>{if(!a)return null;return{...a,name:e}}))},setSegmentDescription:e=>{m((a=>{if(!a)return null;return{...a,description:e}}))},currentSegment:d})}):a.jsx(a.Fragment,{children:a.jsx(REe,{segment:d,setSegment:m,segmentsConditions:y,updateCondition:(e,a)=>{const n=[...d.conditions];n[e]=a,m({...d,conditions:n})},duplicateCondition:e=>{const a=[...d.conditions];a.splice(e+1,0,{...d.conditions[e]}),m({...d,conditions:a})},deleteCondition:e=>{const a=d.conditions.filter(((a,n)=>n!==e));m({...d,conditions:a})},addCondition:()=>{m({...d,conditions:[...d.conditions,{field:y.conditions[0].field,operator:y.conditions[0].operators[0],value:[]}]})},businessId:s?.id??"",viewOnly:i,segmentType:h?.type,existingSegmentConditions:h?.conditions})})})})}),a.jsx("div",{className:"border-t px-8 py-4",children:a.jsxs("div",{className:"flex items-center justify-between",children:[!i&&k&&a.jsxs(Wa,{variant:"secondary",onClick:()=>b(!1),children:[a.jsx(ce,{className:"h-4 w-4"}),"Manual Builder"]}),a.jsx("div",{className:"flex gap-2 ml-auto",children:i?a.jsx(Wa,{variant:"default",onClick:()=>n(!1),children:"Close"}):a.jsxs(a.Fragment,{children:[a.jsx(Wa,{variant:"destructive",onClick:()=>n(!1),children:"Cancel"}),a.jsx(Wa,{variant:"default",onClick:async()=>{if(!d.name)return void o({title:"Name is required",description:"Please ensure all fields are filled out",variant:"destructive"});const{valid:a,error:i}=(e=>{for(const a of e){if(!a.field||!a.operator)return{valid:!1,error:"Please ensure all fields are filled out for condition"};if(a.operator!==Noe.EXISTS&&a.operator!==Noe.NOT_EXISTS&&0===a.value.length)return{valid:!1,error:`Please ensure a value is selected for ${a.field}`};if((a.operator===Noe.EXISTS||a.operator===Noe.NOT_EXISTS)&&a.value.length>0)return{valid:!1,error:`EXISTS or NOT_EXISTS operator can only be used with an empty array for ${a.field}`};if(A(a)&&a.operator!==Noe.EQUALS_MONTH_DAY&&a.operator!==Noe.EQUALS_MONTH_DAY_YEAR&&a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR&&a.operator!==Noe.GREATER_THAN&&a.operator!==Noe.LESS_THAN)return{valid:!1,error:`Relative dates can only be used with the month and day or month, day, and year operator for ${a.field}`};if(A(a)&&void 0===a.value[0].value)return{valid:!1,error:`Please select a value for the relative date for ${a.field}`};if(C(a)&&a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR)return{valid:!1,error:`Between dates can only be used with the between month day or between month day year operator for ${a.field}`};if(C(a)&&a.value.length>1)return{valid:!1,error:`Between dates can only have a single value for ${a.field}`};if(C(a)){const e=a.value[0];if(!e.startDate||!e.endDate)return{valid:!1,error:`Please ensure both a start and end date are selected for ${a.field}`};if(e.startDate instanceof Date&&e.endDate instanceof Date&&e.startDate>e.endDate)return{valid:!1,error:`Start date must be before end date for ${a.field}`};if("object"==typeof e.startDate&&"type"in e.startDate&&"relative"===e.startDate.type&&"object"==typeof e.endDate&&"type"in e.endDate&&"relative"===e.endDate.type){if(!e.startDate.value||!e.endDate.value)return{valid:!1,error:`Please ensure both a start and end date are selected for ${a.field}`};if(a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR&&e.startDate.direction!==e.endDate.direction)return{valid:!1,error:`Start and end date must be in the same direction (both in the past or both in the future) for ${a.field}`};const n=e=>{if(e.unit===qTe.DAYS)return e.value??0;throw poe(e.unit,qTe)};if(a.operator===Noe.BETWEEN_MONTH_DAY||a.operator===Noe.BETWEEN_MONTH_DAY_YEAR){const n=new Date,t=new Date(n),i=new Date(n);if(t.setDate("before"===e.startDate.direction?n.getDate()-e.startDate.value:n.getDate()+e.startDate.value),i.setDate("before"===e.endDate.direction?n.getDate()-e.endDate.value:n.getDate()+e.endDate.value),t>=i)return{valid:!1,error:`Start date must be before end date for ${a.field}`}}else{if("before"===e.startDate.direction&&n(e.startDate)<=n(e.endDate))return{valid:!1,error:`Start date must be before end date for ${a.field}`};if("after"===e.startDate.direction&&n(e.startDate)>=n(e.endDate))return{valid:!1,error:`Start date must be before end date for ${a.field}`}}}}}return{valid:!0,error:void 0}})(d.conditions);if(!a)return void o({title:"Conditions are invalid",description:i??"Please ensure all fields are filled out",variant:"destructive"});const r=d.conditions.map((e=>{const a=y?.conditions.find((a=>a.field===e.field));return a?.type===Toe.Date&&(e.value=e.value.map((e=>e instanceof Date?e.toISOString().split("T")[0]:e))),e}));c(!0);try{e&&h?g({name:d.name,description:d.description,conditions:r},{onSuccess:()=>{o({title:`${qx("engage:segment")} updated successfully`}),n(!1),t?.(e)},onError:()=>{o({title:`Error updating ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}}):f({name:d.name,description:d.description,conditions:d.conditions},{onSuccess:e=>{o({title:`${qx("engage:segment")} created successfully`}),t?.(e?.id??!1),n(!1)},onError:()=>{o({title:`Error creating ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}})}catch(s){o({title:`Error saving ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}finally{c(!1)}},disabled:u||v,children:u||v?a.jsxs(a.Fragment,{children:[a.jsx(V,{className:"mr-2 h-4 w-4 animate-spin"}),e?"Updating...":"Creating..."]}):e?"Update":"Create"})]})})]})})]})},"manual-builder-style")]})}function KEe({open:e,setOpen:n,segmentId:t,onSegmentUpdated:i,viewOnly:r=!1}){return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"flex h-[85vh] w-[85vw] max-w-none flex-col gap-0 overflow-hidden",hideCloseButton:!0,children:[a.jsxs(We,{children:[a.jsxs(Ai,{children:[qx("engage:segment")," Builder"]}),a.jsxs(Ci,{children:["Build a ",qx("engage:segment")," to target your audience"]})]}),a.jsx(OEe,{segmentId:t,setOpen:n,onSegmentUpdated:e=>{i?.(e),n(!1)},viewOnly:r})]})})}const IEe="reach-EstimatedMatchesView-module__learnMoreLink___M-mr-",HEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternative___kBAuQ",FEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternativeText___Sifb-",GEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternativeTitle___rIfFG",VEe=()=>a.jsx(ex,{title:`The total number of ${qx("engage:user",{count:2}).toLocaleLowerCase()} may not match your SMS and email counts because some ${qx("engage:user",{count:2}).toLocaleLowerCase()} may have unsubscribed, invalid contact information, or haven't opted into marketing messages. This number can also change as new ${qx("engage:user",{count:2}).toLocaleLowerCase()} join your segments.`}),JEe=({value:e,label:n,percentage:t,variant:i,isLoading:r,selected:o,onClick:s,tooltip:l})=>a.jsxs(gk.div,{className:`rounded-md border-2 border-muted-foreground/20 px-2 pt-2 pb-3 duration-300 ease-in-out overflow-x-auto max-w-full min-w-0 ${o?"scale-[1.02] [border-color:hsl(var(--reach-primary))] shadow-lg":""} ${s?"cursor-pointer hover:bg-gray-50/50 transition-colors":""}`,style:{containerType:"inline-size"},"data-card-container":!0,onClick:s,layout:!0,children:[a.jsxs("div",{className:"flex flex-col gap-1 items-start w-full min-w-0",children:[a.jsx("div",{className:"flex items-baseline gap-2 w-full min-w-0 @container/num h-8",children:a.jsx(jd,{mode:"wait",children:r?a.jsx(gk.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"flex items-center gap-2 pl-2 h-full",children:a.jsx(fd,{size:"sm",textColor:"text-gray-500"})},"loading"):a.jsxs(gk.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"flex items-center gap-1 h-full",children:[a.jsx("span",{className:"font-semibold pl-2 break-words max-w-full min-w-0 truncate\n text-xl @[250px]/card:text-2xl @[350px]/card:text-3xl @[500px]/card:text-4xl text-primary",children:e.toLocaleString()}),l&&a.jsx(ex,{title:l}),void 0!==t&&e.toLocaleString().replace(/,/g,"").length<5&&a.jsxs("span",{className:"text-muted-foreground/50 text-sm hidden @[120px]/num:inline",children:["(",t,"%)"]})]},"content")})}),a.jsx("span",{className:`px-2 sm:px-2.5 py-1 text-xs font-medium rounded-lg ${{default:"bg-gray-100/50 text-gray-700",blue:"bg-blue-100/50 text-blue-700",green:"bg-green-100/50 text-green-700"}[i]}`,children:n})]}),a.jsx("p",{className:"text-sm text-muted-fore hidden @[250px]/card:inline mt-1",children:1===e?"contact":"contacts"})]}),UEe=({countResponse:e,selectedFilter:t="all",onFilterChange:i,isLoading:r=!1})=>{const o=n.useMemo((()=>e?.recipients?e.recipients.reduce(((a,n)=>({total:e.count,emails:a.emails+(n.email?1:0),phones:a.phones+(n.phone?1:0)})),{total:0,emails:0,phones:0}):{total:0,emails:0,phones:0}),[e]),s=e=>Math.round(e/(o.total||1)*100),l=o.total>Math.max(o.emails,o.phones);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Tge,{children:"Estimated Matches"}),a.jsx(VEe,{})]}),l&&a.jsx("div",{className:HEe,children:a.jsxs("p",{className:FEe,children:[a.jsx("span",{className:GEe,children:"Total vs. Subscribed mismatch?"})," ","Some ",qx("engage:user",{count:2}).toLowerCase()," may have unsubscribed or had hard bounces."," ",a.jsx(ex,{description:"This can happen when customers unsubscribe, emails bounces, or contact info is missing. This is normal and expected.",size:"small",iconColor:"text-muted-foreground",children:a.jsx("span",{className:IEe,children:"Learn more"})})]})}),a.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 md:mb-6 w-full gap-4 mt-3 px-1",children:[a.jsx(JEe,{value:o.total,label:"Total",variant:"default",isLoading:r||void 0===e,selected:"all"===t,onClick:i?()=>i("all"):void 0,tooltip:`Total includes all ${qx("engage:user",{count:2}).toLocaleLowerCase()} in your system. This does not factor in ${qx("engage:user",{count:2}).toLocaleLowerCase()} who might have opted out of email or sms.`}),a.jsx(JEe,{value:o.emails,label:"Subscribed to Email",percentage:s(o.emails),variant:"blue",isLoading:r||void 0===e,selected:"email"===t,onClick:i?()=>i("email"):void 0}),a.jsx(JEe,{value:o.phones,label:"Subscribed to SMS",percentage:s(o.phones),variant:"green",isLoading:r||void 0===e,selected:"phone"===t,onClick:i?()=>i("phone"):void 0})]})]})},WEe=({onSelectionChange:e,defaultValue:t=UTe.ALL,canEditAudience:i=!0})=>{const[r,o]=n.useState(t),s=a=>{i&&(o(a),e?.(a))};return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Tge,{children:"Filter"}),!i&&a.jsx(ex,{title:"You cannot edit the audience unless you are in draft mode"})]}),a.jsxs("div",{className:"grid grid-cols-3 gap-4 p-1",children:[a.jsx("div",{id:"all-users-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.ALL),title:`All ${qx("engage:user",{count:2})}`,subtitle:"Send to everyone",icon:a.jsx(sM.UsersIcon,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"all"===r,disabled:!i,hideSelectedText:!0})}),a.jsx("div",{id:"segments-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.SEGMENTS),title:`Select ${qx("engage:segment",{count:2})}`,subtitle:`Choose from ${qx("engage:segment",{count:2})}`,icon:a.jsx(sM.UserEdit,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"segments"===r,disabled:!i,hideSelectedText:!0})}),a.jsx("div",{id:"individual-users-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.INDIVIDUAL),title:"Select Individual",subtitle:`Pick ${qx("engage:user",{count:2}).toLowerCase()} one by one`,icon:a.jsx(sM.UserIcon,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"individual"===r,disabled:!i,hideSelectedText:!0})})]})]})},qEe=e=>{const a=`${e.firstName||""} ${e.lastName||""}`.trim();return a||(e.firstName?e.firstName:e.lastName?e.lastName:e.email?e.email:e.phone?e.phone:"Unnamed User")},ZEe=({selectedUserIds:e,onUserSelectionChange:t,canEditAudience:i=!0})=>{const[r,o]=n.useState(e),[s,l]=n.useState(),[u,c]=n.useState(!0),{segments:d}=_oe();n.useEffect((()=>{o(e)}),[e]),n.useEffect((()=>{(async()=>{if(!d)return void c(!1);if(s?.recipients)return void c(!1);const e=d.find((e=>e.type===xoe.ALL_USERS));if(e){c(!0);try{const a=await Coe({includeSegments:[e.id],excludeSegments:[]});l(a)}catch(a){}finally{c(!1)}}else c(!1)})()}),[d,s?.recipients]);const m=n.useMemo((()=>s?.recipients?s.recipients.map((e=>({label:qEe(e),value:e.externalId}))):[]),[s?.recipients]);return a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-medium text-gray-900",children:"Select Individual Users"}),a.jsx("p",{className:"text-sm text-gray-500",children:"Choose specific users to include in your automation"})]}),e.length>0&&a.jsxs("div",{className:"text-sm text-gray-500",children:[e.length," user",1!==e.length?"s":""," selected"]})]}),a.jsx(pTe,{options:[{category:"Users",items:m}],onValueChange:e=>{o(e),t(e)},selectedValues:r,setSelectedValues:o,isLoading:u,placeholder:"Select users...",title:"Select Individual Users",searchPlaceholder:"Search users...",emptyMessage:"No users found",canOpen:i})]})},$Ee=({segments:e,allSegments:t,onAddSegment:i,onRemoveSegment:r,setOpenCreateSegmentDialog:o,canEditAudience:s=!0})=>{const[l,u]=n.useState(!1),[c,d]=n.useState([]),m=t.map((e=>({label:e.name,value:e.id})));return n.useEffect((()=>{d(e)}),[e]),n.useEffect((()=>{if(0===t.length){u(!0);const e=setTimeout((()=>{u(!1)}),100);return()=>clearTimeout(e)}u(!1)}),[t.length]),a.jsx("div",{children:a.jsx(pTe,{canOpen:s,selectedValues:c,setSelectedValues:d,options:[{category:"Segments",items:m}],onValueChange:a=>{const n=a.filter((a=>!e.includes(a))),t=e.filter((e=>!a.includes(e)));n.forEach(i),t.forEach(r)},isLoading:l,placeholder:`Select ${qx("engage:segment",{count:2})}`,maxCount:5,title:`Select ${qx("engage:segment",{count:2})}`,extraCommandItems:[e=>a.jsxs("div",{onClick:()=>{e(!0),o(!0)},className:"cursor-pointer flex items-center gap-2 px-3 py-2 hover:bg-gray-100 rounded-md transition-colors",children:[a.jsx(sM.PlusIcon,{className:"w-4 h-4"}),"New"]},"new-segment")]})})},YEe=({includedSegments:e,excludedSegments:t,handleAddSegment:i,handleRemoveSegment:r,setOpenCreateSegmentDialog:o,segments:s,defaultIsExcludeOpen:l=!1,canEditAudience:u=!0})=>{const[c,d]=n.useState(l);return a.jsxs("div",{children:[a.jsx($Ee,{segments:e,allSegments:s||[],onAddSegment:e=>i(e,"include"),onRemoveSegment:e=>r(e,"include"),setOpenCreateSegmentDialog:o,canEditAudience:u}),a.jsx("div",{className:"border-t border-gray-200 my-8"}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs(Wa,{onClick:()=>{u&&d(!c)},className:"flex items-center gap-1 transition-colors",size:"sm",children:[a.jsx(gk.div,{animate:{rotate:c?180:0},transition:{duration:.2},children:a.jsx(sM.DropdownMenuTrigger,{className:"w-5 h-5"})}),a.jsx("span",{children:"Don't send to"})]}),a.jsx(jd,{children:c&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2,ease:"easeInOut"},children:a.jsx($Ee,{canEditAudience:u,segments:t,allSegments:s||[],onAddSegment:e=>i(e,"exclude"),onRemoveSegment:e=>r(e,"exclude"),setOpenCreateSegmentDialog:o})})})]})]})},QEe=({title:e="Preview Audience"})=>{const t=zoe(),[i,r]=n.useState(UTe.ALL),[o,s]=n.useState(t?.includeSegmentIds||[]),[l,u]=n.useState(t?.excludeSegmentIds||[]),[c,d]=n.useState([]),[m,h]=n.useState(!1),[p,g]=n.useState(!1),[f,v]=n.useState("all"),{segments:y,isLoading:k}=_oe(),{updateAutomation:b}=qN(t?.id??""),[S,w]=n.useState(void 0),[A,C]=n.useState(!1),[M,T]=n.useState(null),x=n.useCallback((e=>{if(M&&clearTimeout(M),e)C(!0);else{const e=setTimeout((()=>{C(!1)}),100);T(e)}}),[M]),N=1===o.length&&0===l.length&&void 0!==y?.find((e=>e.type===xoe.ALL_USERS&&e.id===o[0])),E=1!==o.length||0!==l.length||N?"":o[0],{segment:j}=Loe(E),_=j?.type===xoe.ONE_OFF;n.useEffect((()=>{(async()=>{if(t&&!p&&!1===k){if(1===o.length&&void 0!==y.find((e=>e.type===xoe.ALL_USERS&&e.id===o[0])))r(UTe.ALL);else if(_&&j){if(r(UTe.INDIVIDUAL),j.conditions){const e=[];j.conditions.forEach((a=>{"userId"===a.field&&a.operator===Noe.EQUALS&&a.value.forEach((a=>{"string"==typeof a&&e.push(a)}))})),d(e)}}else r(UTe.SEGMENTS);x(!0),Coe({includeSegments:o,excludeSegments:l}).then((e=>{w(e),x(!1)})).catch((e=>{x(!1)})),g(!0)}})()}),[t,N,_,p,o,l,y,k,j,x]);n.useEffect((()=>{if(t&&p){if(i===UTe.INDIVIDUAL&&0===o.length&&0===l.length)return;JSON.stringify(o)===JSON.stringify(t.includeSegmentIds)&&JSON.stringify(l)===JSON.stringify(t.excludeSegmentIds)||(b({includeSegments:o,excludeSegments:l}),x(!0),Coe({includeSegments:o,excludeSegments:l}).then((e=>{w(e),x(!1)})).catch((e=>{x(!1)})))}}),[o,l,t,p,b,i,x]);n.useEffect((()=>()=>{M&&clearTimeout(M)}),[M]);const P=t?.status===FN.DRAFT;return a.jsxs(HTe,{title:e,children:[!k&&y&&p?a.jsxs("div",{className:"flex gap-6 w-full pb-4 px-4 min-h-0",children:[a.jsxs("div",{className:"w-1/2 min-h-0 flex flex-col gap-6",children:[a.jsx(UEe,{countResponse:S,selectedFilter:f,onFilterChange:v,isLoading:A}),a.jsx(WEe,{onSelectionChange:async e=>{if(r(e),e===UTe.ALL){const e=y?.find((e=>e.type===xoe.ALL_USERS));if(!e)return;s([e.id]),u([]),d([])}else if(e===UTe.INDIVIDUAL){if(t?.id)try{const e=WTe(t.id);let n;try{n=await zN(e)}catch(a){}if(n){if(s([n.id]),u([]),n.conditions){const e=[];n.conditions.forEach((a=>{"userId"===a.field&&a.operator===Noe.EQUALS&&a.value.forEach((a=>{"string"==typeof a&&e.push(a)}))})),d(e)}}else{const a=await Aoe({name:e,description:"One-off segment for individual user selection",type:xoe.ONE_OFF,conditions:[{field:"userId",operator:Noe.EQUALS,value:[]}]});a?.id&&(s([a.id]),u([]))}}catch(a){}}else e===UTe.SEGMENTS&&(s([]),u([]),w({count:0,recipients:[]}))},defaultValue:i,canEditAudience:P}),a.jsx(jd,{children:i===UTe.SEGMENTS&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3,ease:"easeInOut"},className:"w-full",children:a.jsx(YEe,{canEditAudience:P,includedSegments:o,excludedSegments:l,handleAddSegment:(e,a)=>{"include"===a?s((a=>[...a,e])):u((a=>[...a,e]))},handleRemoveSegment:(e,a)=>{"include"===a?s((a=>a.filter((a=>a!==e)))):u((a=>a.filter((a=>a!==e))))},setOpenCreateSegmentDialog:h,segments:y,defaultIsExcludeOpen:l.length>0})})}),a.jsx(jd,{children:i===UTe.INDIVIDUAL&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3,ease:"easeInOut"},className:"w-full",children:a.jsx(ZEe,{countResponse:S,selectedUserIds:c,onUserSelectionChange:async e=>{if(d(e),t?.id)try{const n=WTe(t.id);let i;try{i=await zN(n)}catch(a){}if(i){i=await Moe(i.id,{conditions:e.length>0?[{field:"userId",operator:Noe.EQUALS,value:e}]:[{field:"userId",operator:Noe.EQUALS,value:[]}]})}else i=await Aoe({name:n,description:"One-off segment for individual user selection",type:xoe.ONE_OFF,conditions:e.length>0?[{field:"userId",operator:Noe.EQUALS,value:e}]:[{field:"userId",operator:Noe.EQUALS,value:[]}]});if(i?.id){await b({includeSegments:[i.id],excludeSegments:[]}),await new Promise((e=>setTimeout(e,100))),x(!0);const e=await Coe({includeSegments:[i.id],excludeSegments:[]});w(e),x(!1)}}catch(a){}},canEditAudience:P})})})]}),a.jsx("div",{className:"w-1/2 min-h-0 flex flex-col",children:a.jsx(YTe,{recipients:S?.recipients||[],filter:f,audienceMode:i,isLoading:A})})]}):a.jsx("div",{children:a.jsx(fd,{text:["Fetching segments","Finishing up"]})}),a.jsx(KEe,{open:m,setOpen:h,onSegmentUpdated:e=>{e&&s((a=>[...a,e]))}})]})},XEe=()=>a.jsx("div",{id:"wizard-select-audience-step",children:a.jsx("div",{id:"wizard-audience-title-container",children:a.jsx(QEe,{title:"Select Audience"})})}),eje=({selectedChannels:e,setSelectedChannels:t,hasEmailChannelSenders:i,automationType:r,hideSms:o})=>{const{toast:s}=Ck(),l=[...i?[{label:"Email",value:"email",icon:sM.EmailIcon,checked:e.includes("email")}]:[],...o?[]:[{label:"SMS",value:"sms",icon:sM.SmsIcon,checked:e.includes("sms")}]];return n.useEffect((()=>{o&&i&&!e.includes("email")&&t(["email"])}),[o,i,e,t]),a.jsxs("div",{className:"space-y-6",children:[a.jsx("div",{className:"text-center",children:a.jsxs("p",{className:"text-muted-foreground text-sm",children:["Select the channels you want to use in this"," ",r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()]})}),a.jsx("div",{id:"wizard-channel-options-container",className:"w-full grid gap-4 max-w-2xl mx-auto "+(o?"grid-cols-1":"grid-cols-2"),children:l.map((n=>a.jsx(aTe,{id:`wizard-channel-option-${n.value}`,checked:n.checked,onCheckedChange:()=>{"email"===n.value?e.includes("email")?e.includes("sms")?t(["sms"]):s({title:"Cant Remove Email",description:`At least one channel is required for an ${r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()}`,variant:"destructive"}):t([...e,"email"]):e.includes("sms")?e.includes("email")?t(["email"]):s({title:"Cant Remove SMS",description:`At least one channel is required for an ${r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()}`,variant:"destructive"}):t([...e,"sms"])},className:"relative ring-[1px] ring-border rounded-xl px-6 py-6 text-start text-muted-foreground data-[state=checked]:ring-2 data-[state=checked]:ring-primary data-[state=checked]:font-medium hover:ring-2 hover:ring-primary/50 transition-all duration-200",children:a.jsxs("div",{className:"flex flex-col items-center text-center space-y-3",children:[a.jsx("div",{className:"w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center",children:a.jsx(n.icon,{className:"w-6 h-6 text-primary",size:24})}),a.jsxs("div",{className:"space-y-1",children:[a.jsx("span",{className:"font-semibold text-lg tracking-tight text-foreground block",children:n.label}),a.jsx("span",{className:"text-sm text-muted-foreground block",children:"email"===n.value?"Send rich content via email":"Send quick messages via text"})]}),a.jsx(nTe,{className:"absolute top-3 right-3",children:a.jsx(x,{className:"w-5 h-5 fill-primary text-primary-foreground"})})]})},n.value)))})]})},aje=({hideSms:e})=>{const{channelSenders:t}=CC(),{channelAccounts:i}=SC(),r=Ooe(),{updateCommunicationGroup:o}=Qx(),{state:{selectedChannels:s},setSelectedChannels:l}=n.useContext(ege),u=zoe(),{data:c}=cN(),d=n.useMemo((()=>TC({channelSenders:t?.results??[],channelAccounts:i?.results??[]})),[t?.results,i?.results]),m=n.useMemo((()=>vN({channelSenders:t?.results??[],channelAccounts:i?.results??[],smsApplication:c})),[t?.results,i?.results,c]),h=n.useCallback((async e=>{if(l(e),r?.id)if(e.includes("email")){if(d.length>0&&!r.emailChannelSenderId){const e=d[0];o({groupId:r?.id,params:{emailChannelSenderId:e.channelSenderId}})}}else o({groupId:r?.id,params:{emailChannelSenderId:null}});if(r?.id)if(e.includes("sms")){if(m.length>0&&!r.smsChannelSenderId){const e=m[0];o({groupId:r?.id,params:{smsChannelSenderId:e.channelSender.id}})}}else o({groupId:r?.id,params:{smsChannelSenderId:null}})}),[l,o,r?.id,r?.emailChannelSenderId,r?.smsChannelSenderId,d,m]);if(!s||void 0===d||void 0===m)return a.jsx("div",{className:"flex justify-center items-center h-full bg-white rounded-2xl w-full border border-gray-200 p-6 relative",children:a.jsx(fd,{text:["Fetching Content..."]})});const p=d.length>0;return a.jsx("div",{id:"wizard-channel-selection",className:"flex flex-col h-full w-full space-y-4 justify-center",children:a.jsxs("div",{className:"flex flex-col space-y-6",children:[a.jsx("div",{className:"text-center space-y-2",children:a.jsx("h3",{id:"wizard-channel-selection-heading",className:"text-3xl font-semibold text-foreground tracking-tight",children:"Message Channels"})}),a.jsx("div",{className:"flex justify-center",children:a.jsx(eje,{automationType:u?.triggerMetadata?.triggerType,selectedChannels:s,setSelectedChannels:h,hasEmailChannelSenders:p,hideSms:e})})]})})};var nje=(e=>(e[e.SelectChannels=1]="SelectChannels",e[e.ContentBuilderStyle=2]="ContentBuilderStyle",e[e.AIPrompt=3]="AIPrompt",e[e.EditEmailContent=4]="EditEmailContent",e[e.EditSmsContent=5]="EditSmsContent",e[e.SelectAudience=6]="SelectAudience",e[e.Schedule=7]="Schedule",e[e.PreviewAndSend=8]="PreviewAndSend",e))(nje||{});const tje="https://assets.embedreach.com/defaults/logo-placeholder-128.png",ije="You have not uploaded a custom logo. Please make sure to double check your email before sending!",rje=e=>{const a=zoe(),t=Ooe(),{state:{selectedChannels:i,contentBuilderStyle:r}}=n.useContext(ege),{data:o}=cN(),{channelSenders:s}=CC(),{channelAccounts:l}=SC(),u=vN({channelSenders:s?.results??[],channelAccounts:l?.results??[],smsApplication:o}),c=n.useCallback((async n=>a?await(async e=>{const{currentStep:a,automation:n,communicationGroup:t,selectedChannels:i,smsChannelSenders:r,contentBuilderStyle:o,isScheduleLoading:s=!1}=e;switch(a){case nje.SelectChannels:return 0===i.length?{canMove:!1,errorMessage:"Please select at least one channel"}:{canMove:!0,errorMessage:null};case nje.ContentBuilderStyle:return o?{canMove:!0,errorMessage:null}:{canMove:!1,errorMessage:"Please select a content builder style"};case nje.AIPrompt:return{canMove:!0,errorMessage:null};case nje.SelectAudience:return{canMove:n.includeSegmentIds.length>0,errorMessage:"Please ensure you have selected at least one segment"};case nje.EditSmsContent:{const e=n.actionData?.find((e=>"send_communication"===e.actionType));if(!e)return{canMove:!1,errorMessage:"Please ensure you have selected either a email communication or text communication"};if(!t)return{canMove:!1,errorMessage:"Please ensure you have selected a communication group"};const a=r.find((e=>e.channelSender.id===t.smsChannelSenderId));return a||t.emailChannelSenderId?t.smsMessageBody?a&&a.smsApplication&&a.smsApplication.status!==fN.APPROVED?{canMove:!0,errorMessage:null,warningMessage:"You will only be able to send this message once your SMS application is approved"}:{canMove:!0,errorMessage:null}:{canMove:!1,errorMessage:"Please ensure you have a text body"}:{canMove:!1,errorMessage:"Please ensure you have selected a text sender"}}case nje.EditEmailContent:{const e=n.actionData?.find((e=>"send_communication"===e.actionType));if(!e)return{canMove:!1,errorMessage:"Please ensure you have selected either a email communication or text communication"};if(!t)return{canMove:!1,errorMessage:"Please ensure you have selected a communication group"};if(!t.emailChannelSenderId&&!t.smsChannelSenderId)return{canMove:!1,errorMessage:"Please ensure you have selected an email or SMS sender"};if(!t.emailHtmlBody||!t.emailSubject)return{canMove:!1,errorMessage:"Please ensure you have a email body and subject"};let a=null;return t.emailChannelSenderId&&t.emailHtmlBody&&t.emailHtmlBody.includes(tje)&&(a=ije),{canMove:!0,errorMessage:null,warningMessage:a}}case nje.Schedule:{if(s)return{canMove:!0,errorMessage:null,warningMessage:"Schedule selection is being processed..."};if(!n.triggerMetadata)return{canMove:!1,errorMessage:"Please make sure to select a time to send before starting!"};if(n.triggerMetadata.triggerType!==ON.ONE_TIME)return{canMove:Boolean(n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),errorMessage:null};if(!n.triggerMetadata?.scheduledAt)return{canMove:!1,errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`};if(!Boolean(n.triggerMetadata?.scheduledAt&&("now"===n.triggerMetadata.scheduledAt||"now"!==n.triggerMetadata.scheduledAt&&new Date(n.triggerMetadata.scheduledAt)>new Date)))return{canMove:!1,errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`};if(!Boolean(n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))))return{canMove:!1,errorMessage:"Please ensure you have set a valid email or sms communication"};const e=n.triggerMetadata;return{canMove:Boolean(e.scheduledAt&&("now"===e.scheduledAt||new Date(e.scheduledAt)>new Date)&&n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`}}case nje.PreviewAndSend:return{canMove:!0,errorMessage:null};default:Vde(a,nje)}})({currentStep:n,automation:a,communicationGroup:t,selectedChannels:i,smsChannelSenders:u,contentBuilderStyle:r,isScheduleLoading:e}):{canMove:!1,errorMessage:`${qx("engage:broadcast")} not loaded`}),[a,t,i,u,r,e]);return{validateStep:c}},oje=({onFinish:e,getExtraMergeFields:t,onBeforeSchedule:i,hideSms:r})=>{const o=zoe(),s=Ooe(),{updateAutomation:l,isUpdating:u}=qN(o?.id||""),{estimatedMatchesStats:c,isLoading:d}=(e=>{const a=e?.id,{data:t,isLoading:i}=nE({automationId:a??""}),r=n.useMemo((()=>({estimatedEmails:t?.estimatedEmails??0,estimatedSms:t?.estimatedSms??0})),[t]);return{estimatedMatches:t,estimatedMatchesStats:r,isLoading:i}})(o??void 0),{generateNameAndDescription:m,isGeneratingNameAndDescription:h}=tE(),{refetchAutomation:p}=JN(o?.id||""),{state:{selectedChannels:g,contentBuilderStyle:f}}=n.useContext(ege),[v,y]=n.useState([]),{data:k}=cN(),[b,S]=n.useState(!1),{channelSenders:w}=CC(),{channelAccounts:A}=SC(),{updateCommunicationGroup:C}=Qx(),{resetCommunicationGroup:M}=Xx(),T=n.useRef(!1),[x,N]=n.useState(""),[E,j]=n.useState(!1),_=n.useRef(null),[P,L]=n.useState(!1),[B,R]=n.useState(!1),{validateStep:D}=rje(u),z=n.useMemo((()=>{if(!o||B)return!1;const e=o.name?.includes("Broadcast")||o.name?.includes("automation")||!o.name||""===o.name.trim(),a=!o.description||""===o.description.trim();return e&&a}),[o,B]),O=n.useMemo((()=>vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k})),[w?.results,A?.results,k]),K=n.useCallback((async e=>{try{if(s?.id){const a={};e.email&&(a.emailHtmlBody=e.email.html,a.emailCss=e.email.css,a.emailCompiledHtml=e.email.compiledEmail,a.emailSubject=e.email.subject,a.emailPreviewText=e.email.previewText),e.sms&&(a.smsMessageBody=e.sms.body,O.length>0&&(a.smsChannelSenderId=O[0].channelSender.id)),Object.keys(a).length>0&&C({groupId:s.id,params:a},{onSuccess:()=>{(e.name||e.description)&&l({name:e.name||o?.name||"",description:e.description||o?.description||""},{onSuccess:()=>{R(!0)},onError:e=>{}}),M({communicationGroupId:s.id,emailHtmlBody:!!e.email||null,emailTextBody:!!e.email||null,textMessageBody:!!e.sms||null}),Ak({title:"Content Generated Successfully",description:"AI content has been applied to your automation.",variant:"default"}),g.includes("email")?H(nje.EditEmailContent):g.includes("sms")?H(nje.EditSmsContent):H(nje.SelectAudience)},onError:()=>{Ak({title:"Error Applying Content",description:"Failed to apply AI-generated content. Please try again.",variant:"destructive"})}})}}catch(a){Ak({title:"Error Applying Content",description:"Failed to apply AI-generated content. Please try again.",variant:"destructive"})}finally{j(!1)}}),[s?.id,C,M,g,O,l,o?.name,o?.description]),[I,H]=n.useState(nje.SelectChannels);if(n.useEffect((()=>{if(null!==o&&null!==s){const e=vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k});y((({automation:e,communicationGroup:n,selectedChannels:t,smsChannelSenders:i,contentBuilderStyle:r,onAIContentGeneration:o,aiPrompt:s="",onAiPromptChange:l,aiContentPromptRef:u,hideSms:c})=>{if(!e)return[];const d=[{id:"select-channels",title:"Message Channels",step:1,isValid:()=>t.length>0,content:a.jsx(gge,{content:a.jsx(aje,{hideSms:c})},"select-channels"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!0,backDisabled:!1,nextDisabled:()=>0===t.length}},{id:"content-builder-style",title:"Content Builder Style",step:2,isValid:()=>!!r,content:a.jsx(gge,{content:a.jsx(xge,{})},"content-builder-style"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!r}}];return r===Xpe.AI&&d.push({id:"ai-prompt",title:"AI Prompt",step:3,isValid:()=>s.trim().length>0,content:a.jsx(gge,{content:o?a.jsx(bge,{ref:u,onGenerateContent:o,prompt:s,onPromptChange:l||(()=>{})}):a.jsx("div",{children:"AI Content Prompt"})},"ai-prompt"),footerConfig:{backText:"Back",nextText:"Generate",hideBack:!1,backDisabled:!1,nextDisabled:()=>!s.trim()}}),t.includes("email")&&d.push({id:"edit-email-content",title:"Email Content",step:4,isValid:()=>{const a=e.actionData?.find((e=>"send_communication"===e.actionType));return!!a&&!!n.emailChannelSenderId&&!(!n.emailHtmlBody||!n.emailSubject)},content:a.jsx(gge,{content:a.jsx(RMe,{})},"edit-email-content"),footerConfig:{backText:"",nextText:"",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),t.includes("sms")&&!c&&d.push({id:"edit-sms-content",title:"SMS Content",step:5,isValid:()=>{const a=e.actionData?.find((e=>"send_communication"===e.actionType));return!!(a&&a.actionMetadata.communicationGroupId&&n.smsChannelSenderId&&n.smsMessageBody)},content:a.jsx(gge,{content:a.jsx(MTe,{})},"edit-sms-content"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),d.push({id:"audience",title:"Audience",step:6,isValid:()=>e.includeSegmentIds.length>0,content:a.jsx(gge,{content:a.jsx(XEe,{})},"audience"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),d.push({id:"schedule",title:"Schedule",step:7,isValid:()=>Boolean(e.triggerMetadata?.triggerType===ON.ONE_TIME&&e.triggerMetadata?.scheduledAt&&("now"===e.triggerMetadata.scheduledAt||"now"!==e.triggerMetadata.scheduledAt&&new Date(e.triggerMetadata.scheduledAt)>new Date)&&e.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),content:a.jsx(gge,{className:"flex-1",content:a.jsx(JTe,{})},"schedule"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}},{id:"send",title:"Send",step:8,isValid:()=>Boolean(e.triggerMetadata?.triggerType===ON.ONE_TIME&&e.triggerMetadata?.scheduledAt&&("now"===e.triggerMetadata.scheduledAt||"now"!==e.triggerMetadata.scheduledAt&&new Date(e.triggerMetadata.scheduledAt)>new Date(Date.now()+18e4))&&e.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),content:a.jsx(gge,{className:"flex-1",content:a.jsx(ITe,{})},"send"),footerConfig:{backText:"Back",nextText:e.triggerMetadata&&"scheduledAt"in e.triggerMetadata&&"now"===e.triggerMetadata.scheduledAt?"Send Now":"Schedule",hideBack:!1,backDisabled:!1,getInfoTooltipTitle:()=>{const e=i.find((e=>e.channelSender.id===n.smsChannelSenderId));if(e&&null!==e.smsApplication&&e.smsApplication?.status!==fN.APPROVED)return"You cannot send this yet if you have selected a text channel and don't have an approved SMS application. Please save as draft and try again later."},nextDisabled:()=>{const e=i.find((e=>e.channelSender.id===n.smsChannelSenderId));return!(!n.smsChannelSenderId||e&&(null===e.smsApplication||e.smsApplication?.status===fN.APPROVED))||null===n.smsChannelSenderId&&null===n.emailChannelSenderId}}}),d})({automation:o,communicationGroup:s,selectedChannels:g,smsChannelSenders:e,contentBuilderStyle:f,aiPrompt:x,onAiPromptChange:N,aiContentPromptRef:_,onAIContentGeneration:K,hideSms:r}))}}),[o,s,t,g,w?.results,A?.results,k,f,K,x,r]),n.useEffect((()=>{t&&!T.current&&t().then((e=>{s?.id&&(T.current=!0,C({groupId:s?.id,params:{extraMergeFields:e}}))}))}),[t,s,C]),!o||!I||!s)return a.jsx("div",{className:"flex-1 flex flex-col @container justify-center items-center h-[500px]",children:a.jsx(fd,{text:[`Fetching ${qx("engage:broadcast")} data`,"Finishing up"]})});const F=async()=>{!z||B||h?h?L(!0):e():(L(!0),m(o?.id||"",{onSuccess:a=>{R(!0),(a.name||a.description)&&Ak({title:"AI Enhancement Complete",description:"Your automation has been enhanced with AI-generated name and description.",variant:"default"}),p().then((()=>{L(!1),e()})).catch((a=>{L(!1),e()}))},onError:a=>{R(!0),L(!1),e()}}))},G=async()=>{const{canMove:e,errorMessage:a,warningMessage:n}=await D(I);if(!e)return void Ak({title:"Oops!",description:a,variant:"destructive"});if(n&&Ak({title:n,variant:"warning"}),I===nje.PreviewAndSend)return void(await(async()=>{if(null===s.emailChannelSenderId&&null===s.smsChannelSenderId)return void Ak({title:"Oops!",description:"Please select an email sender or sms sender",variant:"destructive"});const e=vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k});if(s.smsChannelSenderId){const a=e.find((e=>e.channelSender.id===s.smsChannelSenderId));if(a?.smsApplication?.application&&a?.smsApplication.status!==fN.APPROVED)return void Ak({title:"Oops!",description:"You cant schedule a communication with a pending sms application. Please save as a draft and re-try once the application is approved."})}if(i)try{let e=0;for(;d&&e<10;)await new Promise((e=>setTimeout(e,250))),e++;const a=await i({estimatedEmailRecipients:c?.estimatedEmails||0,estimatedSmsRecipients:c?.estimatedSms||0});!0===a?l({status:FN.ACTIVE},{onSuccess:()=>{Ak({title:`${qx("engage:broadcast")} scheduled!`}),F()},onError:()=>{Ak({title:"Oops!",description:"Please contact your administrator",variant:"destructive"})}}):Ak({title:"Oops!",description:a,variant:"destructive"})}catch(a){Ak({title:"Oops!",description:"An error occurred while checking scheduling conditions",variant:"destructive"})}else l({status:FN.ACTIVE}),Ak({title:`${qx("engage:broadcast")} scheduled!`}),F()})());const t=v.findIndex((e=>e.step===I));if(I===nje.AIPrompt){if(_.current){j(!0);try{return void _.current.generate()}catch(r){return j(!1),void Ak({title:"Error Generating Content",description:"Failed to generate AI content. Please try again.",variant:"destructive"})}}const e=v.find((e=>e.step===nje.EditEmailContent||e.step===nje.EditSmsContent));if(e)return void H(e.step)}if(I===nje.EditEmailContent||I===nje.EditSmsContent){const e=v.map(((e,a)=>e.step===nje.EditEmailContent||e.step===nje.EditSmsContent?a:-1)).filter((e=>-1!==e)).find((e=>e>t));if(void 0!==e)return void H(v[e].step);const a=v.find((e=>e.step===nje.SelectAudience));if(a)return void H(a.step)}t>=0&&t<v.length-1&&H(v[t+1].step)},V=()=>{const e=v.findIndex((e=>e.step===I));if(e>0){H(v[e-1].step)}},J=()=>{E||u?Ak({title:"Please wait",description:"Please wait for the current operation to finish before saving.",variant:"warning"}):F()};return a.jsxs("div",{className:"flex-1 flex flex-col @container h-full min-h-0",children:[a.jsxs("header",{className:"w-full flex items-center gap-4 h-16 px-6",children:[a.jsx("h1",{className:"text-xl font-bold leading-none",children:o.name}),a.jsx("div",{className:"flex items-center gap-4",children:a.jsx(qT,{variant:tge(o.status),children:Jde({status:o.status,automationType:o.triggerType,vsaasManaged:!1})})})]}),P?a.jsx("div",{className:"flex-1 flex flex-col justify-center items-center",children:a.jsx(pge,{automationId:o?.id||""})}):a.jsxs("main",{className:"flex gap-4 flex-1 min-h-0 overflow-hidden",children:[a.jsx("div",{className:"block",children:a.jsx("nav",{className:"space-y-0 w-50 self-start pr-6 pl-8 pt-4 "+(P?"h-0 overflow-hidden":""),children:v.map((e=>a.jsx("div",{className:`\n rounded-md transition-colors\n ${e.step===I?"bg-[var(--reach-secondary)] text-[var(--reach-primary-foreground)] font-medium":e.step<I?"text-muted-foreground hover:bg-muted":"text-muted-foreground/60"}\n ${(E||u)&&e.step===I?"opacity-75 cursor-not-allowed":E||u?"opacity-50 cursor-not-allowed":""}\n `,children:a.jsx(cse,{label:(E||u)&&e.step===I?`${e.title} (Loading...)`:e.title,id:`wizard-step-${e.step}`,isActive:e.step===I,isCompleted:e.isValid(),onClick:async()=>{if(E||u)Ak({title:"Please wait",description:"Please wait for the current operation to finish before navigating.",variant:"warning"});else if(!b)if(e.step>I){const{canMove:a,errorMessage:n,warningMessages:t}=await(async e=>{if(e<=I)return{canMove:!0,errorMessage:null};S(!0);try{const a=[];for(let n=I;n<e;n++){const{canMove:e,errorMessage:t,warningMessage:i}=await D(n);if(!e)return{canMove:e,errorMessage:t};i&&a.push(i)}return{canMove:!0,errorMessage:null,warningMessages:a}}finally{S(!1)}})(e.step);if(a){if(t&&t.length>0)for(const e of t)Ak({title:e,variant:"warning"});H(e.step)}else n&&Ak({title:"Cannot navigate to this step",description:n,variant:"destructive"})}else H(e.step)}})},e.step)))})}),(()=>{const e=v.find((e=>e.step===I));return a.jsx("section",e?{className:"flex-1 mr-6 w-full relative ml-6 @[1000px]:ml-0 flex flex-col",children:a.jsx("div",{className:"flex-1 overflow-y-auto",children:a.jsx(ooe,{className:"h-full",children:e.content},I)})}:{className:"flex-1 mr-6 w-full relative rounded-xl bg-gray-100 ml-6 @[1000px]:ml-0 flex flex-col",children:a.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:a.jsx("div",{className:"flex justify-center items-center h-full",children:a.jsxs("div",{className:"text-center",children:[a.jsx("h3",{className:"text-lg font-medium mb-2",children:"Step Not Available"}),a.jsx("p",{className:"text-muted-foreground",children:"This step is not available for your current configuration."})]})})})})})()]}),(()=>{const e=v.find((e=>e.step===I));return a.jsx("footer",{className:"w-full flex justify-end z-10 items-center px-6 "+(P?"h-0 overflow-hidden":"h-16"),children:a.jsx(hge,{handleSkipAndSaveAsDraft:J,handleBack:V,handleNext:G,hideBack:e?.footerConfig.hideBack??!1,backText:e?.footerConfig.backText??"Back",nextText:e?.footerConfig.nextText??"Next",backDisabled:(E||u||e?.footerConfig.backDisabled)??!1,nextDisabled:(E||u||e?.footerConfig.nextDisabled())??!1,getInfoTooltipTitle:e?.footerConfig.getInfoTooltipTitle??void 0})})})()]})},sje=({children:e,actionId:t})=>{const{setActionId:i}=n.useContext(Soe);return n.useEffect((()=>{i(t)}),[t,i]),a.jsx("div",{className:"h-full",children:a.jsx(age,{children:e})})},lje=()=>a.jsxs("div",{children:[a.jsx("div",{className:Zoe,children:a.jsx(sM.OneTimeBroadcast,{})}),a.jsx("h3",{className:$oe,children:qx("engage:broadcast")}),a.jsx("p",{className:Yoe,children:"Send a single message to your current list, like announcing a sale or newsletter."})]}),uje=()=>a.jsxs("div",{children:[a.jsx("div",{className:Qoe,children:"Coming Soon"}),a.jsx("div",{className:Zoe,children:a.jsx(sM.RealtimeActivity,{})}),a.jsx("h3",{className:$oe,children:"Realtime Activity"}),a.jsx("p",{className:Yoe,children:"Responds to immediate actions your contacts take, like abandoned carts, form submissions, or appointment bookings."})]}),cje=({selectedType:e,setAutomationName:n,automationName:t,setAutomationDescription:i,automationDescription:r})=>a.jsxs("div",{className:"flex flex-col items-center justify-center p-8 max-w-lg mx-auto",children:[a.jsxs("h2",{className:"text-2xl font-semibold mb-8 text-center",children:["Name Your"," ",qx(e===ON.ONE_TIME?"engage:broadcast":"engage:automation")]}),a.jsxs("div",{className:"w-full space-y-6",children:[a.jsx("div",{className:"bg-gray-50 p-6 rounded-xl items-center justify-center text-center",children:(()=>{switch(e){case ON.ONE_TIME:return a.jsx(lje,{});case ON.TRIGGER_BASED:return a.jsx(uje,{});default:throw Vde(e,ON)}})()}),a.jsxs("div",{className:"space-y-6",children:[a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[a.jsx("label",{htmlFor:"automationName",className:"block text-sm font-medium text-gray-900",children:"Name"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Only visible to your team"})]}),a.jsx(Lo,{id:"automationName",type:"text",value:t,onChange:e=>n(e.target.value),className:"w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-indigo-500 focus:border-indigo-500 shadow-sm",placeholder:"e.g. April Newsletter Campaign",autoFocus:!0})]}),a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[a.jsx("label",{htmlFor:"automationDescription",className:"block text-sm font-medium text-gray-900",children:"Description"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Optional"})]}),a.jsx(vge,{id:"automationDescription",value:r,onChange:e=>i(e.target.value),className:"w-full min-h-[80px] resize-none",placeholder:`Add any helpful context for your team. If left blank, we'll generate one for you when you start the ${qx("engage:broadcast").toLowerCase()}`})]})]})]})]}),dje=({onClose:e,automationType:t,currentStep:i,setCurrentStep:r,getExtraMergeFields:o,onBeforeSchedule:s,hideSms:l})=>{const{createAutomation:u,isCreating:c}=WN(),[d,m]=n.useState(!1),[h,p]=n.useState(void 0),[g,f]=n.useState(void 0),[v,y]=n.useState(!1),[k,b]=n.useState(t?{name:void 0,description:void 0,type:t}:{name:void 0,description:void 0,type:void 0}),S=void 0!==k.name&&void 0!==k.type&&""!==k.name;n.useEffect((()=>{if(k.type&&!k.name&&!v){const e=new Date,a=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n=e.toLocaleDateString([],{month:"long",day:"numeric"}),t=`${qx("engage:broadcast")} ${n} ${a}`,i="";b((e=>({...e,name:t,description:i}))),y(!0)}}),[k,v]);const w=n.useCallback((async(a,n,t)=>{const i=a||k.name,o=n||k.description,s=t||k.type;if(!i||!s||""===i)return;m(!0);u({name:i,type:s,description:o},{onSuccess:async a=>{if(a.id){const n=await(async e=>(await aS(`${jk}`,{method:"POST",body:JSON.stringify(e)})).data)({}),t=hoe().toString();await DN(a.id,{action:[{actionType:"send_communication",actionMetadata:{actionType:"send_communication",communicationGroupId:n.id,currentActionId:t}}]}),p(a.id),await sx({automationId:a.id,actionId:t}),s===ON.ONE_TIME?(r(Goe.OneTimeWizard),f(t),m(!1)):e?.(a.id)}else e?.("error")},onError:()=>{e?.("error")},onSettled:()=>{b({name:void 0,description:void 0,type:void 0})}})}),[k.name,k.description,k.type,u,e,r,f,m,p]);n.useEffect((()=>{if(t&&!d&&!h){const e=new Date,a=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n=e.toLocaleDateString([],{month:"long",day:"numeric"}),i=`${qx("engage:broadcast")} ${n} ${a}`,r="";b({name:i,description:r,type:t}),w(i,r,t)}}),[t,d,h,w]);return a.jsxs("div",{id:"create-automation-modal",className:gi("relative overflow-y-auto h-full p-8"),children:[a.jsx(jd,{mode:"wait",children:c||d?a.jsx(ooe,{className:"h-full",children:a.jsx(ese,{})},"loading"):a.jsx(ooe,{className:"h-full",children:(()=>{switch(i){case Goe.ChooseAutomationType:return a.jsx(Xoe,{onNext:e=>{b({...k,type:e}),r(Goe.SetAutomationName)}});case Goe.SetAutomationName:return t?null:k.type?a.jsx(cje,{selectedType:k.type,setAutomationName:e=>{b({...k,name:e})},automationName:k.name??"",setAutomationDescription:e=>{b({...k,description:e})},automationDescription:k.description??""}):null;case Goe.OneTimeWizard:return h&&g?a.jsx(Hoe,{automationId:h,children:a.jsx(sje,{actionId:g,children:a.jsx(oje,{onFinish:()=>{e?.(h)},getExtraMergeFields:o,onBeforeSchedule:s,hideSms:l})})}):null;default:throw poe(i,Goe)}})()},"content")}),i!==Goe.OneTimeWizard&&a.jsx("div",{className:"pt-2",children:a.jsx(Voe,{onClose:e,currentStep:i,setCurrentStep:r,isDisabled:!S,createAutomation:()=>w(),disableBackButton:void 0!==t})})]})};function mje({open:e,setOpen:t,onClose:i,automationType:r,getExtraMergeFields:o,replyToSettingsText:s,replyToSettingsLink:l,fromNameSettingsText:u,fromNameSettingsLink:c,hideSms:d}){const[m,h]=n.useState(r?Goe.OneTimeWizard:Goe.ChooseAutomationType);return n.useEffect((()=>{e&&h(r?Goe.OneTimeWizard:Goe.ChooseAutomationType)}),[e,r]),a.jsx(ioe,{children:a.jsx(roe,{replyToSettingsText:s,replyToSettingsLink:l,fromNameSettingsText:u,fromNameSettingsLink:c,children:a.jsx(fi,{open:e,onOpenChange:t,children:a.jsxs(bi,{hideCloseButton:m===Goe.OneTimeWizard,className:"flex h-[95vh] w-[95vw] max-w-none flex-col gap-0 overflow-visible p-0",children:[a.jsx(Si,{children:a.jsx("div",{className:"flex items-center justify-between",children:a.jsxs(We,{children:[a.jsx(Ai,{className:"text-3xl font-normal",children:"Create Automation"}),a.jsx(Ci,{children:"Create a new automation to send messages to your customers."})]})})}),a.jsx(dje,{onClose:e=>{i?.(e),t(!1)},automationType:r,currentStep:m,setCurrentStep:h,getExtraMergeFields:o,hideSms:d})]})})})})}const hje=({feature:e,onClose:n,className:t})=>{const i={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.4,ease:[.4,0,.2,1]}}};return a.jsxs(gk.div,{initial:"hidden",animate:"visible",exit:"exit",variants:{hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.4,ease:[.4,0,.2,1],staggerChildren:.1}},exit:{opacity:0,y:-20,transition:{duration:.3,ease:[.4,0,1,1]}}},className:Fa("flex flex-col items-center text-center w-full max-w-[72ch] rounded-xl p-8 gap-6 border border-border mx-auto","bg-background shadow-sm",t),children:[a.jsx(gk.div,{variants:i,className:"w-20 h-20 rounded-full flex items-center justify-center bg-red-50 border-2 border-red-200",children:a.jsx(_,{className:"w-10 h-10 text-red-500"})}),a.jsxs(gk.div,{variants:i,className:"space-y-2",children:[a.jsx("h2",{className:"text-xl font-semibold text-foreground",children:"Sandbox Mode Not Supported"}),a.jsxs("p",{className:"text-base font-medium text-muted-foreground",children:[e," is not available in sandbox mode"]})]}),a.jsx(gk.div,{variants:i,className:"max-w-xl mx-auto space-y-4",children:a.jsxs("p",{className:"text-sm text-muted-foreground",children:["To use ",e,", please switch to a production environment or contact your administrator for assistance."]})}),a.jsx(jd,{children:n&&a.jsx(gk.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.2,ease:[.4,0,.2,1]},children:a.jsx(Wa,{variant:"outline",onClick:n,className:"bg-background hover:bg-muted",children:"Got it"})})})]})},pje=({tabs:e,activeTab:t,onTabChange:i,tabsLocation:r="left",secondaryTabs:o=!1,headerOnly:s=!1})=>{const l=n.useRef([]),[u,c]=n.useState({width:0,left:0});n.useEffect((()=>{const a=l.current[e.findIndex((e=>e.id===t))];a&&c({width:a.offsetWidth,left:a.offsetLeft})}),[t,e]);const d=e.find((e=>e.id===t)),m=()=>a.jsxs("div",{className:"relative flex items-center gap-8 "+("left"===r?"w-full justify-start":"w-full justify-center"),children:[a.jsx("div",{className:"absolute bottom-0 h-[1px] rounded-full transition-all duration-300 ease-out\n bg-gradient-to-r from-primary to-primary/90\n shadow-[0_0_8px_rgba(var(--primary-rgb),0.3)]",style:{width:`${u.width}px`,left:`${u.left}px`}}),e.map(((e,n)=>a.jsx("button",{ref:e=>l.current[n]=e,onClick:()=>i(e.id),className:gi("relative px-7 py-3 transition-all duration-200 text-lg",t!==e.id&&"text-muted-foreground",o&&"text-sm"),children:e.label},e.id)))]});return s?a.jsx(m,{}):a.jsxs("div",{className:"flex flex-col gap-4 w-full overflow-x-hidden h-full",children:[a.jsx("div",{className:"flex items-center justify-between",children:a.jsx(m,{})}),a.jsx("div",{className:"relative overflow-hidden flex-grow min-h-0",children:a.jsx("div",{className:"relative h-full",children:d?d.content:null})})]})},gje=()=>{const e={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.5,ease:"easeOut"}}},n=[{icon:P,title:"5-Day Window",description:"Short attribution lookback period"},{icon:D,title:"Engagement Required",description:"Must click or open email"},{icon:ye,title:"Automation-Linked",description:"Tied to specific campaigns"}];return a.jsxs(gk.div,{className:"space-y-8 p-2",variants:{hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.1,delayChildren:.1}}},initial:"hidden",animate:"visible",children:[a.jsx(gk.div,{variants:e,children:a.jsx(FT,{title:"Email Attribution Methodology",description:"How we track and attribute conversions to your email marketing automations",icon:U})}),a.jsx(gk.div,{variants:e,children:a.jsx(GT,{highlights:n,cardTitle:"Email Engagement Attribution Model",cardDescription:"We use a 5-day engagement-based attribution model that requires customer interaction with your emails",cardIcon:ae})}),a.jsx(gk.div,{variants:e,children:a.jsx(VT,{steps:[{number:1,title:"Email Sent via Automation",description:"An email is sent to a customer through one of your marketing automations."},{number:2,title:"Customer Engagement",description:"The customer either clicks a link or opens the email (engagement is required for attribution)."},{number:3,title:"Purchase Occurs",description:"Within 5 days of the email engagement, the customer makes a purchase."},{number:4,title:"Revenue Attribution",description:"The purchase revenue is attributed to the specific automation that sent the email."}],title:"How Email Attribution Works",icon:we})}),a.jsx(gk.div,{variants:e,children:a.jsx(ZT,{scenarios:[{id:1,title:"Valid Email Attribution",description:"Customer receives email, engages with it, and purchases within 5 days",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"Clicked",day:"Day 1",color:"bg-green-500"},{platform:"Purchase",action:"Completed",day:"Day 3",color:"bg-green-600"}],attribution:"Email campaign gets 100% credit (customer engaged and purchased within 5 days)"},{id:2,title:"No Engagement - No Attribution",description:"Customer receives email but never opens or clicks, then purchases",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"No Engagement",day:"Day 1-5",color:"bg-gray-400"},{platform:"Purchase",action:"Completed",day:"Day 3",color:"bg-green-600"}],attribution:"No attribution (email was sent but customer never engaged with it)"},{id:3,title:"Attribution Window Expired",description:"Customer engaged with email but purchased outside the 5-day window",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"Clicked",day:"Day 1",color:"bg-green-500"},{platform:"Purchase",action:"Completed",day:"Day 8",color:"bg-green-600"}],attribution:"No attribution (purchase occurred 7 days after email engagement, outside 5-day window)"}],title:"Email Attribution Scenarios",description:"See how different email engagement patterns are attributed",icon:D})}),a.jsx(gk.div,{variants:e,children:a.jsx(YT,{title:"Important Notes",points:[{text:"Only emails sent through automations count for attribution"},{text:"Customer must click or open the email for attribution to occur"},{text:"The 5-day window starts from when the email was sent, not when it was opened"},{text:"Revenue is attributed to the specific automation that sent the email"}],variant:"highlighted"})})]})},fje=({Icon:e,label:n,value:t,tooltipText:i,onClick:r,isClickable:o=!1})=>a.jsx(ex,{title:i,children:a.jsxs("div",{className:"group relative flex items-center gap-2 px-3 py-2 rounded-lg transition-all duration-200 cursor-help "+(o?"hover:bg-primary/5 hover:shadow-sm cursor-pointer":"hover:bg-muted/20"),onClick:r,children:[a.jsx("div",{className:"w-8 h-8 rounded-md bg-primary/10 flex items-center justify-center group-hover:bg-primary/15 transition-colors",children:a.jsx(e,{className:"w-4 h-4 text-primary"})}),a.jsxs("div",{className:"flex flex-col items-start min-w-0",children:[a.jsx("span",{className:"text-sm font-bold text-foreground leading-tight",children:t}),a.jsx(Tge,{className:"text-[9px] font-medium text-muted-foreground uppercase tracking-wide leading-tight",children:n})]})]})}),vje=e=>`Number of ${e} communications that failed/errored. You can filter communications by status in the recipients table.`,yje=({statistics:e,automationId:n,onLinkClickStatsOpen:t,includeSms:i=!1,showErrors:r=!1})=>{const o=[{Icon:sM.MessagesSent,label:"Sent",value:e.email.numberSent,tooltipText:"Total number of emails that were successfully sent"},...r&&void 0!==e.email.errors?[{Icon:sM.AlertTriangleIcon,label:"Errors",value:e.email.errors,tooltipText:vje("email")}]:[],{Icon:sM.OpenRate,label:"Open Rate",value:`${(100*Number(e.email.openPercentage)).toFixed(2)}%`,tooltipText:"Percentage of recipients who opened the email"},{Icon:sM.TotalBounceRate,label:"Bounce Rate",value:`${(100*((Number(e.email.softBounceRate)||0)+(Number(e.email.hardBounceRate)||0))).toFixed(2)}%`,tooltipText:"Percentage of emails that were not delivered"},{Icon:sM.LinksClicked,label:"Clicks",value:Number(e.email.linksClicked),tooltipText:"Total number of times recipients clicked on links",onClick:t,isClickable:!!n&&!!t},{Icon:sM.SpamComplies,label:"Spam",value:`${(100*Number(e.email.spamComplaintRate)).toFixed(2)}%`,tooltipText:"Percentage of emails marked as spam"},{Icon:sM.UnsubscribeRate,label:"Unsubscribed",value:`${(100*Number(e.email.unsubscribedRate)).toFixed(2)}%`,tooltipText:"Percentage of recipients who unsubscribed"}],s=[{Icon:sM.SMSMessagesSent,label:"Sent",value:e.sms.numberSent,tooltipText:"Total number of SMS messages that were successfully sent",onClick:void 0,isClickable:!1},...r&&void 0!==e.sms.errors?[{Icon:sM.AlertTriangleIcon,label:"Errors",value:e.sms.errors,tooltipText:vje("sms"),onClick:void 0,isClickable:!1}]:[]];return a.jsx("div",{className:"bg-white rounded-xl p-4 border border-border",children:a.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-center gap-4 lg:gap-0",children:[a.jsxs("div",{className:"lg:flex-[3]",children:[a.jsx("div",{className:"flex justify-center mb-4 lg:mb-0",children:a.jsx(Tge,{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wide",children:"Email"})}),a.jsx("div",{className:"flex items-center justify-center",children:a.jsx("div",{className:"flex items-center gap-2 sm:gap-3 flex-wrap justify-evenly w-full",children:o.map(((e,n)=>a.jsx(fje,{Icon:e.Icon,label:e.label,value:e.value,tooltipText:e.tooltipText,onClick:e.onClick,isClickable:e.isClickable},n)))})})]}),i&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"hidden lg:block w-px h-8 bg-border mx-4 flex-shrink-0"}),a.jsx("div",{className:"lg:hidden w-full h-px bg-border my-2"}),a.jsxs("div",{className:"lg:flex-[1]",children:[a.jsx("div",{className:"flex justify-center mb-4 lg:mb-0",children:a.jsx(Tge,{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wide",children:"SMS"})}),a.jsx("div",{className:"flex items-center justify-center",children:a.jsx("div",{className:"flex items-center gap-2 sm:gap-3 flex-wrap justify-evenly w-full",children:s.map(((e,n)=>a.jsx(fje,{Icon:e.Icon,label:e.label,value:e.value,tooltipText:e.tooltipText,onClick:e.onClick,isClickable:e.isClickable},n)))})})]})]})]})})},kje=({automation:e,businessSales:n})=>{if(!e&&!n)return null;const t=e?[{Icon:sM.SalesAmount,label:"Order Amount",value:$de(e.derivedRevenue),tooltipText:"Total derived revenue from this campaign"},{Icon:sM.Orders,label:"Orders",value:e.derivedOrders,tooltipText:"Total individual orders from this campaign"}]:[{Icon:sM.SalesAmount,label:"Total Revenue",value:$de(n.totalRevenue),tooltipText:"Total revenue across all automations"},{Icon:sM.Orders,label:"Total Orders",value:n.totalOrders,tooltipText:"Total orders across all automations"}];return a.jsx("div",{className:"bg-white rounded-xl p-4 border border-border",children:a.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-center gap-4 lg:gap-0",children:[a.jsx("div",{className:"lg:flex-1",children:a.jsx("div",{className:"flex items-center justify-center",children:a.jsx(fje,{Icon:t[0].Icon,label:t[0].label,value:t[0].value,tooltipText:t[0].tooltipText})})}),a.jsx("div",{className:"lg:hidden w-full h-px bg-border my-2"}),a.jsx("div",{className:"lg:flex-1",children:a.jsx("div",{className:"flex items-center justify-center",children:a.jsx(fje,{Icon:t[1].Icon,label:t[1].label,value:t[1].value,tooltipText:t[1].tooltipText})})})]})})},bje=({automationId:e,isOpen:n,onClose:t})=>{const{linkClickStats:i,isGetting:r,getError:o}=rN(e);return a.jsx(fi,{open:n,onOpenChange:t,children:a.jsxs(bi,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[a.jsx(Si,{children:a.jsxs(Ai,{className:"flex items-center gap-2",children:[a.jsx(ae,{className:"h-5 w-5"}),"Link Click Statistics"]})}),a.jsxs("div",{className:"space-y-4",children:[r&&a.jsx("div",{className:"text-sm text-muted-foreground text-center py-8",children:"Loading link click statistics..."}),o&&a.jsx("div",{className:"text-sm text-destructive text-center py-8",children:"Error loading link click statistics. Please try again."}),!r&&!o&&(!i||0===Object.keys(i).length)&&a.jsx("div",{className:"text-sm text-muted-foreground text-center py-8",children:"No link clicks found."}),!r&&!o&&i&&Object.keys(i).length>0&&a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"bg-muted/50 rounded-lg p-4",children:[a.jsx("div",{className:"text-sm text-muted-foreground mb-2",children:"Summary"}),a.jsxs("div",{className:"flex gap-4 text-sm",children:[a.jsxs("div",{children:[a.jsx("span",{className:"font-semibold",children:Object.keys(i).length})," ","unique links"]}),a.jsxs("div",{children:[a.jsx("span",{className:"font-semibold",children:Object.values(i).reduce(((e,a)=>e+a),0)})," ","total clicks"]})]})]}),a.jsx("div",{className:"space-y-2",children:Object.entries(i).sort((([,e],[,a])=>a-e)).map((([e,n])=>a.jsxs("div",{className:"flex items-center justify-between p-3 border rounded-lg hover:bg-muted/50 transition-colors",children:[a.jsx("div",{className:"flex-1 min-w-0",children:a.jsxs("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 hover:underline flex items-center gap-1 truncate",children:[a.jsx("span",{className:"truncate",children:e}),a.jsx(R,{className:"h-3 w-3 flex-shrink-0"})]})}),a.jsxs("div",{className:"text-right ml-4",children:[a.jsx("span",{className:"font-semibold text-lg",children:n}),a.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:1===n?"click":"clicks"})]})]},e)))})]})]})]})})},Sje=({automationId:e,includeSales:t=!1,includeSms:i=!1,showErrors:r=!1,automation:o})=>{const[s,l]=n.useState(!1),[u,c]=n.useState(!1),{statistics:d,isLoading:m}=ZN(e),{statistics:h,isLoading:p}=eE(),[g,f]=n.useState(10),[v,y]=n.useState(void 0),k=XN({limit:g,cursor:v}),b=k.data,S=b?.pagination.cursor??null,w=b?.pagination.total??null,A=k.isLoading,C=k.isFetching,M=k.isPlaceholderData;n.useEffect((()=>{y(void 0)}),[e]);const T=n.useCallback((e=>{y(e.cursor),f(e.pageSize)}),[]),x=e?d:h,N=[{accessorKey:"automation_name",header:"Automation",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"font-medium",children:e.original.automation_name||"Unknown Automation"}),size:150},{accessorKey:"first_name",header:"Customer",enableSorting:!1,cell:({row:e})=>{const n=e.original.first_name||"",t=e.original.last_name||"",i=e.original.email||"";return a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:n&&t?`${n} ${t}`:"Unknown"}),i&&a.jsx("span",{className:"text-xs text-muted-foreground",children:i})]})},size:200},{accessorKey:"amount",header:"Amount",enableSorting:!1,cell:({row:e})=>{const a=parseFloat(e.original.amount);return $de(a)},size:120},{accessorKey:"communication_type",header:"Channel",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"capitalize text-sm",children:e.original.communication_type||"Unknown"}),size:100},{accessorKey:"schedule_send_at",header:"Sent Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.schedule_send_at;return a?new Date(a).toLocaleDateString():"Unknown"},size:140},{accessorKey:"created_date",header:"Order Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.created_date;return a?new Date(a).toLocaleDateString():"Unknown"},size:140}];return(e?m:p)||!x?a.jsx("div",{className:"bg-white rounded-2xl w-full p-6 flex items-center justify-center h-[14.05rem]",children:a.jsx(fd,{text:[`Fetching ${qx("engage:insight",{count:2})}`,"Finishing up"]})}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"bg-white rounded-2xl w-full p-6 flex flex-col gap-6",children:[a.jsxs("section",{children:[a.jsx("h3",{className:"mb-4 text-lg font-medium text-foreground",children:e?qx("engage:insight",{count:2}):`Business ${qx("engage:insight",{count:2})}`}),a.jsx(yje,{statistics:x,automationId:e,onLinkClickStatsOpen:()=>l(!0),includeSms:i,showErrors:r})]}),t&&a.jsx(hTe,{className:"my-2"}),t&&a.jsxs("section",{children:[a.jsxs("div",{className:"flex items-center justify-between mb-4",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground",children:e?qx("engage:salesInsights","Sales Insights"):qx("engage:businessSalesInsights","Business Sales Insights")}),a.jsxs(Wa,{variant:"outline",size:"sm",onClick:()=>c(!0),className:"flex items-center gap-2",children:[a.jsx(H,{className:"h-4 w-4"}),"Email Attribution"]})]}),a.jsx(kje,{automation:o,businessSales:!e&&h?.sales?{totalRevenue:h.sales.totalRevenue,totalOrders:h.sales.totalOrders}:void 0})]})]}),!e&&t&&a.jsxs("div",{className:"bg-white rounded-2xl p-6",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground mb-4",children:"Sales From All Campaigns"}),void 0!==w&&a.jsxs("p",{className:"text-sm text-muted-foreground mb-4",children:["Total Orders: ",w]}),a.jsx(dle,{data:b?.results||[],columns:N,paginationMode:"cursor",totalCount:w??void 0,initialPageSize:g,isLoading:A&&!M,cursorPaginationQueryResult:{nextCursor:S,isLoading:A,isFetching:C,isPlaceholderData:M},onQueryParametersChange:T,hideLoadingState:!1})]}),e&&a.jsx(bje,{automationId:e,isOpen:s,onClose:()=>l(!1)}),a.jsx(fi,{open:u,onOpenChange:c,children:a.jsx(bi,{className:"max-w-4xl max-h-[80vh] overflow-y-auto",children:a.jsx(gje,{})})})]})},wje=e=>{const{updateAutomation:a,updateError:t,isUpdateSuccess:i}=qN(e),{toast:r}=Ck();return n.useEffect((()=>{i?r({title:"Status updated",description:"The status has been updated successfully"}):t&&r({title:"Error updating status",description:"Please try again",variant:"destructive"})}),[i,t,r]),{toggleStatus:async e=>{try{return await a({status:e?FN.ACTIVE:FN.DRAFT}),!0}catch(n){return r({title:"Error updating status",description:"Please try again",variant:"destructive"}),!1}}}},Aje=e=>{const{automationId:a,hideSms:n}=e;return`/automations/view-modal/${a}?showBackButton=true${n?"&hideSms=true":""}`};function Cje(){const{toast:e}=Ck(),[t,i]=n.useState(null),{toggleStatus:r}=wje(t||""),o=dce(),{config:s}=ld(),[l,u]=n.useState(10),[c,d]=n.useState(void 0),[m,h]=n.useState(""),{automations:p,nextCursor:g,totalCount:f,isLoading:v,error:y,isFetching:k,isPlaceholderData:b}=YN({cursor:c,limit:l,triggerTypes:[ON.TRIGGER_BASED,ON.DATE_BASED],search:m||void 0});n.useEffect((()=>{y&&e({title:`Error Fetching ${qx("engage:automation")}`,description:y?.message||"Please try again.",variant:"destructive"})}),[y,e]);const S=n.useMemo((()=>{const e=[FN.SENDING,FN.SCHEDULED,FN.CANCELLED,FN.PARTIALLY_CANCELLED];return(p||[]).filter((a=>!e.includes(a.status))).map((e=>({...e,emailsSent:0,smsSent:0,updated_at:e.updatedAt||e.createdAt})))}),[p]),w=n.useCallback((async(e,a)=>{try{i(e);const n=a===FN.ACTIVE;await r(n)}finally{i(null)}}),[r,i]),A=n.useCallback((e=>{h(e)}),[]),C=n.useCallback((e=>{d(e.cursor),u(e.pageSize)}),[]),M=n.useCallback((e=>Aje({automationId:e,hideSms:s.hideFeature?.engage?.sms??!1})),[s.hideFeature?.engage?.sms]),T=n.useMemo((()=>mge({automationName:qx("engage:automation"),setUrl:M,onToggle:w,vsaasManaged:!0})),[w,M]);return a.jsx("div",{className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx(dle,{data:S,columns:T,paginationMode:"cursor",totalCount:f??void 0,initialPageSize:l,isLoading:v&&!b,onRowClick:e=>{o(`/automations/view-modal/${e.id}?showBackButton=true${s.hideFeature?.engage?.sms?"&hideSms=true":""}`)},cursorPaginationQueryResult:{nextCursor:g,isLoading:v,isFetching:k,isPlaceholderData:b},onQueryParametersChange:C,searchValue:m,onSearchChange:A})})})}function Mje(){const{toast:e}=Ck(),[t,i]=n.useState(null),{toggleStatus:r}=wje(t||""),{duplicateAutomation:o}=QN(),s=dce(),[l,u]=n.useState(10),[c,d]=n.useState(void 0),{config:m}=ld(),[h,p]=n.useState(""),{automations:g,totalCount:f,nextCursor:v,isLoading:y,error:k,isFetching:b,isPlaceholderData:S}=YN({cursor:c,limit:l,triggerTypes:[ON.ONE_TIME],search:h||void 0});n.useEffect((()=>{k&&e({title:`Error Fetching ${qx("engage:broadcast")}`,description:k?.message||"Please try again.",variant:"destructive"})}),[k,e]);const w=n.useMemo((()=>(g||[]).map((e=>({...e,updated_at:e.updatedAt})))),[g]),A=n.useCallback((async(e,a)=>{try{i(e);const n=a===FN.ACTIVE;await r(n)}finally{i(null)}}),[r,i]),C=n.useCallback(((e,a)=>{o({automationId:e,name:`${a} (Copy)`,description:"Duplicated broadcast"}),E()}),[o]),M=n.useCallback((async a=>{try{i(a),await r(!1),e({title:"Broadcast archived",description:"The broadcast has been archived successfully."})}catch(n){e({title:"Error archiving broadcast",description:"Please try again.",variant:"destructive"})}finally{i(null)}E()}),[r,e,i]),T=n.useCallback((e=>{const a=Aje({automationId:e,hideSms:m.hideFeature?.engage?.sms??!1});s(a)}),[s,m.hideFeature?.engage?.sms]),x=n.useCallback((async a=>{try{i(a),await r(!1),e({title:"Broadcast cancelled",description:"The broadcast has been cancelled successfully."})}catch(n){e({title:"Error cancelling broadcast",description:"Please try again.",variant:"destructive"})}finally{i(null)}E()}),[r,e,i]),N=n.useCallback((e=>{d(e.cursor),u(e.pageSize)}),[]),E=()=>{d(void 0),u(10),p("")},j=n.useCallback((e=>Aje({automationId:e,hideSms:m.hideFeature?.engage?.sms??!1})),[m.hideFeature?.engage?.sms]),_=n.useMemo((()=>mge({automationName:qx("engage:broadcast"),setUrl:j,onToggle:A,pillForStatus:!1,onDuplicate:C,onArchive:M,onEdit:T,onCancel:x})),[A,j,C,M,T,x]);return a.jsx("div",{id:"broadcast-list-container",className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx("div",{id:"broadcast-table-container",children:a.jsx(dle,{data:w,columns:_,paginationMode:"cursor",initialPageSize:l,isLoading:y&&!S,totalCount:f??void 0,cursorPaginationQueryResult:{nextCursor:v,isLoading:y,isFetching:b,isPlaceholderData:S},onRowClick:e=>{s(`/automations/view-modal/${e.id}?showBackButton=true${m.hideFeature?.engage?.sms?"&hideSms=true":""}`)},onQueryParametersChange:N,searchValue:h,onSearchChange:p})})})})}function Tje(){const{toast:e}=Ck(),[t,i]=n.useState(!1),[r,o]=n.useState(null),[s,l]=n.useState(10),[u,c]=n.useState(void 0),[d,m]=n.useState(""),{segments:h,isLoading:p,nextCursor:g,totalCount:f,isFetching:v,isPlaceholderData:y}=_oe({search:d||void 0,cursor:u,limit:s}),k=n.useCallback((e=>{o(e),i(!0)}),[o]),b=n.useMemo((()=>function(e){return[rge("name",`${qx("engage:segment")} Name`,!0),oge(),hue({accessorKey:"user_count",header:qx("engage:user_other"),enableSorting:!1,headerClassName:"justify-end text-right w-full",meta:{align:"right",displayName:qx("engage:user_other")},cellClassName:"text-muted-foreground pr-4",cellFormatter:e=>{const a=e.getValue()??0;return`${a.toLocaleString()} ${qx("engage:user",{count:a}).toLowerCase()}`}}),sge("updated_at"),dge(e||(()=>{}))]}(k)),[k]),S=n.useMemo((()=>h?h.map((e=>({...e,updated_at:e.createdAt.toString(),user_count:e.userCount,user_count_updated_at:e.userCountUpdatedAt}))):[]),[h]),w=n.useCallback((e=>{c(e.cursor),l(e.pageSize)}),[]);return a.jsxs("div",{className:"w-full h-[75vh] flex flex-col",children:[a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx(dle,{data:S,columns:b,paginationMode:"cursor",initialPageSize:s,isLoading:p&&!y,totalCount:f??void 0,cursorPaginationQueryResult:{nextCursor:g,isLoading:p,isFetching:v,isPlaceholderData:y},onQueryParametersChange:w,getRowClassName:e=>e.type===xoe.ALL_USERS?"cursor-not-allowed opacity-60":"",onRowClick:a=>{if(a.type!==xoe.ALL_USERS){if(a.type!==xoe.CUSTOM)return o(a.id),void i(!0);o(a.id),i(!0)}else e({title:"Read-only segment",description:"This segment cannot be edited.",variant:"destructive"})},searchValue:d,onSearchChange:m})}),a.jsx(KEe,{open:t,setOpen:i,segmentId:r??void 0,onSegmentUpdated:a=>{nge(i,e,a,`Error creating ${qx("engage:segment")}`,"Please try again"),c(void 0),l(10),m("")},viewOnly:!!r&&h?.find((e=>e.id===r))?.type!==xoe.CUSTOM})]})}const xje=()=>{const e=jb(),t=dce(),{toast:i}=Ck(),{config:r}=ld(),[o,s]=n.useState(!1),[l,u]=n.useState(!1),[c,d]=n.useState(!1),[m,h]=n.useState(null),p=U5()["show-engage-onboarding"]??!1,[g,f]=n.useState(p),[v,y]=n.useState(null),{automations:k,isLoading:b}=YN({triggerTypes:[ON.TRIGGER_BASED,ON.DATE_BASED]}),[S,w]=n.useState();n.useEffect((()=>{e.prefetchQuery({queryKey:RN.list()}),e.prefetchQuery({queryKey:Eoe.lists()})}),[e]),n.useEffect((()=>{if(b||void 0===k)return;const e=[{id:"broadcasts",label:qx("engage:broadcast",{count:2}),content:a.jsx(Mje,{})},{id:"segments",label:qx("engage:segment",{count:2}),content:a.jsx(Tje,{})},{id:"statistics",label:qx("engage:insight",{count:2}),content:a.jsx("div",{className:"w-full h-full flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2 overflow-y-auto",children:a.jsx("div",{className:"border rounded-lg shadow-sm hover:shadow-md transition-shadow duration-300",children:a.jsx(Sje,{includeSales:!0,includeSms:void 0===r.hideFeature?.engage?.sms||!r.hideFeature?.engage?.sms})})})})}];k.length>0?(y("automations"),w([{id:"automations",label:qx("engage:automation",{count:2}),content:a.jsx(Cje,{})},...e])):(y("broadcasts"),w(e))}),[k,b,r.hideFeature?.engage?.sms]);return null===v||null==S?a.jsx("div",{className:"w-full h-full flex justify-center items-center",children:a.jsx(fd,{})}):a.jsxs("div",{className:"w-full h-full flex flex-col",children:[p&&a.jsx(BN,{open:g,onClose:()=>f(!1),children:a.jsx(LN,{})}),a.jsx(CN,{open:o,setOpen:s,children:a.jsx(AN,{})}),a.jsxs("div",{className:"flex items-center justify-between p-4",children:[a.jsx("div",{id:"engage-tabs-container",children:a.jsx(pje,{activeTab:v,tabs:S,onTabChange:y,headerOnly:!0})}),a.jsxs("div",{className:"flex items-center space-x-2",children:[("automations"===v||"broadcasts"===v)&&a.jsxs(Wa,{id:"new-broadcast-button",className:"bg-primary",onClick:()=>u(!0),children:[a.jsx(oe,{className:"h-4 w-4 mr-1"}),"New ",qx("engage:broadcast")]}),"segments"===v&&a.jsxs(Wa,{className:"bg-primary",onClick:()=>d(!0),children:[a.jsx(oe,{className:"h-4 w-4 mr-1"}),"New ",qx("engage:segment")]}),a.jsx(Wa,{variant:"outline",onClick:()=>s(!0),children:a.jsx(de,{className:"w-4 h-4"})})]})]}),a.jsx("div",{className:"flex-1 overflow-hidden",children:S?.find((e=>e.id===v))?.content}),a.jsx(mje,{open:l,setOpen:u,onClose:e=>{if(nge(u,i,e,`Error creating ${qx("engage:broadcast")}`,"Please try again"),!1!==e){t(`/automations/view-modal/${e}?showBackButton=true${r.hideFeature?.engage?.sms?"&hideSms=true":""}`)}},automationType:ON.ONE_TIME,hideSms:r.hideFeature?.engage?.sms}),a.jsx(KEe,{open:c,setOpen:d,segmentId:m??void 0,onSegmentUpdated:e=>{nge(d,i,e,`Error creating ${qx("engage:segment")}`,"Please try again"),h(null)}})]})};function Nje({open:e,onOpenChange:n}){const t=zoe(),{toast:i}=Ck(),{updateAutomation:r,isUpdating:o}=qN(t?.id||""),s=qx(t?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation");return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Archive Automation"})}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"text-sm text-gray-600",children:["Are you sure you want to archive"," ",a.jsxs("span",{className:"font-semibold text-gray-900",children:['"',t?.name,'"']}),"?"]}),a.jsxs("div",{className:"text-sm text-gray-500 bg-amber-50 border border-amber-200 rounded-lg p-3",children:[a.jsx("p",{className:"font-medium text-amber-800 mb-1",children:"What happens when you archive:"}),a.jsxs("ul",{className:"text-amber-700 space-y-1",children:[a.jsx("li",{children:"• The automation will be hidden from your main list"}),a.jsx("li",{children:"• Historical data and settings are preserved"})]})]}),a.jsxs(wi,{className:"gap-2",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),disabled:o,children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:async function(){t?r({status:FN.ARCHIVED},{onSuccess:()=>{i({title:`${s} archived`,description:`"${t.name}" has been successfully archived.`}),n(!1)},onError:()=>{i({title:"Error archiving!",description:"Please contact your administrator.",variant:"destructive"})}}):i({title:"Error archiving automation",description:"Please try again.",variant:"destructive"})},disabled:o,children:o?"Archiving...":"Archive Automation"})]})]})]})})}function Eje({value:e,schema:t,onSubmit:i,fieldName:r,className:o,successMessage:s="Updated successfully",errorMessage:l="Failed to update",placeholderText:u}){const[c,d]=n.useState(!1),[m,h]=n.useState(!1),[p,g]=n.useState(0),[f,v]=n.useState(0),[y,b]=n.useState(e),[S,w]=n.useState(e),A=n.useRef(null),C=n.useRef(null),M=n.useRef(null),T=n.useRef(null),{toast:x}=Ck(),N=ho({resolver:gd(t),defaultValues:{[r]:e}});n.useEffect((()=>{N.reset({[r]:e}),b(e),w(e)}),[e,r,N]),n.useEffect((()=>{C.current&&g(C.current.offsetWidth),T.current&&!c&&v(T.current.offsetWidth)}),[c]),n.useEffect((()=>{M.current&&y&&g(M.current.offsetWidth)}),[y]),n.useEffect((()=>{c&&A.current&&(A.current.focus(),A.current.select())}),[c]);const E=async e=>{h(!0);const a=e[r];try{await i(e),w(a),x({variant:"success",title:s}),d(!1)}catch(n){x({variant:"destructive",title:l})}finally{h(!1)}},j=()=>{N.reset(),d(!1),b(S)},_=e=>{"Escape"===e.key&&j()};return c?a.jsx(Co,{...N,children:a.jsxs("form",{onSubmit:N.handleSubmit(E),className:gi("inline-flex items-center gap-2 min-h-[20px]",o),style:{minWidth:f?`${f}px`:"auto"},children:[a.jsx("span",{ref:M,className:"absolute invisible whitespace-pre leading-none select-none pointer-events-none",style:{font:"inherit"},children:y||S}),a.jsx(To,{control:N.control,name:r,render:({field:e})=>a.jsx(Eo,{className:"flex-1 min-w-0",children:a.jsx(_o,{children:a.jsx("input",{...e,ref:A,style:{width:`${Math.max(p+40,120)}px`,minWidth:`${Math.max(p,100)}px`,font:"inherit"},className:"bg-transparent outline-none leading-none h-[20px] border-none p-0 m-0",onChange:a=>{e.onChange(a),b(a.target.value)},onKeyDown:_,disabled:m,onBlur:a=>{e.onBlur(),setTimeout((()=>{a.currentTarget?.form&&!a.currentTarget.form.contains(document.activeElement)&&j()}),0)}})})})}),a.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[a.jsx(Wa,{type:"button",size:"icon",variant:"ghost",className:"h-5 w-5 p-0",onClick:j,disabled:m,children:a.jsx(Ee,{className:"h-3 w-3"})}),a.jsx(Wa,{type:"button",size:"icon",variant:"ghost",className:"h-5 w-5 p-0",disabled:m,onClick:()=>{N.handleSubmit(E)()},children:m?a.jsx(V,{className:"h-3 w-3 animate-spin"}):a.jsx(k,{className:"h-3 w-3"})})]})]})}):a.jsxs("button",{ref:T,type:"button",className:gi("group relative inline-flex items-center gap-2 cursor-pointer min-h-[20px] bg-transparent border-none p-0 text-left",o),onClick:()=>d(!0),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(!0))},"aria-label":"Edit field",children:[a.jsx("span",{ref:C,className:gi("leading-none select-none",o,{italic:!S}),children:S||u}),a.jsx(te,{className:"h-3 w-3 transition-opacity duration-200 flex-shrink-0 opacity-0 group-hover:opacity-100"})]})}function jje({open:e,onOpenChange:n}){const t=zoe(),{toast:i}=Ck(),{updateAutomation:r}=qN(t?.id||""),o=jb();return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:t?.status===FN.SENDING?`Cancel ${qx("engage:automation")}`:`Cancel ${qx("engage:automation")} Before Sending`})}),a.jsx("div",{className:"space-y-4",children:t?a.jsxs(a.Fragment,t.status===FN.SENDING?{children:[a.jsxs("p",{className:"text-sm text-muted-foreground",children:["We'll help you cancel your",a.jsx("span",{className:"font-bold px-1 text-primary",children:t.name}),qx("engage:automation")," as soon as possible."]}),a.jsxs("div",{className:"rounded-lg bg-muted p-4 text-sm",children:[a.jsx("p",{className:"font-medium mb-2",children:"What happens next?"}),a.jsxs("ul",{className:"list-disc pl-4 space-y-1",children:[a.jsxs("li",{children:["We'll attempt to cancel the"," ",qx("engage:broadcast").toLowerCase()]}),a.jsx("li",{children:"Any messages already in the process of being sent will be delivered"}),a.jsxs("li",{children:["Future ",qx("engage:broadcast").toLowerCase()," messages will be cancelled"]}),a.jsxs("li",{children:["You can create a new ",qx("engage:broadcast").toLowerCase()," if needed"]})]})]})]}:{children:[a.jsxs("p",{className:"text-sm text-muted-foreground",children:["We'll help you cancel your",a.jsx("span",{className:"font-bold px-1 text-primary",children:t.name}),qx("engage:automation")," before it starts sending."]}),a.jsxs("div",{className:"rounded-lg bg-muted p-4 text-sm",children:[a.jsx("p",{className:"font-medium mb-2",children:"What happens next?"}),a.jsxs("ul",{className:"list-disc pl-4 space-y-1",children:[a.jsx("li",{children:"The automation will be cancelled"}),a.jsx("li",{children:"You can create a new automation if needed"})]})]})]}):null}),a.jsxs(wi,{className:"gap-2 sm:gap-0",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),children:"Continue Running"}),a.jsxs(Wa,{variant:"destructive",onClick:()=>{if(!t)return;const e=t.status===FN.SENDING?FN.PARTIALLY_CANCELLED:FN.CANCELLED,a=t.status===FN.SENDING?`Attempting to cancel ${qx("engage:broadcast").toLowerCase()}`:`Successfully cancelled ${qx("engage:broadcast").toLowerCase()}`,s=`Failed to cancel ${qx("engage:broadcast").toLowerCase()}`;r({status:e},{onError:()=>{i({title:s,description:"Please contact your administrator.",variant:"destructive"}),o.invalidateQueries({queryKey:RN.all})},onSuccess:()=>{n(!1),i({title:a,description:t.status===FN.SENDING?`We'll attempt to cancel your ${qx("engage:broadcast").toLowerCase()}. Any messages already in progress will be delivered.`:`Your ${qx("engage:broadcast").toLowerCase()} has been cancelled.`})}})},children:["Cancel ",qx("engage:automation")]})]})]})})}function _je({open:e,onOpenChange:n,setIsActive:t}){const i=zoe(),{updateAutomation:r}=qN(i?.id||""),{toast:o}=Ck(),s=jb(),l=qx(i?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation"),u=i?.triggerType===ON.ONE_TIME?"Unschedule":`Pause ${l}`;return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:u})}),a.jsxs("div",{children:[i?.triggerType===ON.ONE_TIME?"Are you sure you want to unschedule the":"Are you sure you want to pause the",a.jsx("span",{className:"font-bold px-1 text-primary",children:i?.name})," ",l,"?"]}),a.jsxs(wi,{className:"gap-2 sm:gap-0",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:()=>{r({status:FN.DRAFT},{onSuccess:()=>{o({title:`Updated ${l}`,description:`${l} status updated`}),n(!1),t(!1)},onError:()=>{o({title:`Failed to update ${l}`,description:"Please try again"}),s.invalidateQueries({queryKey:RN.all})}})},children:u})]})]})})}const Pje=vA({name:tA().min(2,"Title must be at least 2 characters"),description:tA()});function Lje({open:e,onOpenChange:n,onDuplicationCreated:t}){const i=zoe(),{toast:r}=Ck(),o=ho({resolver:gd(Pje),defaultValues:{name:`${i?.name} (copy)`,description:i?.description??""}}),{duplicateAutomation:s}=QN();return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Duplicate Automation"})}),a.jsx(Co,{...o,children:a.jsxs("form",{onSubmit:o.handleSubmit((async function(e){i&&e.name?s({automationId:i.id,name:e.name,description:e.description},{onSuccess:e=>{e.id&&(t?.(e.id),n(!1))}}):r({title:"Error duplicating automation",description:"Please try again. Please make sure to fill in the name of the automation."})})),className:"space-y-4",children:[a.jsxs("div",{children:["Create a copy of the",a.jsx("span",{className:"font-bold px-1 text-primary",children:i?.name}),"automation with a new title and description."]}),a.jsx(To,{control:o.control,name:"name",render:({field:e})=>a.jsxs(Eo,{children:[a.jsx(jo,{children:"Title"}),a.jsx(_o,{children:a.jsx(Lo,{...e})}),a.jsx(Po,{})]})}),a.jsx(To,{control:o.control,name:"description",render:({field:e})=>a.jsxs(Eo,{children:[a.jsx(jo,{children:"Description"}),a.jsx(_o,{children:a.jsx(vge,{...e})}),a.jsx(Po,{})]})}),a.jsx(wi,{children:a.jsx(Wa,{type:"submit",children:"Duplicate"})})]})})]})})}const Bje=vA({name:tA().min(2,"Title must be at least 2 characters")}),Rje=vA({description:tA().max(300,"Description must be less than 300 characters")}),Dje=({showBackButton:e,onDuplicationCreated:t,onBeforeSchedule:i})=>{const r=zoe(),o=dce(),{updateAutomation:s}=qN(r?.id||""),{toast:l}=Ck(),u=(()=>{const{state:e}=Doe();return e.recipientStats})(),c=Koe(),{data:d}=cN(),{channelSenders:h}=CC(),{channelAccounts:p}=SC(),g=jb(),[f,v]=n.useState(void 0),[y,b]=n.useState(!1),[S,w]=n.useState(!1),[A,C]=n.useState(!1),[M,T]=n.useState(!1),[x,N]=n.useState(0),[E,j]=n.useState(!1),P=vN({channelSenders:h?.results??[],channelAccounts:p?.results??[],smsApplication:d});n.useEffect((()=>{if(r)switch(r.status){case FN.DRAFT:v(!1);break;case FN.ACTIVE:case FN.RUNNING:case FN.COMPLETED:v(!0);break;case FN.FAILED:case FN.DEACTIVATED:v(!1);break;case FN.SENDING:case FN.SCHEDULED:v(!0);break;case FN.PARTIALLY_CANCELLED:case FN.CANCELLED:case FN.ARCHIVED:v(!1);break;default:throw Vde(r.status,FN)}}),[r]);const L=qx(r?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation"),B=n.useCallback((()=>{T(!0),s({status:FN.DRAFT},{onSuccess:()=>{v(!1),T(!1),l({title:`${L} activation undone`,description:"The automation will remain in draft status"})},onError:()=>{T(!1),l({title:"Error while updating the status",description:"Please refresh and try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})}),[L,s,g,l]),R=n.useCallback((()=>{if(!r)return l({title:`${L} not found`,description:"Please contact your administrator",variant:"destructive"}),null;const e=async e=>{if(f&&!e)C(!0);else{if(i&&!0===e){let e=0;for(;!u&&e<20;)await new Promise((e=>setTimeout(e,100))),e++;if(!u)return void l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"});const a=await i({estimatedEmailRecipients:u?.emails??0,estimatedSmsRecipients:u?.phones??0});if(!0!==a)return void l({title:"Error while updating the status",description:a,variant:"destructive"})}if(c?.emailChannelSenderId&&c?.emailHtmlBody&&c?.emailHtmlBody?.includes(tje)){if(0===x)return l({title:`${ije}. You can click send again to send anyway.`,variant:"warning"}),void N(x+1);N(x+1)}switch(r.triggerType){case ON.ONE_TIME:if(!r.triggerMetadata||!("scheduledAt"in r.triggerMetadata)||!r.triggerMetadata?.scheduledAt)return void l({title:"Ensure you have selected a scheduled time",variant:"destructive"});if(!c||!c.emailChannelSenderId&&!c.smsChannelSenderId)return void l({title:"Ensure you have selected at least one kind of communication",variant:"destructive"});break;case ON.TRIGGER_BASED:case ON.DATE_BASED:break;default:throw Vde(r.triggerType,ON)}e?(T(!0),s({status:FN.SENDING},{onSuccess:()=>{v(!0),T(!1),l({title:`${L} activation started`,variant:"default",action:a.jsx(sre,{altText:"Undo Activate",onClick:B,className:"bg-blue-50 text-blue-700 border border-blue-200 hover:bg-blue-100 transition-colors duration-150 rounded-md px-3 py-1.5 font-medium shadow-sm",children:"Undo"})})},onError:()=>{l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"}),T(!1),g.invalidateQueries({queryKey:RN.all})}})):(T(!0),s({status:e?FN.ACTIVE:FN.DEACTIVATED},{onSuccess:()=>{v(e),l(r.triggerType===ON.ONE_TIME?e?{title:`${L} started!`}:{title:`${L} has been unscheduled`}:{title:`${L} status updated to ${e?"active":"inactive"}`}),T(!1)},onError:()=>{l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"}),T(!1),g.invalidateQueries({queryKey:RN.all})}}))}};if(!r||!c)return null;const n=P.find((e=>e.channelSender.id===c?.smsChannelSenderId)),t=!r.triggerMetadata||null===r.triggerMetadata,o=r.triggerMetadata?.triggerType===ON.ONE_TIME&&!r.triggerMetadata?.scheduledAt,d=!c?.emailChannelSenderId&&!c?.smsChannelSenderId,m=r.triggerType===ON.ONE_TIME,h=m&&n&&n?.smsApplication?.application&&n?.smsApplication?.status!==fN.APPROVED,p=c?.emailChannelSenderId&&(!c?.emailSubject||!c?.emailHtmlBody),y=c?.smsChannelSenderId&&!c?.smsMessageBody,b=0===r.includeSegmentIds?.length,S=m&&(!r.triggerMetadata||!("scheduledAt"in r.triggerMetadata)||!r.triggerMetadata?.scheduledAt);let w,A=!1,M=!0;switch(r.status){case FN.ACTIVE:A=!1;break;case FN.DRAFT:(d||p||y||b)&&(A=!0,p&&(w="Missing subject in email communication"),y&&(w="Missing SMS message in SMS communication"),b&&(w="Missing include segment")),S&&(A=!0),h&&(A=!0);break;case FN.DEACTIVATED:case FN.PARTIALLY_CANCELLED:case FN.CANCELLED:switch(A=!0,M=!1,r.status){case FN.DEACTIVATED:w="Automation is deactivated";break;case FN.PARTIALLY_CANCELLED:w="Automation is partially cancelled";break;case FN.CANCELLED:w="Automation is cancelled";break;default:throw Vde(r.status,FN)}break;case FN.RUNNING:A=!0,r.triggerType===ON.TRIGGER_BASED?(w=`Cannot change status of running ${L}`,M=!0):M=r.triggerType===ON.ONE_TIME&&r.status===FN.RUNNING;break;case FN.COMPLETED:A=!0,w=`Cannot change status of completed ${L}`,M=!1;break;case FN.FAILED:A=!0,w=`Cannot change status of failed ${L}`,M=!1;break;case FN.SENDING:case FN.SCHEDULED:A=!1,M=!0;break;case FN.ARCHIVED:A=!0,w=`Cannot change status of archived ${L}`,M=!1;break;default:throw Vde(r.status,FN)}const E=(()=>{switch(r.triggerType){case ON.DATE_BASED:case ON.TRIGGER_BASED:return a.jsxs("div",{className:"flex items-center gap-2 w-[12ch] cursor-pointer",children:[a.jsx(f?k:_,{className:"w-4 h-4"}),a.jsx("div",{className:"text-[13px] font-medium",children:f?"Active":"Inactive"}),a.jsx(hNe,{checked:f,onCheckedChange:e,disabled:A})]});case ON.ONE_TIME:if((r.status===FN.RUNNING||r.status===FN.SCHEDULED||r.status===FN.SENDING)&&r.triggerType===ON.ONE_TIME)return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>j(!0),disabled:!1,children:"Cancel"});if(t||o||d||h||p||y||b){return a.jsx("div",{className:"flex items-center gap-2 cursor-not-allowed",children:(()=>{const n=r.triggerMetadata&&"scheduledAt"in r.triggerMetadata&&"now"===r.triggerMetadata?.scheduledAt?`Start ${L}`:"Schedule Send";if(r.status!==FN.DRAFT&&r.triggerMetadata&&"scheduledAt"in r.triggerMetadata&&"now"!==r.triggerMetadata?.scheduledAt&&r.status===FN.ACTIVE)return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:r.triggerType===ON.ONE_TIME?"Unschedule":"Convert to Draft"});const t=[];h&&t.push("The SMS number selected is still not approved"),S&&t.push("Please select a schedule time on the left sidebar"),d&&t.push("Please add at least one sender"),p&&t.push("Please add a subject to your email communication"),y&&t.push("Please add a message to your SMS communication"),b&&t.push(`Please select at least one ${qx("engage:segment",{count:1}).toLowerCase()}`);const i=t.map((e=>{return(a=e)?a.charAt(0).toUpperCase()+a.slice(1):a;var a})),o=`You cannot start this ${qx("engage:broadcast").toLowerCase()} yet. ${i.join(" · ")}`;return a.jsx("div",{className:"flex items-center gap-2",children:a.jsx(ex,{alertText:o,asChild:!1,className:"!cursor-not-allowed",children:a.jsx("div",{className:"px-4 py-2 rounded border border-input bg-background text-muted-foreground cursor-not-allowed text-sm font-medium",children:a.jsx("span",{children:n})})})})})()})}if(!f){let n="Schedule Send";return r.triggerMetadata&&r.triggerMetadata.triggerType===ON.ONE_TIME&&r.triggerMetadata.scheduledAt&&"now"===r.triggerMetadata.scheduledAt&&(n=`Start ${L}`),a.jsx(Wa,{id:"start-automation-button",variant:"default",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:n})}return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:r.triggerType===ON.ONE_TIME?"Unschedule":"Convert to Draft"});default:throw Vde(r.triggerType,ON)}})();return A&&w&&r.triggerType===ON.TRIGGER_BASED?a.jsx(ex,{alertText:w,asChild:!0,children:a.jsx("div",{className:"flex items-center gap-2",children:M&&E})}):a.jsx("div",{className:"flex items-center gap-2",children:M&&E})}),[r,c,P,l,f,L,i,s,u,x,g,B]),D=n.useMemo((()=>r?a.jsx(qT,{variant:tge(r.status),id:"automation-status-pill",children:Jde({status:r.status,automationType:r.triggerType,vsaasManaged:r.automationType===IN.MANAGED})}):null),[r]);return r&&void 0!==f?a.jsxs("header",{className:"flex px-1 pt-1",children:[a.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e&&a.jsx(Wa,{variant:"ghost",size:"icon",onClick:()=>o(-1),children:a.jsx(m,{})}),a.jsx("div",{className:"flex items-center gap-2",children:a.jsxs("div",{className:"flex flex-col gap-0 items-start",children:[a.jsx(Eje,{value:r.name,schema:Bje,onSubmit:e=>{s({name:e.name},{onError:()=>{l({title:`Failed to update ${L} name`,description:"Please try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})},fieldName:"name",className:"text-lg",successMessage:`${L} name updated`,errorMessage:`Failed to update ${L.toLowerCase()} name`}),r.automationType!==IN.MANAGED?a.jsx(Eje,{value:r.description||"",schema:Rje,onSubmit:e=>{s({description:e.description},{onError:()=>{l({title:`Failed to update ${L.toLowerCase()} description`,description:"Please try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})},fieldName:"description",className:"text-sm "+(r.description?"text-current":"text-muted-foreground"),successMessage:"Description updated",errorMessage:"Failed to update description",placeholderText:`Describe the goal of the ${L.toLowerCase()}`}):r.description&&a.jsx("div",{className:"text-sm text-current",children:r.description})]})})]}),a.jsxs("div",{className:"ml-auto flex gap-4 items-center",children:[a.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[D,r.triggerType===ON.ONE_TIME&&a.jsxs(a.Fragment,{children:[a.jsx("div",{role:"button",tabIndex:0,className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-10 w-10 cursor-pointer",onClick:()=>b(!0),children:a.jsx(ex,{title:"Duplicate",Icon:sM.DuplicateIcon,asChild:!1,onClick:()=>b(!0)})}),(r.status===FN.COMPLETED||r.status===FN.DRAFT||r.status===FN.PARTIALLY_CANCELLED||r.status===FN.CANCELLED)&&a.jsx("div",{role:"button",tabIndex:0,className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-10 w-10 cursor-pointer",onClick:()=>w(!0),children:a.jsx(ex,{title:"Archive",Icon:sM.ArchiveIcon,asChild:!1,onClick:()=>w(!0)})})]})]}),a.jsx("div",M?{className:"flex items-center text-muted-foreground pr-2",children:a.jsx(fd,{size:"sm"})}:{className:"flex items-center",children:R()})]}),a.jsx(Lje,{open:y,onOpenChange:b,onDuplicationCreated:t}),a.jsx(_je,{open:A,onOpenChange:C,setIsActive:v}),a.jsx(jje,{open:E,onOpenChange:j}),a.jsx(Nje,{open:S,onOpenChange:w})]}):null},zje=()=>{const e=zoe(),{isLoading:t}=ZN(e?.id),[i,r]=n.useState(void 0),{orders:o,nextCursor:s,totalCount:l,isLoading:u,isFetching:c,isPlaceholderData:d}=$N({automationId:e?.id??"",cursor:i,limit:10,automationStatus:e?.status}),{state:{hideSales:m,hideSms:h}}=n.useContext(toe),p=n.useCallback((e=>{r(e.cursor)}),[]);if(!e||t)return a.jsx(fd,{text:[`Fetching ${qx("engage:insight",{count:2})}`,"Finishing up"]});const g=o?.results||[],f=[{accessorKey:"first_name",header:"Customer",enableSorting:!1,cell:({row:e})=>{const n=e.original.first_name||"",t=e.original.last_name||"",i=e.original.email||"";return a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:n&&t?`${n} ${t}`:"Unknown"}),i&&a.jsx("span",{className:"text-xs text-muted-foreground",children:i})]})},size:200},{accessorKey:"amount",header:"Amount",enableSorting:!1,cell:({row:e})=>{const a=parseFloat(e.original.amount);return $de(a)},size:120},{accessorKey:"communication_type",header:"Channel",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"capitalize text-sm",children:e.original.communication_type||"Unknown"}),size:100},{accessorKey:"schedule_send_at",header:"Sent Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.schedule_send_at;return a?new Date(a).toLocaleDateString():"Unknown"},size:140},{accessorKey:"created_date",header:"Order Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.created_date;return a?new Date(a).toLocaleDateString():"Unknown"},size:140}];return a.jsxs("div",{className:"h-full p-4 space-y-6",children:[a.jsx(Sje,{automationId:e.id,automation:e,includeSales:!m,includeSms:!h,showErrors:!0}),!m&&a.jsxs("div",{className:"bg-white rounded-2xl p-6",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground mb-4",children:"Sales From This Campaigns"}),void 0!==l&&a.jsxs("p",{className:"text-sm text-muted-foreground mb-4",children:["Total Orders: ",l]}),a.jsx(dle,{data:g,columns:f,paginationMode:"cursor",totalCount:l??void 0,initialPageSize:10,isLoading:u,cursorPaginationQueryResult:{nextCursor:s||void 0,isLoading:u,isFetching:c,isPlaceholderData:d},hideLoadingState:!0,onQueryParametersChange:p,enableSorting:!1})]})]})},Oje=({options:e})=>a.jsxs(Hde,{children:[a.jsx(Fde,{asChild:!0,children:a.jsx(Wa,{className:"p-1 hover:bg-gray-100 rounded transition-colors",variant:"ghost",children:a.jsx("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:a.jsx(sM.FilterIcon,{className:"w-4 h-4"})})})}),a.jsx(Gde,{className:"w-48",children:a.jsx("div",{className:"space-y-2",children:a.jsx("div",{className:"space-y-1",children:e.map((e=>a.jsx(Wa,{onClick:e.onClick,variant:"ghost",className:"w-full text-left px-2 py-1.5 rounded text-sm transition-colors "+(e.isActive?"bg-blue-100 text-blue-700":"hover:bg-gray-100"),children:e.title},e.title)))})})})]});function Kje({automationId:e}){const[t,i]=n.useState(""),[r,o]=n.useState(!1),[s,l]=n.useState(void 0),[u,c]=n.useState(25),d=n.useRef(""),{sentCommunications:m,isLoading:h,isFetching:p,isPlaceholderData:g}=UN({automationId:e,cursor:s,limit:u,search:t||void 0,errorsOnly:r}),f={nextCursor:m?.pagination.cursor||null,isLoading:h,isFetching:p,isPlaceholderData:!!g},v=n.useCallback((e=>{l(e.cursor),c(e.pageSize)}),[]),y=[{accessorKey:"communicationJobCreatedAt",id:"lastCommunication",header:"Sent At",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>e.original.communicationJobCreatedAt?a.jsx("div",{className:"flex items-center gap-2",children:a.jsx("span",{className:"text-sm text-gray-600",children:cue(new Date(e.original.communicationJobCreatedAt),"MMM d, yyyy h:mm a")})}):a.jsx("span",{className:"text-gray-400",children:"Not available"})},{accessorFn:e=>`${e.firstName||""} ${e.lastName||""}`.trim(),id:"name",header:"Name",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>{const n=`${e.original.firstName||""} ${e.original.lastName||""}`.trim();return n||a.jsx("span",{className:"text-gray-400",children:"Not provided"})}},{accessorKey:"email",header:"Email",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>a.jsx("div",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:e.original.email||a.jsx("span",{className:"text-gray-400",children:"Not provided"})})},{accessorKey:"phone",header:"Phone",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>a.jsx("div",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:e.original.phone?BTe(e.original.phone):a.jsx("span",{className:"text-gray-400",children:"Not provided"})})},{accessorKey:"communicationsSent",id:"communicationsSent",header:()=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{children:"Communications Sent"}),a.jsx(Oje,{options:[{title:"All Communications",onClick:()=>{o(!1)},isActive:!r},{title:"Errors Only",onClick:()=>{o(!0)},isActive:r}]})]}),enableSorting:!1,enableColumnFilter:!1,filterFn:(e,a,n)=>(n!==d.current&&(d.current=n,o("errors-only"===n)),!0),cell:({row:e})=>{const n=e.original.communicationsSent||[],t=n.filter((e=>e.type===GN.EMAIL)),i=n.filter((e=>e.type===GN.SMS)),r=t.length>0,o=i.length>0,s=t.some((e=>e.delivered)),l=i.some((e=>e.delivered)),u=t.find((e=>e.error))?.error,c=i.find((e=>e.error))?.error,d=t.some((e=>e.skipped)),m=i.some((e=>e.skipped)),h=(e,n,t,i)=>a.jsxs("div",{className:"flex items-center gap-1.5 cursor-pointer",children:[a.jsxs("div",{className:"relative",children:[a.jsx("email"===e?sM.EmailIcon:sM.SmsIcon,{className:"h-4 w-4 "+(t?"text-red-500":i?"text-gray-400":n?"text-green-500":"text-gray-400")}),n&&!t&&!i&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-green-500 ring-1 ring-white"}),t&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-red-500 ring-1 ring-white"}),i&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-gray-400 ring-1 ring-white"})]}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"text-sm font-medium",children:"email"===e?"Email":"SMS"}),a.jsx("span",t?{className:"text-xs text-red-500",children:"Failed"}:i?{className:"text-xs text-gray-500",children:"Skipped"}:{className:"text-xs "+(n?"text-green-600":"text-gray-500"),children:n?"Delivered":"Pending"})]})]});return a.jsxs("div",{className:"flex items-center gap-3",children:[r&&(u?a.jsx(ex,{title:u,children:h("email",s,u,d)}):h("email",s,u,d)),r&&o&&a.jsx("div",{className:"h-8 w-px bg-gray-200"}),o&&(c?a.jsx(ex,{title:c,children:h("sms",l,c,m)}):h("sms",l,c,m)),!r&&!o&&a.jsx("span",{className:"text-sm text-gray-400",children:"None"})]})}}];return a.jsx("div",{className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-4",children:a.jsx(dle,{data:m?.results||[],columns:y,isLoading:h&&!g,paginationMode:"cursor",initialPageSize:u,totalCount:m?.pagination.total,searchValue:t,onSearchChange:i,manualFiltering:!1,hideLoadingState:!0,cursorPaginationQueryResult:f,onQueryParametersChange:v})})})}const Ije=()=>{const e=zoe();return e?e?.triggerType===ON.ONE_TIME&&e?.status===FN.DRAFT?a.jsxs("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:[a.jsx("div",{className:"mb-4",children:a.jsx(sM.UserIcon,{className:"h-12 w-12 text-gray-400"})}),a.jsx("h3",{className:"mb-2 text-lg font-semibold text-gray-700",children:"No Recipients Available Yet"}),a.jsxs("p",{className:"text-gray-500",children:["Recipients will be available once this"," ",qx(e.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation")," ","has completed running. Please check back after the automation has finished."]})]}):a.jsx(Kje,{automationId:e.id}):a.jsx(fd,{text:["Fetching Recipients","Finishing up"]})},Hje=n.createContext(null);Hje.displayName="PanelGroupContext";const Fje="data-panel-group",Gje="data-panel-group-direction",Vje="data-panel-group-id",Jje="data-panel",Uje="data-panel-collapsible",Wje="data-panel-id",qje="data-panel-size",Zje="data-resize-handle",$je="data-resize-handle-active",Yje="data-panel-resize-handle-enabled",Qje="data-panel-resize-handle-id",Xje="data-resize-handle-state",e_e=n.useLayoutEffect,a_e=r["useId".toString()],n_e="function"==typeof a_e?a_e:()=>null;let t_e=0;function i_e(e=null){const a=n_e(),t=n.useRef(e||a||null);return null===t.current&&(t.current=""+t_e++),null!=e?e:t.current}function r_e({children:e,className:a="",collapsedSize:t,collapsible:i,defaultSize:r,forwardedRef:o,id:s,maxSize:l,minSize:u,onCollapse:c,onExpand:d,onResize:m,order:h,style:p,tagName:g="div",...f}){const v=n.useContext(Hje);if(null===v)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:y,expandPanel:k,getPanelSize:b,getPanelStyle:S,groupId:w,isPanelCollapsed:A,reevaluatePanelConstraints:C,registerPanel:M,resizePanel:T,unregisterPanel:x}=v,N=i_e(s),E=n.useRef({callbacks:{onCollapse:c,onExpand:d,onResize:m},constraints:{collapsedSize:t,collapsible:i,defaultSize:r,maxSize:l,minSize:u},id:N,idIsFromProps:void 0!==s,order:h});n.useRef({didLogMissingDefaultSizeWarning:!1}),e_e((()=>{const{callbacks:e,constraints:a}=E.current,n={...a};E.current.id=N,E.current.idIsFromProps=void 0!==s,E.current.order=h,e.onCollapse=c,e.onExpand=d,e.onResize=m,a.collapsedSize=t,a.collapsible=i,a.defaultSize=r,a.maxSize=l,a.minSize=u,n.collapsedSize===a.collapsedSize&&n.collapsible===a.collapsible&&n.maxSize===a.maxSize&&n.minSize===a.minSize||C(E.current,n)})),e_e((()=>{const e=E.current;return M(e),()=>{x(e)}}),[h,N,M,x]),n.useImperativeHandle(o,(()=>({collapse:()=>{y(E.current)},expand:e=>{k(E.current,e)},getId:()=>N,getSize:()=>b(E.current),isCollapsed:()=>A(E.current),isExpanded:()=>!A(E.current),resize:e=>{T(E.current,e)}})),[y,k,b,A,N,T]);const j=S(E.current,r);return n.createElement(g,{...f,children:e,className:a,id:N,style:{...j,...p},[Vje]:w,[Jje]:"",[Uje]:i||void 0,[Wje]:N,[qje]:parseFloat(""+j.flexGrow).toFixed(1)})}const o_e=n.forwardRef(((e,a)=>n.createElement(r_e,{...e,forwardedRef:a})));r_e.displayName="Panel",o_e.displayName="forwardRef(Panel)";let s_e=null,l_e=-1,u_e=null;function c_e(e,a){var n,t;const i=function(e,a){if(a){const e=!!(a&A_e),n=!!(a&C_e);if(a&S_e)return e?"se-resize":n?"ne-resize":"e-resize";if(a&w_e)return e?"sw-resize":n?"nw-resize":"w-resize";if(e)return"s-resize";if(n)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}(e,a);if(s_e!==i){var r;if(s_e=i,null===u_e&&(u_e=document.createElement("style"),document.head.appendChild(u_e)),l_e>=0)null===(r=u_e.sheet)||void 0===r||r.removeRule(l_e);l_e=null!==(n=null===(t=u_e.sheet)||void 0===t?void 0:t.insertRule(`*{cursor: ${i} !important;}`))&&void 0!==n?n:-1}}function d_e(e){return"keydown"===e.type}function m_e(e){return e.type.startsWith("pointer")}function h_e(e){return e.type.startsWith("mouse")}function p_e(e){if(m_e(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(h_e(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}const g_e=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function f_e(e){const a=getComputedStyle(e);return"fixed"===a.position||(!("auto"===a.zIndex||"static"===a.position&&!function(e){var a;const n=getComputedStyle(null!==(a=b_e(e))&&void 0!==a?a:e).display;return"flex"===n||"inline-flex"===n}(e))||(+a.opacity<1||("transform"in a&&"none"!==a.transform||("webkitTransform"in a&&"none"!==a.webkitTransform||("mixBlendMode"in a&&"normal"!==a.mixBlendMode||("filter"in a&&"none"!==a.filter||("webkitFilter"in a&&"none"!==a.webkitFilter||("isolation"in a&&"isolate"===a.isolation||(!!g_e.test(a.willChange)||"touch"===a.webkitOverflowScrolling)))))))))}function v_e(e){let a=e.length;for(;a--;){const n=e[a];if(H_e(n,"Missing node"),f_e(n))return n}return null}function y_e(e){return e&&Number(getComputedStyle(e).zIndex)||0}function k_e(e){const a=[];for(;e;)a.push(e),e=b_e(e);return a}function b_e(e){const{parentNode:a}=e;return a&&a instanceof ShadowRoot?a.host:a}const S_e=1,w_e=2,A_e=4,C_e=8,M_e="coarse"===function(){if("function"==typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}();let T_e=[],x_e=!1,N_e=new Map,E_e=new Map;const j_e=new Set;function __e(e){const{target:a}=e,{x:n,y:t}=p_e(e);x_e=!0,R_e({target:a,x:n,y:t}),K_e(),T_e.length>0&&(I_e("down",e),e.preventDefault(),B_e(a)||e.stopImmediatePropagation())}function P_e(e){const{x:a,y:n}=p_e(e);if(x_e&&0===e.buttons&&(x_e=!1,I_e("up",e)),!x_e){const{target:t}=e;R_e({target:t,x:a,y:n})}I_e("move",e),z_e(),T_e.length>0&&e.preventDefault()}function L_e(e){const{target:a}=e,{x:n,y:t}=p_e(e);E_e.clear(),x_e=!1,T_e.length>0&&(e.preventDefault(),B_e(a)||e.stopImmediatePropagation()),I_e("up",e),R_e({target:a,x:n,y:t}),z_e(),K_e()}function B_e(e){let a=e;for(;a;){if(a.hasAttribute(Zje))return!0;a=a.parentElement}return!1}function R_e({target:e,x:a,y:n}){T_e.splice(0);let t=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(t=e),j_e.forEach((e=>{const{element:i,hitAreaMargins:r}=e,o=i.getBoundingClientRect(),{bottom:s,left:l,right:u,top:c}=o,d=M_e?r.coarse:r.fine;if(a>=l-d&&a<=u+d&&n>=c-d&&n<=s+d){if(null!==t&&document.contains(t)&&i!==t&&!i.contains(t)&&!t.contains(i)&&function(e,a){if(e===a)throw new Error("Cannot compare node with itself");const n={a:k_e(e),b:k_e(a)};let t;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),a=n.b.pop(),t=e;H_e(t,"Stacking order can only be calculated for elements with a common ancestor");const i=y_e(v_e(n.a)),r=y_e(v_e(n.b));if(i===r){const e=t.childNodes,a={a:n.a.at(-1),b:n.b.at(-1)};let i=e.length;for(;i--;){const n=e[i];if(n===a.a)return 1;if(n===a.b)return-1}}return Math.sign(i-r)}(t,i)>0){let e=t,a=!1;for(;e&&!e.contains(i);){if((m=e.getBoundingClientRect()).x<(h=o).x+h.width&&m.x+m.width>h.x&&m.y<h.y+h.height&&m.y+m.height>h.y){a=!0;break}e=e.parentElement}if(a)return}T_e.push(e)}var m,h}))}function D_e(e,a){E_e.set(e,a)}function z_e(){let e=!1,a=!1;T_e.forEach((n=>{const{direction:t}=n;"horizontal"===t?e=!0:a=!0}));let n=0;E_e.forEach((e=>{n|=e})),e&&a?c_e("intersection",n):e?c_e("horizontal",n):a?c_e("vertical",n):null!==u_e&&(document.head.removeChild(u_e),s_e=null,u_e=null,l_e=-1)}let O_e=new AbortController;function K_e(){O_e.abort(),O_e=new AbortController;const e={capture:!0,signal:O_e.signal};j_e.size&&(x_e?(T_e.length>0&&N_e.forEach(((a,n)=>{const{body:t}=n;a>0&&(t.addEventListener("contextmenu",L_e,e),t.addEventListener("pointerleave",P_e,e),t.addEventListener("pointermove",P_e,e))})),N_e.forEach(((a,n)=>{const{body:t}=n;t.addEventListener("pointerup",L_e,e),t.addEventListener("pointercancel",L_e,e)}))):N_e.forEach(((a,n)=>{const{body:t}=n;a>0&&(t.addEventListener("pointerdown",__e,e),t.addEventListener("pointermove",P_e,e))})))}function I_e(e,a){j_e.forEach((n=>{const{setResizeHandlerState:t}=n,i=T_e.includes(n);t(e,i,a)}))}function H_e(e,a){if(!e)throw Error(a)}function F_e(e,a,n=10){return e.toFixed(n)===a.toFixed(n)?0:e>a?1:-1}function G_e(e,a,n=10){return 0===F_e(e,a,n)}function V_e(e,a,n){return 0===F_e(e,a,n)}function J_e({panelConstraints:e,panelIndex:a,size:n}){const t=e[a];H_e(null!=t,`Panel constraints not found for index ${a}`);let{collapsedSize:i=0,collapsible:r,maxSize:o=100,minSize:s=0}=t;if(F_e(n,s)<0)if(r){n=F_e(n,(i+s)/2)<0?i:s}else n=s;return n=Math.min(o,n),n=parseFloat(n.toFixed(10))}function U_e({delta:e,initialLayout:a,panelConstraints:n,pivotIndices:t,prevLayout:i,trigger:r}){if(V_e(e,0))return a;const o=[...a],[s,l]=t;H_e(null!=s,"Invalid first pivot index"),H_e(null!=l,"Invalid second pivot index");let u=0;if("keyboard"===r){{const t=e<0?l:s,i=n[t];H_e(i,`Panel constraints not found for index ${t}`);const{collapsedSize:r=0,collapsible:o,minSize:u=0}=i;if(o){const n=a[t];if(H_e(null!=n,`Previous layout not found for panel index ${t}`),V_e(n,r)){const a=u-n;F_e(a,Math.abs(e))>0&&(e=e<0?0-a:a)}}}{const t=e<0?s:l,i=n[t];H_e(i,`No panel constraints found for index ${t}`);const{collapsedSize:r=0,collapsible:o,minSize:u=0}=i;if(o){const n=a[t];if(H_e(null!=n,`Previous layout not found for panel index ${t}`),V_e(n,u)){const a=n-r;F_e(a,Math.abs(e))>0&&(e=e<0?0-a:a)}}}}{const t=e<0?1:-1;let i=e<0?l:s,r=0;for(;;){const e=a[i];H_e(null!=e,`Previous layout not found for panel index ${i}`);if(r+=J_e({panelConstraints:n,panelIndex:i,size:100})-e,i+=t,i<0||i>=n.length)break}const o=Math.min(Math.abs(e),Math.abs(r));e=e<0?0-o:o}{let t=e<0?s:l;for(;t>=0&&t<n.length;){const i=Math.abs(e)-Math.abs(u),r=a[t];H_e(null!=r,`Previous layout not found for panel index ${t}`);const s=J_e({panelConstraints:n,panelIndex:t,size:r-i});if(!V_e(r,s)&&(u+=r-s,o[t]=s,u.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(function(e,a,n){if(e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!V_e(e[t],a[t],n))return!1;return!0}(i,o))return i;{const t=e<0?l:s,i=a[t];H_e(null!=i,`Previous layout not found for panel index ${t}`);const r=i+u,c=J_e({panelConstraints:n,panelIndex:t,size:r});if(o[t]=c,!V_e(c,r)){let a=r-c;let t=e<0?l:s;for(;t>=0&&t<n.length;){const i=o[t];H_e(null!=i,`Previous layout not found for panel index ${t}`);const r=J_e({panelConstraints:n,panelIndex:t,size:i+a});if(V_e(i,r)||(a-=r-i,o[t]=r),V_e(a,0))break;e>0?t--:t++}}}return V_e(o.reduce(((e,a)=>a+e),0),100)?o:i}function W_e({layout:e,panelsArray:a,pivotIndices:n}){let t=0,i=100,r=0,o=0;const s=n[0];H_e(null!=s,"No pivot index found"),a.forEach(((e,a)=>{const{constraints:n}=e,{maxSize:l=100,minSize:u=0}=n;a===s?(t=u,i=l):(r+=u,o+=l)}));return{valueMax:Math.min(i,100-r),valueMin:Math.max(t,100-o),valueNow:e[s]}}function q_e(e,a=document){return Array.from(a.querySelectorAll(`[${Qje}][data-panel-group-id="${e}"]`))}function Z_e(e,a,n=document){const t=q_e(e,n).findIndex((e=>e.getAttribute(Qje)===a));return null!=t?t:null}function $_e(e,a,n){const t=Z_e(e,a,n);return null!=t?[t,t+1]:[-1,-1]}function Y_e(e,a=document){var n;if(a instanceof HTMLElement&&(null==a||null===(n=a.dataset)||void 0===n?void 0:n.panelGroupId)==e)return a;const t=a.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return t||null}function Q_e(e,a=document){const n=a.querySelector(`[${Qje}="${e}"]`);return n||null}function X_e({committedValuesRef:e,eagerValuesRef:a,groupId:t,layout:i,panelDataArray:r,panelGroupElement:o,setLayout:s}){n.useRef({didWarnAboutMissingResizeHandle:!1}),e_e((()=>{if(!o)return;const e=q_e(t,o);for(let a=0;a<r.length-1;a++){const{valueMax:n,valueMin:t,valueNow:o}=W_e({layout:i,panelsArray:r,pivotIndices:[a,a+1]}),s=e[a];if(null==s);else{const e=r[a];H_e(e,`No panel data found for index "${a}"`),s.setAttribute("aria-controls",e.id),s.setAttribute("aria-valuemax",""+Math.round(n)),s.setAttribute("aria-valuemin",""+Math.round(t)),s.setAttribute("aria-valuenow",null!=o?""+Math.round(o):"")}}return()=>{e.forEach(((e,a)=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-valuemax"),e.removeAttribute("aria-valuemin"),e.removeAttribute("aria-valuenow")}))}}),[t,i,r,o]),n.useEffect((()=>{if(!o)return;const e=a.current;H_e(e,"Eager values not found");const{panelDataArray:n}=e;H_e(null!=Y_e(t,o),`No group found for id "${t}"`);const r=q_e(t,o);H_e(r,`No resize handles found for group id "${t}"`);const l=r.map((e=>{const a=e.getAttribute(Qje);H_e(a,"Resize handle element has no handle id attribute");const[r,l]=function(e,a,n,t=document){var i,r,o,s;const l=Q_e(a,t),u=q_e(e,t),c=l?u.indexOf(l):-1;return[null!==(i=null===(r=n[c])||void 0===r?void 0:r.id)&&void 0!==i?i:null,null!==(o=null===(s=n[c+1])||void 0===s?void 0:s.id)&&void 0!==o?o:null]}(t,a,n,o);if(null==r||null==l)return()=>{};const u=e=>{if(!e.defaultPrevented)switch(e.key){case"Enter":{e.preventDefault();const l=n.findIndex((e=>e.id===r));if(l>=0){const e=n[l];H_e(e,`No panel data found for index ${l}`);const r=i[l],{collapsedSize:u=0,collapsible:c,minSize:d=0}=e.constraints;if(null!=r&&c){const e=U_e({delta:V_e(r,u)?d-u:u-r,initialLayout:i,panelConstraints:n.map((e=>e.constraints)),pivotIndices:$_e(t,a,o),prevLayout:i,trigger:"keyboard"});i!==e&&s(e)}}break}}};return e.addEventListener("keydown",u),()=>{e.removeEventListener("keydown",u)}}));return()=>{l.forEach((e=>e()))}}),[o,e,a,t,i,r,s])}function ePe(e,a){if(e.length!==a.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==a[n])return!1;return!0}function aPe(e,a){const n="horizontal"===e,{x:t,y:i}=p_e(a);return n?t:i}function nPe(e,a,n,t,i,r){if(d_e(e)){const a="horizontal"===n;let t=0;t=e.shiftKey?100:null!=i?i:10;let r=0;switch(e.key){case"ArrowDown":r=a?0:t;break;case"ArrowLeft":r=a?-t:0;break;case"ArrowRight":r=a?t:0;break;case"ArrowUp":r=a?0:-t;break;case"End":r=100;break;case"Home":r=-100}return r}return null==t?0:function(e,a,n,t,i){const r="horizontal"===n,o=Q_e(a,i);H_e(o,`No resize handle element found for id "${a}"`);const s=o.getAttribute(Vje);H_e(s,"Resize handle element has no group id attribute");let{initialCursorPosition:l}=t;const u=aPe(n,e),c=Y_e(s,i);H_e(c,`No group element found for id "${s}"`);const d=c.getBoundingClientRect();return(u-l)/(r?d.width:d.height)*100}(e,a,n,t,r)}function tPe(e,a,n){a.forEach(((a,t)=>{const i=e[t];H_e(i,`Panel data not found for index ${t}`);const{callbacks:r,constraints:o,id:s}=i,{collapsedSize:l=0,collapsible:u}=o,c=n[s];if(null==c||a!==c){n[s]=a;const{onCollapse:e,onExpand:t,onResize:i}=r;i&&i(a,c),u&&(e||t)&&(!t||null!=c&&!G_e(c,l)||G_e(a,l)||t(),!e||null!=c&&G_e(c,l)||!G_e(a,l)||e())}}))}function iPe(e,a){if(e.length!==a.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=a[n])return!1;return!0}function rPe(e){try{if("undefined"==typeof localStorage)throw new Error("localStorage not supported in this environment");e.getItem=e=>localStorage.getItem(e),e.setItem=(e,a)=>{localStorage.setItem(e,a)}}catch(a){e.getItem=()=>null,e.setItem=()=>{}}}function oPe(e){return`react-resizable-panels:${e}`}function sPe(e){return e.map((e=>{const{constraints:a,id:n,idIsFromProps:t,order:i}=e;return t?n:i?`${i}:${JSON.stringify(a)}`:JSON.stringify(a)})).sort(((e,a)=>e.localeCompare(a))).join(",")}function lPe(e,a){try{const n=oPe(e),t=a.getItem(n);if(t){const e=JSON.parse(t);if("object"==typeof e&&null!=e)return e}}catch(n){}return null}function uPe(e,a,n,t,i){var r;const o=oPe(e),s=sPe(a),l=null!==(r=lPe(e,i))&&void 0!==r?r:{};l[s]={expandToSizes:Object.fromEntries(n.entries()),layout:t};try{i.setItem(o,JSON.stringify(l))}catch(u){}}function cPe({layout:e,panelConstraints:a}){const n=[...e],t=n.reduce(((e,a)=>e+a),0);if(n.length!==a.length)throw Error(`Invalid ${a.length} panel layout: ${n.map((e=>`${e}%`)).join(", ")}`);if(!V_e(t,100)&&n.length>0)for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);n[r]=100/t*e}let i=0;for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);const t=J_e({panelConstraints:a,panelIndex:r,size:e});e!=t&&(i+=e-t,n[r]=t)}if(!V_e(i,0))for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);const t=J_e({panelConstraints:a,panelIndex:r,size:e+i});if(e!==t&&(i-=t-e,n[r]=t,V_e(i,0)))break}return n}const dPe={getItem:e=>(rPe(dPe),dPe.getItem(e)),setItem:(e,a)=>{rPe(dPe),dPe.setItem(e,a)}},mPe={};function hPe({autoSaveId:e=null,children:a,className:t="",direction:i,forwardedRef:r,id:o=null,onLayout:s=null,keyboardResizeBy:l=null,storage:u=dPe,style:c,tagName:d="div",...m}){const h=i_e(o),p=n.useRef(null),[g,f]=n.useState(null),[v,y]=n.useState([]),k=function(){const[e,a]=n.useState(0);return n.useCallback((()=>a((e=>e+1))),[])}(),b=n.useRef({}),S=n.useRef(new Map),w=n.useRef(0),A=n.useRef({autoSaveId:e,direction:i,dragState:g,id:h,keyboardResizeBy:l,onLayout:s,storage:u}),C=n.useRef({layout:v,panelDataArray:[],panelDataArrayChanged:!1});n.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),n.useImperativeHandle(r,(()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:e}=C.current;return e},setLayout:e=>{const{onLayout:a}=A.current,{layout:n,panelDataArray:t}=C.current,i=cPe({layout:e,panelConstraints:t.map((e=>e.constraints))});ePe(n,i)||(y(i),C.current.layout=i,a&&a(i),tPe(t,i,b.current))}})),[]),e_e((()=>{A.current.autoSaveId=e,A.current.direction=i,A.current.dragState=g,A.current.id=h,A.current.onLayout=s,A.current.storage=u})),X_e({committedValuesRef:A,eagerValuesRef:C,groupId:h,layout:v,panelDataArray:C.current.panelDataArray,setLayout:y,panelGroupElement:p.current}),n.useEffect((()=>{const{panelDataArray:a}=C.current;if(e){if(0===v.length||v.length!==a.length)return;let n=mPe[e];null==n&&(n=function(e,a=10){let n=null;return(...t)=>{null!==n&&clearTimeout(n),n=setTimeout((()=>{e(...t)}),a)}}(uPe,100),mPe[e]=n);const t=[...a],i=new Map(S.current);n(e,t,i,v,u)}}),[e,v,u]),n.useEffect((()=>{}));const M=n.useCallback((e=>{const{onLayout:a}=A.current,{layout:n,panelDataArray:t}=C.current;if(e.constraints.collapsible){const i=t.map((e=>e.constraints)),{collapsedSize:r=0,panelSize:o,pivotIndices:s}=fPe(t,e,n);if(H_e(null!=o,`Panel size not found for panel "${e.id}"`),!G_e(o,r)){S.current.set(e.id,o);const l=U_e({delta:gPe(t,e)===t.length-1?o-r:r-o,initialLayout:n,panelConstraints:i,pivotIndices:s,prevLayout:n,trigger:"imperative-api"});iPe(n,l)||(y(l),C.current.layout=l,a&&a(l),tPe(t,l,b.current))}}}),[]),T=n.useCallback(((e,a)=>{const{onLayout:n}=A.current,{layout:t,panelDataArray:i}=C.current;if(e.constraints.collapsible){const r=i.map((e=>e.constraints)),{collapsedSize:o=0,panelSize:s=0,minSize:l=0,pivotIndices:u}=fPe(i,e,t),c=null!=a?a:l;if(G_e(s,o)){const a=S.current.get(e.id),o=null!=a&&a>=c?a:c,l=U_e({delta:gPe(i,e)===i.length-1?s-o:o-s,initialLayout:t,panelConstraints:r,pivotIndices:u,prevLayout:t,trigger:"imperative-api"});iPe(t,l)||(y(l),C.current.layout=l,n&&n(l),tPe(i,l,b.current))}}}),[]),x=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{panelSize:t}=fPe(n,e,a);return H_e(null!=t,`Panel size not found for panel "${e.id}"`),t}),[]),N=n.useCallback(((e,a)=>{const{panelDataArray:n}=C.current,t=gPe(n,e);return function({defaultSize:e,dragState:a,layout:n,panelData:t,panelIndex:i,precision:r=3}){const o=n[i];let s;return s=null==o?null!=e?e.toPrecision(r):"1":1===t.length?"1":o.toPrecision(r),{flexBasis:0,flexGrow:s,flexShrink:1,overflow:"hidden",pointerEvents:null!==a?"none":void 0}}({defaultSize:a,dragState:g,layout:v,panelData:n,panelIndex:t})}),[g,v]),E=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{collapsedSize:t=0,collapsible:i,panelSize:r}=fPe(n,e,a);return H_e(null!=r,`Panel size not found for panel "${e.id}"`),!0===i&&G_e(r,t)}),[]),j=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{collapsedSize:t=0,collapsible:i,panelSize:r}=fPe(n,e,a);return H_e(null!=r,`Panel size not found for panel "${e.id}"`),!i||F_e(r,t)>0}),[]),_=n.useCallback((e=>{const{panelDataArray:a}=C.current;a.push(e),a.sort(((e,a)=>{const n=e.order,t=a.order;return null==n&&null==t?0:null==n?-1:null==t?1:n-t})),C.current.panelDataArrayChanged=!0,k()}),[k]);e_e((()=>{if(C.current.panelDataArrayChanged){C.current.panelDataArrayChanged=!1;const{autoSaveId:e,onLayout:a,storage:n}=A.current,{layout:t,panelDataArray:i}=C.current;let r=null;if(e){const a=function(e,a,n){var t,i;return null!==(i=(null!==(t=lPe(e,n))&&void 0!==t?t:{})[sPe(a)])&&void 0!==i?i:null}(e,i,n);a&&(S.current=new Map(Object.entries(a.expandToSizes)),r=a.layout)}null==r&&(r=function({panelDataArray:e}){const a=Array(e.length),n=e.map((e=>e.constraints));let t=0,i=100;for(let r=0;r<e.length;r++){const e=n[r];H_e(e,`Panel constraints not found for index ${r}`);const{defaultSize:o}=e;null!=o&&(t++,a[r]=o,i-=o)}for(let r=0;r<e.length;r++){const o=n[r];H_e(o,`Panel constraints not found for index ${r}`);const{defaultSize:s}=o;if(null!=s)continue;const l=i/(e.length-t);t++,a[r]=l,i-=l}return a}({panelDataArray:i}));const o=cPe({layout:r,panelConstraints:i.map((e=>e.constraints))});ePe(t,o)||(y(o),C.current.layout=o,a&&a(o),tPe(i,o,b.current))}})),e_e((()=>{const e=C.current;return()=>{e.layout=[]}}),[]);const P=n.useCallback((e=>{let a=!1;const n=p.current;if(n){"rtl"===window.getComputedStyle(n,null).getPropertyValue("direction")&&(a=!0)}return function(n){n.preventDefault();const t=p.current;if(!t)return()=>null;const{direction:i,dragState:r,id:o,keyboardResizeBy:s,onLayout:l}=A.current,{layout:u,panelDataArray:c}=C.current,{initialLayout:d}=null!=r?r:{},m=$_e(o,e,t);let h=nPe(n,e,i,r,s,t);const g="horizontal"===i;g&&a&&(h=-h);const f=U_e({delta:h,initialLayout:null!=d?d:u,panelConstraints:c.map((e=>e.constraints)),pivotIndices:m,prevLayout:u,trigger:d_e(n)?"keyboard":"mouse-or-touch"}),v=!iPe(u,f);(m_e(n)||h_e(n))&&w.current!=h&&(w.current=h,D_e(e,v||0===h?0:g?h<0?S_e:w_e:h<0?A_e:C_e)),v&&(y(f),C.current.layout=f,l&&l(f),tPe(c,f,b.current))}}),[]),L=n.useCallback(((e,a)=>{const{onLayout:n}=A.current,{layout:t,panelDataArray:i}=C.current,r=i.map((e=>e.constraints)),{panelSize:o,pivotIndices:s}=fPe(i,e,t);H_e(null!=o,`Panel size not found for panel "${e.id}"`);const l=U_e({delta:gPe(i,e)===i.length-1?o-a:a-o,initialLayout:t,panelConstraints:r,pivotIndices:s,prevLayout:t,trigger:"imperative-api"});iPe(t,l)||(y(l),C.current.layout=l,n&&n(l),tPe(i,l,b.current))}),[]),B=n.useCallback(((e,a)=>{const{layout:n,panelDataArray:t}=C.current,{collapsedSize:i=0,collapsible:r}=a,{collapsedSize:o=0,collapsible:s,maxSize:l=100,minSize:u=0}=e.constraints,{panelSize:c}=fPe(t,e,n);null!=c&&(r&&s&&G_e(c,i)?G_e(i,o)||L(e,o):c<u?L(e,u):c>l&&L(e,l))}),[L]),R=n.useCallback(((e,a)=>{const{direction:n}=A.current,{layout:t}=C.current;if(!p.current)return;const i=Q_e(e,p.current);H_e(i,`Drag handle element not found for id "${e}"`);const r=aPe(n,a);f({dragHandleId:e,dragHandleRect:i.getBoundingClientRect(),initialCursorPosition:r,initialLayout:t})}),[]),D=n.useCallback((()=>{f(null)}),[]),z=n.useCallback((e=>{const{panelDataArray:a}=C.current,n=gPe(a,e);n>=0&&(a.splice(n,1),delete b.current[e.id],C.current.panelDataArrayChanged=!0,k())}),[k]),O=n.useMemo((()=>({collapsePanel:M,direction:i,dragState:g,expandPanel:T,getPanelSize:x,getPanelStyle:N,groupId:h,isPanelCollapsed:E,isPanelExpanded:j,reevaluatePanelConstraints:B,registerPanel:_,registerResizeHandle:P,resizePanel:L,startDragging:R,stopDragging:D,unregisterPanel:z,panelGroupElement:p.current})),[M,g,i,T,x,N,h,E,j,B,_,P,L,R,D,z]);return n.createElement(Hje.Provider,{value:O},n.createElement(d,{...m,children:a,className:t,id:o,ref:p,style:{...{display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",overflow:"hidden",width:"100%"},...c},[Fje]:"",[Gje]:i,[Vje]:h}))}const pPe=n.forwardRef(((e,a)=>n.createElement(hPe,{...e,forwardedRef:a})));function gPe(e,a){return e.findIndex((e=>e===a||e.id===a.id))}function fPe(e,a,n){const t=gPe(e,a);return{...a.constraints,panelSize:n[t],pivotIndices:t===e.length-1?[t-1,t]:[t,t+1]}}function vPe({children:e=null,className:a="",disabled:t=!1,hitAreaMargins:i,id:r,onBlur:o,onClick:s,onDragging:l,onFocus:u,onPointerDown:c,onPointerUp:d,style:m={},tabIndex:h=0,tagName:p="div",...g}){var f,v;const y=n.useRef(null),k=n.useRef({onClick:s,onDragging:l,onPointerDown:c,onPointerUp:d});n.useEffect((()=>{k.current.onClick=s,k.current.onDragging=l,k.current.onPointerDown=c,k.current.onPointerUp=d}));const b=n.useContext(Hje);if(null===b)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:S,groupId:w,registerResizeHandle:A,startDragging:C,stopDragging:M,panelGroupElement:T}=b,x=i_e(r),[N,E]=n.useState("inactive"),[j,_]=n.useState(!1),[P,L]=n.useState(null),B=n.useRef({state:N});e_e((()=>{B.current.state=N})),n.useEffect((()=>{if(t)L(null);else{const e=A(x);L((()=>e))}}),[t,x,A]);const R=null!==(f=null==i?void 0:i.coarse)&&void 0!==f?f:15,D=null!==(v=null==i?void 0:i.fine)&&void 0!==v?v:5;n.useEffect((()=>{if(t||null==P)return;const e=y.current;H_e(e,"Element ref not attached");let a=!1;return function(e,a,n,t,i){var r;const{ownerDocument:o}=a,s={direction:n,element:a,hitAreaMargins:t,setResizeHandlerState:i},l=null!==(r=N_e.get(o))&&void 0!==r?r:0;return N_e.set(o,l+1),j_e.add(s),K_e(),function(){var a;E_e.delete(e),j_e.delete(s);const n=null!==(a=N_e.get(o))&&void 0!==a?a:1;if(N_e.set(o,n-1),K_e(),1===n&&N_e.delete(o),T_e.includes(s)){const e=T_e.indexOf(s);e>=0&&T_e.splice(e,1),z_e(),i("up",!0,null)}}}(x,e,S,{coarse:R,fine:D},((e,n,t)=>{if(n)switch(e){case"down":{E("drag"),a=!1,H_e(t,'Expected event to be defined for "down" action'),C(x,t);const{onDragging:e,onPointerDown:n}=k.current;null==e||e(!0),null==n||n();break}case"move":{const{state:e}=B.current;a=!0,"drag"!==e&&E("hover"),H_e(t,'Expected event to be defined for "move" action'),P(t);break}case"up":{E("hover"),M();const{onClick:e,onDragging:n,onPointerUp:t}=k.current;null==n||n(!1),null==t||t(),a||null==e||e();break}}else E("inactive")}))}),[R,S,t,D,A,x,P,C,M]),function({disabled:e,handleId:a,resizeHandler:t,panelGroupElement:i}){n.useEffect((()=>{if(e||null==t||null==i)return;const n=Q_e(a,i);if(null==n)return;const r=e=>{if(!e.defaultPrevented)switch(e.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":e.preventDefault(),t(e);break;case"F6":{e.preventDefault();const t=n.getAttribute(Vje);H_e(t,`No group element found for id "${t}"`);const r=q_e(t,i),o=Z_e(t,a,i);H_e(null!==o,`No resize element found for id "${a}"`),r[e.shiftKey?o>0?o-1:r.length-1:o+1<r.length?o+1:0].focus();break}}};return n.addEventListener("keydown",r),()=>{n.removeEventListener("keydown",r)}}),[i,e,a,t])}({disabled:t,handleId:x,resizeHandler:P,panelGroupElement:T});return n.createElement(p,{...g,children:e,className:a,id:r,onBlur:()=>{_(!1),null==o||o()},onFocus:()=>{_(!0),null==u||u()},ref:y,role:"separator",style:{touchAction:"none",userSelect:"none",...m},tabIndex:h,[Gje]:S,[Vje]:w,[Zje]:"",[$je]:"drag"===N?"pointer":j?"keyboard":void 0,[Yje]:!t,[Qje]:x,[Xje]:N})}hPe.displayName="PanelGroup",pPe.displayName="forwardRef(PanelGroup)",vPe.displayName="PanelResizeHandle";const yPe=({className:e,...n})=>a.jsx(pPe,{className:gi("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...n}),kPe=o_e,bPe=({withHandle:e,className:n,...t})=>a.jsx(vPe,{className:gi("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",n),...t,children:e&&a.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:a.jsx(K,{className:"h-2.5 w-2.5"})})}),SPe=({copyText:e})=>a.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:e}),wPe="rgba(245, 246, 247, 1)",APe={[HN.SEND_COMMUNICATION]:{color:{bg:wPe},clickable:!0},[HN.WAIT_UNTIL_NEXT_FIXED_TIME]:{color:{bg:wPe},clickable:!1},[HN.WAIT_FOR_DURATION]:{color:{bg:wPe},clickable:!1},[HN.CHECK_SEGMENT_MEMBERSHIP]:{color:{bg:wPe},clickable:!1}},CPe=e=>{switch(e.actionType){case HN.SEND_COMMUNICATION:return"Send Email & SMS";case HN.WAIT_UNTIL_NEXT_FIXED_TIME:return"Wait Until";case HN.WAIT_FOR_DURATION:return"Wait For";case HN.CHECK_SEGMENT_MEMBERSHIP:return`Check ${e.segmentLanguage} Membership`;default:return"Unknown"}},MPe=({children:e,onClick:n,iconBgColor:t,iconStrokeColor:i,Icon:r,disabled:o=!1,selected:s=!1})=>{const l=r;return a.jsxs(gk.div,{layout:!0,initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,ease:"easeInOut"},style:{backgroundColor:s?t:wPe},onClick:n,className:Fa("flex gap-2 items-center rounded-md transition-colors group","p-2 border-2 border-transparent overflow-hidden",!o&&"hover:border-primary cursor-pointer",s&&"border-primary"),children:[a.jsx("div",{className:Fa("bg-purple-50 rounded-md p-2 flex items-center justify-center w-8 h-8 flex-shrink-0 transition-colors",!o&&"group-hover/trigger-audience:bg-background",t),children:a.jsx(l,{className:Fa("w-4 h-4 stroke-purple-500 group-hover/trigger-audience:fill-purple-50 transition-colors",i)})}),e]})},TPe=({segmentName:e})=>a.jsx("span",{className:"inline-flex items-center bg-white border border-gray-200 rounded-md px-2 py-0.5 text-sm font-medium shadow-sm",children:e}),xPe=()=>{const e=zoe(),{setActionId:t,state:{selectedActionId:i}}=n.useContext(Soe),{segments:r}=_oe(),o=1===e?.includeSegmentIds?.length&&0===e?.excludeSegmentIds?.length?e.includeSegmentIds[0]:"",{segment:s}=Loe(o);if(!e||!r)return null;const l=e.includeSegmentIds;let u,c=!0;return s?.type===xoe.ALL_USERS?(u=`Send to all ${qx("engage:user",{count:2})}`,c=!1):s?.type===xoe.ONE_OFF?(u=`Send to specific ${qx("engage:user",{count:2})}`,c=!1):(u=`Send to all ${qx("engage:user",{count:2})} in ${1===l.length?"this":"these"} ${qx("engage:segment",{count:l.length}).toLowerCase()}`,c=!0),a.jsx("div",{id:"automation-audience-selector",children:a.jsx(MPe,{selected:i===Ege.EditAudience,iconBgColor:"bg-purple-50",iconStrokeColor:"stroke-purple-500",onClick:()=>{t(Ege.EditAudience)},Icon:sM.AudienceIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:"Audience"}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(SPe,{copyText:u}),c&&a.jsx("div",{className:"flex gap-1",children:l.map((e=>{const n=r?.find((a=>a.id===e));return n?a.jsx(TPe,{segmentName:n.name},e):null}))})]})]})})})},NPe=e=>{if(-1===e)return"never run this automation again";if(e<=0)return null;const a=Math.floor(e/86400),n=Math.floor(e%86400/3600),t=Math.floor(e%3600/60),i=e%60,r=[];if(a>0&&r.push(`${a} ${1===a?"day":"days"}`),n>0&&r.push(`${n} ${1===n?"hour":"hours"}`),t>0&&r.push(`${t} ${1===t?"minute":"minutes"}`),i>0&&0===a&&0===n&&r.push(`${i} ${1===i?"second":"seconds"}`),0===r.length)return null;if(1===r.length)return r[0];if(2===r.length)return`${r[0]} and ${r[1]}`;const o=r.pop();return`${r.join(", ")}, and ${o}`},EPe=({isDetailsVisible:e=!1})=>{const t=zoe(),{setActionId:i,state:{selectedActionId:r}}=n.useContext(Soe),{segments:o}=_oe(),s=qx(t?.triggerType===ON.TRIGGER_BASED?"engage:automation":"engage:broadcast"),l=`Start this ${s?.toLowerCase()}`,u=`Start this ${qx("engage:automation").toLowerCase()}`;if(!t||!o)return null;return a.jsx(a.Fragment,{children:(()=>{switch(t.triggerType){case ON.DATE_BASED:{if(!t.triggerMetadata||!("monthToTrigger"in t.triggerMetadata)||!("dayToTrigger"in t.triggerMetadata))return null;const e=t.triggerMetadata?.monthToTrigger,n=t.triggerMetadata?.dayToTrigger;let i="Date not set";if(e&&n){i=`${new Date(2024,e-1,n).toLocaleDateString("en-US",{month:"long"})} ${n}`}return a.jsx(MPe,{iconBgColor:"bg-amber-100",disabled:!0,iconStrokeColor:"stroke-amber-500",onClick:()=>{},Icon:sM.TriggerIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:u}),a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:a.jsx(SPe,{copyText:t.triggerMetadata.customTriggerCopy??`Every year on ${i}`})})]})})}case ON.TRIGGER_BASED:{if(t.triggerMetadata&&t.triggerMetadata.triggerType!==ON.TRIGGER_BASED||!t.triggerMetadata||t.triggerMetadata.eventName!==KN.USER_ENTERS_SEGMENT||!t.triggerMetadata.eventFilter.segment_id)return null;const n=t.triggerMetadata.eventFilter.segment_id,i=o.find((e=>e.id===n))?.name;return i?a.jsx(MPe,{iconBgColor:"bg-amber-100",disabled:!0,iconStrokeColor:"stroke-amber-500",onClick:()=>{},Icon:sM.TriggerIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:l}),a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t.triggerMetadata.customTriggerCopy?a.jsx(SPe,{copyText:t.triggerMetadata.customTriggerCopy}):a.jsxs(a.Fragment,{children:[a.jsx(SPe,{copyText:`When ${qx("engage:user").toLowerCase()} joins the`}),a.jsx(TPe,{segmentName:i})]})}),e&&void 0!==t.triggerMetadata.cooldownSeconds&&t.triggerMetadata.cooldownSeconds>0?a.jsxs("div",{className:"flex items-center gap-2 flex-wrap mt-1",children:[a.jsx(SPe,{copyText:`${qx("engage:segment",{count:1}).toLowerCase()} and wait at least`}),a.jsx("span",{className:"text-sm font-medium text-foreground",children:NPe(t.triggerMetadata.cooldownSeconds)}),a.jsx(ex,{title:"Why wait between runs?",description:`This prevents the same customer from getting the same automation multiple times. For example, if someone meets the criteria today, they won't start this ${qx("engage:automation").toLowerCase()} again for ${NPe(t.triggerMetadata.cooldownSeconds)}, even if they leave and rejoin the criteria.`,size:"small",iconColor:"text-gray-400"})]}):a.jsx(SPe,{copyText:qx("engage:segment",{count:1}).toLowerCase()})]})}):null}case ON.ONE_TIME:{const e=!t.triggerMetadata||!("scheduledAt"in t.triggerMetadata);return a.jsx("div",{id:"automation-edit-trigger-button",children:a.jsxs(MPe,{iconBgColor:"bg-amber-100",iconStrokeColor:"stroke-amber-500",onClick:()=>{i(Ege.EditTime)},selected:r===Ege.EditTime,Icon:sM.TriggerIcon,children:[a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:l}),a.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[a.jsx(SPe,e?{copyText:`Click to set the date and time for this ${qx("engage:broadcast")}`}:{copyText:"Bulk send at"}),!1===e&&t.triggerMetadata&&"scheduledAt"in t.triggerMetadata&&t.triggerMetadata.scheduledAt&&a.jsx("div",{className:"text-xs font-medium",children:a.jsx(TPe,{segmentName:"now"===t.triggerMetadata.scheduledAt?"Immediately":cue(new Date(t.triggerMetadata.scheduledAt),"h:mma MM/dd/yy")})})]})]}),a.jsx("div",{className:"",children:e&&a.jsx(ex,{title:`Please select a time before sending this ${qx("engage:broadcast")}.`,alertText:`A scheduled time is needed before sending this ${qx("engage:broadcast")}.`,Icon:sM.AlertTriangleIcon,iconColor:"text-red-500",size:"large"})})]})})}default:throw Vde(t.triggerType,ON)}})()})},jPe=({channelEnabled:e,className:n})=>a.jsx("span",{className:Fa("text-xs font-medium",e?"text-green-700":"text-gray-500",n),children:e?"Enabled":"Skipped"}),_Pe=(e,a)=>{if(e.length<=a)return e;const n=/\{\{[^}]+\}\}/g,t=[];let i;for(;null!==(i=n.exec(e));)t.push({start:i.index,end:i.index+i[0].length,field:i[0]});let r=a;for(const o of t){if(r>o.start&&r<o.end){r=o.start;break}if(r===o.start){const a=e.lastIndexOf(" ",o.start-1);r=a>0?a:o.start;break}}return 0===r?t.length>0?t[0].field:e.substring(0,Math.min(a,e.length)):e.substring(0,r)+"..."},PPe=({type:e,actionId:t})=>{const{state:{selectedSubStepType:i},setSelectedSubStepType:r,setActionId:o}=n.useContext(Soe),s=Koe(),l=zoe(),{getMergeFields:u,isGetting:c}=aN(s?.id??void 0,l?.id??void 0),d=i===e,m=(()=>{if(!s)return!1;switch(e){case jge.EMAIL:return!!s.emailChannelSenderId;case jge.SMS:return!!s.smsChannelSenderId}})(),h=(()=>{if(!s)return"Need to select a channel";switch(e){case jge.EMAIL:return s.emailChannelSenderId?s.emailHtmlBody?!!s.emailSubject||"Please add a subject to the email":"Please add content to the email":"Please select a email sender";case jge.SMS:return s.smsChannelSenderId?!!s.smsMessageBody||"Please add content to the sms":"Please select a sms sender"}})();return a.jsx(gk.div,{id:`automation-substep-${e}-${t}`,layout:!0,initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.15,ease:"easeInOut"},className:Fa("p-2 pr-3 flex gap-2 items-center rounded-md transition-colors cursor-pointer group","border-2 border-transparent",d&&"border-primary","hover:border-muted-foreground/30"),style:{backgroundColor:d?"#f5f6f7":"hsl(var(--reach-muted))"},onClick:a=>{a.target.closest("button")||(o(t),r(e))},children:a.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[a.jsx("div",{className:"rounded-md p-1.5 flex items-center justify-center w-6 h-6 flex-shrink-0 bg-white border",children:((e,n)=>{switch(e){case jge.EMAIL:return a.jsx(sM.EmailIcon,{className:Fa("w-6 h-6",n?"text-primary":"text-gray-400")});case jge.SMS:return a.jsx(sM.SmsIcon,{className:Fa("w-6 h-6",n?"text-primary":"text-gray-400")})}})(e,d)}),a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx("div",{style:{color:d?"#3b82f6":"#64748b"},children:a.jsx(Tge,{className:"text-xs",children:(()=>{switch(e){case jge.EMAIL:return"Email";case jge.SMS:return"SMS"}})()})}),m&&a.jsx("div",{className:"text-[10px] font-medium text-muted-foreground",children:e===jge.EMAIL?c?a.jsx("span",{className:"text-[10px] font-medium text-muted-foreground",children:"..."}):a.jsx(HMe,{content:s?.emailSubject||"No subject set",mergeFieldsResponse:u,variant:"minimal",className:"text-[10px] font-medium text-muted-foreground"}):c?a.jsx("span",{className:"text-[10px] font-medium text-muted-foreground",children:"..."}):a.jsx(HMe,{content:s?.smsMessageBody?_Pe(s.smsMessageBody,40):"No message set",mergeFieldsResponse:u,variant:"minimal",className:"text-[10px] font-medium text-muted-foreground"})}),!0!==h&&m&&a.jsx("div",{id:`substep-validation-${e}-${t}`,className:"text-[10px] text-amber-600 font-medium",children:h})]}),a.jsx("div",{className:"ml-auto",children:a.jsx("div",{id:`substep-status-${e}-${t}`,className:Fa("px-2 py-0.5 rounded-full text-[10px] font-medium",m?"bg-green-100 text-green-700":"bg-gray-100 text-gray-500"),children:a.jsx(jPe,{channelEnabled:m})})})]})})},LPe=e=>{switch(e){case HN.SEND_COMMUNICATION:return"Send Communication";case HN.WAIT_UNTIL_NEXT_FIXED_TIME:case HN.WAIT_FOR_DURATION:return"Wait";case HN.CHECK_SEGMENT_MEMBERSHIP:return"Check";default:throw poe(e,HN)}},BPe=e=>{switch(e){case HN.SEND_COMMUNICATION:return a.jsx(sM.CommunicationIcon,{className:"w-4 h-4"});case HN.WAIT_UNTIL_NEXT_FIXED_TIME:return a.jsx(sM.WaitUntilNextFixedTimeIcon,{className:"w-4 h-4"});case HN.WAIT_FOR_DURATION:return a.jsx(sM.WaitForDurationIcon,{className:"w-4 h-4"});case HN.CHECK_SEGMENT_MEMBERSHIP:return a.jsx(sM.CheckSegmentMembershipIcon,{className:"w-4 h-4"});default:throw Vde(e,HN)}},RPe=e=>{if(!(e&&e.actionType===HN.WAIT_UNTIL_NEXT_FIXED_TIME&&"hour"in e&&"minute"in e&&"timezone"in e))return null;const{hour:a,minute:n,timezone:t}=e;return`Wait until next ${`${a?.toString().padStart(2,"0")}:${n?.toString().padStart(2,"0")}`} ${t}`},DPe=e=>{if(!(e&&e.actionType===HN.WAIT_FOR_DURATION&&"days"in e&&"hours"in e&&"minutes"in e&&"seconds"in e))return null;const{days:a,hours:n,minutes:t,seconds:i}=e,r=[];if(a&&a>0&&r.push(`${a} ${1===a?qx("common:day").toLocaleLowerCase():qx("common:day",{count:2}).toLocaleLowerCase()}`),n&&n>0&&r.push(`${n} ${1===n?qx("common:hour").toLocaleLowerCase():qx("common:hour",{count:2}).toLocaleLowerCase()}`),t&&t>0&&r.push(`${t} ${1===t?qx("common:minute").toLocaleLowerCase():qx("common:minute",{count:2}).toLocaleLowerCase()}`),i&&i>0&&r.push(`${i} ${1===i?qx("common:second").toLocaleLowerCase():qx("common:second",{count:2}).toLocaleLowerCase()}`),0===r.length)return"Wait for duration";if(1===r.length)return`Wait for ${r[0]}`;if(2===r.length)return`Wait for ${r[0]} and ${r[1]}`;{const e=r.pop();return`Wait for ${r.join(", ")} and ${e}`}},zPe=({actionDataWithMetadata:e,segments:t})=>{const{actionData:i}=e,{state:{selectedActionId:r},setActionId:o,setSelectedCommunicationGroupId:s}=n.useContext(Soe),l=n.useMemo((()=>r===i.actionMetadata.currentActionId),[r,i.actionMetadata.currentActionId]),u=APe[i.actionType],c=u.color,d=u.clickable;return a.jsxs(gk.div,{id:`automation-step-${i.actionType}-${i.actionMetadata.currentActionId}`,layout:!0,initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,ease:"easeInOut"},className:Fa("p-2 pr-3 flex gap-2 items-center rounded-md transition-colors cursor-pointer group"," border-2 border-transparent",l&&"border-primary",i.actionType!==HN.WAIT_UNTIL_NEXT_FIXED_TIME&&i.actionType!==HN.WAIT_FOR_DURATION&&i.actionType!==HN.CHECK_SEGMENT_MEMBERSHIP&&"hover:border-primary"),style:{backgroundColor:l?c.bg:c.bgUnselected??wPe},onClick:()=>{d&&(o(i.actionMetadata.currentActionId),i.actionType===HN.SEND_COMMUNICATION&&s(i.actionMetadata.communicationGroupId))},children:[a.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[a.jsx("div",{className:"rounded-md p-2 flex items-center justify-center w-8 h-8 flex-shrink-0 bg-white",children:BPe(i.actionType)}),a.jsxs("div",{className:"flex flex-col gap-1",children:[a.jsx("div",{style:{color:l?c.text:c.textUnselected},children:a.jsx(Tge,{children:CPe({actionType:i.actionType,segmentLanguage:qx("engage:segment",{count:1})})})}),a.jsx("div",i.actionType===HN.WAIT_UNTIL_NEXT_FIXED_TIME?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:RPe(i.actionMetadata)}:i.actionType===HN.WAIT_FOR_DURATION?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:DPe(i.actionMetadata)}:i.actionType===HN.CHECK_SEGMENT_MEMBERSHIP?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:(()=>{const e=((e,a)=>{if(!e||e.actionType!==HN.CHECK_SEGMENT_MEMBERSHIP||!("segmentIds"in e))return null;const{segmentIds:n}=e;if(!n||0===n.length)return null;const t=n.map((e=>a.find((a=>a.id===e))?.name)).filter((e=>Boolean(e)));return t.length>0?t:null})(i.actionMetadata,t);return e?a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("span",{className:"text-[11px] text-muted-foreground font-normal",children:"Check membership in"}),e.map(((e,n)=>a.jsx(TPe,{segmentName:e},n)))]}):`Check ${qx("engage:segment",{count:1})} membership`})()}:{className:"text-xs font-medium text-muted-foreground",children:LPe(i.actionType)})]})]}),i.actionType===HN.SEND_COMMUNICATION&&a.jsx("div",{className:"flex items-center pr-2",children:a.jsx(sM.NextButton,l?{className:"w-4 h-4 text-muted-foreground rotate-90 transition-transform duration-200"}:{className:"w-4 h-4 text-muted-foreground transition-transform duration-200"})})]})},OPe=({hideSms:e,segments:t})=>{const i=Koe(),[r,o]=n.useState(!1),[s,l]=n.useState(void 0),u=zoe(),{setActionId:c,setSelectedSubStepType:d,state:{selectedActionId:m,selectedSubStepType:h}}=n.useContext(Soe);if(qN(u?.id||""),n.useEffect((()=>{if(!u)return;if(m)return;const e=u.actionData?.find((e=>e.actionType===HN.SEND_COMMUNICATION));e&&c(e.actionMetadata.currentActionId)}),[u,c,m]),n.useEffect((()=>{if(!u)return;(async()=>{const e=[];for(const a of u.actionData??[])switch(a.actionType){case HN.SEND_COMMUNICATION:{const n=await Zx(a.actionMetadata.communicationGroupId);e.push({actionData:a,communicationGroup:n});break}case HN.WAIT_UNTIL_NEXT_FIXED_TIME:case HN.WAIT_FOR_DURATION:case HN.CHECK_SEGMENT_MEMBERSHIP:e.push({actionData:a});break;default:throw poe(a.actionType,HN)}l(e)})()}),[u]),n.useEffect((()=>{if(m&&s&&i&&null===h){const e=s.find((e=>e.actionData.actionMetadata.currentActionId===m));e?.actionData.actionType===HN.SEND_COMMUNICATION&&d(i?.emailChannelSenderId?jge.EMAIL:jge.SMS)}}),[m,s,d,i,h]),!u||!s)return null;const p=(e=>{const{steps:a,rootActionId:n}=e;if(!a||!n)return a??[];const t=new Map(a.map((e=>[e.actionData.actionMetadata.currentActionId,e]))),i=t.get(n);if(!i)return a;const r=[];let o=i;for(;o;){r.push(o);const e=o.actionData.actionMetadata.nextActionId;if(!e)break;o=t.get(e)}return r})({steps:s,rootActionId:u.triggerMetadata?.triggerType===ON.TRIGGER_BASED?u.triggerMetadata.rootActionId:void 0}).filter((e=>!!r||e.actionData.actionType===HN.SEND_COMMUNICATION));let g=()=>a.jsx("div",{},"empty-trigger-audience");return(r||u.triggerType===ON.ONE_TIME)&&(g=()=>a.jsxs("div",{className:"flex flex-col gap-3",children:[u.triggerType===ON.ONE_TIME&&a.jsx(xPe,{}),u.triggerType!==ON.ONE_TIME&&a.jsx(EPe,{isDetailsVisible:r})]})),a.jsxs("div",{className:"flex-1 flex flex-col gap-2 w-full overflow-visible",children:[(u.triggerType===ON.TRIGGER_BASED||u.triggerType===ON.DATE_BASED)&&a.jsxs("div",{className:"flex gap-2 items-center justify-between",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:"Messages sent in listed order"}),a.jsxs("div",{className:"flex gap-2 items-center",children:[a.jsx("div",{className:"text-sm font-medium",children:"Show all details"}),a.jsx(hNe,{defaultChecked:r,onCheckedChange:()=>{o(!r)}})]})]}),a.jsx("div",{className:"flex-1 flex flex-col gap-3",children:a.jsxs(jd,{mode:"popLayout",children:[g(),p.map(((n,i)=>a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,delay:.05*i,ease:"easeInOut"},children:a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsx(zPe,{actionDataWithMetadata:n,segments:t}),n.actionData.actionType===HN.SEND_COMMUNICATION&&m===n.actionData.actionMetadata.currentActionId&&n.actionData.actionMetadata.currentActionId&&a.jsxs("div",{className:"flex gap-3",children:[a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2,delay:.25*p.length,ease:"easeInOut"},className:"w-12 flex justify-end items-center",children:a.jsx("div",{className:"w-0.5 bg-muted-foreground/30 h-full rounded-full"})}),a.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[a.jsx(PPe,{type:jge.EMAIL,actionId:n.actionData.actionMetadata.currentActionId}),!e&&a.jsx(PPe,{type:jge.SMS,actionId:n.actionData.actionMetadata.currentActionId})]})]})]})},n.actionData.actionMetadata?.currentActionId??i))),u.triggerType===ON.ONE_TIME&&a.jsx("div",{className:"flex flex-col gap-3",children:a.jsx(EPe,{isDetailsVisible:r})},"one-time-trigger")]})})]})},KPe=({hideSms:e})=>{const n=zoe(),{segments:t,isLoading:i}=_oe();return a.jsx("div",!n||i||0===t.length?{className:"flex h-full items-center justify-center",children:a.jsx(fd,{text:[`Getting details on your ${qx("engage:automation",{count:1}).toLowerCase()}`,"Finishing up"]})}:{className:"h-full pt-4 relative",children:a.jsx("div",{className:"absolute inset-0 overflow-y-auto flex flex-col gap-3",children:a.jsx(OPe,{hideSms:e,segments:t})})})},IPe=({type:e})=>{const t=Koe(),i=zoe(),{toast:r}=Ck(),[o,s]=n.useState(!1),{resetCommunicationGroupToDefault:l,isPending:u}=tN(),c=e===Pge.EMAIL?"Email":"SMS";return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"flex items-center justify-between",children:a.jsx("div",{className:"flex items-center gap-2",children:!!t&&(t.type===Nge.MANAGED&&(e===Pge.SMS?t.updatedFromDefault?.text_message_body:t.updatedFromDefault?.email_text_body||t.updatedFromDefault?.email_html_body))&&a.jsx(a.Fragment,{children:u?a.jsx(fd,{}):a.jsx(Wa,{variant:"outline",size:"sm",disabled:u,onClick:()=>s(!0),children:"Reset To Default"})})})}),a.jsx(fi,{open:o,onOpenChange:s,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsxs(Si,{children:[a.jsx(Ai,{className:"text-xl font-semibold",children:"Reset To Default"}),a.jsxs(Ci,{className:"text-base text-muted-foreground",children:["Are you sure you want to reset this ",c.toLowerCase()," ","template to its default state? This action cannot be undone."]})]}),a.jsxs(wi,{className:"flex flex-row justify-end gap-3 mt-6",children:[a.jsx(Wa,{variant:"outline",onClick:()=>s(!1),children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:async()=>{t&&i?l({communicationGroupId:t.id,automationId:i.id,type:e===Pge.EMAIL?"email":"sms"},{onSuccess:()=>{r({title:qx("engage:success.communication_reset","Communication reset to default!")}),s(!1)},onSettled:()=>{s(!1)},onError:()=>{r({title:"Error updating",description:"Please reach out to your administrator",variant:"destructive"})}}):r({title:"Error updating",description:"Please reach out to your administrator",variant:"destructive"})},disabled:u,children:"Reset To Default"})]})]})})]})},HPe=e=>{const a=Koe(),{updateCommunicationGroup:t,isUpdating:i}=Qx(),{channelSenders:r}=CC(),{channelAccounts:o}=SC(),{data:s}=cN(),{toast:l}=Ck(),u=n.useMemo((()=>r?.results?.filter((e=>e.channelSenderMetadata.userPart))||[]),[r?.results]),c=n.useMemo((()=>vN({channelSenders:r?.results??[],channelAccounts:o?.results??[],smsApplication:s})),[r?.results,o?.results,s]),d=n.useCallback((()=>{if(!a)return!1;switch(e){case jge.EMAIL:return!!a.emailChannelSenderId;case jge.SMS:return!!a.smsChannelSenderId}}),[a,e])(),m=n.useCallback((async()=>{if(a?.id&&!i)try{const n={emailChannelSenderId:a.emailChannelSenderId,smsChannelSenderId:a.smsChannelSenderId};switch(e){case jge.EMAIL:if(d&&a.emailChannelSenderId)n.emailChannelSenderId=null;else{const e=u[0];e&&(n.emailChannelSenderId=e.id)}break;case jge.SMS:if(d&&a.smsChannelSenderId)n.smsChannelSenderId=null;else{const e=c[0];e&&(n.smsChannelSenderId=e.channelSender.id)}}await t({groupId:a.id,params:n},{onError:()=>{l({title:"Error toggling channel",description:"Please contact your administrator",variant:"destructive"})}})}catch(n){}}),[a,d,e,t,i,u,c,l]);return{channelEnabled:d,isUpdating:i,handleToggleChannel:m,availableEmailSenders:u,availableSmsChannelSenders:c}},FPe="reach-styles-module__base___r-a1U",GPe=Ja([FPe],{variants:{variant:{default:"reach-styles-module__default___vu2Rt",primary:"reach-styles-module__primary___mGKjo",success:"reach-styles-module__success___xn1Y1",warning:"reach-styles-module__warning___jdyU9",error:"reach-styles-module__error___Z-3IS"},size:{default:"reach-styles-module__sizeDefault___oS6W2",sm:"reach-styles-module__sizeSm___GI826",lg:"reach-styles-module__sizeLg___J--WF"},position:{default:"reach-styles-module__positionDefault___visr6",top:"reach-styles-module__positionTop___y6h-n",bottom:"reach-styles-module__positionBottom___vYLkd",inline:"reach-styles-module__positionInline___NjZsw"}},defaultVariants:{variant:"default",size:"default",position:"default"}}),VPe=({channelType:e,title:n,description:t,className:i,onEnable:r,isEnabling:o=!1})=>{const s=("email"===e?"Email":"SMS")+" Channel Disabled",l=`Enable the ${e} channel to send messages.`,u=zoe(),c=u?.status===FN.DRAFT,d=()=>a.jsx(Wa,{size:"sm",onClick:r,disabled:o||!c,className:"bg-amber-600 hover:bg-amber-700 text-white ml-4 shrink-0",children:o?"Enabling...":"Enable "+("email"===e?"Email":"SMS")});return a.jsx("div",{className:"px-4 w-full",children:a.jsx("div",{className:"max-w-2xl mx-auto",children:a.jsx("div",{id:`channel-disabled-warning-${e}`,className:Fa(GPe({variant:"warning",size:"default",position:"inline"}),FPe,"p-4 relative mb-0",i),role:"alert",children:a.jsxs("div",{className:"flex items-start",children:[a.jsx("div",{className:"mr-3 shrink-0 pt-0.5",children:a.jsx(Ae,{className:"h-4 w-4"})}),a.jsx("div",{className:"flex-grow",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{className:"flex-1",children:[a.jsx("h5",{className:"text-sm font-medium mb-1",children:n||s}),a.jsx("div",{className:"text-sm text-muted-foreground",children:t||l})]}),r&&a.jsx(a.Fragment,{children:c?d():a.jsx(ex,{alertText:"You can only edit the content if we are in the draft state.",asChild:!0,className:"cursor-not-allowed",children:d()})})]})})]})})})})},JPe=({channelEnabled:e,isUpdating:n,onToggle:t,channelType:i})=>{const r=zoe();return a.jsxs("div",{id:("email"===i?"email":"sms")+"-channel-toggle",className:"flex items-center gap-2",children:[a.jsx(hNe,{checked:e,onCheckedChange:()=>{n||t()},disabled:n||(!r||r.status!==FN.DRAFT),className:"data-[state=checked]:bg-green-500 data-[state=unchecked]:bg-gray-300"}),a.jsx(jPe,{channelEnabled:e})]})},UPe=({label:e,value:n,className:t})=>a.jsxs("div",{className:"flex items-center gap-1 min-w-0 max-w-full flex-shrink",children:[a.jsxs("span",{className:"sr-only",children:[e,":"]}),a.jsx("span",{className:Fa("truncate",t),children:n})]}),WPe=({mergeFieldsResponse:e,disableEditContent:t})=>{const i=zoe(),r=Koe(),o=(()=>{const{channelSenders:e}=CC(),{channelAccounts:a}=SC();return n.useMemo((()=>e?.results&&a?.results?e.results.filter((e=>e.channelSenderMetadata.userPart)).flatMap((e=>{const n=a.results.find((a=>a.id===e.channelAccountId));return!n?.channelAccountMetadata||n.channelAccountMetadata.type!==wC.REACH_MANAGED&&n.channelAccountMetadata.type!==wC.REACH_MANAGED_SES?[]:[{channelSenderId:e.id,fullDomain:`${e.channelSenderMetadata.userPart}@${e.channelSenderMetadata.baseDomain}`,channelSenderMetadata:e.channelSenderMetadata}]})):[]),[e?.results,a?.results])})(),{channelSenders:s}=CC(),{updateCommunicationGroup:l}=Qx(),[u,c]=n.useState(!1),{state:{replyToSettingsText:d,replyToSettingsLink:m,fromNameSettingsText:h,fromNameSettingsLink:p}}=n.useContext(toe),[g,f]=n.useState(!1),[v,y]=n.useState(r?.emailChannelSenderId||null),[k,b]=n.useState(r?.emailSubject||null),[S,w]=n.useState(r?.emailPreviewText||null),[A,C]=n.useState(""),[M,T]=n.useState(""),[x,N]=n.useState(!0),[E,j]=n.useState(!1),[_,P]=n.useState(null),[L,B]=n.useState(r?.emailSubject||null),R=AMe(k,500),D=AMe(S,500);if(n.useEffect((()=>{if(s?.results&&v){const e=s.results.find((e=>e.id===v));e&&(E&&!x||T(e.channelSenderMetadata.emailReplyTo),x&&C(e.channelSenderMetadata.emailFromName),N(!1))}}),[s?.results,v,E,x]),n.useEffect((()=>{r?.emailChannelSenderId&&!v&&y(r.emailChannelSenderId),r&&null!==r.emailSubject&&null===k&&(b(r.emailSubject),B(r.emailSubject)),r&&null!==r.emailPreviewText&&null===S&&w(r.emailPreviewText)}),[r,v,k,S]),n.useEffect((()=>{if(v&&R&&r?.id&&!x){f(!0);(async()=>{try{await l({groupId:r.id,params:{emailChannelSenderId:v,emailSubject:R,...D&&{emailPreviewText:D}}})}catch(e){}finally{f(!1)}})()}}),[v,R,D,r?.id,l,x]),!i||!r||!r.emailChannelSenderId)return null;const z=o.find((e=>e.channelSenderId===r.emailChannelSenderId)),O=A||z?.fullDomain,K=k,I=S;return a.jsx("div",{className:"w-full bg-background rounded-lg p-3",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{className:"flex items-center gap-2 overflow-hidden flex-1",children:[O&&a.jsx(UPe,{label:"From",value:O,className:"font-bold"}),K&&a.jsx(UPe,{label:"Subject",value:a.jsx(HMe,{content:K,mergeFieldsResponse:e,variant:"minimal",className:"font-normal"}),className:"font-normal"}),I&&a.jsx(UPe,{label:"Preview",value:a.jsx(HMe,{content:I,mergeFieldsResponse:e,variant:"minimal",className:"text-muted-foreground/50 italic"}),className:"text-muted-foreground/50 italic"})]}),a.jsxs(Hde,{open:u,onOpenChange:e=>{c(e),""===k?.trim()&&L&&!1===e&&(b(L),P(null))},children:[a.jsx(Fde,{asChild:!0,children:!t&&a.jsxs(Wa,{size:"sm",variant:"outline",disabled:i.status!==FN.DRAFT,children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]})}),a.jsx(Gde,{className:"w-96",align:"end",children:a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"From Email"}),a.jsxs(zc,{onValueChange:e=>{y(e),N(!0),j(!1)},value:v??void 0,disabled:g,children:[a.jsx(Ic,{className:"bg-background hover:bg-accent/50 focus:bg-accent/50 data-[state=open]:bg-accent/50 transition-colors",children:a.jsx(Kc,{placeholder:"Select email",className:"text-muted-foreground",children:v?o?.find((e=>e.channelSenderId===v))?.fullDomain:""})}),a.jsx(Gc,{children:o?.map((e=>a.jsx(Vc,{value:e.channelSenderId,children:e.fullDomain},e.channelSenderId)))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"From Name"}),a.jsx(ex,{title:h||PMe,link:p?{url:p}:void 0})]}),a.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground bg-muted/50 rounded-md",children:A||a.jsx("span",{className:"italic text-muted-foreground/70",children:"Not set"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Reply-To"}),a.jsx(ex,{title:d||_Me,link:m?{url:m}:void 0})]}),a.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground bg-muted/50 rounded-md",children:M||(v?o?.find((e=>e.channelSenderId===v))?.fullDomain:"")||a.jsx("span",{className:"italic text-muted-foreground/70",children:"Not set"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Subject"}),a.jsx("span",{className:"text-xs text-red-500 ml-0.5",children:"*"})]}),a.jsx(wMe,{value:k,onChange:b,mergeFieldsResponse:e,placeholder:"Enter email subject",className:"bg-background hover:bg-accent/50 focus:bg-accent transition-colors placeholder:text-muted-foreground/50 "+(_?"border-red-300 focus:border-red-500":""),ariaLabel:"Insert merge field into subject"}),_&&a.jsx("p",{className:"text-xs text-red-500 animate-pulse",children:_})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Preview Text"}),a.jsx(ex,{title:"This text will be used for the preview text of the email in the inbox"})]}),a.jsx(wMe,{value:S,onChange:w,mergeFieldsResponse:e})]})]})})]})]})})},qPe=({type:e,disablePreviewSubtext:n=!1})=>{const t="sms"===e?"SMS":"Email";return a.jsx("div",{className:"flex flex-1 w-full h-full items-center justify-center",children:a.jsxs("div",{className:"flex flex-col items-center justify-center bg-zinc-50/80 border border-zinc-100 rounded-2xl shadow-md px-6 py-12 max-w-[90vw] w-full sm:max-w-md mx-auto text-center",style:{containerType:"inline-size"},children:[a.jsx("sms"===e?sM.SmsIcon:sM.EmailIcon,{className:"w-12 h-12 text-zinc-500 mb-4"}),a.jsxs("h2",{className:"text-xl font-semibold text-zinc-800 mb-2",children:["No ",t," Content Yet"]}),!n&&a.jsxs("p",{className:"text-zinc-500 text-base mb-1",children:["Click"," ",a.jsx("span",{className:"font-medium text-zinc-700",children:"Edit content"})," to start crafting your ",t," message."]})]})})},ZPe=({disablePreview:e=!1,disableEditContent:t=!1,disablePreviewSubtext:i=!1})=>{const r=zoe(),o=Koe(),{channelSenders:s}=CC(),{channelAccounts:l}=SC(),{data:u,isLoading:c}=rS(),{state:{selectedActionId:d}}=n.useContext(Soe),{channelEnabled:m,isUpdating:h,handleToggleChannel:p}=HPe(jge.EMAIL),[g,f]=n.useState(!1),[v,y]=n.useState(!1),[k,b]=n.useState(null),[S,w]=n.useState(!1),[A,C]=n.useState(!1),[M,T]=n.useState(!1),[x,N]=n.useState({width:0,height:0}),{getMergeFields:E}=aN(o?.id??void 0,r?.id??void 0);n.useEffect((()=>{null===k&&u&&v&&(u?.uiDefaults||b(!0),u?.uiDefaults?.emailHelpDialogShow&&!k&&b(!0))}),[u,k,v]),n.useEffect((()=>{const e=()=>{N({width:window.innerWidth,height:window.innerHeight})};return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]);if(!r||!o||void 0===s||void 0===l||!d||c)return null;const j=o.emailCompiledHtml||o.emailHtmlBody||"",_=j.length&&j.length>0,P=TC({channelSenders:s?.results??[],channelAccounts:l?.results??[]}),L=o.emailChannelSenderId?o.emailSubject?o.emailHtmlBody?null:"Please first ensure you have an email content":"Please first ensure you have an email subject":"Please first select an email sender",B=r.status===FN.DRAFT&&!t,R=!e&&_,D=!o.emailChannelSenderId||0===P.length,z=()=>{if(t)return null;const e=a.jsxs(Wa,{size:"sm",variant:"outline",disabled:!B,className:Fa(!B&&"cursor-not-allowed"),onClick:()=>y(!0),children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]});return B?e:a.jsx(ex,{alertText:"You can only edit the content if we are in the draft state.",asChild:!0,className:"cursor-not-allowed",children:a.jsx("div",{className:"inline-block cursor-not-allowed",children:e})})},O=()=>{const e=a.jsx(_Te,{onClick:()=>f(!0)});return L?a.jsx(ex,{alertText:"Unable to send preview",title:"There was an error preparing the preview. Please check your automation configuration.",className:"inline-block",asChild:!0,children:e}):e};return a.jsxs("div",{className:"flex-1 flex flex-col items-center pt-4",children:[a.jsx(jMe,{showStripoEditor:v,setShowStripoEditor:y,showHelpDialog:k??!1,setShowHelpDialog:b,cancelClicked:A,setCancelClicked:C,automation:r??null,saveClicked:S,setSaveClicked:w,stripoDialogDimensions:x,mergeFieldsResponse:E??null,selectedActionId:d,isEditorReady:M,setIsEditorReady:T}),P.length>0&&a.jsx(DTe,{open:g,onOpenChange:f,automation:r}),D&&a.jsx(VPe,{channelType:"email",onEnable:p,isEnabling:h}),_?a.jsx("div",{className:"flex-1 w-full flex flex-col overflow-y-auto",children:a.jsx("div",{className:Fa("flex flex-col space-y-4 px-4 pb-20",D?"pt-0":"pt-4"),children:a.jsxs("div",{className:"flex flex-col space-y-4 px-4 pb-20",children:[a.jsx("div",{className:"w-full flex-shrink-0 max-w-2xl mx-auto rounded-md",children:a.jsx(WPe,{mergeFieldsResponse:E,disableEditContent:t})}),a.jsxs("div",{className:"rounded-lg bg-background flex-1 min-h-0 flex flex-col items-center max-w-2xl mx-auto w-full",children:[a.jsxs("div",{className:"flex items-center space-x-2 w-full justify-between p-3",children:[a.jsx(JPe,{channelEnabled:m,isUpdating:h,onToggle:p,channelType:"email"}),a.jsxs("div",{className:"flex items-center space-x-2",children:[a.jsx(IPe,{type:Pge.EMAIL}),a.jsx(z,{}),R&&a.jsx(O,{}),_&&a.jsx(ETe,{expandDialogContent:a.jsx(xTe,{emailBody:j})})]})]}),a.jsx(Oge,{html:j})]}),a.jsx("p",{className:"text-center text-sm text-muted-foreground flex-shrink-0 pt-4",children:"These previews show generally how your messages will appear to your customers"})]})})}):a.jsxs(a.Fragment,{children:[D&&a.jsx(VPe,{channelType:"email",className:"pt-4"}),a.jsx(qPe,{type:"email",disablePreviewSubtext:i})]})]})},$Pe=({label:e,value:n,className:t})=>a.jsxs("div",{className:"flex items-center gap-1 min-w-0 max-w-full flex-shrink",children:[a.jsxs("span",{className:"sr-only",children:[e,":"]}),a.jsx("span",{className:Fa("truncate",t),children:n})]}),YPe=n.memo((({trigger:e,communicationGroupId:n,initialSenderId:t,companyName:i})=>a.jsx(bTe,{communicationGroupId:n,initialSenderId:t,companyName:i,trigger:e}))),QPe=({disableEditContent:e,mergeFieldsResponse:t})=>{const i=zoe(),r=Koe(),{channelSenders:o}=CC(),{channelAccounts:s}=SC(),{data:l}=cN(),u=r?.smsMessageBody||null,c=n.useMemo((()=>vN({channelSenders:o?.results??[],channelAccounts:s?.results??[],smsApplication:l})),[o?.results,s?.results,l]),d=c?.find((e=>e.channelSender.id===r?.smsChannelSenderId)),m=d?.channelSender.channelSenderMetadata.from&&null!==d.channelSender.channelSenderMetadata.from?d.channelSender.channelSenderMetadata.from:null,h=d?.channelSender.channelSenderMetadata.friendlyName??(m&&null!==m?BTe(m??""):d?.channelSender.channelSenderMetadata.messageServiceSid),p=!(i&&r&&o&&s&&c&&(void 0!==l||d)),g=n.useRef(null),f=n.useRef(0),v=n.useMemo((()=>{const e=r?.textMessageCompanyName,a=Date.now();return e&&e.trim()?(g.current=e,f.current=a,e):!p&&a-f.current>2e3&&(null==r?.textMessageCompanyName||""===r?.textMessageCompanyName)?(g.current=null,f.current=a,null):g.current}),[r?.textMessageCompanyName,p]),y=u?u.length>50?u.substring(0,50)+"...":u:null,k=n.memo(n.forwardRef(((e,n)=>a.jsxs(Wa,{size:"sm",variant:"outline",ref:n,...e,disabled:i?.status!==FN.DRAFT,children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]}))));return a.jsx("div",{className:"w-full bg-background rounded-lg p-3",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("div",{className:"flex items-center gap-2 overflow-hidden flex-1",children:a.jsxs(a.Fragment,p?{children:[a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-16"}),a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-20"}),a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-32"})]}:{children:[h&&a.jsx($Pe,{label:"From",value:h,className:"font-bold"}),v&&a.jsx($Pe,{label:"Company",value:v,className:"font-normal"}),y&&a.jsx($Pe,{label:"Message",value:a.jsx(HMe,{content:y,mergeFieldsResponse:t,variant:"minimal",className:"text-muted-foreground/50 italic"}),className:"text-muted-foreground/50 italic"})]})}),!e&&!p&&r&&a.jsx(YPe,{trigger:a.jsx(k,{}),communicationGroupId:r.id,initialSenderId:r.smsChannelSenderId,companyName:v})]})})},XPe=({disablePreview:e=!1,disableEditContent:t=!1})=>{const[i,r]=n.useState(!1),{channelSenders:o}=CC(),{data:s}=ix(),{brandDefaults:l}=kC(),{channelAccounts:u}=SC(),c=zoe(),d=Koe(),[m,h]=n.useState(!1),{data:p}=cN(),g=n.useRef(!1),f=n.useRef(null),{toast:v}=Ck(),[y,k]=n.useState(!1),{channelEnabled:b,isUpdating:S,handleToggleChannel:w}=HPe(Lge.SMS),{updateCommunicationGroup:A,isUpdating:C}=Qx(),M=vN({channelSenders:o?.results??[],channelAccounts:u?.results??[],smsApplication:p}),T=M.find((e=>e.channelSender.id===d?.smsChannelSenderId)),x=n.useCallback((e=>OMe(e)),[]),N=d?.smsMessageBody||"",[E,j]=n.useState("");n.useEffect((()=>{m&&d?.smsMessageBody!==E&&j(d?.smsMessageBody||"")}),[m,d?.smsMessageBody,E]);const _=n.useCallback((e=>{if(!d?.extraMergeFields)return[];const a=x(e),n=[];for(const t of d.extraMergeFields)if(t.type===zMe.DYNAMIC)for(const e of t.mergeFields)a.includes(e.templateName)&&e.image&&n.push({templateName:e.templateName,displayName:e.displayName,placeholderUrl:e.image.placeholderUrl,maxSize:e.image.maxSize});return n}),[d?.extraMergeFields,x]),P=n.useMemo((()=>d?.textMessageMediaUrls??[]),[d?.textMessageMediaUrls]),L=n.useMemo((()=>!d||!o||!u),[d,o,u]),B=n.useMemo((()=>_(E)),[_,E]),R=n.useMemo((()=>[...B.map((e=>e.placeholderUrl)),...P]),[P,B]),D=n.useRef(null),z=n.useMemo((()=>{if(null===D.current&&d?.textMessageCompanyName){const e=d.textMessageCompanyName;if(e&&e.trim())return D.current=e,e}return D.current}),[]),O=n.useMemo((()=>DMe({companyName:z??void 0,smsBody:N})),[z,N]),{getMergeFields:K}=aN(d?.id??void 0,c?.id??void 0),I=M.length>0;n.useEffect((()=>{if(!g.current&&!0===I&&d?.id&&void 0!==s&&void 0!==d&&!1===C&&void 0!==l){let e={};void 0===d?.textMessageCompanyName&&(s?.name||l?.brandName)&&(e.textMessageCompanyName=l.brandName??s.name),0===N.length&&(e.smsMessageBody="Hello 👋!"),void 0===d?.smsChannelSenderId&&M[0]?.channelSender?.id&&(e.smsChannelSenderId=M[0].channelSender.id),Object.keys(e).length>0?(g.current=!0,A({groupId:d.id,params:e})):g.current=!0}}),[d?.id,d?.textMessageCompanyName,d?.smsMessageBody,I,N,A,s,d?.smsChannelSenderId,M,d,C,l]);const H=!T?.smsApplication||T.smsApplication.status===fN.APPROVED;if(!c||void 0===o)return null;let F=null;d?.smsChannelSenderId||(F="Please first select a sms sender"),d?.smsMessageBody||(F="Please first ensure you have a sms content");const G=c.status===FN.DRAFT&&!t,V=!e&&H,J=!d?.smsChannelSenderId||0===M.length,U=()=>{if(t)return null;const e=a.jsxs(Wa,{size:"sm",variant:"outline",disabled:!G,className:Fa(!G&&"cursor-not-allowed"),onClick:()=>{h(!0)},children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]});return G?e:a.jsx(ex,{alertText:"You can only edit the content if we are in the draft state.",asChild:!0,className:"cursor-not-allowed",children:a.jsx("div",{className:"inline-block cursor-not-allowed",children:e})})},W=()=>{const e=a.jsx(_Te,{onClick:()=>r(!0)});return F?a.jsx(ex,{alertText:"Unable to send preview",title:"There was an error preparing the preview. Please check your automation configuration.",className:"inline-block",asChild:!0,children:e}):e},q=n.memo(FMe,((e,a)=>{const n=e.body||"",t=a.body||"";if(n===t)return!0;if(n.replace(/^[^:]+:\s*/,"")===t.replace(/^[^:]+:\s*/,""))return!0;const i=e.imageUrls||[],r=a.imageUrls||[];if(i.length!==r.length)return!1;for(let o=0;o<i.length;o++)if(i[o]!==r[o])return!1;return!0}));return a.jsx("div",{className:"h-full",children:!1===I?a.jsx("div",{className:"w-full pt-8 mx-auto",children:a.jsx(bN,{})}):a.jsxs(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.3,ease:[.16,1,.3,1]},className:"flex-1 flex flex-col items-center h-full",children:[a.jsx(zTe,{open:i,onOpenChange:r,automation:c}),a.jsx(fi,{open:m,onOpenChange:h,children:a.jsxs(bi,{hideCloseButton:!0,className:"max-w-[90vw] @container",children:[a.jsxs(We,{children:[a.jsx(Ai,{children:"SMS Editor"}),a.jsx(Ci,{children:"Learn more about the SMS editor and how to use it to create your SMS."})]}),a.jsx(ATe,{ref:f,communicationGroupId:d?.id||"",initialMessage:E,initialImageUrls:P,companyName:z,initialSenderId:d?.smsChannelSenderId}),a.jsx("div",{className:"flex justify-end mt-6",children:a.jsx(Wa,{variant:"outline",onClick:async()=>{try{k(!0),f.current?.saveChanges&&await f.current.saveChanges(),await new Promise((e=>setTimeout(e,100))),h(!1)}catch(e){v({title:"Save failed",description:"Please try again or check your message length",variant:"destructive"})}finally{k(!1)}},disabled:C||y,className:"px-4",children:y?"Saving...":"Save"})})]})}),J&&a.jsx(VPe,{channelType:"sms",onEnable:w,isEnabling:S}),I?a.jsx("div",{className:"flex-1 w-full flex flex-col overflow-y-auto",children:a.jsx("div",{className:Fa("flex flex-col space-y-4 px-4 pb-20",J?"pt-0":"pt-4"),children:a.jsxs("div",{className:"flex flex-col space-y-4 px-4 pt-4 pb-20",children:[a.jsx("div",{className:"w-full flex-shrink-0 max-w-2xl mx-auto rounded-md",children:a.jsx(QPe,{disableEditContent:t,mergeFieldsResponse:K})}),a.jsxs("div",{className:"rounded-lg bg-background flex-1 min-h-0 flex flex-col items-center max-w-2xl mx-auto w-full",children:[a.jsxs("div",{className:"flex items-center space-x-2 w-full justify-between p-3",children:[a.jsx(JPe,{channelEnabled:b,isUpdating:S,onToggle:w,channelType:"sms"}),a.jsxs("div",{className:"flex items-center space-x-2",children:[a.jsx(IPe,{type:Pge.SMS}),a.jsx(U,{}),V&&a.jsx(W,{}),I&&a.jsx(ETe,{expandDialogContent:a.jsx(jTe,{smsBody:O,imageUrls:R})})]})]}),L?a.jsx("div",{className:"flex items-center justify-center h-32",children:a.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading preview..."})}):a.jsx(q,{body:O,imageUrls:R})]}),a.jsx("p",{className:"text-center text-sm text-muted-foreground flex-shrink-0 pt-4",children:"These previews show generally how your messages will appear to your customers"})]})})}):a.jsxs(a.Fragment,{children:[J&&a.jsx(VPe,{channelType:"sms",className:"pt-4"}),a.jsx(qPe,{type:Pge.SMS})]})]})})},eLe=({disablePreview:e=!1,disableEditContent:t=!1,disablePreviewSubtext:i=!1,hideSms:r=!1})=>{const{state:{selectedSubStepType:o}}=n.useContext(Soe);if(!Koe())return a.jsx("div",{className:"flex flex-col gap-4 flex-1 bg-muted rounded-md",children:a.jsx(fd,{text:["Loading..."]})});if(!o)return a.jsx("div",{className:"flex flex-col gap-4 flex-1 bg-muted rounded-md",children:a.jsx("div",{className:"flex items-center justify-center h-full",children:a.jsxs("div",{className:"text-center",children:[a.jsx("h3",{className:"text-lg font-medium text-muted-foreground mb-2",children:"Select Communication Type"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Choose Email or SMS from the steps on the left to preview and edit content"})]})})});const s={disablePreview:e,disableEditContent:t,disablePreviewSubtext:i};return a.jsxs("div",{className:"flex flex-col flex-1 bg-muted rounded-md",children:[o===jge.EMAIL&&a.jsx(ZPe,{...s}),o===jge.SMS&&!r&&a.jsx(XPe,{...s})]})},aLe=()=>{const{state:{selectedActionId:e}}=n.useContext(Soe),{state:{hideSms:t}}=n.useContext(toe);return a.jsx("div",{className:"flex flex-col gap-4 h-full w-full",children:a.jsx(jd,{mode:"wait",children:e===Ege.EditTime?a.jsx(VTe,{}):e===Ege.EditAudience?a.jsx(QEe,{}):a.jsx(eLe,{hideSms:t})})})},nLe=({hideSms:e})=>a.jsxs(yPe,{direction:"horizontal",className:"flex-1",children:[a.jsx(kPe,{defaultSize:30,minSize:16,maxSize:48,children:a.jsx("aside",{className:"h-full",children:a.jsx(KPe,{hideSms:e})})}),a.jsx(bPe,{className:"px-1 opacity-0 hover:opacity-100 transition-opacity duration-200 mx-1"}),a.jsx(kPe,{defaultSize:70,children:a.jsx("main",{className:"h-full",children:a.jsx(aLe,{})})})]}),tLe=({hideSms:e})=>{const[t,i]=n.useState(_ge.WORKFLOW),r=[{id:_ge.WORKFLOW,label:"Workflow",content:a.jsx(nLe,{hideSms:e})},{id:_ge.RECIPIENTS,label:"Recipients",content:a.jsx(Ije,{})},{id:_ge.INSIGHTS,label:qx("engage:insight",{count:2}),content:a.jsx(zje,{})}];return a.jsx(pje,{tabs:r,activeTab:t,onTabChange:e=>i(e),tabsLocation:"left"})},iLe=({showBackButton:e=!1,onDuplicationCreated:t,onBeforeSchedule:i,getExtraMergeFields:r,hideSms:o,hideSales:s,replyToSettingsText:l,replyToSettingsLink:u,fromNameSettingsText:c,fromNameSettingsLink:d})=>{const m=zoe(),h=Koe(),{updateCommunicationGroup:p}=Qx(),{toast:g}=Ck(),{channelSenders:f}=CC(),v=n.useRef("");return n.useEffect((()=>{if(h&&r){(async()=>{const e=await r(),a=JSON.stringify(e);a!==v.current&&(v.current=a,p({groupId:h?.id,params:{extraMergeFields:e}},{onError:()=>{g({title:"Error saving merge fields!",description:"Please contact your administrator if this issue persists.",variant:"destructive"})}}))})()}}),[h,r,p,g]),n.useEffect((()=>{if(m&&h&&f&&m.automationType===IN.MANAGED&&null===h.emailChannelSenderId&&null===h.smsChannelSenderId){if(!h.emailChannelSenderId){const e=f.results.filter((e=>e.channelSenderMetadata.userPart));e.length>0&&p({groupId:h.id,params:{emailChannelSenderId:e[0].id}})}if(!h.smsChannelSenderId){const e=f.results.filter((e=>e.channelSenderMetadata.from||e.channelSenderMetadata.messageServiceSid));e.length>0&&p({groupId:h.id,params:{smsChannelSenderId:e[0].id}})}}}),[m,h,f,p]),m&&h?a.jsx(ioe,{children:a.jsx(roe,{replyToSettingsText:l,replyToSettingsLink:u,fromNameSettingsText:c,fromNameSettingsLink:d,hideSms:o,hideSales:s,children:a.jsxs("div",{className:"h-full flex flex-col gap-4 p-4",children:[a.jsx(Dje,{showBackButton:e,onDuplicationCreated:t,onBeforeSchedule:i}),a.jsx("div",{className:"flex-1 border-t",children:a.jsx(tLe,{hideSms:o})})]})})}):a.jsx("div",{className:"flex h-full items-center justify-center",children:a.jsx(fd,{text:[`Fetching ${qx("engage:automation").toLowerCase()} data`,"Finishing up"]})})},rLe=({...e})=>{const n=function(){let{matches:e}=r.useContext(rce),a=e[e.length-1];return a?a.params:{}}(),[t]=Zce(),i=e.automationId||n?.automationId||t.get("automationId")||"",o="true"===t.get("showBackButton")||e.showBackButton,s="true"===t.get("hideSms")||e.hideSms;return a.jsx(Hoe,{automationId:i,children:a.jsx("div",{className:"bg-background h-full min-h-[750px]",children:a.jsx(iLe,{...e,showBackButton:o,hideSms:s})})})};Object.values(Object.assign({}));var oLe=/(%?)(%([sdijo]))/g;function sLe(e,...a){if(0===a.length)return e;let n=0,t=e.replace(oLe,((e,t,i,r)=>{const o=function(e,a){switch(a){case"s":return e;case"d":case"i":return Number(e);case"j":return JSON.stringify(e);case"o":{if("string"==typeof e)return e;const a=JSON.stringify(e);return"{}"===a||"[]"===a||/^\[object .+?\]$/.test(a)?e:a}}}(a[n],r);return t?e:(n++,o)}));return n<a.length&&(t+=` ${a.slice(n).join(" ")}`),t=t.replace(/%{2,2}/g,"%"),t}var lLe=class extends Error{constructor(e,...a){super(e),this.message=e,this.name="Invariant Violation",this.message=sLe(e,...a),function(e){if(!e.stack)return;const a=e.stack.split("\n");a.splice(1,2),e.stack=a.join("\n")}(this)}},uLe=(e,a,...n)=>{if(!e)throw new lLe(a,...n)};uLe.as=(e,a,n,...t)=>{if(!a){const a=0===t.length?n:sLe(n,...t);let i;try{i=Reflect.construct(e,[a])}catch(YIe){i=e(a)}throw i}};const cLe={formatMessage:function(e,...a){return`[MSW] ${sLe(e,...a)}`},warn:function(e,...a){},error:function(e,...a){}};class dLe extends Error{constructor(e){super(e),this.name="InternalError"}}const mLe=/[\/\\]msw[\/\\]src[\/\\](.+)/,hLe=/(node_modules)?[\/\\]lib[\/\\](core|browser|node|native|iife)[\/\\]|^[^\/\\]*$/;class pLe{static cache=new WeakMap;__kind;info;isUsed;resolver;resolverIterator;resolverIteratorResult;options;constructor(e){this.resolver=e.resolver,this.options=e.options;const a=function(e){const a=e.stack;if(!a)return;const n=a.split("\n").slice(1).find((e=>!(mLe.test(e)||hLe.test(e))));if(!n)return;return n.replace(/\s*at [^()]*\(([^)]+)\)/,"$1").replace(/^@/,"")}(new Error);this.info={...e.info,callFrame:a},this.isUsed=!1,this.__kind="RequestHandler"}async parse(e){return{}}async test(e){const a=await this.parse({request:e.request,resolutionContext:e.resolutionContext});return this.predicate({request:e.request,parsedResult:a,resolutionContext:e.resolutionContext})}extendResolverArgs(e){return{}}cloneRequestOrGetFromCache(e){const a=pLe.cache.get(e);if(void 0!==a)return a;const n=e.clone();return pLe.cache.set(e,n),n}async run(e){if(this.isUsed&&this.options?.once)return null;const a=this.cloneRequestOrGetFromCache(e.request),n=await this.parse({request:e.request,resolutionContext:e.resolutionContext});if(!this.predicate({request:e.request,parsedResult:n,resolutionContext:e.resolutionContext}))return null;if(this.isUsed&&this.options?.once)return null;this.isUsed=!0;const t=this.wrapResolver(this.resolver)({...this.extendResolverArgs({request:e.request,parsedResult:n}),requestId:e.requestId,request:e.request}).catch((e=>{if(e instanceof Response)return e;throw e})),i=await t;return this.createExecutionResult({request:a,requestId:e.requestId,response:i,parsedResult:n})}wrapResolver(e){return async a=>{if(!this.resolverIterator){const t=await e(a);if(!(n=t)||!Reflect.has(n,Symbol.iterator)&&!Reflect.has(n,Symbol.asyncIterator))return t;this.resolverIterator=Symbol.iterator in t?t[Symbol.iterator]():t[Symbol.asyncIterator]()}var n;this.isUsed=!1;const{done:t,value:i}=await this.resolverIterator.next(),r=await i;return r&&(this.resolverIteratorResult=r.clone()),t?(this.isUsed=!0,this.resolverIteratorResult?.clone()):r}}createExecutionResult(e){return{handler:this,request:e.request,requestId:e.requestId,response:e.response,parsedResult:e.parsedResult}}}function gLe(e){if("undefined"==typeof location)return e.toString();const a=e instanceof URL?e:new URL(e);return a.origin===location.origin?a.pathname:a.origin+a.pathname}async function fLe(e,a="warn"){const n=new URL(e.url),t=gLe(n)+n.search,i="HEAD"===e.method||"GET"===e.method?null:await e.clone().text(),r=`intercepted a request without a matching request handler:${`\n\n • ${e.method} ${t}\n\n${i?` • Request body: ${i}\n\n`:""}`}If you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks`;function o(e){switch(e){case"error":throw cLe.error("Error: %s",r),new dLe(cLe.formatMessage('Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'));case"warn":cLe.warn("Warning: %s",r);break;case"bypass":break;default:throw new dLe(cLe.formatMessage('Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',e))}}"function"!=typeof a?function(e){const a=new URL(e.url);return"file:"===a.protocol||!!/(fonts\.googleapis\.com)/.test(a.hostname)||!!/node_modules/.test(a.pathname)||!!a.pathname.includes("@vite")||/\.(s?css|less|m?jsx?|m?tsx?|html|ttf|otf|woff|woff2|eot|gif|jpe?g|png|avif|webp|svg|mp4|webm|ogg|mov|mp3|wav|ogg|flac|aac|pdf|txt|csv|json|xml|md|zip|tar|gz|rar|7z)$/i.test(a.pathname)}(e)||o(a):a(e,{warning:o.bind(null,"warn"),error:o.bind(null,"error")})}function vLe(){if("undefined"!=typeof navigator&&"ReactNative"===navigator.product)return!0;if("undefined"!=typeof process){const e=process.type;return"renderer"!==e&&"worker"!==e&&!(!process.versions||!process.versions.node)}return!1}var yLe,kLe,bLe=Object.create,SLe=Object.defineProperty,wLe=Object.getOwnPropertyDescriptor,ALe=Object.getOwnPropertyNames,CLe=Object.getPrototypeOf,MLe=Object.prototype.hasOwnProperty,TLe=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,a)=>("undefined"!=typeof require?require:e)[a]}):e)((function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')})),xLe=(e,a)=>function(){return a||(0,e[ALe(e)[0]])((a={exports:{}}).exports,a),a.exports},NLe=xLe({"node_modules/punycode/punycode.js"(e,a){var n=2147483647,t=36,i=/^xn--/,r=/[^\0-\x7F]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,s={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function c(e){throw new RangeError(s[e])}function d(e,a){const n=e.split("@");let t="";n.length>1&&(t=n[0]+"@",e=n[1]);const i=function(e,a){const n=[];let t=e.length;for(;t--;)n[t]=a(e[t]);return n}((e=e.replace(o,".")).split("."),a).join(".");return t+i}function m(e){const a=[];let n=0;const t=e.length;for(;n<t;){const i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<t){const t=e.charCodeAt(n++);56320==(64512&t)?a.push(((1023&i)<<10)+(1023&t)+65536):(a.push(i),n--)}else a.push(i)}return a}var h=function(e,a){return e+22+75*(e<26)-((0!=a)<<5)},p=function(e,a,n){let i=0;for(e=n?l(e/700):e>>1,e+=l(e/a);e>455;i+=t)e=l(e/35);return l(i+36*e/(e+38))},g=function(e){const a=[],i=e.length;let r=0,o=128,s=72,u=e.lastIndexOf("-");u<0&&(u=0);for(let n=0;n<u;++n)e.charCodeAt(n)>=128&&c("not-basic"),a.push(e.charCodeAt(n));for(let m=u>0?u+1:0;m<i;){const u=r;for(let a=1,o=t;;o+=t){m>=i&&c("invalid-input");const u=(d=e.charCodeAt(m++))>=48&&d<58?d-48+26:d>=65&&d<91?d-65:d>=97&&d<123?d-97:t;u>=t&&c("invalid-input"),u>l((n-r)/a)&&c("overflow"),r+=u*a;const h=o<=s?1:o>=s+26?26:o-s;if(u<h)break;const p=t-h;a>l(n/p)&&c("overflow"),a*=p}const h=a.length+1;s=p(r-u,h,0==u),l(r/h)>n-o&&c("overflow"),o+=l(r/h),r%=h,a.splice(r++,0,o)}var d;return String.fromCodePoint(...a)},f=function(e){const a=[],i=(e=m(e)).length;let r=128,o=0,s=72;for(const n of e)n<128&&a.push(u(n));const d=a.length;let g=d;for(d&&a.push("-");g<i;){let i=n;for(const a of e)a>=r&&a<i&&(i=a);const m=g+1;i-r>l((n-o)/m)&&c("overflow"),o+=(i-r)*m,r=i;for(const f of e)if(f<r&&++o>n&&c("overflow"),f===r){let e=o;for(let n=t;;n+=t){const i=n<=s?1:n>=s+26?26:n-s;if(e<i)break;const r=e-i,o=t-i;a.push(u(h(i+r%o,0))),e=l(r/o)}a.push(u(h(e,0))),s=p(o,m,g===d),o=0,++g}++o,++r}return a.join("")};a.exports={version:"2.3.1",ucs2:{decode:m,encode:e=>String.fromCodePoint(...e)},decode:g,encode:f,toASCII:function(e){return d(e,(function(e){return r.test(e)?"xn--"+f(e):e}))},toUnicode:function(e){return d(e,(function(e){return i.test(e)?g(e.slice(4).toLowerCase()):e}))}}}}),ELe=xLe({"node_modules/requires-port/index.js"(e,a){a.exports=function(e,a){if(a=a.split(":")[0],!(e=+e))return!1;switch(a){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}}}),jLe=xLe({"node_modules/querystringify/index.js"(e){var a=Object.prototype.hasOwnProperty;function n(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(XIe){return null}}function t(e){try{return encodeURIComponent(e)}catch(XIe){return null}}e.stringify=function(e,n){n=n||"";var i,r,o=[];for(r in"string"!=typeof n&&(n="?"),e)if(a.call(e,r)){if((i=e[r])||null!=i&&!isNaN(i)||(i=""),r=t(r),i=t(i),null===r||null===i)continue;o.push(r+"="+i)}return o.length?n+o.join("&"):""},e.parse=function(e){for(var a,t=/([^=?#&]+)=?([^&]*)/g,i={};a=t.exec(e);){var r=n(a[1]),o=n(a[2]);null===r||null===o||r in i||(i[r]=o)}return i}}}),_Le=xLe({"node_modules/url-parse/index.js"(e,a){var n=ELe(),t=jLe(),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r=/[\n\r\t]/g,o=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,s=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function c(e){return(e||"").toString().replace(i,"")}var d=[["#","hash"],["?","query"],function(e,a){return p(a.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],m={hash:1,query:1};function h(e){var a;a="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var n,t={},i=typeof(e=e||(a.location||{}));if("blob:"===e.protocol)t=new f(unescape(e.pathname),{});else if("string"===i)for(n in t=new f(e,{}),m)delete t[n];else if("object"===i){for(n in e)n in m||(t[n]=e[n]);void 0===t.slashes&&(t.slashes=o.test(e.href))}return t}function p(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function g(e,a){e=(e=c(e)).replace(r,""),a=a||{};var n,t=l.exec(e),i=t[1]?t[1].toLowerCase():"",o=!!t[2],s=!!t[3],u=0;return o?s?(n=t[2]+t[3]+t[4],u=t[2].length+t[3].length):(n=t[2]+t[4],u=t[2].length):s?(n=t[3]+t[4],u=t[3].length):n=t[4],"file:"===i?u>=2&&(n=n.slice(2)):p(i)?n=t[4]:i?o&&(n=n.slice(2)):u>=2&&p(a.protocol)&&(n=t[4]),{protocol:i,slashes:o||p(i),slashesCount:u,rest:n}}function f(e,a,i){if(e=(e=c(e)).replace(r,""),!(this instanceof f))return new f(e,a,i);var o,s,l,m,v,y,k=d.slice(),b=typeof a,S=this,w=0;for("object"!==b&&"string"!==b&&(i=a,a=null),i&&"function"!=typeof i&&(i=t.parse),o=!(s=g(e||"",a=h(a))).protocol&&!s.slashes,S.slashes=s.slashes||o&&a.slashes,S.protocol=s.protocol||a.protocol||"",e=s.rest,("file:"===s.protocol&&(2!==s.slashesCount||u.test(e))||!s.slashes&&(s.protocol||s.slashesCount<2||!p(S.protocol)))&&(k[3]=[/(.*)/,"pathname"]);w<k.length;w++)"function"!=typeof(m=k[w])?(y=m[1],(l=m[0])!=l?S[y]=e:"string"==typeof l?~(v="@"===l?e.lastIndexOf(l):e.indexOf(l))&&("number"==typeof m[2]?(S[y]=e.slice(0,v),e=e.slice(v+m[2])):(S[y]=e.slice(v),e=e.slice(0,v))):(v=l.exec(e))&&(S[y]=v[1],e=e.slice(0,v.index)),S[y]=S[y]||o&&m[3]&&a[y]||"",m[4]&&(S[y]=S[y].toLowerCase())):e=m(e,S);i&&(S.query=i(S.query)),o&&a.slashes&&"/"!==S.pathname.charAt(0)&&(""!==S.pathname||""!==a.pathname)&&(S.pathname=function(e,a){if(""===e)return a;for(var n=(a||"/").split("/").slice(0,-1).concat(e.split("/")),t=n.length,i=n[t-1],r=!1,o=0;t--;)"."===n[t]?n.splice(t,1):".."===n[t]?(n.splice(t,1),o++):o&&(0===t&&(r=!0),n.splice(t,1),o--);return r&&n.unshift(""),"."!==i&&".."!==i||n.push(""),n.join("/")}(S.pathname,a.pathname)),"/"!==S.pathname.charAt(0)&&p(S.protocol)&&(S.pathname="/"+S.pathname),n(S.port,S.protocol)||(S.host=S.hostname,S.port=""),S.username=S.password="",S.auth&&(~(v=S.auth.indexOf(":"))?(S.username=S.auth.slice(0,v),S.username=encodeURIComponent(decodeURIComponent(S.username)),S.password=S.auth.slice(v+1),S.password=encodeURIComponent(decodeURIComponent(S.password))):S.username=encodeURIComponent(decodeURIComponent(S.auth)),S.auth=S.password?S.username+":"+S.password:S.username),S.origin="file:"!==S.protocol&&p(S.protocol)&&S.host?S.protocol+"//"+S.host:"null",S.href=S.toString()}f.prototype={set:function(e,a,i){var r=this;switch(e){case"query":"string"==typeof a&&a.length&&(a=(i||t.parse)(a)),r[e]=a;break;case"port":r[e]=a,n(a,r.protocol)?a&&(r.host=r.hostname+":"+a):(r.host=r.hostname,r[e]="");break;case"hostname":r[e]=a,r.port&&(a+=":"+r.port),r.host=a;break;case"host":r[e]=a,s.test(a)?(a=a.split(":"),r.port=a.pop(),r.hostname=a.join(":")):(r.hostname=a,r.port="");break;case"protocol":r.protocol=a.toLowerCase(),r.slashes=!i;break;case"pathname":case"hash":if(a){var o="pathname"===e?"/":"#";r[e]=a.charAt(0)!==o?o+a:a}else r[e]=a;break;case"username":case"password":r[e]=encodeURIComponent(a);break;case"auth":var l=a.indexOf(":");~l?(r.username=a.slice(0,l),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=a.slice(l+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(a))}for(var u=0;u<d.length;u++){var c=d[u];c[4]&&(r[c[1]]=r[c[1]].toLowerCase())}return r.auth=r.password?r.username+":"+r.password:r.username,r.origin="file:"!==r.protocol&&p(r.protocol)&&r.host?r.protocol+"//"+r.host:"null",r.href=r.toString(),r},toString:function(e){e&&"function"==typeof e||(e=t.stringify);var a,n=this,i=n.host,r=n.protocol;r&&":"!==r.charAt(r.length-1)&&(r+=":");var o=r+(n.protocol&&n.slashes||p(n.protocol)?"//":"");return n.username?(o+=n.username,n.password&&(o+=":"+n.password),o+="@"):n.password?(o+=":"+n.password,o+="@"):"file:"!==n.protocol&&p(n.protocol)&&!i&&"/"!==n.pathname&&(o+="@"),(":"===i[i.length-1]||s.test(n.hostname)&&!n.port)&&(i+=":"),o+=i+n.pathname,(a="object"==typeof n.query?e(n.query):n.query)&&(o+="?"!==a.charAt(0)?"?"+a:a),n.hash&&(o+=n.hash),o}},f.extractProtocol=g,f.location=h,f.trimLeft=c,f.qs=t,a.exports=f}}),PLe=xLe({"node_modules/psl/data/rules.json"(e,a){a.exports=["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","bet.ar","com.ar","coop.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","mutual.ar","net.ar","org.ar","senasa.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","sth.ac.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","app.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bib.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","coz.br","cri.br","cuiaba.br","curitiba.br","def.br","des.br","det.br","dev.br","ecn.br","eco.br","edu.br","emp.br","enf.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","geo.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","log.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","rep.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","seg.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","tec.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","com.cv","edu.cv","int.cv","nome.cv","org.cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","mil.cy","net.cy","org.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","art.dz","asso.dz","com.dz","edu.dz","gov.dz","org.dz","net.dz","pol.dz","soc.dz","tm.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","com.fm","edu.fm","net.fm","org.fm","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","edu.gd","gov.gd","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个��.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","com.ky","edu.ky","net.ky","org.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","biz.my","com.my","edu.my","gov.my","mil.my","name.my","net.my","org.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","me.ss","net.ss","org.ss","sch.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","info.tn","intl.tn","mincom.tn","nat.tn","net.tn","org.tn","perso.tn","tourism.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","bib.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","nom.ve","org.ve","rar.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","البحرين","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ລາວ","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","ye","com.ye","edu.ye","gov.ye","net.ye","mil.ye","org.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afl","africa","agakhan","agency","aig","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","catering","catholic","cba","cbn","cbre","cbs","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","jaguar","java","jcb","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kids","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","music","mutual","nab","nagoya","natura","navy","nba","nec","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","racing","radio","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiss","sydney","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","611.to","graphox.us","*.devcdnaccesso.com","adobeaemcloud.com","*.dev.adobeaemcloud.com","hlx.live","adobeaemcloud.net","hlx.page","hlx3.page","beep.pl","airkitapps.com","airkitapps-au.com","airkitapps.eu","aivencloud.com","barsy.ca","*.compute.estate","*.alces.network","kasserver.com","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","awsglobalaccelerator.com","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","siiites.com","appspacehosted.com","appspaceusercontent.com","appudo.net","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","cdn.prod.atlassian-dev.net","translated.page","myfritz.net","onavstack.net","*.awdev.ca","*.advisor.ws","ecommerce-shop.pl","b-data.io","backplaneapp.io","balena-devices.com","rs.ba","*.banzai.cloud","app.banzaicloud.io","*.backyards.banzaicloud.io","base.ec","official.ec","buyshop.jp","fashionstore.jp","handcrafted.jp","kawaiishop.jp","supersale.jp","theshop.jp","shopselect.net","base.shop","*.beget.app","betainabox.com","bnr.la","bitbucket.io","blackbaudcdn.net","of.je","bluebite.io","boomla.net","boutir.com","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","shop.brendly.rs","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","cafjs.com","mycd.eu","drr.ac","uwu.ai","carrd.co","crd.co","ju.mp","ae.org","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.net","hu.net","jp.net","jpn.com","mex.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","za.bz","za.com","ar.com","hu.com","kr.com","no.com","qc.com","uy.com","africa.com","gr.com","in.net","web.in","us.org","co.com","aus.basketball","nz.basketball","radio.am","radio.fm","c.la","certmgr.org","cx.ua","discourse.group","discourse.team","cleverapps.io","clerk.app","clerkstage.app","*.lcl.dev","*.lclstage.dev","*.stg.dev","*.stgstage.dev","clickrising.net","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","*.cloudera.site","pages.dev","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cnpy.gdn","codeberg.page","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","curv.dev","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","fnwk.site","folionetwork.site","platform0.app","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","dyndns.dappnode.io","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","demo.datadetect.com","instance.datadetect.com","edgestack.me","ddns5.com","debian.net","deno.dev","deno-staging.dev","dedyn.io","deta.app","deta.dev","*.rss.my.id","*.diher.solutions","discordsays.com","discordsez.com","jozi.biz","dnshome.de","online.th","shop.th","drayddns.com","shoparena.pl","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","bip.sh","bitbridge.net","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","ondigitalocean.app","*.digitaloceanspaces.com","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","eero.online","eero-stage.online","elementor.cloud","elementor.cool","en-root.fr","mytuleap.com","tuleap-partners.com","encr.app","encoreapi.com","onred.one","staging.onred.one","eu.encoway.cloud","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eurodir.ru","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","onfabrica.com","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","edgecompute.app","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastvps-server.com","fastvps.host","myfast.host","fastvps.site","myfast.space","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","conn.uk","copro.uk","hosp.uk","mydobiss.com","fh-muenster.io","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","fireweb.app","flap.id","onflashdrive.app","fldrv.com","fly.dev","edgeapp.net","shw.io","flynnhosting.net","forgeblocks.com","id.forgerock.io","framer.app","framercanvas.com","*.frusky.de","ravpage.co.il","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","freemyip.com","wien.funkfeuer.at","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","independent-commission.uk","independent-inquest.uk","independent-inquiry.uk","independent-panel.uk","independent-review.uk","public-inquiry.uk","royal-commission.uk","campaign.gov.uk","service.gov.uk","api.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","gentlentapis.com","lab.ms","cdn-edges.net","ghost.io","gsj.bz","githubusercontent.com","githubpreview.dev","github.io","gitlab.io","gitapp.si","gitpage.si","glitch.me","nog.community","co.ro","shop.ro","lolipop.io","angry.jp","babyblue.jp","babymilk.jp","backdrop.jp","bambina.jp","bitter.jp","blush.jp","boo.jp","boy.jp","boyfriend.jp","but.jp","candypop.jp","capoo.jp","catfood.jp","cheap.jp","chicappa.jp","chillout.jp","chips.jp","chowder.jp","chu.jp","ciao.jp","cocotte.jp","coolblog.jp","cranky.jp","cutegirl.jp","daa.jp","deca.jp","deci.jp","digick.jp","egoism.jp","fakefur.jp","fem.jp","flier.jp","floppy.jp","fool.jp","frenchkiss.jp","girlfriend.jp","girly.jp","gloomy.jp","gonna.jp","greater.jp","hacca.jp","heavy.jp","her.jp","hiho.jp","hippy.jp","holy.jp","hungry.jp","icurus.jp","itigo.jp","jellybean.jp","kikirara.jp","kill.jp","kilo.jp","kuron.jp","littlestar.jp","lolipopmc.jp","lolitapunk.jp","lomo.jp","lovepop.jp","lovesick.jp","main.jp","mods.jp","mond.jp","mongolian.jp","moo.jp","namaste.jp","nikita.jp","nobushi.jp","noor.jp","oops.jp","parallel.jp","parasite.jp","pecori.jp","peewee.jp","penne.jp","pepper.jp","perma.jp","pigboat.jp","pinoko.jp","punyu.jp","pupu.jp","pussycat.jp","pya.jp","raindrop.jp","readymade.jp","sadist.jp","schoolbus.jp","secret.jp","staba.jp","stripper.jp","sub.jp","sunnyday.jp","thick.jp","tonkotsu.jp","under.jp","upper.jp","velvet.jp","verse.jp","versus.jp","vivian.jp","watson.jp","weblike.jp","whitesnow.jp","zombie.jp","heteml.net","cloudapps.digital","london.cloudapps.digital","pymnt.uk","homeoffice.gov.uk","ro.im","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","*.gateway.dev","cloud.goog","translate.goog","*.usercontent.goog","cloudfunctions.net","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","goupile.fr","gov.nl","awsmppl.com","günstigbestellen.de","günstigliefern.de","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","pages.it.hs-heilbronn.de","hepforge.org","herokuapp.com","herokussl.com","ravendb.cloud","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","homesklep.pl","secaas.hk","hoplix.shop","orx.biz","biz.gl","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","edu.scot","sch.so","hostyhosting.io","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","ibxos.it","iliadboxos.it","impertrixcdn.com","impertrix.com","smushcdn.com","wphostedmail.com","wpmucdn.com","tempurl.host","wpmudev.host","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","na4u.ru","iopsys.se","ipifony.net","iservschule.de","mein-iserv.de","schulplattform.de","schulserver.de","test-iserv.de","iserv.dev","iobb.net","mel.cloudlets.com.au","cloud.interhostsolutions.be","users.scale.virtualcloud.com.br","mycloud.by","alp1.ae.flow.ch","appengine.flow.ch","es-1.axarnet.cloud","diadem.cloud","vip.jelastic.cloud","jele.cloud","it1.eur.aruba.jenv-aruba.cloud","it1.jenv-aruba.cloud","keliweb.cloud","cs.keliweb.cloud","oxa.cloud","tn.oxa.cloud","uk.oxa.cloud","primetel.cloud","uk.primetel.cloud","ca.reclaim.cloud","uk.reclaim.cloud","us.reclaim.cloud","ch.trendhosting.cloud","de.trendhosting.cloud","jele.club","amscompute.com","clicketcloud.com","dopaas.com","hidora.com","paas.hosted-by-previder.com","rag-cloud.hosteur.com","rag-cloud-ch.hosteur.com","jcloud.ik-server.com","jcloud-ver-jpc.ik-server.com","demo.jelastic.com","kilatiron.com","paas.massivegrid.com","jed.wafaicloud.com","lon.wafaicloud.com","ryd.wafaicloud.com","j.scaleforce.com.cy","jelastic.dogado.eu","fi.cloudplatform.fi","demo.datacenter.fi","paas.datacenter.fi","jele.host","mircloud.host","paas.beebyte.io","sekd1.beebyteapp.io","jele.io","cloud-fr1.unispace.io","jc.neen.it","cloud.jelastic.open.tim.it","jcloud.kz","upaas.kazteleport.kz","cloudjiffy.net","fra1-de.cloudjiffy.net","west1-us.cloudjiffy.net","jls-sto1.elastx.net","jls-sto2.elastx.net","jls-sto3.elastx.net","faststacks.net","fr-1.paas.massivegrid.net","lon-1.paas.massivegrid.net","lon-2.paas.massivegrid.net","ny-1.paas.massivegrid.net","ny-2.paas.massivegrid.net","sg-1.paas.massivegrid.net","jelastic.saveincloud.net","nordeste-idc.saveincloud.net","j.scaleforce.net","jelastic.tsukaeru.net","sdscloud.pl","unicloud.pl","mircloud.ru","jelastic.regruhosting.ru","enscaled.sg","jele.site","jelastic.team","orangecloud.tn","j.layershift.co.uk","phx.enscaled.us","mircloud.us","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","jotelulu.cloud","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","ktistory.com","kapsi.fi","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","koobin.events","oya.to","kuleuven.cloud","ezproxy.kuleuven.be","co.krd","edu.krd","krellian.net","webthings.io","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkyard.cloud","linkyard-cloud.ch","members.linode.com","*.nodebalancer.linode.com","*.linodeobjects.com","ip.linodeusercontent.com","we.bs","*.user.localcert.dev","localzone.xyz","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","servers.run","lohmus.me","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.ro","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","cn.vu","mazeplay.com","mcpe.me","mcdir.me","mcdir.ru","mcpre.ru","vps.mcdir.ru","mediatech.by","mediatech.dev","hra.health","miniserver.com","memset.net","messerli.app","*.cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","*.azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","azurestaticapps.net","1.azurestaticapps.net","centralus.azurestaticapps.net","eastasia.azurestaticapps.net","eastus2.azurestaticapps.net","westeurope.azurestaticapps.net","westus2.azurestaticapps.net","csx.cc","mintere.site","forte.id","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","hostedpi.com","customer.mythic-beasts.com","caracal.mythic-beasts.com","fentiger.mythic-beasts.com","lynx.mythic-beasts.com","ocelot.mythic-beasts.com","oncilla.mythic-beasts.com","onza.mythic-beasts.com","sphinx.mythic-beasts.com","vs.mythic-beasts.com","x.mythic-beasts.com","yali.mythic-beasts.com","cust.retrosnub.co.uk","ui.nabu.casa","pony.club","of.fashion","in.london","of.london","from.marketing","with.marketing","for.men","repair.men","and.mom","for.mom","for.one","under.one","for.sale","that.win","from.work","to.work","cloud.nospamproxy.com","netlify.app","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","*.developer.app","noop.app","*.northflank.app","*.build.run","*.code.run","*.database.run","*.migration.run","noticeable.news","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","pcloud.host","nyc.mn","static.observableusercontent.com","cya.gg","omg.lol","cloudycluster.net","omniwe.site","service.one","nid.io","opensocial.site","opencraft.hosting","orsites.com","operaunite.com","tech.orange","authgear-staging.com","authgearapps.com","skygearapp.com","outsystemscloud.com","*.webpaas.ovh.net","*.hosting.ovh.net","ownprovider.com","own.pm","*.owo.codes","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","pagexl.com","*.paywhirl.com","bar0.net","bar1.net","bar2.net","rdv.to","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","lk3.ru","on-web.fr","bc.platform.sh","ent.platform.sh","eu.platform.sh","us.platform.sh","*.platformsh.site","*.tst.site","platter-app.com","platter-app.dev","platterp.us","pdns.page","plesk.page","pleskns.com","dyn53.io","onporter.run","co.bn","postman-echo.com","pstmn.io","mock.pstmn.io","httpbin.org","prequalifyme.today","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","pythonanywhere.com","eu.pythonanywhere.com","qoto.io","qualifioapp.com","qbuser.com","cloudsite.builders","instances.spawn.cc","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","g.vbrplsbx.io","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","id.repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","wellbeingzone.co.uk","adimo.co.uk","itcouldbewor.se","git-pages.rit.edu","rocky.page","биз.рус","ком.рус","крым.рус","мир.рус","мск.рус","орг.рус","самара.рус","сочи.рус","спб.рус","я.рус","*.builder.code.com","*.dev-builder.code.com","*.stg-builder.code.com","sandcats.io","logoip.de","logoip.com","fr-par-1.baremetal.scw.cloud","fr-par-2.baremetal.scw.cloud","nl-ams-1.baremetal.scw.cloud","fnc.fr-par.scw.cloud","functions.fnc.fr-par.scw.cloud","k8s.fr-par.scw.cloud","nodes.k8s.fr-par.scw.cloud","s3.fr-par.scw.cloud","s3-website.fr-par.scw.cloud","whm.fr-par.scw.cloud","priv.instances.scw.cloud","pub.instances.scw.cloud","k8s.scw.cloud","k8s.nl-ams.scw.cloud","nodes.k8s.nl-ams.scw.cloud","s3.nl-ams.scw.cloud","s3-website.nl-ams.scw.cloud","whm.nl-ams.scw.cloud","k8s.pl-waw.scw.cloud","nodes.k8s.pl-waw.scw.cloud","s3.pl-waw.scw.cloud","s3-website.pl-waw.scw.cloud","scalebook.scw.cloud","smartlabeling.scw.cloud","dedibox.fr","schokokeks.net","gov.scot","service.gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","seidat.net","sellfy.store","senseering.net","minisite.ms","magnet.page","biz.ua","co.ua","pp.ua","shiftcrypto.dev","shiftcrypto.io","shiftedit.io","myshopblocks.com","myshopify.com","shopitsite.com","shopware.store","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","small-web.org","vp4.me","try-snowplow.com","srht.site","stackhero-network.com","musician.io","novecore.site","static.land","dev.static.land","sites.static.land","storebase.store","vps-host.net","atl.jelastic.vps-host.net","njs.jelastic.vps-host.net","ric.jelastic.vps-host.net","playstation-cloud.com","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","myspreadshop.at","myspreadshop.com.au","myspreadshop.be","myspreadshop.ca","myspreadshop.ch","myspreadshop.com","myspreadshop.de","myspreadshop.dk","myspreadshop.es","myspreadshop.fi","myspreadshop.fr","myspreadshop.ie","myspreadshop.it","myspreadshop.net","myspreadshop.nl","myspreadshop.no","myspreadshop.pl","myspreadshop.se","myspreadshop.co.uk","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","supabase.co","supabase.in","supabase.net","su.paba.se","*.s5y.io","*.sensiosite.cloud","syncloud.it","dscloud.biz","direct.quickconnect.cn","dsmynas.com","familyds.com","diskstation.me","dscloud.me","i234.me","myds.me","synology.me","dscloud.mobi","dsmynas.net","familyds.net","dsmynas.org","familyds.org","vpnplus.to","direct.quickconnect.to","tabitorder.co.il","taifun-dns.de","beta.tailscale.net","ts.net","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","site.tb-hosting.com","edugit.io","s3.teckids.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","*.firenet.ch","*.svc.firenet.ch","reservd.com","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","reservd.dev.thingdust.io","reservd.disrec.thingdust.io","reservd.testing.thingdust.io","tickets.io","arvo.network","azimuth.network","tlon.network","torproject.net","pages.torproject.net","bloxcms.com","townnews-staging.com","tbits.me","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","site.transip.me","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","typedream.app","pro.typeform.com","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","name.pm","sch.tf","biz.wf","sch.wf","org.yt","virtualuser.de","virtual-user.de","upli.io","urown.cloud","dnsupdate.info","lib.de.us","2038.io","vercel.app","vercel.dev","now.sh","router.management","v-info.info","voorloper.cloud","neko.am","nyaa.am","be.ax","cat.ax","es.ax","eu.ax","gg.ax","mc.ax","us.ax","xy.ax","nl.ci","xx.gl","app.gp","blog.gt","de.gt","to.gt","be.gy","cc.hn","blog.kg","io.kg","jp.kg","tv.kg","uk.kg","us.kg","de.ls","at.md","de.md","jp.md","to.md","indie.porn","vxl.sh","ch.tc","me.tc","we.tc","nyan.to","at.vg","blog.vu","dev.vu","me.vu","v.ua","*.vultrobjects.com","wafflecell.com","*.webhare.dev","reserve-online.net","reserve-online.com","bookonline.app","hotelwithflight.com","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","pages.wiardweb.com","wmflabs.org","toolforge.org","wmcloud.org","panel.gg","daemon.panel.gg","messwithdns.com","woltlab-demo.com","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","affinitylottery.org.uk","raffleentry.org.uk","weeklylottery.org.uk","wpenginepowered.com","js.wpenginepowered.com","wixsite.com","editorx.io","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","ynh.fr","nohost.me","noho.st","za.net","za.org","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]}}),LLe=xLe({"node_modules/psl/index.js"(e){var a=NLe(),n={};n.rules=PLe().map((function(e){return{rule:e,suffix:e.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===e.charAt(0),exception:"!"===e.charAt(0)}})),n.endsWith=function(e,a){return-1!==e.indexOf(a,e.length-a.length)},n.findRule=function(e){var t=a.toASCII(e);return n.rules.reduce((function(e,i){return-1===i.punySuffix&&(i.punySuffix=a.toASCII(i.suffix)),n.endsWith(t,"."+i.punySuffix)||t===i.punySuffix?i:e}),null)},e.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},n.validate=function(e){var n=a.toASCII(e);if(n.length<1)return"DOMAIN_TOO_SHORT";if(n.length>255)return"DOMAIN_TOO_LONG";for(var t,i=n.split("."),r=0;r<i.length;++r){if(!(t=i[r]).length)return"LABEL_TOO_SHORT";if(t.length>63)return"LABEL_TOO_LONG";if("-"===t.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===t.charAt(t.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(t))return"LABEL_INVALID_CHARS"}},e.parse=function(t){if("string"!=typeof t)throw new TypeError("Domain name must be a string.");var i=t.slice(0).toLowerCase();"."===i.charAt(i.length-1)&&(i=i.slice(0,i.length-1));var r=n.validate(i);if(r)return{input:t,error:{message:e.errorCodes[r],code:r}};var o={input:t,tld:null,sld:null,domain:null,subdomain:null,listed:!1},s=i.split(".");if("local"===s[s.length-1])return o;var l=function(){return/xn--/.test(i)?(o.domain&&(o.domain=a.toASCII(o.domain)),o.subdomain&&(o.subdomain=a.toASCII(o.subdomain)),o):o},u=n.findRule(i);if(!u)return s.length<2?o:(o.tld=s.pop(),o.sld=s.pop(),o.domain=[o.sld,o.tld].join("."),s.length&&(o.subdomain=s.pop()),l());o.listed=!0;var c=u.suffix.split("."),d=s.slice(0,s.length-c.length);return u.exception&&d.push(c.shift()),o.tld=c.join("."),d.length?(u.wildcard&&(c.unshift(d.pop()),o.tld=c.join(".")),d.length?(o.sld=d.pop(),o.domain=[o.sld,o.tld].join("."),d.length&&(o.subdomain=d.join(".")),l()):l()):l()},e.get=function(a){return a&&e.parse(a).domain||null},e.isValid=function(a){var n=e.parse(a);return Boolean(n.domain&&n.listed)}}}),BLe=xLe({"node_modules/tough-cookie/lib/pubsuffix-psl.js"(e){var a=LLe(),n=["local","example","invalid","localhost","test"],t=["localhost","invalid"];e.getPublicSuffix=function(e,i={}){const r=e.split("."),o=r[r.length-1],s=!!i.ignoreError;if(!!i.allowSpecialUseDomain&&n.includes(o)){if(r.length>1){return`${r[r.length-2]}.${o}`}if(t.includes(o))return`${o}`}if(!s&&n.includes(o))throw new Error(`Cookie has domain set to the public suffix "${o}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain:true, rejectPublicSuffixes: false}.`);return a.get(e)}}}),RLe=xLe({"node_modules/tough-cookie/lib/store.js"(e){e.Store=class{constructor(){this.synchronous=!1}findCookie(e,a,n,t){throw new Error("findCookie is not implemented")}findCookies(e,a,n,t){throw new Error("findCookies is not implemented")}putCookie(e,a){throw new Error("putCookie is not implemented")}updateCookie(e,a,n){throw new Error("updateCookie is not implemented")}removeCookie(e,a,n,t){throw new Error("removeCookie is not implemented")}removeCookies(e,a,n){throw new Error("removeCookies is not implemented")}removeAllCookies(e){throw new Error("removeAllCookies is not implemented")}getAllCookies(e){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}}}}),DLe=xLe({"node_modules/universalify/index.js"(e){e.fromCallback=function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((a,n)=>{arguments[arguments.length]=(e,t)=>{if(e)return n(e);a(t)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},e.fromPromise=function(e){return Object.defineProperty((function(){const a=arguments[arguments.length-1];if("function"!=typeof a)return e.apply(this,arguments);delete arguments[arguments.length-1],arguments.length--,e.apply(this,arguments).then((e=>a(null,e)),a)}),"name",{value:e.name})}}}),zLe=xLe({"node_modules/tough-cookie/lib/permuteDomain.js"(e){var a=BLe();e.permuteDomain=function(e,n){const t=a.getPublicSuffix(e,{allowSpecialUseDomain:n});if(!t)return null;if(t==e)return[e];"."==e.slice(-1)&&(e=e.slice(0,-1));const i=e.slice(0,-(t.length+1)).split(".").reverse();let r=t;const o=[r];for(;i.length;)r=`${i.shift()}.${r}`,o.push(r);return o}}}),OLe=xLe({"node_modules/tough-cookie/lib/pathMatch.js"(e){e.pathMatch=function(e,a){if(a===e)return!0;if(0===e.indexOf(a)){if("/"===a.substr(-1))return!0;if("/"===e.substr(a.length,1))return!0}return!1}}}),KLe=xLe({"node_modules/tough-cookie/lib/utilHelper.js"(e){function a(){try{return TLe("util")}catch(XIe){return null}}function n(){return Symbol.for("nodejs.util.inspect.custom")}e.getUtilInspect=function(e,n={}){const t=(n.requireUtil||a)();return function(a,n,i){return t?t.inspect(a,n,i):e(a)}},e.getCustomInspectSymbol=function(e={}){return(e.lookupCustomInspectSymbol||n)()||function(e){const n=(e.requireUtil||a)();return n?n.inspect.custom:null}(e)}}}),ILe=xLe({"node_modules/tough-cookie/lib/memstore.js"(e){var{fromCallback:a}=DLe(),n=RLe().Store,t=zLe().permuteDomain,i=OLe().pathMatch,{getCustomInspectSymbol:r,getUtilInspect:o}=KLe(),s=class extends n{constructor(){super(),this.synchronous=!0,this.idx=Object.create(null);const e=r();e&&(this[e]=this.inspect)}inspect(){return`{ idx: ${{inspect:o(l)}.inspect(this.idx,!1,2)} }`}findCookie(e,a,n,t){return t(null,this.idx[e]&&this.idx[e][a]?this.idx[e][a][n]||null:void 0)}findCookies(e,a,n,r){const o=[];if("function"==typeof n&&(r=n,n=!0),!e)return r(null,[]);let s;s=a?function(e){Object.keys(e).forEach((n=>{if(i(a,n)){const a=e[n];for(const e in a)o.push(a[e])}}))}:function(e){for(const a in e){const n=e[a];for(const e in n)o.push(n[e])}};const l=t(e,n)||[e],u=this.idx;l.forEach((e=>{const a=u[e];a&&s(a)})),r(null,o)}putCookie(e,a){this.idx[e.domain]||(this.idx[e.domain]=Object.create(null)),this.idx[e.domain][e.path]||(this.idx[e.domain][e.path]=Object.create(null)),this.idx[e.domain][e.path][e.key]=e,a(null)}updateCookie(e,a,n){this.putCookie(a,n)}removeCookie(e,a,n,t){this.idx[e]&&this.idx[e][a]&&this.idx[e][a][n]&&delete this.idx[e][a][n],t(null)}removeCookies(e,a,n){return this.idx[e]&&(a?delete this.idx[e][a]:delete this.idx[e]),n(null)}removeAllCookies(e){return this.idx=Object.create(null),e(null)}getAllCookies(e){const a=[],n=this.idx;Object.keys(n).forEach((e=>{Object.keys(n[e]).forEach((t=>{Object.keys(n[e][t]).forEach((i=>{null!==i&&a.push(n[e][t][i])}))}))})),a.sort(((e,a)=>(e.creationIndex||0)-(a.creationIndex||0))),e(null,a)}};function l(e){const a=Object.keys(e);if(0===a.length)return"[Object: null prototype] {}";let n="[Object: null prototype] {\n";return Object.keys(e).forEach(((t,i)=>{n+=function(e,a){const n=" ";let t=`${n}'${e}': [Object: null prototype] {\n`;return Object.keys(a).forEach(((e,n,i)=>{t+=function(e,a){const n=" ";let t=`${n}'${e}': [Object: null prototype] {\n`;return Object.keys(a).forEach(((e,n,i)=>{t+=` ${e}: ${a[e].inspect()}`,n<i.length-1&&(t+=","),t+="\n"})),t+=`${n}}`,t}(e,a[e]),n<i.length-1&&(t+=","),t+="\n"})),t+=`${n}}`,t}(t,e[t]),i<a.length-1&&(n+=","),n+="\n"})),n+="}",n}["findCookie","findCookies","putCookie","updateCookie","removeCookie","removeCookies","removeAllCookies","getAllCookies"].forEach((e=>{s.prototype[e]=a(s.prototype[e])})),e.MemoryCookieStore=s,e.inspectFallback=l}}),HLe=xLe({"node_modules/tough-cookie/lib/validators.js"(e){var a=Object.prototype.toString;function n(e){return"function"==typeof e}function t(e){return i(e)&&""!==e}function i(e){return"string"==typeof e||e instanceof String}function r(e){return"[object Object]"===a.call(e)}function o(e,a){try{return e instanceof a}catch(n){return!1}}var s=class extends Error{constructor(...e){super(...e)}};e.ParameterError=s,e.isFunction=n,e.isNonEmptyString=t,e.isDate=function(e){return o(e,Date)&&function(e){return"number"==typeof e&&e%1==0}(e.getTime())},e.isEmptyString=function(e){return""===e||e instanceof String&&""===e.toString()},e.isString=i,e.isObject=r,e.isUrlStringOrObject=function(e){return t(e)||r(e)&&"hostname"in e&&"pathname"in e&&"protocol"in e||o(e,URL)},e.validate=function(e,a,t){if(n(a)||(t=a,a=null),r(t)||(t={Error:"Failed Check"}),!e){if(!a)throw new s(t);a(new s(t))}}}}),FLe=xLe({"node_modules/tough-cookie/lib/version.js"(e,a){a.exports="4.1.4"}}),GLe=xLe({"node_modules/tough-cookie/lib/cookie.js"(e){var a=NLe(),n=_Le(),t=BLe(),i=RLe().Store,r=ILe().MemoryCookieStore,o=OLe().pathMatch,s=HLe(),l=FLe(),{fromCallback:u}=DLe(),{getCustomInspectSymbol:c}=KLe(),d=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,m=/[\x00-\x1F]/,h=["\n","\r","\0"],p=/[\x20-\x3A\x3C-\x7E]+/,g=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,f={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},v=2147483647e3,y='Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"';function k(e){s.validate(s.isNonEmptyString(e),e);const a=String(e).toLowerCase();return"none"===a||"lax"===a||"strict"===a?a:null}var b=Object.freeze({SILENT:"silent",STRICT:"strict",DISABLED:"unsafe-disabled"}),S=/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/,w="\n\\[?(?:\n(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|\n(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|\n(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|\n(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|\n(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))\n)(?:%[0-9a-zA-Z]{1,})?\\]?\n".replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),A=new RegExp(`^${w}$`);function C(e,a,n,t){let i=0;for(;i<e.length;){const a=e.charCodeAt(i);if(a<=47||a>=58)break;i++}return i<a||i>n?null:t||i==e.length?parseInt(e.substr(0,i),10):null}function M(e){const a=e.split(":"),n=[0,0,0];if(3!==a.length)return null;for(let t=0;t<3;t++){const e=C(a[t],1,2,2==t);if(null===e)return null;n[t]=e}return n}function T(e){e=String(e).substr(0,3).toLowerCase();const a=f[e];return a>=0?a:null}function x(e){if(!e)return;const a=e.split(g);if(!a)return;let n=null,t=null,i=null,r=null,o=null,s=null;for(let l=0;l<a.length;l++){const e=a[l].trim();if(!e.length)continue;let u;null===i&&(u=M(e),u)?(n=u[0],t=u[1],i=u[2]):null!==r||(u=C(e,1,2,!0),null===u)?null!==o||(u=T(e),null===u)?null===s&&(u=C(e,2,4,!0),null!==u&&(s=u,s>=70&&s<=99?s+=1900:s>=0&&s<=69&&(s+=2e3))):o=u:r=u}return null===r||null===o||null===s||null===i||r<1||r>31||s<1601||n>23||t>59||i>59?void 0:new Date(Date.UTC(s,o,r,n,t,i))}function N(e){return s.validate(s.isDate(e),e),e.toUTCString()}function E(e){return null==e?null:(e=e.trim().replace(/^\./,""),A.test(e)&&(e=e.replace("[","").replace("]","")),a&&/[^\u0001-\u007f]/.test(e)&&(e=a.toASCII(e)),e.toLowerCase())}function j(e,a,n){if(null==e||null==a)return null;if(!1!==n&&(e=E(e),a=E(a)),e==a)return!0;const t=e.lastIndexOf(a);return!(t<=0)&&(e.length===a.length+t&&("."===e.substr(t-1,1)&&!S.test(e)))}function _(e){if(!e||"/"!==e.substr(0,1))return"/";if("/"===e)return e;const a=e.lastIndexOf("/");return 0===a?"/":e.slice(0,a)}function P(e,a){e=function(e){if(s.isEmptyString(e))return e;for(let a=0;a<h.length;a++){const n=e.indexOf(h[a]);-1!==n&&(e=e.substr(0,n))}return e}(e),s.validate(s.isString(e),e);let n,t,i=e.indexOf("=");if(a)0===i&&(i=(e=e.substr(1)).indexOf("="));else if(i<=0)return;if(i<=0?(n="",t=e.trim()):(n=e.substr(0,i).trim(),t=e.substr(i+1).trim()),m.test(n)||m.test(t))return;const r=new K;return r.key=n,r.value=t,r}function L(e,a){if(a&&"object"==typeof a||(a={}),s.isEmptyString(e)||!s.isString(e))return null;const n=(e=e.trim()).indexOf(";"),t=P(-1===n?e:e.substr(0,n),!!a.loose);if(!t)return;if(-1===n)return t;const i=e.slice(n+1).trim();if(0===i.length)return t;const r=i.split(";");for(;r.length;){const e=r.shift().trim();if(0===e.length)continue;const a=e.indexOf("=");let n,i;switch(-1===a?(n=e,i=null):(n=e.substr(0,a),i=e.substr(a+1)),n=n.trim().toLowerCase(),i&&(i=i.trim()),n){case"expires":if(i){const e=x(i);e&&(t.expires=e)}break;case"max-age":if(i&&/^-?[0-9]+$/.test(i)){const e=parseInt(i,10);t.setMaxAge(e)}break;case"domain":if(i){const e=i.trim().replace(/^\./,"");e&&(t.domain=e.toLowerCase())}break;case"path":t.path=i&&"/"===i[0]?i:null;break;case"secure":t.secure=!0;break;case"httponly":t.httpOnly=!0;break;case"samesite":switch(i?i.toLowerCase():""){case"strict":t.sameSite="strict";break;case"lax":t.sameSite="lax";break;case"none":t.sameSite="none";break;default:t.sameSite=void 0}break;default:t.extensions=t.extensions||[],t.extensions.push(e)}}return t}function B(e){let a;try{a=JSON.parse(e)}catch(XIe){return XIe}return a}function R(e){if(!e||s.isEmptyString(e))return null;let a;if("string"==typeof e){if(a=B(e),a instanceof Error)return null}else a=e;const n=new K;for(let t=0;t<K.serializableProperties.length;t++){const e=K.serializableProperties[t];void 0!==a[e]&&a[e]!==O[e]&&(n[e]="expires"===e||"creation"===e||"lastAccessed"===e?null===a[e]?null:"Infinity"==a[e]?"Infinity":new Date(a[e]):a[e])}return n}function D(e,a){s.validate(s.isObject(e),e),s.validate(s.isObject(a),a);let n=0;if(n=(a.path?a.path.length:0)-(e.path?e.path.length:0),0!==n)return n;return n=(e.creation?e.creation.getTime():v)-(a.creation?a.creation.getTime():v),0!==n||(n=e.creationIndex-a.creationIndex),n}function z(e){if(e instanceof Object)return e;try{e=decodeURI(e)}catch(YIe){}return n(e)}var O={key:"",value:"",expires:"Infinity",maxAge:null,domain:null,path:null,secure:!1,httpOnly:!1,extensions:null,hostOnly:null,pathIsDefault:null,creation:null,lastAccessed:null,sameSite:void 0},K=class e{constructor(a={}){const n=c();n&&(this[n]=this.inspect),Object.assign(this,O,a),this.creation=this.creation||new Date,Object.defineProperty(this,"creationIndex",{configurable:!1,enumerable:!1,writable:!0,value:++e.cookiesCreated})}inspect(){const e=Date.now(),a=null!=this.hostOnly?this.hostOnly:"?",n=this.creation?e-this.creation.getTime()+"ms":"?",t=this.lastAccessed?e-this.lastAccessed.getTime()+"ms":"?";return`Cookie="${this.toString()}; hostOnly=${a}; aAge=${t}; cAge=${n}"`}toJSON(){const a={};for(const n of e.serializableProperties)this[n]!==O[n]&&("expires"===n||"creation"===n||"lastAccessed"===n?a[n]=null===this[n]?null:"Infinity"==this[n]?"Infinity":this[n].toISOString():"maxAge"===n?null!==this[n]&&(a[n]=this[n]==1/0||this[n]==-1/0?this[n].toString():this[n]):this[n]!==O[n]&&(a[n]=this[n]));return a}clone(){return R(this.toJSON())}validate(){if(!d.test(this.value))return!1;if(!(this.expires==1/0||this.expires instanceof Date||x(this.expires)))return!1;if(null!=this.maxAge&&this.maxAge<=0)return!1;if(null!=this.path&&!p.test(this.path))return!1;const e=this.cdomain();if(e){if(e.match(/\.$/))return!1;if(null==t.getPublicSuffix(e))return!1}return!0}setExpires(e){this.expires=e instanceof Date?e:x(e)||"Infinity"}setMaxAge(e){this.maxAge=e===1/0||e===-1/0?e.toString():e}cookieString(){let e=this.value;return null==e&&(e=""),""===this.key?e:`${this.key}=${e}`}toString(){let a=this.cookieString();if(this.expires!=1/0&&(this.expires instanceof Date?a+=`; Expires=${N(this.expires)}`:a+=`; Expires=${this.expires}`),null!=this.maxAge&&this.maxAge!=1/0&&(a+=`; Max-Age=${this.maxAge}`),this.domain&&!this.hostOnly&&(a+=`; Domain=${this.domain}`),this.path&&(a+=`; Path=${this.path}`),this.secure&&(a+="; Secure"),this.httpOnly&&(a+="; HttpOnly"),this.sameSite&&"none"!==this.sameSite){const n=e.sameSiteCanonical[this.sameSite.toLowerCase()];a+=`; SameSite=${n||this.sameSite}`}return this.extensions&&this.extensions.forEach((e=>{a+=`; ${e}`})),a}TTL(e){if(null!=this.maxAge)return this.maxAge<=0?0:1e3*this.maxAge;let a=this.expires;return a!=1/0?(a instanceof Date||(a=x(a)||1/0),a==1/0?1/0:a.getTime()-(e||Date.now())):1/0}expiryTime(e){if(null!=this.maxAge){const a=this.maxAge<=0?-1/0:1e3*this.maxAge;return(e||this.creation||new Date).getTime()+a}return this.expires==1/0?1/0:this.expires.getTime()}expiryDate(e){const a=this.expiryTime(e);return a==1/0?new Date(v):a==-1/0?new Date(0):new Date(a)}isPersistent(){return null!=this.maxAge||this.expires!=1/0}canonicalizedDomain(){return null==this.domain?null:E(this.domain)}cdomain(){return this.canonicalizedDomain()}};function I(e){if(null!=e){const a=e.toLowerCase();switch(a){case b.STRICT:case b.SILENT:case b.DISABLED:return a}}return b.SILENT}K.cookiesCreated=0,K.parse=L,K.fromJSON=R,K.serializableProperties=Object.keys(O),K.sameSiteLevel={strict:3,lax:2,none:1},K.sameSiteCanonical={strict:"Strict",lax:"Lax"};var H=class e{constructor(e,a={rejectPublicSuffixes:!0}){"boolean"==typeof a&&(a={rejectPublicSuffixes:a}),s.validate(s.isObject(a),a),this.rejectPublicSuffixes=a.rejectPublicSuffixes,this.enableLooseMode=!!a.looseMode,this.allowSpecialUseDomain="boolean"!=typeof a.allowSpecialUseDomain||a.allowSpecialUseDomain,this.store=e||new r,this.prefixSecurity=I(a.prefixSecurity),this._cloneSync=F("clone"),this._importCookiesSync=F("_importCookies"),this.getCookiesSync=F("getCookies"),this.getCookieStringSync=F("getCookieString"),this.getSetCookieStringsSync=F("getSetCookieStrings"),this.removeAllCookiesSync=F("removeAllCookies"),this.setCookieSync=F("setCookie"),this.serializeSync=F("serialize")}setCookie(e,a,n,i){let r;if(s.validate(s.isUrlStringOrObject(a),i,n),s.isFunction(a))return(i=a)(new Error("No URL was specified"));const o=z(a);if(s.isFunction(n)&&(i=n,n={}),s.validate(s.isFunction(i),i),!s.isNonEmptyString(e)&&!s.isObject(e)&&e instanceof String&&0==e.length)return i(null);const l=E(o.hostname),u=n.loose||this.enableLooseMode;let c=null;if(n.sameSiteContext&&(c=k(n.sameSiteContext),!c))return i(new Error(y));if("string"==typeof e||e instanceof String){if(!(e=K.parse(e,{loose:u})))return r=new Error("Cookie failed to parse"),i(n.ignoreError?null:r)}else if(!(e instanceof K))return r=new Error("First argument to setCookie must be a Cookie object or string"),i(n.ignoreError?null:r);const d=n.now||new Date;if(this.rejectPublicSuffixes&&e.domain){if(null==t.getPublicSuffix(e.cdomain(),{allowSpecialUseDomain:this.allowSpecialUseDomain,ignoreError:n.ignoreError})&&!A.test(e.domain))return r=new Error("Cookie has domain set to a public suffix"),i(n.ignoreError?null:r)}if(e.domain){if(!j(l,e.cdomain(),!1))return r=new Error(`Cookie not in this host's domain. Cookie:${e.cdomain()} Request:${l}`),i(n.ignoreError?null:r);null==e.hostOnly&&(e.hostOnly=!1)}else e.hostOnly=!0,e.domain=l;if(e.path&&"/"===e.path[0]||(e.path=_(o.pathname),e.pathIsDefault=!0),!1===n.http&&e.httpOnly)return r=new Error("Cookie is HttpOnly and this isn't an HTTP API"),i(n.ignoreError?null:r);if("none"!==e.sameSite&&void 0!==e.sameSite&&c&&"none"===c)return r=new Error("Cookie is SameSite but this is a cross-origin request"),i(n.ignoreError?null:r);const m=this.prefixSecurity===b.SILENT;if(!(this.prefixSecurity===b.DISABLED)){let a,t=!1;if(!function(e){return s.validate(s.isObject(e),e),!e.key.startsWith("__Secure-")||e.secure}(e)?(t=!0,a="Cookie has __Secure prefix but Secure attribute is not set"):function(e){return s.validate(s.isObject(e)),!e.key.startsWith("__Host-")||e.secure&&e.hostOnly&&null!=e.path&&"/"===e.path}(e)||(t=!0,a="Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'"),t)return i(n.ignoreError||m?null:new Error(a))}const h=this.store;h.updateCookie||(h.updateCookie=function(e,a,n){this.putCookie(a,n)}),h.findCookie(e.domain,e.path,e.key,(function(a,t){if(a)return i(a);const r=function(a){if(a)return i(a);i(null,e)};if(t){if(!1===n.http&&t.httpOnly)return a=new Error("old Cookie is HttpOnly and this isn't an HTTP API"),i(n.ignoreError?null:a);e.creation=t.creation,e.creationIndex=t.creationIndex,e.lastAccessed=d,h.updateCookie(t,e,r)}else e.creation=e.lastAccessed=d,h.putCookie(e,r)}))}getCookies(e,a,n){s.validate(s.isUrlStringOrObject(e),n,e);const t=z(e);s.isFunction(a)&&(n=a,a={}),s.validate(s.isObject(a),n,a),s.validate(s.isFunction(n),n);const i=E(t.hostname),r=t.pathname||"/";let l=a.secure;null!=l||!t.protocol||"https:"!=t.protocol&&"wss:"!=t.protocol||(l=!0);let u=0;if(a.sameSiteContext){const e=k(a.sameSiteContext);if(u=K.sameSiteLevel[e],!u)return n(new Error(y))}let c=a.http;null==c&&(c=!0);const d=a.now||Date.now(),m=!1!==a.expire,h=!!a.allPaths,p=this.store;function g(e){if(e.hostOnly){if(e.domain!=i)return!1}else if(!j(i,e.domain,!1))return!1;if(!h&&!o(r,e.path))return!1;if(e.secure&&!l)return!1;if(e.httpOnly&&!c)return!1;if(u){if(K.sameSiteLevel[e.sameSite||"none"]>u)return!1}return!(m&&e.expiryTime()<=d)||(p.removeCookie(e.domain,e.path,e.key,(()=>{})),!1)}p.findCookies(i,h?null:r,this.allowSpecialUseDomain,((e,t)=>{if(e)return n(e);t=t.filter(g),!1!==a.sort&&(t=t.sort(D));const i=new Date;for(const a of t)a.lastAccessed=i;n(null,t)}))}getCookieString(...e){const a=e.pop();s.validate(s.isFunction(a),a);e.push((function(e,n){e?a(e):a(null,n.sort(D).map((e=>e.cookieString())).join("; "))})),this.getCookies.apply(this,e)}getSetCookieStrings(...e){const a=e.pop();s.validate(s.isFunction(a),a);e.push((function(e,n){e?a(e):a(null,n.map((e=>e.toString())))})),this.getCookies.apply(this,e)}serialize(e){s.validate(s.isFunction(e),e);let a=this.store.constructor.name;s.isObject(a)&&(a=null);const n={version:`tough-cookie@${l}`,storeType:a,rejectPublicSuffixes:!!this.rejectPublicSuffixes,enableLooseMode:!!this.enableLooseMode,allowSpecialUseDomain:!!this.allowSpecialUseDomain,prefixSecurity:I(this.prefixSecurity),cookies:[]};if(!this.store.getAllCookies||"function"!=typeof this.store.getAllCookies)return e(new Error("store does not support getAllCookies and cannot be serialized"));this.store.getAllCookies(((a,t)=>a?e(a):(n.cookies=t.map((e=>(delete(e=e instanceof K?e.toJSON():e).creationIndex,e))),e(null,n))))}toJSON(){return this.serializeSync()}_importCookies(e,a){let n=e.cookies;if(!n||!Array.isArray(n))return a(new Error("serialized jar has no cookies array"));n=n.slice();const t=e=>{if(e)return a(e);if(!n.length)return a(e,this);let i;try{i=R(n.shift())}catch(XIe){return a(XIe)}if(null===i)return t(null);this.store.putCookie(i,t)};t()}clone(a,n){1===arguments.length&&(n=a,a=null),this.serialize(((t,i)=>{if(t)return n(t);e.deserialize(i,a,n)}))}cloneSync(e){if(0===arguments.length)return this._cloneSync();if(!e.synchronous)throw new Error("CookieJar clone destination store is not synchronous; use async API instead.");return this._cloneSync(e)}removeAllCookies(e){s.validate(s.isFunction(e),e);const a=this.store;if("function"==typeof a.removeAllCookies&&a.removeAllCookies!==i.prototype.removeAllCookies)return a.removeAllCookies(e);a.getAllCookies(((n,t)=>{if(n)return e(n);if(0===t.length)return e(null);let i=0;const r=[];function o(a){if(a&&r.push(a),i++,i===t.length)return e(r.length?r[0]:null)}t.forEach((e=>{a.removeCookie(e.domain,e.path,e.key,o)}))}))}static deserialize(a,n,t){let i;if(3!==arguments.length&&(t=n,n=null),s.validate(s.isFunction(t),t),"string"==typeof a){if(i=B(a),i instanceof Error)return t(i)}else i=a;const r=new e(n,{rejectPublicSuffixes:i.rejectPublicSuffixes,looseMode:i.enableLooseMode,allowSpecialUseDomain:i.allowSpecialUseDomain,prefixSecurity:i.prefixSecurity});r._importCookies(i,(e=>{if(e)return t(e);t(null,r)}))}static deserializeSync(a,n){const t="string"==typeof a?JSON.parse(a):a,i=new e(n,{rejectPublicSuffixes:t.rejectPublicSuffixes,looseMode:t.enableLooseMode});if(!i.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");return i._importCookiesSync(t),i}};function F(e){return function(...a){if(!this.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");let n,t;if(this[e](...a,((e,a)=>{n=e,t=a})),n)throw n;return t}}H.fromJSON=H.deserializeSync,["_importCookies","clone","getCookies","getCookieString","getSetCookieStrings","removeAllCookies","serialize","setCookie"].forEach((e=>{H.prototype[e]=u(H.prototype[e])})),H.deserialize=u(H.deserialize),e.version=l,e.CookieJar=H,e.Cookie=K,e.Store=i,e.MemoryCookieStore=r,e.parseDate=x,e.formatDate=N,e.parse=L,e.fromJSON=R,e.domainMatch=j,e.defaultPath=_,e.pathMatch=o,e.getPublicSuffix=t.getPublicSuffix,e.cookieCompare=D,e.permuteDomain=zLe().permuteDomain,e.permutePath=function(e){if(s.validate(s.isString(e)),"/"===e)return["/"];const a=[e];for(;e.length>1;){const n=e.lastIndexOf("/");if(0===n)break;e=e.substr(0,n),a.push(e)}return a.push("/"),a},e.canonicalDomain=E,e.PrefixSecurityEnum=b,e.ParameterError=s.ParameterError}}),VLe=(yLe=GLe(),kLe=null!=yLe?bLe(CLe(yLe)):{},((e,a,n,t)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let i of ALe(a))MLe.call(e,i)||i===n||SLe(e,i,{get:()=>a[i],enumerable:!(t=wLe(a,i))||t.enumerable});return e})(SLe(kLe,"default",{value:yLe,enumerable:!0}),yLe)).default;
86
+ */uxe.exports="production"===process.env.NODE_ENV?function(){if(lxe)return cxe;lxe=1;var e="function"==typeof Object.is?Object.is:function(e,a){return e===a&&(0!==e||1/e==1/a)||e!=e&&a!=a},a=n.useState,t=n.useEffect,i=n.useLayoutEffect,r=n.useDebugValue;function o(a){var n=a.getSnapshot;a=a.value;try{var t=n();return!e(a,t)}catch(i){return!0}}var s="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,a){return a()}:function(e,n){var s=n(),l=a({inst:{value:s,getSnapshot:n}}),u=l[0].inst,c=l[1];return i((function(){u.value=s,u.getSnapshot=n,o(u)&&c({inst:u})}),[e,s,n]),t((function(){return o(u)&&c({inst:u}),e((function(){o(u)&&c({inst:u})}))}),[e]),r(s),s};return cxe.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:s,cxe}():(dxe||(dxe=1,"production"!==process.env.NODE_ENV&&function(){function e(e){var a=e.getSnapshot;e=e.value;try{var n=a();return!t(e,n)}catch(i){return!0}}"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=n,t="function"==typeof Object.is?Object.is:function(e,a){return e===a&&(0!==e||1/e==1/a)||e!=e&&a!=a},i=a.useState,r=a.useEffect,o=a.useLayoutEffect,s=a.useDebugValue,l=!1,u=!1,c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,a){return a()}:function(n,c){l||void 0===a.startTransition||(l=!0);var d=c();if(!u){var m=c();t(d,m)||(u=!0)}var h=(m=i({inst:{value:d,getSnapshot:c}}))[0].inst,p=m[1];return o((function(){h.value=d,h.getSnapshot=c,e(h)&&p({inst:h})}),[n,d,c]),r((function(){return e(h)&&p({inst:h}),n((function(){e(h)&&p({inst:h})}))}),[n]),s(d),d};mxe.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:c,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),mxe);var hxe=uxe.exports,pxe='[cmdk-group=""]',gxe='[cmdk-group-items=""]',fxe='[cmdk-item=""]',vxe=`${fxe}:not([aria-disabled="true"])`,yxe="cmdk-item-select",kxe="data-value",bxe=(e,a,n)=>sxe(e,a,n),Sxe=r.createContext(void 0),wxe=()=>r.useContext(Sxe),Axe=r.createContext(void 0),Cxe=()=>r.useContext(Axe),Mxe=r.createContext(void 0),Txe=r.forwardRef(((e,a)=>{let n=Ixe((()=>{var a,n;return{search:"",value:null!=(n=null!=(a=e.value)?a:e.defaultValue)?n:"",filtered:{count:0,items:new Map,groups:new Set}}})),t=Ixe((()=>new Set)),i=Ixe((()=>new Map)),o=Ixe((()=>new Map)),s=Ixe((()=>new Set)),l=Oxe(e),{label:u,children:c,value:d,onValueChange:m,filter:h,shouldFilter:p,loop:g,disablePointerSelection:f=!1,vimBindings:v=!0,...y}=e,k=_M(),b=_M(),S=_M(),w=r.useRef(null),A=Vxe();Kxe((()=>{if(void 0!==d){let e=d.trim();n.current.value=e,C.emit()}}),[d]),Kxe((()=>{A(6,j)}),[]);let C=r.useMemo((()=>({subscribe:e=>(s.current.add(e),()=>s.current.delete(e)),snapshot:()=>n.current,setState:(e,a,t)=>{var i,r,o;if(!Object.is(n.current[e],a)){if(n.current[e]=a,"search"===e)E(),x(),A(1,N);else if("value"===e&&(t||A(5,j),void 0!==(null==(i=l.current)?void 0:i.value))){return void(null==(o=(r=l.current).onValueChange)||o.call(r,null!=a?a:""))}C.emit()}},emit:()=>{s.current.forEach((e=>e()))}})),[]),M=r.useMemo((()=>({value:(e,a,t)=>{var i;a!==(null==(i=o.current.get(e))?void 0:i.value)&&(o.current.set(e,{value:a,keywords:t}),n.current.filtered.items.set(e,T(a,t)),A(2,(()=>{x(),C.emit()})))},item:(e,a)=>(t.current.add(e),a&&(i.current.has(a)?i.current.get(a).add(e):i.current.set(a,new Set([e]))),A(3,(()=>{E(),x(),n.current.value||N(),C.emit()})),()=>{o.current.delete(e),t.current.delete(e),n.current.filtered.items.delete(e);let a=_();A(4,(()=>{E(),(null==a?void 0:a.getAttribute("id"))===e&&N(),C.emit()}))}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{o.current.delete(e),i.current.delete(e)}),filter:()=>l.current.shouldFilter,label:u||e["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:k,inputId:S,labelId:b,listInnerRef:w})),[]);function T(e,a){var t,i;let r=null!=(i=null==(t=l.current)?void 0:t.filter)?i:bxe;return e?r(e,n.current.search,a):0}function x(){if(!n.current.search||!1===l.current.shouldFilter)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach((n=>{let t=i.current.get(n),r=0;t.forEach((a=>{let n=e.get(a);r=Math.max(n,r)})),a.push([n,r])}));let t=w.current;P().sort(((a,n)=>{var t,i;let r=a.getAttribute("id"),o=n.getAttribute("id");return(null!=(t=e.get(o))?t:0)-(null!=(i=e.get(r))?i:0)})).forEach((e=>{let a=e.closest(gxe);a?a.appendChild(e.parentElement===a?e:e.closest(`${gxe} > *`)):t.appendChild(e.parentElement===t?e:e.closest(`${gxe} > *`))})),a.sort(((e,a)=>a[1]-e[1])).forEach((e=>{var a;let n=null==(a=w.current)?void 0:a.querySelector(`${pxe}[${kxe}="${encodeURIComponent(e[0])}"]`);null==n||n.parentElement.appendChild(n)}))}function N(){let e=P().find((e=>"true"!==e.getAttribute("aria-disabled"))),a=null==e?void 0:e.getAttribute(kxe);C.setState("value",a||void 0)}function E(){var e,a,r,s;if(!n.current.search||!1===l.current.shouldFilter)return void(n.current.filtered.count=t.current.size);n.current.filtered.groups=new Set;let u=0;for(let i of t.current){let t=T(null!=(a=null==(e=o.current.get(i))?void 0:e.value)?a:"",null!=(s=null==(r=o.current.get(i))?void 0:r.keywords)?s:[]);n.current.filtered.items.set(i,t),t>0&&u++}for(let[t,o]of i.current)for(let e of o)if(n.current.filtered.items.get(e)>0){n.current.filtered.groups.add(t);break}n.current.filtered.count=u}function j(){var e,a,n;let t=_();t&&((null==(e=t.parentElement)?void 0:e.firstChild)===t&&(null==(n=null==(a=t.closest(pxe))?void 0:a.querySelector('[cmdk-group-heading=""]'))||n.scrollIntoView({block:"nearest"})),t.scrollIntoView({block:"nearest"}))}function _(){var e;return null==(e=w.current)?void 0:e.querySelector(`${fxe}[aria-selected="true"]`)}function P(){var e;return Array.from((null==(e=w.current)?void 0:e.querySelectorAll(vxe))||[])}function L(e){let a=P()[e];a&&C.setState("value",a.getAttribute(kxe))}function B(e){var a;let n=_(),t=P(),i=t.findIndex((e=>e===n)),r=t[i+e];null!=(a=l.current)&&a.loop&&(r=i+e<0?t[t.length-1]:i+e===t.length?t[0]:t[i+e]),r&&C.setState("value",r.getAttribute(kxe))}function R(e){let a,n=_(),t=null==n?void 0:n.closest(pxe);for(;t&&!a;)t=e>0?Dxe(t,pxe):zxe(t,pxe),a=null==t?void 0:t.querySelector(vxe);a?C.setState("value",a.getAttribute(kxe)):B(e)}let D=()=>L(P().length-1),z=e=>{e.preventDefault(),e.metaKey?D():e.altKey?R(1):B(1)},O=e=>{e.preventDefault(),e.metaKey?L(0):e.altKey?R(-1):B(-1)};return r.createElement(fM.div,{ref:a,tabIndex:-1,...y,"cmdk-root":"",onKeyDown:e=>{var a;if(null==(a=y.onKeyDown)||a.call(y,e),!e.defaultPrevented)switch(e.key){case"n":case"j":v&&e.ctrlKey&&z(e);break;case"ArrowDown":z(e);break;case"p":case"k":v&&e.ctrlKey&&O(e);break;case"ArrowUp":O(e);break;case"Home":e.preventDefault(),L(0);break;case"End":e.preventDefault(),D();break;case"Enter":if(!e.nativeEvent.isComposing&&229!==e.keyCode){e.preventDefault();let a=_();if(a){let e=new Event(yxe);a.dispatchEvent(e)}}}}},r.createElement("label",{"cmdk-label":"",htmlFor:M.inputId,id:M.labelId,style:Uxe},u),Jxe(e,(e=>r.createElement(Axe.Provider,{value:C},r.createElement(Sxe.Provider,{value:M},e)))))})),xxe=r.forwardRef(((e,a)=>{var n,t;let i=_M(),o=r.useRef(null),s=r.useContext(Mxe),l=wxe(),u=Oxe(e),c=null!=(t=null==(n=u.current)?void 0:n.forceMount)?t:null==s?void 0:s.forceMount;Kxe((()=>{if(!c)return l.item(i,null==s?void 0:s.id)}),[c]);let d=Gxe(i,o,[e.value,e.children,o],e.keywords),m=Cxe(),h=Fxe((e=>e.value&&e.value===d.current)),p=Fxe((e=>!(!c&&!1!==l.filter())||(!e.search||e.filtered.items.get(i)>0)));function g(){var e,a;f(),null==(a=(e=u.current).onSelect)||a.call(e,d.current)}function f(){m.setState("value",d.current,!0)}if(r.useEffect((()=>{let a=o.current;if(a&&!e.disabled)return a.addEventListener(yxe,g),()=>a.removeEventListener(yxe,g)}),[p,e.onSelect,e.disabled]),!p)return null;let{disabled:v,value:y,onSelect:k,forceMount:b,keywords:S,...w}=e;return r.createElement(fM.div,{ref:Hxe([o,a]),...w,id:i,"cmdk-item":"",role:"option","aria-disabled":!!v,"aria-selected":!!h,"data-disabled":!!v,"data-selected":!!h,onPointerMove:v||l.getDisablePointerSelection()?void 0:f,onClick:v?void 0:g},e.children)})),Nxe=r.forwardRef(((e,a)=>{let{heading:n,children:t,forceMount:i,...o}=e,s=_M(),l=r.useRef(null),u=r.useRef(null),c=_M(),d=wxe(),m=Fxe((e=>!(!i&&!1!==d.filter())||(!e.search||e.filtered.groups.has(s))));Kxe((()=>d.group(s)),[]),Gxe(s,l,[e.value,e.heading,u]);let h=r.useMemo((()=>({id:s,forceMount:i})),[i]);return r.createElement(fM.div,{ref:Hxe([l,a]),...o,"cmdk-group":"",role:"presentation",hidden:!m||void 0},n&&r.createElement("div",{ref:u,"cmdk-group-heading":"","aria-hidden":!0,id:c},n),Jxe(e,(e=>r.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?c:void 0},r.createElement(Mxe.Provider,{value:h},e)))))})),Exe=r.forwardRef(((e,a)=>{let{alwaysRender:n,...t}=e,i=r.useRef(null),o=Fxe((e=>!e.search));return n||o?r.createElement(fM.div,{ref:Hxe([i,a]),...t,"cmdk-separator":"",role:"separator"}):null})),jxe=r.forwardRef(((e,a)=>{let{onValueChange:n,...t}=e,i=null!=e.value,o=Cxe(),s=Fxe((e=>e.search)),l=Fxe((e=>e.value)),u=wxe(),c=r.useMemo((()=>{var e;let a=null==(e=u.listInnerRef.current)?void 0:e.querySelector(`${fxe}[${kxe}="${encodeURIComponent(l)}"]`);return null==a?void 0:a.getAttribute("id")}),[]);return r.useEffect((()=>{null!=e.value&&o.setState("search",e.value)}),[e.value]),r.createElement(fM.input,{ref:a,...t,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":u.listId,"aria-labelledby":u.labelId,"aria-activedescendant":c,id:u.inputId,type:"text",value:i?e.value:s,onChange:e=>{i||o.setState("search",e.target.value),null==n||n(e.target.value)}})})),_xe=r.forwardRef(((e,a)=>{let{children:n,label:t="Suggestions",...i}=e,o=r.useRef(null),s=r.useRef(null),l=wxe();return r.useEffect((()=>{if(s.current&&o.current){let e,a=s.current,n=o.current,t=new ResizeObserver((()=>{e=requestAnimationFrame((()=>{n.style.setProperty("--cmdk-list-height",a.offsetHeight.toFixed(1)+"px")}))}));return t.observe(a),()=>{cancelAnimationFrame(e),t.unobserve(a)}}}),[]),r.createElement(fM.div,{ref:Hxe([o,a]),...i,"cmdk-list":"",role:"listbox","aria-label":t,id:l.listId},Jxe(e,(e=>r.createElement("div",{ref:Hxe([s,l.listInnerRef]),"cmdk-list-sizer":""},e))))})),Pxe=r.forwardRef(((e,a)=>{let{open:n,onOpenChange:t,overlayClassName:i,contentClassName:o,container:s,...l}=e;return r.createElement(si,{open:n,onOpenChange:t},r.createElement(ui,{container:s},r.createElement(ci,{"cmdk-overlay":"",className:i}),r.createElement(di,{"aria-label":e.label,"cmdk-dialog":"",className:o},r.createElement(Txe,{ref:a,...l}))))})),Lxe=r.forwardRef(((e,a)=>Fxe((e=>0===e.filtered.count))?r.createElement(fM.div,{ref:a,...e,"cmdk-empty":"",role:"presentation"}):null)),Bxe=r.forwardRef(((e,a)=>{let{progress:n,children:t,label:i="Loading...",...o}=e;return r.createElement(fM.div,{ref:a,...o,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Jxe(e,(e=>r.createElement("div",{"aria-hidden":!0},e))))})),Rxe=Object.assign(Txe,{List:_xe,Item:xxe,Input:jxe,Group:Nxe,Separator:Exe,Dialog:Pxe,Empty:Lxe,Loading:Bxe});function Dxe(e,a){let n=e.nextElementSibling;for(;n;){if(n.matches(a))return n;n=n.nextElementSibling}}function zxe(e,a){let n=e.previousElementSibling;for(;n;){if(n.matches(a))return n;n=n.previousElementSibling}}function Oxe(e){let a=r.useRef(e);return Kxe((()=>{a.current=e})),a}var Kxe="undefined"==typeof window?r.useEffect:r.useLayoutEffect;function Ixe(e){let a=r.useRef();return void 0===a.current&&(a.current=e()),a}function Hxe(e){return a=>{e.forEach((e=>{"function"==typeof e?e(a):null!=e&&(e.current=a)}))}}function Fxe(e){let a=Cxe(),n=()=>e(a.snapshot());return hxe.useSyncExternalStore(a.subscribe,n,n)}function Gxe(e,a,n,t=[]){let i=r.useRef(),o=wxe();return Kxe((()=>{var r;let s=(()=>{var e;for(let a of n){if("string"==typeof a)return a.trim();if("object"==typeof a&&"current"in a)return a.current?null==(e=a.current.textContent)?void 0:e.trim():i.current}})(),l=t.map((e=>e.trim()));o.value(e,s,l),null==(r=a.current)||r.setAttribute(kxe,s),i.current=s})),i}var Vxe=()=>{let[e,a]=r.useState(),n=Ixe((()=>new Map));return Kxe((()=>{n.current.forEach((e=>e())),n.current=new Map}),[e]),(e,t)=>{n.current.set(e,t),a({})}};function Jxe({asChild:e,children:a},n){return e&&r.isValidElement(a)?r.cloneElement(function(e){let a=e.type;return"function"==typeof a?a(e.props):"render"in a?a.render(e.props):e}(a),{ref:a.ref},n(a.props.children)):n(a)}var Uxe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Wxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe,{ref:t,className:Fa("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...n})));Wxe.displayName=Rxe.displayName;const qxe=r.forwardRef((({className:e,searchIcon:n,...t},i)=>a.jsxs("div",{className:"flex items-center border-b px-3",children:[n||a.jsx(le,{className:"mr-2 h-4 w-4 shrink-0 opacity-50 "}),a.jsx(Rxe.Input,{ref:i,className:Fa("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...t})]})));qxe.displayName=Rxe.Input.displayName;const Zxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.List,{ref:t,className:Fa("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...n})));Zxe.displayName=Rxe.List.displayName;const $xe=r.forwardRef(((e,n)=>a.jsx(Rxe.Empty,{ref:n,className:"py-6 text-center text-sm",...e})));$xe.displayName=Rxe.Empty.displayName;const Yxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Group,{ref:t,className:Fa("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...n})));Yxe.displayName=Rxe.Group.displayName;r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Separator,{ref:t,className:Fa("-mx-1 h-px bg-border",e),...n}))).displayName=Rxe.Separator.displayName;const Qxe=r.forwardRef((({className:e,...n},t)=>a.jsx(Rxe.Item,{ref:t,className:Fa("relative flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e),...n})));Qxe.displayName=Rxe.Item.displayName;const Xxe=(e,a=200,n=32)=>{if(e.length<=20)return e;const t=Math.floor((a-n-16)/8);return e.length<=t?e:e.substring(0,t-3)+"..."},eNe=({options:e,value:n,onChange:t,placeholder:i,className:o="",disableInput:s=!1,disabled:l=!1})=>{const[u,c]=r.useState(!1);return a.jsxs(Hde,{modal:!0,open:!l&&u,onOpenChange:l?void 0:c,children:[a.jsx(Fde,{asChild:!0,children:a.jsxs(Wa,{"aria-expanded":u,disabled:l,className:Fa("w-full overflow-hidden justify-between",l&&"bg-gray-50 text-gray-700 cursor-not-allowed",o),variant:"outline",children:[a.jsx("span",{className:"truncate",title:n?e.find((e=>e.value===n))?.label:i,children:n?Xxe(e.find((e=>e.value===n))?.label||"",200,32):i}),a.jsx(C,{className:"ml-2 h-4 w-4 flex-shrink-0 opacity-50"})]})}),a.jsx(Gde,{className:Fa("w-full min-w-[120px] max-w-[600px] p-0",o),children:a.jsxs(Wxe,{children:[!s&&a.jsx(qxe,{placeholder:`${i}...`}),a.jsxs(Zxe,{children:[a.jsxs($xe,{children:["No ",i.toLowerCase()," found."]}),a.jsx(Yxe,{children:e.map((e=>a.jsxs(Qxe,{value:e.value,onSelect:e=>{t(e===n?"":e),c(!1)},children:[a.jsx(k,{className:Fa("mr-2 h-4 w-4",n===e.value?"opacity-100":"opacity-0")}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:e.label}),e.description&&a.jsx("span",{className:"text-xs text-muted-foreground",children:e.description})]})]},e.id||e.value)))})]})]})})]})};var aNe="Switch",[nNe,tNe]=uM(aNe),[iNe,rNe]=nNe(aNe),oNe=r.forwardRef(((e,n)=>{const{__scopeSwitch:t,name:i,checked:o,defaultChecked:s,required:l,disabled:u,value:c="on",onCheckedChange:d,form:m,...h}=e,[p,g]=r.useState(null),f=He(n,(e=>g(e))),v=r.useRef(!1),y=!p||(m||!!p.closest("form")),[k=!1,b]=oT({prop:o,defaultProp:s,onChange:d});return a.jsxs(iNe,{scope:t,checked:k,disabled:u,children:[a.jsx(fM.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":cNe(k),"data-disabled":u?"":void 0,disabled:u,value:c,...h,ref:f,onClick:lM(e.onClick,(e=>{b((e=>!e)),y&&(v.current=e.isPropagationStopped(),v.current||e.stopPropagation())}))}),y&&a.jsx(uNe,{control:p,bubbles:!v.current,name:i,value:c,checked:k,required:l,disabled:u,form:m,style:{transform:"translateX(-100%)"}})]})}));oNe.displayName=aNe;var sNe="SwitchThumb",lNe=r.forwardRef(((e,n)=>{const{__scopeSwitch:t,...i}=e,r=rNe(sNe,t);return a.jsx(fM.span,{"data-state":cNe(r.checked),"data-disabled":r.disabled?"":void 0,...i,ref:n})}));lNe.displayName=sNe;var uNe=e=>{const{control:n,checked:t,bubbles:i=!0,...o}=e,s=r.useRef(null),l=GMe(t),u=BM(n);return r.useEffect((()=>{const e=s.current,a=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(a,"checked").set;if(l!==t&&n){const a=new Event("click",{bubbles:i});n.call(e,t),e.dispatchEvent(a)}}),[l,t,i]),a.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...o,tabIndex:-1,ref:s,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function cNe(e){return e?"checked":"unchecked"}var dNe=oNe,mNe=lNe;const hNe=r.forwardRef((({className:e,...n},t)=>a.jsx(dNe,{className:Fa("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input/50",e),...n,ref:t,children:a.jsx(mNe,{className:Fa("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})));function pNe(e,a,{checkForDefaultPrevented:n=!0}={}){return function(t){if(e?.(t),!1===n||!t.defaultPrevented)return a?.(t)}}function gNe(e,n=[]){let t=[];const i=()=>{const a=t.map((e=>r.createContext(e)));return function(n){const t=n?.[e]||a;return r.useMemo((()=>({[`__scope${e}`]:{...n,[e]:t}})),[n,t])}};return i.scopeName=e,[function(n,i){const o=r.createContext(i),s=t.length;t=[...t,i];const l=n=>{const{scope:t,children:i,...l}=n,u=t?.[e]?.[s]||o,c=r.useMemo((()=>l),Object.values(l));return a.jsx(u.Provider,{value:c,children:i})};return l.displayName=n+"Provider",[l,function(a,t){const l=r.useContext(t?.[e]?.[s]||o);if(l)return l;if(void 0!==i)return i;throw new Error(`\`${a}\` must be used within \`${n}\``)}]},fNe(i,...n)]}function fNe(...e){const a=e[0];if(1===e.length)return a;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const t=n.reduce(((a,{useScope:n,scopeName:t})=>({...a,...n(e)[`__scope${t}`]})),{});return r.useMemo((()=>({[`__scope${a.scopeName}`]:t})),[t])}};return n.scopeName=a.scopeName,n}function vNe(e,a){if("function"==typeof e)return e(a);null!=e&&(e.current=a)}function yNe(...e){return a=>{let n=!1;const t=e.map((e=>{const t=vNe(e,a);return n||"function"!=typeof t||(n=!0),t}));if(n)return()=>{for(let a=0;a<t.length;a++){const n=t[a];"function"==typeof n?n():vNe(e[a],null)}}}}function kNe(...e){return r.useCallback(yNe(...e),e)}function bNe(e){const n=SNe(e),t=r.forwardRef(((e,t)=>{const{children:i,...o}=e,s=r.Children.toArray(i),l=s.find(ANe);if(l){const e=l.props.children,i=s.map((a=>a===l?r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null:a));return a.jsx(n,{...o,ref:t,children:r.isValidElement(e)?r.cloneElement(e,void 0,i):null})}return a.jsx(n,{...o,ref:t,children:i})}));return t.displayName=`${e}.Slot`,t}function SNe(e){const a=r.forwardRef(((e,a)=>{const{children:n,...t}=e;if(r.isValidElement(n)){const e=function(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning;if(n)return e.ref;if(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n)return e.props.ref;return e.props.ref||e.ref}(n),i=function(e,a){const n={...a};for(const t in a){const i=e[t],r=a[t];/^on[A-Z]/.test(t)?i&&r?n[t]=(...e)=>{r(...e),i(...e)}:i&&(n[t]=i):"style"===t?n[t]={...i,...r}:"className"===t&&(n[t]=[i,r].filter(Boolean).join(" "))}return{...e,...n}}(t,n.props);return n.type!==r.Fragment&&(i.ref=a?yNe(a,e):e),r.cloneElement(n,i)}return r.Children.count(n)>1?r.Children.only(null):null}));return a.displayName=`${e}.SlotClone`,a}hNe.displayName=dNe.displayName;var wNe=Symbol("radix.slottable");function ANe(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===wNe}var CNe=globalThis?.document?r.useLayoutEffect:()=>{},MNe=r[" useId ".trim().toString()]||(()=>{}),TNe=0;function xNe(e){const[a,n]=r.useState(MNe());return CNe((()=>{n((e=>e??String(TNe++)))}),[e]),e||(a?`radix-${a}`:"")}var NNe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce(((e,n)=>{const t=bNe(`Primitive.${n}`),i=r.forwardRef(((e,i)=>{const{asChild:r,...o}=e,s=r?t:n;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),a.jsx(s,{...o,ref:i})}));return i.displayName=`Primitive.${n}`,{...e,[n]:i}}),{});var ENe=r[" useInsertionEffect ".trim().toString()]||CNe;function jNe({prop:e,defaultProp:a,onChange:n=()=>{},caller:t}){const[i,o,s]=function({defaultProp:e,onChange:a}){const[n,t]=r.useState(e),i=r.useRef(n),o=r.useRef(a);return ENe((()=>{o.current=a}),[a]),r.useEffect((()=>{i.current!==n&&(o.current?.(n),i.current=n)}),[n,i]),[n,t,o]}({defaultProp:a,onChange:n}),l=void 0!==e,u=l?e:i;{const a=r.useRef(void 0!==e);r.useEffect((()=>{const e=a.current;if(e!==l){}a.current=l}),[l,t])}const c=r.useCallback((a=>{if(l){const n=function(e){return"function"==typeof e}(a)?a(e):a;n!==e&&s.current?.(n)}else o(a)}),[l,e,o,s]);return[u,c]}var _Ne=r.createContext(void 0);function PNe(e){const a=r.useContext(_Ne);return e||a||"ltr"}var LNe="rovingFocusGroup.onEntryFocus",BNe={bubbles:!1,cancelable:!0},RNe="RovingFocusGroup",[DNe,zNe,ONe]=function(e){const t=e+"CollectionProvider",[i,r]=gNe(t),[o,s]=i(t,{collectionRef:{current:null},itemMap:new Map}),l=e=>{const{scope:t,children:i}=e,r=n.useRef(null),s=n.useRef(new Map).current;return a.jsx(o,{scope:t,itemMap:s,collectionRef:r,children:i})};l.displayName=t;const u=e+"CollectionSlot",c=bNe(u),d=n.forwardRef(((e,n)=>{const{scope:t,children:i}=e,r=kNe(n,s(u,t).collectionRef);return a.jsx(c,{ref:r,children:i})}));d.displayName=u;const m=e+"CollectionItemSlot",h="data-radix-collection-item",p=bNe(m),g=n.forwardRef(((e,t)=>{const{scope:i,children:r,...o}=e,l=n.useRef(null),u=kNe(t,l),c=s(m,i);return n.useEffect((()=>(c.itemMap.set(l,{ref:l,...o}),()=>{c.itemMap.delete(l)}))),a.jsx(p,{[h]:"",ref:u,children:r})}));return g.displayName=m,[{Provider:l,Slot:d,ItemSlot:g},function(a){const t=s(e+"CollectionConsumer",a);return n.useCallback((()=>{const e=t.collectionRef.current;if(!e)return[];const a=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(t.itemMap.values()).sort(((e,n)=>a.indexOf(e.ref.current)-a.indexOf(n.ref.current)))}),[t.collectionRef,t.itemMap])},r]}(RNe),[KNe,INe]=gNe(RNe,[ONe]),[HNe,FNe]=KNe(RNe),GNe=r.forwardRef(((e,n)=>a.jsx(DNe.Provider,{scope:e.__scopeRovingFocusGroup,children:a.jsx(DNe.Slot,{scope:e.__scopeRovingFocusGroup,children:a.jsx(VNe,{...e,ref:n})})})));GNe.displayName=RNe;var VNe=r.forwardRef(((e,n)=>{const{__scopeRovingFocusGroup:t,orientation:i,loop:o=!1,dir:s,currentTabStopId:l,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:m=!1,...h}=e,p=r.useRef(null),g=kNe(n,p),f=PNe(s),[v,y]=jNe({prop:l,defaultProp:u??null,onChange:c,caller:RNe}),[k,b]=r.useState(!1),S=function(e){const a=r.useRef(e);return r.useEffect((()=>{a.current=e})),r.useMemo((()=>(...e)=>a.current?.(...e)),[])}(d),w=zNe(t),A=r.useRef(!1),[C,M]=r.useState(0);return r.useEffect((()=>{const e=p.current;if(e)return e.addEventListener(LNe,S),()=>e.removeEventListener(LNe,S)}),[S]),a.jsx(HNe,{scope:t,orientation:i,dir:f,loop:o,currentTabStopId:v,onItemFocus:r.useCallback((e=>y(e)),[y]),onItemShiftTab:r.useCallback((()=>b(!0)),[]),onFocusableItemAdd:r.useCallback((()=>M((e=>e+1))),[]),onFocusableItemRemove:r.useCallback((()=>M((e=>e-1))),[]),children:a.jsx(NNe.div,{tabIndex:k||0===C?-1:0,"data-orientation":i,...h,ref:g,style:{outline:"none",...e.style},onMouseDown:pNe(e.onMouseDown,(()=>{A.current=!0})),onFocus:pNe(e.onFocus,(e=>{if(e.target===e.currentTarget&&!A.current&&!k){const a=new CustomEvent(LNe,BNe);if(e.currentTarget.dispatchEvent(a),!a.defaultPrevented){const e=w().filter((e=>e.focusable));qNe([e.find((e=>e.active)),e.find((e=>e.id===v)),...e].filter(Boolean).map((e=>e.ref.current)),m)}}A.current=!1})),onBlur:pNe(e.onBlur,(()=>b(!1)))})})})),JNe="RovingFocusGroupItem",UNe=r.forwardRef(((e,n)=>{const{__scopeRovingFocusGroup:t,focusable:i=!0,active:o=!1,tabStopId:s,children:l,...u}=e,c=xNe(),d=s||c,m=FNe(JNe,t),h=m.currentTabStopId===d,p=zNe(t),{onFocusableItemAdd:g,onFocusableItemRemove:f,currentTabStopId:v}=m;return r.useEffect((()=>{if(i)return g(),()=>f()}),[i,g,f]),a.jsx(DNe.ItemSlot,{scope:t,id:d,focusable:i,active:o,children:a.jsx(NNe.span,{tabIndex:h?0:-1,"data-orientation":m.orientation,...u,ref:n,onMouseDown:pNe(e.onMouseDown,(e=>{i?m.onItemFocus(d):e.preventDefault()})),onFocus:pNe(e.onFocus,(()=>m.onItemFocus(d))),onKeyDown:pNe(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void m.onItemShiftTab();if(e.target!==e.currentTarget)return;const a=function(e,a,n){const t=function(e,a){return"rtl"!==a?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===a&&["ArrowLeft","ArrowRight"].includes(t)||"horizontal"===a&&["ArrowUp","ArrowDown"].includes(t)?void 0:WNe[t]}(e,m.orientation,m.dir);if(void 0!==a){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=p().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===a)i.reverse();else if("prev"===a||"next"===a){"prev"===a&&i.reverse();const r=i.indexOf(e.currentTarget);i=m.loop?(t=r+1,(n=i).map(((e,a)=>n[(t+a)%n.length]))):i.slice(r+1)}setTimeout((()=>qNe(i)))}var n,t})),children:"function"==typeof l?l({isCurrentTabStop:h,hasTabStop:null!=v}):l})})}));UNe.displayName=JNe;var WNe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function qNe(e,a=!1){const n=document.activeElement;for(const t of e){if(t===n)return;if(t.focus({preventScroll:a}),document.activeElement!==n)return}}var ZNe=GNe,$Ne=UNe;var YNe=e=>{const{present:a,children:n}=e,t=function(e){const[a,n]=r.useState(),t=r.useRef(null),i=r.useRef(e),o=r.useRef("none"),s=e?"mounted":"unmounted",[l,u]=function(e,a){return r.useReducer(((e,n)=>a[e][n]??e),e)}(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return r.useEffect((()=>{const e=QNe(t.current);o.current="mounted"===l?e:"none"}),[l]),CNe((()=>{const a=t.current,n=i.current;if(n!==e){const t=o.current,r=QNe(a);if(e)u("MOUNT");else if("none"===r||"none"===a?.display)u("UNMOUNT");else{u(n&&t!==r?"ANIMATION_OUT":"UNMOUNT")}i.current=e}}),[e,u]),CNe((()=>{if(a){let e;const n=a.ownerDocument.defaultView??window,r=r=>{const o=QNe(t.current).includes(r.animationName);if(r.target===a&&o&&(u("ANIMATION_END"),!i.current)){const t=a.style.animationFillMode;a.style.animationFillMode="forwards",e=n.setTimeout((()=>{"forwards"===a.style.animationFillMode&&(a.style.animationFillMode=t)}))}},s=e=>{e.target===a&&(o.current=QNe(t.current))};return a.addEventListener("animationstart",s),a.addEventListener("animationcancel",r),a.addEventListener("animationend",r),()=>{n.clearTimeout(e),a.removeEventListener("animationstart",s),a.removeEventListener("animationcancel",r),a.removeEventListener("animationend",r)}}u("ANIMATION_END")}),[a,u]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:r.useCallback((e=>{t.current=e?getComputedStyle(e):null,n(e)}),[])}}(a),i="function"==typeof n?n({present:t.isPresent}):r.Children.only(n),o=kNe(t.ref,function(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning;if(n)return e.ref;if(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n)return e.props.ref;return e.props.ref||e.ref}(i));return"function"==typeof n||t.isPresent?r.cloneElement(i,{ref:o}):null};function QNe(e){return e?.animationName||"none"}YNe.displayName="Presence";var XNe="Tabs",[eEe,aEe]=gNe(XNe,[INe]),nEe=INe(),[tEe,iEe]=eEe(XNe),rEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,onValueChange:r,defaultValue:o,orientation:s="horizontal",dir:l,activationMode:u="automatic",...c}=e,d=PNe(l),[m,h]=jNe({prop:i,onChange:r,defaultProp:o??"",caller:XNe});return a.jsx(tEe,{scope:t,baseId:xNe(),value:m,onValueChange:h,orientation:s,dir:d,activationMode:u,children:a.jsx(NNe.div,{dir:d,"data-orientation":s,...c,ref:n})})}));rEe.displayName=XNe;var oEe="TabsList",sEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,loop:i=!0,...r}=e,o=iEe(oEe,t),s=nEe(t);return a.jsx(ZNe,{asChild:!0,...s,orientation:o.orientation,dir:o.dir,loop:i,children:a.jsx(NNe.div,{role:"tablist","aria-orientation":o.orientation,...r,ref:n})})}));sEe.displayName=oEe;var lEe="TabsTrigger",uEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,disabled:r=!1,...o}=e,s=iEe(lEe,t),l=nEe(t),u=mEe(s.baseId,i),c=hEe(s.baseId,i),d=i===s.value;return a.jsx($Ne,{asChild:!0,...l,focusable:!r,active:d,children:a.jsx(NNe.button,{type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:u,...o,ref:n,onMouseDown:pNe(e.onMouseDown,(e=>{r||0!==e.button||!1!==e.ctrlKey?e.preventDefault():s.onValueChange(i)})),onKeyDown:pNe(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&s.onValueChange(i)})),onFocus:pNe(e.onFocus,(()=>{d||r||!("manual"!==s.activationMode)||s.onValueChange(i)}))})})}));uEe.displayName=lEe;var cEe="TabsContent",dEe=r.forwardRef(((e,n)=>{const{__scopeTabs:t,value:i,forceMount:o,children:s,...l}=e,u=iEe(cEe,t),c=mEe(u.baseId,i),d=hEe(u.baseId,i),m=i===u.value,h=r.useRef(m);return r.useEffect((()=>{const e=requestAnimationFrame((()=>h.current=!1));return()=>cancelAnimationFrame(e)}),[]),a.jsx(YNe,{present:o||m,children:({present:t})=>a.jsx(NNe.div,{"data-state":m?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":c,hidden:!t,id:d,tabIndex:0,...l,ref:n,style:{...e.style,animationDuration:h.current?"0s":void 0},children:t&&s})})}));function mEe(e,a){return`${e}-trigger-${a}`}function hEe(e,a){return`${e}-content-${a}`}dEe.displayName=cEe;var pEe=sEe,gEe=uEe,fEe=dEe;const vEe=rEe,yEe=r.forwardRef((({className:e,...n},t)=>a.jsx(pEe,{ref:t,className:Fa("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...n})));yEe.displayName=pEe.displayName;const kEe=r.forwardRef((({className:e,...n},t)=>a.jsx(gEe,{ref:t,className:Fa("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...n})));kEe.displayName=gEe.displayName;const bEe=r.forwardRef((({className:e,...n},t)=>a.jsx(fEe,{ref:t,className:Fa("ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...n})));bEe.displayName=fEe.displayName;var SEe=(e=>(e.Today="today",e.Yesterday="yesterday",e.Tomorrow="tomorrow",e.LastWeek="last-week",e.NextWeek="next-week",e.FifteenDaysAgo="fifteen-days-ago",e.FifteenDaysFromNow="fifteen-days-from-now",e))(SEe||{});const wEe=(e,a)=>{const n=new Date;n.setHours(0,0,0,0);let t=new Date(n);switch(e){case SEe.Today:break;case SEe.Yesterday:t.setDate(n.getDate()-1);break;case SEe.Tomorrow:t.setDate(n.getDate()+1);break;case SEe.LastWeek:t.setDate(n.getDate()-7);break;case SEe.NextWeek:t.setDate(n.getDate()+7);break;case SEe.FifteenDaysAgo:t.setDate(n.getDate()-15);break;case SEe.FifteenDaysFromNow:t.setDate(n.getDate()+15);break;default:throw new Error("Invalid single date preset")}return t},AEe=e=>{(new Date).setHours(0,0,0,0);let a=0;switch(e){case SEe.Today:a=0;break;case SEe.Yesterday:case SEe.Tomorrow:a=1;break;case SEe.LastWeek:case SEe.NextWeek:a=7;break;case SEe.FifteenDaysAgo:case SEe.FifteenDaysFromNow:a=15;break;default:return null}const n=[SEe.Tomorrow,SEe.NextWeek,SEe.FifteenDaysFromNow].includes(e);return{type:"relative",value:a,unit:qTe.DAYS,direction:n?"after":"before"}},CEe=KA.union([KA.date(),KA.string().transform((e=>{if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const[a,n,t]=e.split("-").map(Number);return new Date(a,n-1,t)}return new Date(e)}))]).refine((e=>!isNaN(e.getTime())),{message:"Invalid date"}),MEe=e=>!(!e||"object"!=typeof e)&&(void 0===e.value||!("number"!=typeof e.value||e.value<0)&&(e.unit===qTe.DAYS&&(("before"===e.direction||"after"===e.direction)&&"relative"===e.type))),TEe=e=>!e||void 0===e.value||e.value<=730,xEe=e=>!(e.startDate&&"object"==typeof e.startDate&&"type"in e.startDate&&"relative"===e.startDate.type&&!TEe(e.startDate))&&!(e.endDate&&"object"==typeof e.endDate&&"type"in e.endDate&&"relative"===e.endDate.type&&!TEe(e.endDate)),NEe=e=>!(!e.startDate||!e.endDate)&&(!("object"==typeof e.startDate&&"type"in e.startDate&&!MEe(e.startDate))&&!("object"==typeof e.endDate&&"type"in e.endDate&&!MEe(e.endDate))),EEe=e=>{const{date:a,fieldType:n}=e;return n===Toe.Date?new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),0,0,0,0)):a},jEe=e=>{if(e instanceof Date)return e.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});if("object"==typeof e&&"type"in e&&"relative"===e.type){return void 0===e.value?"Select days...":`${e.value} days ${e.direction} today`}if("object"==typeof e&&"startDate"in e&&"endDate"in e){const a=e;return`${jEe(a.startDate)} - ${jEe(a.endDate)}`}return"Select date..."},_Ee=({isOpen:e,onClose:n,onConfirm:t,fieldType:i,operator:o,currentValue:s,toast:l})=>{const u=s.length>0&&"object"==typeof s[0]&&"type"in s[0]&&"relative"===s[0].type,c=s.length>0&&"object"==typeof s[0]&&"startDate"in s[0]&&"endDate"in s[0],d=o===Noe.BETWEEN_MONTH_DAY||o===Noe.BETWEEN_MONTH_DAY_YEAR,[m,h]=r.useState((()=>{if(!d){if((i===Toe.Date||i===Toe.DateTime)&&s.length>0&&!u&&!c){const e=CEe.safeParse(s[0]);return e.success?e.data:new Date}return new Date}})),[p]=r.useState(u?s[0]:{type:"relative",value:0,unit:qTe.DAYS,direction:"before"}),[g,f]=r.useState((()=>{if(c)return s[0];if(d){const e=new Date;e.setDate(e.getDate()-1);const a=new Date;return a.setDate(a.getDate()+1),{startDate:EEe({date:e,fieldType:i}),endDate:EEe({date:a,fieldType:i})}}})),[v,y]=r.useState((()=>{if(u&&s.length>0){const e=s[0];if(void 0!==e.value)return`${e.value} days ${"before"===e.direction?"ago":"from now"}`}return""})),[k,b]=r.useState(""),[S,w]=r.useState(""),[A,C]=r.useState((()=>{if(u&&s.length>0){const e=s[0];if(void 0!==e.value){const a=Object.values(SEe);let n=null;for(const t of a){const a=AEe(t);if(a&&a.value===e.value&&a.direction===e.direction){n=t;break}}return!n}}return!1})),{parseDate:M,isParsing:T,parseError:x,parseResult:N}=Boe(),[E,j]=r.useState(null),[_,P]=r.useState(!1),L=r.useRef(null),[B,R]=r.useState(null),[D,z]=r.useState(u?"relative":"specific");r.useEffect((()=>{if(!d&&s.length>0){const e=s[0];e instanceof Date?(h(EEe({date:e,fieldType:i})),y(""),C(!1),R(null),z("specific")):"object"==typeof e&&null!==e&&"type"in e&&"relative"===e.type&&(h(void 0),z("relative"))}else d||(h(new Date),y(""),C(!1),R(null),z("specific"))}),[s,d,i]),r.useEffect((()=>{if(!d&&s.length>0){const a=s[0];try{if(a instanceof Date){const e=(e=>{(new Date).setHours(0,0,0,0);const a=Object.values(SEe);for(const t of a)try{if(wEe(t).getTime()===e.getTime())return t}catch(n){continue}return null})(a);R(e||null)}else if("object"==typeof a&&null!==a&&"type"in a&&"relative"===a.type){const e=a;if(void 0!==e.value){const a=Object.values(SEe);let n=null;for(const t of a){const a=AEe(t);if(a&&a.value===e.value&&a.direction===e.direction){n=t;break}}R(n||null)}else R(null)}else R(null)}catch(e){R(null)}}}),[s,d]);const O=e=>{try{R(e),y(""),C(!1),j(null),P(!1);const a=AEe(e);a&&(TEe(a)?j(a):(R(null),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"})))}catch(a){R(null)}},K=r.useCallback((e=>{if(!e.trim())return j(null),void P(!1);L.current&&clearTimeout(L.current),L.current=setTimeout((()=>{M({userInput:e,operator:o})}),800)}),[M,o]),I=r.useCallback(((e,a)=>{if(!e.trim()||!a.trim())return j(null),void P(!1);L.current&&clearTimeout(L.current),L.current=setTimeout((()=>{M({userInput:`between ${e} and ${a}`,operator:o})}),800)}),[M,o]);r.useEffect((()=>{d&&k.trim()&&S.trim()&&I(k,S)}),[k,S,d,I]),r.useEffect((()=>{if(N)if(N.success&&N.parsedDate)if("object"==typeof N.parsedDate&&"type"in N.parsedDate&&"relative"===N.parsedDate.type){const e=N.parsedDate;TEe(e)?(j(e),P(!1)):(j(null),P(!0),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}))}else if("object"==typeof N.parsedDate&&"startDate"in N.parsedDate&&"endDate"in N.parsedDate){const e=N.parsedDate;xEe(e)?(j(e),P(!1)):(j(null),P(!0),l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}))}else j(null),P(!0);else j(null),P(!0)}),[N,l]),r.useEffect((()=>{x&&(j(null),P(!0))}),[x]),r.useEffect((()=>()=>{L.current&&clearTimeout(L.current)}),[]);const H=o===Noe.EQUALS_MONTH_DAY||o===Noe.EQUALS_MONTH_DAY_YEAR||o===Noe.GREATER_THAN||o===Noe.LESS_THAN,F=e=>{const a=e.startDate??g?.startDate,n=e.endDate??g?.endDate,t=a&&"object"==typeof a&&"type"in a,i=n&&"object"==typeof n&&"type"in n;if(a&&n){if(t!==i)return void l({title:"Invalid date range",description:"Both start and end dates must be of the same type (either both absolute or both relative).",variant:"destructive"});if(!t&&!i&&(r={finalStartDate:a,finalEndDate:n}).finalStartDate&&r.finalEndDate&&!(r.finalStartDate<r.finalEndDate))return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"});if(t){if(!MEe(a)||!MEe(n))return void l({title:"Invalid relative date",description:"Please enter valid relative dates.",variant:"destructive"});const e=a,t=n,i=o===Noe.BETWEEN_MONTH_DAY||o===Noe.BETWEEN_MONTH_DAY_YEAR;if(!i&&e.direction!==t.direction)return void l({title:"Invalid date range",description:"Start and end dates must be in the same direction (both in the past or both in the future).",variant:"destructive"});if(i){const a=new Date,n=new Date(a),i=new Date(a);if(n.setDate("before"===e.direction?a.getDate()-e.value:a.getDate()+e.value),i.setDate("before"===t.direction?a.getDate()-t.value:a.getDate()+t.value),n>=i)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}else if("before"===e.direction){if(e.value<=t.value)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}else if("after"===e.direction&&e.value>=t.value)return void l({title:"Invalid date range",description:"Start date must be before end date.",variant:"destructive"})}}var r;f(e)},G=()=>{if(d){if("relative"===D){if(A&&v.trim()&&E&&"startDate"in E&&"endDate"in E)return NEe(E)?xEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid date range",description:"The parsed date range is invalid.",variant:"destructive"});if(A&&(k.trim()||S.trim())&&E&&"startDate"in E&&"endDate"in E)return NEe(E)?xEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid date range",description:"The parsed date range is invalid.",variant:"destructive"})}if(A&&!E)return v.trim()||k.trim()||S.trim()?void l({title:"Invalid input",description:'Please enter a valid date range expression like "between 5 days ago and 3 days ago".',variant:"destructive"}):void l({title:"Input required",description:"Please enter a date range expression.",variant:"destructive"});if("specific"!==D||!g?.startDate||!g?.endDate)return"specific"===D?void l({title:"Date range required",description:"Please select both start and end dates.",variant:"destructive"}):void l({title:"Invalid input",description:"Please enter a valid date range expression or switch to specific dates.",variant:"destructive"});t([{startDate:g.startDate,endDate:g.endDate}]),n()}else if(null!==B)try{const e=AEe(B);return e&&MEe(e)?TEe(e)?(t([e]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"}):void l({title:"Invalid preset",description:"The selected preset is not valid.",variant:"destructive"})}catch(e){return void l({title:"Invalid preset",description:"The selected preset is not valid.",variant:"destructive"})}else if(A){if(!v.trim())return void l({title:"Input required",description:"Please enter a custom date or select a preset.",variant:"destructive"});if(E&&"type"in E&&"relative"===E.type&&MEe(E))return TEe(E)?(t([E]),void n()):void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"});const e=(e=>{const a=e.trim().toLowerCase().match(/^(\d+)\s+days?\s+(ago|from now)$/);if(a)return{type:"relative",value:parseInt(a[1],10),unit:qTe.DAYS,direction:"ago"===a[2]?"before":"after"};return null})(v);if(!e||!MEe(e))return void l({title:"Invalid input",description:'Please enter a valid date expression like "14 days ago", "last week", or "3 days from now".',variant:"destructive"});if(!TEe(e))return void l({title:"Date range too far",description:"Relative dates must be within 2 years (730 days) of today.",variant:"destructive"});t([e]),n()}else"relative"===D&&H?(t([p]),n()):"specific"===D&&m?(t([EEe({date:m,fieldType:i})]),n()):(t([]),n())};return a.jsx(fi,{open:e,onOpenChange:e=>{e||G()},children:a.jsxs(bi,{className:d?"w-[600px] max-w-none":"w-[500px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Select Date"})}),a.jsxs(vEe,{value:D,onValueChange:e=>{z(e),"specific"===e?(m||h(new Date),y(""),C(!1),R(null),j(null),P(!1)):"relative"===e&&h(void 0)},className:"w-full",children:[a.jsxs(yEe,{className:"grid w-full grid-cols-2",children:[a.jsx(kEe,{value:"relative",children:"Relative"}),a.jsx(kEe,{value:"specific",children:"Specific"})]}),a.jsxs(bEe,{value:"relative",className:"space-y-4 mt-4",children:[T&&a.jsxs("div",{className:"flex items-center gap-2 text-xs text-blue-600 bg-blue-50 border border-blue-200 rounded-md p-2",children:[a.jsx("div",{className:"animate-spin h-3 w-3 border border-blue-600 border-t-transparent rounded-full"}),"AI is parsing your date..."]}),E&&!T&&a.jsxs("div",{className:"flex items-center gap-2 text-xs text-green-600 bg-green-50 border border-green-200 rounded-md p-2",children:[a.jsx("div",{className:"text-green-500",children:"✓"}),a.jsxs("div",{children:["Parsed as:"," ",d&&"startDate"in E&&"endDate"in E?`${jEe(E.startDate)} to ${jEe(E.endDate)}`:jEe(E)]})]}),!d&&a.jsxs("div",{className:"space-y-4",children:[a.jsx(Tge,{className:"text-sm font-medium",children:"Quick Select"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx("div",{className:"flex justify-center",children:a.jsx(Wa,{variant:B===SEe.Today?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Today)},className:"px-6 py-2 h-auto",children:a.jsxs("div",{className:"flex flex-col items-center",children:[a.jsx("span",{className:"font-medium text-sm",children:"Today"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Current date"})]})},SEe.Today)}),a.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[a.jsx(Wa,{variant:B===SEe.Yesterday?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Yesterday)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Yesterday"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Previous day"})]})},SEe.Yesterday),a.jsx(Wa,{variant:B===SEe.Tomorrow?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.Tomorrow)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Tomorrow"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Next day"})]})},SEe.Tomorrow),a.jsx(Wa,{variant:B===SEe.LastWeek?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.LastWeek)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Last Week"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"7 days ago"})]})},SEe.LastWeek),a.jsx(Wa,{variant:B===SEe.NextWeek?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.NextWeek)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"Next Week"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"7 days from now"})]})},SEe.NextWeek),a.jsx(Wa,{variant:B===SEe.FifteenDaysAgo?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.FifteenDaysAgo)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"15 Days Ago"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Two weeks ago"})]})},SEe.FifteenDaysAgo),a.jsx(Wa,{variant:B===SEe.FifteenDaysFromNow?"default":"outline",size:"sm",onClick:e=>{e.preventDefault(),e.stopPropagation(),O(SEe.FifteenDaysFromNow)},className:"justify-start text-left h-auto py-3 px-4",children:a.jsxs("div",{className:"flex flex-col items-start",children:[a.jsx("span",{className:"font-medium text-sm",children:"15 Days From Now"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Two weeks ahead"})]})},SEe.FifteenDaysFromNow)]})]})]}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(Tge,{children:"Custom"}),d?a.jsxs("div",{className:"space-y-3",children:[a.jsx("div",{className:"flex gap-2 p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. between 5 days ago and 3 days ago",value:v,onChange:e=>{const a=e.target.value;y(a),C(!0),P(!1),b(""),w(""),K(a)},onFocus:()=>{C(!0)},className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 "+(T?"opacity-50":"")})}),a.jsxs("div",{className:"flex items-center",children:[a.jsx("div",{className:"flex-1 h-px bg-gray-200"}),a.jsx("span",{className:"px-3 text-xs text-gray-500",children:"OR"}),a.jsx("div",{className:"flex-1 h-px bg-gray-200"})]}),a.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-sm",children:"Start"}),a.jsx("div",{className:"p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 5 days ago",value:k,onChange:e=>{b(e.target.value),C(!0),P(!1),j(null),y("")},onFocus:()=>C(!0),className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 text-sm"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-sm",children:"End"}),a.jsx("div",{className:"p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 3 days ago",value:S,onChange:e=>{w(e.target.value),C(!0),P(!1),j(null),y("")},onFocus:()=>C(!0),className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 text-sm"})})]})]})]}):a.jsx("div",{className:"flex gap-2 p-2 rounded-md border transition-colors "+(A?"bg-blue-50 border-blue-200":"bg-white border-gray-200"),children:a.jsx(Lo,{placeholder:"e.g. 14 days ago, last week, 3 days from now",value:v,onChange:e=>{const a=e.target.value;y(a),C(!0),P(!1),R(null),K(a)},onFocus:()=>{C(!0),R(null),y(""),C(!1),j(null),P(!1)},className:"border-0 bg-transparent focus-visible:ring-0 shadow-none h-auto py-0 "+(T?"opacity-50":"")})})]})]}),a.jsx(bEe,{value:"specific",className:"space-y-4 mt-4",children:a.jsxs("div",d?{className:"space-y-3 flex flex-col items-center",children:[a.jsx(Tge,{children:"Choose date range"}),a.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-center",children:"Start Date"}),a.jsx(qpe,{mode:"single",selected:g?.startDate instanceof Date||"string"==typeof g?.startDate?g.startDate instanceof Date?g.startDate:new Date(g.startDate):void 0,onSelect:e=>{if(e){const a=EEe({date:e,fieldType:i});f({...g,startDate:a}),F({...g,startDate:a})}},className:"rounded-md border",disabled:()=>!1})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Tge,{className:"text-center",children:"End Date"}),a.jsx(qpe,{mode:"single",selected:g?.endDate instanceof Date||"string"==typeof g?.endDate?g.endDate instanceof Date?g.endDate:new Date(g.endDate):void 0,onSelect:e=>{if(e){const a=EEe({date:e,fieldType:i});f({...g,endDate:a}),F({...g,endDate:a})}},className:"rounded-md border",disabled:()=>!1})]})]})]}:{className:"space-y-3 flex flex-col items-center",children:[a.jsx(Tge,{children:"Choose specific date"}),a.jsx(qpe,{mode:"single",selected:m,onSelect:e=>{if(e&&((a=e)instanceof Date?!isNaN(a.getTime()):"object"==typeof a&&"type"in a&&"relative"===a.type&&MEe(a))){const a=EEe({date:e,fieldType:i});h(a),y(""),C(!1),R(null),j(null),P(!1)}else e||h(void 0);var a},className:"rounded-md border",disabled:()=>!1})]})})]}),a.jsxs("div",{className:"space-y-3 pt-4",children:[_&&!T&&v.trim()&&A&&a.jsxs("div",{className:"flex items-center gap-2 text-sm text-red-600 bg-red-50 border border-red-200 rounded-md p-3",children:[a.jsx("div",{className:"text-red-500",children:"⚠"}),a.jsxs("div",{children:[a.jsx("div",{className:"font-medium",children:"Could not parse date"}),a.jsx("div",{className:"text-xs text-red-500 mt-1",children:'Try formats like "14 days ago", "last week", or "3 days from now"'})]})]}),a.jsxs("div",{className:"flex justify-end space-x-2",children:[a.jsx(Wa,{variant:"destructive",onClick:()=>{n()},disabled:T,children:"Cancel"}),a.jsx(Wa,{onClick:G,disabled:T,children:T?"Parsing...":"Confirm"})]})]})]})})},PEe=({value:e,onClick:n,operator:t,disabled:i=!1})=>{if(t===Noe.BETWEEN_MONTH_DAY||t===Noe.BETWEEN_MONTH_DAY_YEAR){const t=e.length>0?e[0]:null,r=t?.startDate?jEe(t.startDate):"Start date...",o=t?.endDate?jEe(t.endDate):"End date...";return a.jsxs("div",{className:"flex gap-2",children:[a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[140px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:r,children:Xxe(r,140,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]}),a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[140px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:o,children:Xxe(o,140,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]})]})}const r=e.length>0?jEe(e[0]):"Select date...";return a.jsxs("button",{type:"button",onClick:n,disabled:i,className:"flex h-9 w-[200px] items-center justify-between rounded-md border border-input bg-card text-card-foreground px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 "+(i?"bg-gray-50":"hover:bg-accent hover:text-accent-foreground"),children:[a.jsx("span",{className:"truncate",title:r,children:Xxe(r,200,32)}),a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4 opacity-50 flex-shrink-0",children:a.jsx("path",{d:"M6 9l6 6 6-6"})})]})},LEe=({fieldType:e,operator:n,value:t,onChange:i,options:o,toast:s,viewOnly:l=!1})=>{const[u,c]=r.useState(!1);if(e===Toe.String||e===Toe.ReachResource||e===Toe.Array)return n===Noe.EXISTS||n===Noe.NOT_EXISTS?l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null:a.jsx(pTe,{options:(o||[]).map((e=>({category:"Options",items:[{label:e.displayName,value:e.id}]}))),onValueChange:e=>{l||i(e)},selectedValues:t.filter((e=>null!=e&&void 0!==e&&""!==e)).map((e=>{const a=(o||[]).find((a=>a.id===String(e)||a.displayName===String(e)||a.id===a.displayName&&a.id===String(e)));return a?.id||String(e)})),setSelectedValues:e=>{l||i(e)},isLoading:!o||0===o.length});if(e===Toe.Date||e===Toe.DateTime){if(n===Noe.EXISTS||n===Noe.NOT_EXISTS)return l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null;return n===Noe.EQUALS_MONTH_DAY||n===Noe.EQUALS_MONTH_DAY_YEAR||n===Noe.GREATER_THAN||n===Noe.LESS_THAN||(n===Noe.BETWEEN_MONTH_DAY||n===Noe.BETWEEN_MONTH_DAY_YEAR)||n===Noe.EQUALS?a.jsxs(a.Fragment,{children:[a.jsx(PEe,{value:t,onClick:()=>!l&&c(!0),operator:n,disabled:l}),!l&&a.jsx(_Ee,{isOpen:u,onClose:()=>c(!1),onConfirm:i,fieldType:e,operator:n,currentValue:t,toast:s})]}):null}if(e===Toe.Number||e===Toe.Integer)return n===Noe.EXISTS||n===Noe.NOT_EXISTS?l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null:a.jsx(Lo,{type:"number",value:t.length>0?String(t[0]):"",onChange:e=>!l&&i([Number(e.target.value)]),className:"w-[200px]",disabled:l});if(e===Toe.Boolean){if(n===Noe.EXISTS||n===Noe.NOT_EXISTS)return l?a.jsx("div",{className:"flex items-center px-3 py-2 text-sm text-gray-600 bg-gray-50 border border-gray-200 rounded-md",children:n===Noe.EXISTS?"Field exists":"Field does not exist"}):null;const e=t.length>0&&Boolean(t[0]);return a.jsx(hNe,{checked:e,onCheckedChange:e=>!l&&i([e]),disabled:l})}return a.jsx(Lo,{value:t.length>0?String(t[0]):"",onChange:e=>!l&&i([e.target.value]),className:"w-[200px]",disabled:l||!0})},BEe=({condition:e,onUpdate:i,onDuplicate:r,onDelete:o,segmentsConditions:s,totalConditions:l,viewOnly:u=!1})=>{const{toast:c}=Ck(),[d,m]=n.useState(!1),[h,p]=n.useState(!1),g=n.useRef(null),[f,v]=n.useState({top:0,right:0}),y=n.useRef(null),k=(e=>{const a=s.conditions.find((a=>a.field===e));return a||null})(e.field)||{operators:[],type:Toe.String,options:void 0,description:void 0},b=k.operators,S=k.type,w=s.conditions.map((e=>({value:e.field,label:XTe[e.field]||e.field,description:e.description})));n.useEffect((()=>{setTimeout((()=>document.body.style.pointerEvents=""),0)}),[]),n.useEffect((()=>{if((d||h)&&g.current){const e=g.current.getBoundingClientRect();v({top:e.top-12,right:window.innerWidth-e.right-12})}}),[d,h]);return a.jsxs(a.Fragment,{children:[!u&&t.createPortal(a.jsxs("div",{className:"fixed flex gap-1 z-50 transition-all duration-200 ease-in-out pointer-events-none",style:{top:f.top,right:f.right,opacity:d||h?1:0,transform:d||h?"scale(1)":"scale(0.8)",pointerEvents:d||h?"auto":"none"},onMouseEnter:()=>{y.current&&clearTimeout(y.current),p(!0)},onMouseLeave:()=>{p(!1),y.current=setTimeout((()=>{m(!1)}),100)},children:[a.jsx(Wa,{size:"sm",variant:"secondary",onClick:r,className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-gray-50",children:a.jsx(L,{className:"h-3 w-3"})}),l>1&&a.jsx(Wa,{size:"sm",variant:"secondary",onClick:o,className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-red-50 hover:border-red-200 hover:text-red-600",children:a.jsx(be,{className:"h-3 w-3"})})]}),document.body),a.jsx("div",{ref:g,className:"bg-white rounded-lg border border-gray-200 p-4 transition-all duration-200 "+(u?"bg-gray-50 border-gray-300":"hover:border-gray-300 hover:shadow-sm"),onMouseEnter:u?void 0:()=>{y.current&&clearTimeout(y.current),m(!0)},onMouseLeave:u?void 0:()=>{y.current=setTimeout((()=>{h||m(!1)}),100)},children:a.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch gap-3 min-w-0 w-full",children:[a.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[(k.description||e.field)&&a.jsx(ex,{title:"Field Information",description:k.description||`This field represents: ${e.field}`,Icon:H,size:"small",iconColor:"text-gray-400 hover:text-gray-600",children:a.jsx(Wa,{size:"sm",variant:"secondary",className:"h-6 w-6 p-0 rounded-full bg-white border border-gray-200 shadow-sm hover:shadow-md hover:bg-blue-50 hover:border-blue-200 hover:text-blue-600 flex-shrink-0",children:a.jsx(H,{className:"h-3 w-3"})})}),a.jsx(eNe,{options:w,value:e.field,placeholder:"Select field",onChange:a=>{const n=a,t=s.conditions.find((e=>e.field===n));if(!t)return;const r=t.operators.map((e=>({value:e,label:QTe(e,t.type),fieldType:t.type}))),o=r[0]?.value;let l=[];switch(t.type){case Toe.Boolean:l=[!1];break;case Toe.Number:l=[0];break;case Toe.Date:case Toe.DateTime:l=[new Date];break;default:l=[]}i({...e,field:n,operator:o,value:l})},className:"w-full",disableInput:!0,disabled:u})]}),a.jsxs("div",{className:"flex-1 min-w-0 max-w-xs flex gap-2 items-center",children:[(e.operator===Noe.EQUALS_MONTH_DAY||e.operator===Noe.EQUALS_MONTH_DAY_YEAR||e.operator===Noe.BETWEEN_MONTH_DAY||e.operator===Noe.BETWEEN_MONTH_DAY_YEAR)&&a.jsx("div",{className:"flex items-center",children:(e=>{let n;switch(e){case Noe.EQUALS_MONTH_DAY:n="This operator will check if only the month and day are equal. This is useful for things like birthday, where year does not matter. Use this for segments you would like to reuse annually.";break;case Noe.EQUALS_MONTH_DAY_YEAR:n="This operator will check if only the month and day are equal. This is useful for things like appointment dates, where the specific date is important.";break;case Noe.BETWEEN_MONTH_DAY:n="This operator will check if the date is between the two dates, but only checking the month and the day, not the year. This is helpful for things like birthday, where year does not matter. Use this for segments you would like to rescuer annually.";break;case Noe.BETWEEN_MONTH_DAY_YEAR:n="This operator will check if the date is between the two dates, checking the month, day and year. This is helpful for things like appointment dates, where specific day, month and year is important";break;default:return null}return a.jsx(ex,{title:n})})(e.operator)}),a.jsx(eNe,{options:b.map((e=>({value:e,label:e?QTe(e,S):e}))),value:e.operator,onChange:a=>{const n=a;i({...e,operator:n,value:[]})},placeholder:"Select operator",className:"w-full",disableInput:!0,disabled:u})]}),a.jsx("div",{className:"flex-1 min-w-0 max-w-full overflow-x-hidden",children:a.jsx(LEe,{fieldType:S,operator:e.operator,options:"string"==typeof e.value[0]&&e.value[0]&&Array.isArray(k.options)?[...(k.options||[]).map((e=>({displayName:e.displayName,id:e.id}))),...e.value.filter((e=>e&&"string"==typeof e&&""!==e.trim()&&!k.options?.some((a=>a.id===e||a.displayName===e)))).map((e=>({displayName:e,id:e})))]:k.options?.map((e=>({displayName:e.displayName,id:e.id})))||[],value:e.value,onChange:a=>i({...e,value:a}),toast:c,viewOnly:u})})]})})]})},REe=({segment:e,setSegment:n,segmentsConditions:t,updateCondition:i,duplicateCondition:r,deleteCondition:o,addCondition:s,businessId:l,viewOnly:u=!1,segmentType:c,existingSegmentConditions:d})=>{const{data:m,isLoading:h,error:p}=Roe(e.type,e.conditions,l,{debounceMs:500},d),g=m?.recipients.map((e=>({firstName:e.firstName??"",lastName:e.lastName??"",email:e.email,phone:e.phone})))??[],f=m?.estimatedTotal??0;return a.jsx(ooe,{className:"flex-1 flex flex-col overflow-visible",children:a.jsxs("div",{className:"flex h-full gap-6 overflow-visible",children:[a.jsxs("div",{className:"flex-1 flex flex-col overflow-visible",children:[a.jsxs("div",{className:"mb-6 grid grid-cols-2 gap-2",children:[a.jsxs("div",{className:"grid gap-2",children:[a.jsxs("div",{className:"flex items-center gap-0",children:[a.jsx(Tge,{children:"Name"}),!u&&a.jsx("span",{className:"text-xs text-red-500 ml-1 align-super",children:"*"})]}),a.jsx(Lo,{placeholder:`${qx("engage:segment")} name`,value:e.name,onChange:a=>n({...e,name:a.target.value}),disabled:u,className:u?"bg-gray-50 text-gray-700":""})]}),a.jsxs("div",{className:"grid gap-2",children:[a.jsx(Tge,{children:"Description"}),a.jsx(Lo,{placeholder:`${qx("engage:segment")} description`,value:e.description,onChange:a=>n({...e,description:a.target.value}),disabled:u,className:u?"bg-gray-50 text-gray-700":""})]})]}),"sql"===c&&a.jsxs("div",{className:"mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),a.jsx("p",{className:"text-sm text-blue-700 font-medium",children:"Custom Segment"})]}),a.jsx("p",{className:"text-sm text-blue-600 mt-1",children:"This segment is managed by your admin and cannot be edited here."})]}),a.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden pb-8",children:a.jsx("div",{className:"grid overflow-visible",children:a.jsxs(jd,{mode:"popLayout",children:["sql"!==c&&e.conditions.map(((n,s)=>a.jsxs(gk.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},transition:{type:"spring",stiffness:300,damping:30,mass:.5},style:{overflow:"visible"},children:[s>0&&a.jsxs(gk.div,{className:"relative flex items-center py-2",initial:{opacity:0},animate:{opacity:1},transition:{delay:.1},children:[a.jsx(gk.div,{className:"h-px flex-1 bg-border",initial:{scaleX:0},animate:{scaleX:1},transition:{type:"spring",stiffness:300,damping:30,mass:.5}}),a.jsx(gk.span,{className:"text-muted-foreground text-xs",initial:{opacity:0},animate:{opacity:1},transition:{delay:.2},children:"AND"}),a.jsx(gk.div,{className:"h-px flex-1 bg-border",initial:{scaleX:0},animate:{scaleX:1},transition:{type:"spring",stiffness:300,damping:30,mass:.5}})]}),a.jsx(BEe,{condition:n,onUpdate:e=>i(s,e),segmentsConditions:t,onDuplicate:()=>r(s),onDelete:()=>o(s),totalConditions:e.conditions.length,viewOnly:u})]},`${n.field}-${n.operator}-${s}`))),!u&&"sql"!==c&&a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{type:"spring",stiffness:300,damping:30,mass:.5},className:"pt-4",children:a.jsxs(Wa,{variant:"secondary",onClick:s,children:[a.jsx(oe,{className:"h-4 w-4"}),"Add Condition"]})},"add-condition-button")]})})})]}),a.jsxs("div",{className:"w-96 flex flex-col h-full overflow-hidden",children:[a.jsxs("div",{className:"mb-4 flex-shrink-0",children:[a.jsx("h3",{className:"text-lg font-semibold text-foreground",children:"Recipients Preview"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:h?"Loading recipients...":f>0?`${f.toLocaleString()} users match your conditions`:"No users match your conditions"})]}),a.jsx("div",{className:"flex-1 min-h-0 flex flex-col",children:h?a.jsx("div",{className:"flex items-center justify-center h-full",children:a.jsx("div",{className:"animate-spin h-6 w-6 border-2 border-blue-600 border-t-transparent rounded-full"})}):p?a.jsx("div",{className:"flex items-center justify-center h-full text-red-600",children:a.jsx("p",{children:"Error loading recipients"})}):a.jsx(YTe,{recipients:g,filter:"all",audienceMode:UTe.SEGMENTS,isSegmentBuilder:!0})})]})]})})},DEe=({segmentId:e,setOpen:n,setTextToSegment:t,promptBuilderStyle:i,textToSegment:r,viewOnly:o=!1})=>a.jsx("div",{children:a.jsx(Si,{className:"",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Ai,{className:"text-3xl font-normal",children:o?`View ${qx("engage:segment")}`:e?`Edit ${qx("engage:segment")}`:`Create ${qx("engage:segment")}`}),a.jsxs("div",{className:"flex items-center gap-2",children:[!o&&!1===i&&!1===r&&a.jsx(zT,{children:a.jsxs(OT,{children:[a.jsx(KT,{asChild:!0,children:a.jsx(Wa,{variant:"outline",size:"sm",onClick:()=>t(!0),children:a.jsx(fe,{className:"h-4 w-3"})})}),a.jsx(IT,{children:a.jsxs("p",{children:["Use AI to create ",qx("engage:segment")," by describing them in natural language"]})})]})}),a.jsx(Wa,{variant:"ghost",size:"icon",onClick:()=>{n(!1)},className:"h-8 w-8",children:a.jsx(Ee,{className:"h-4 w-4"})})]})]})})}),zEe=({setTextToSegment:e,setSegment:t,setSegmentName:i,setSegmentDescription:r,currentSegment:o})=>{const[s,l]=n.useState(""),[u,c]=n.useState(!1),[d,m]=n.useState(!1),[h,p]=n.useState(),[g,f]=n.useState(null),v=n.useRef(null),{toast:y}=Ck(),{sendNotificationAsync:k}=lS();n.useEffect((()=>{if(g&&i&&r){const a=`${g.title}-${g.description}-${JSON.stringify(g.conditions)}`;if(v.current===a)return;v.current=a,i&&r&&(!g.title||o?.name&&""!==o.name.trim()||i(g.title),!g.description||o?.description&&""!==o.description.trim()||r(g.description)),t(g.conditions),f(null),e(!1)}}),[g]);return a.jsxs("div",{className:"flex flex-col gap-6 p-4",children:[a.jsxs("div",{className:"space-y-2 text-center",children:[a.jsx("h3",{className:"text-lg font-semibold text-foreground",children:"Describe your audience"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Describe the audience you want to target in plain language, and our AI will create the conditions for you."})]}),a.jsx(jd,{mode:"wait",children:d&&h&&a.jsx(gk.div,{initial:{opacity:0,y:20,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-20,scale:.95},transition:{type:"spring",stiffness:300,damping:30,duration:.3},className:"rounded-lg border border-amber-200 bg-amber-50 p-4",children:a.jsxs("div",{className:"flex items-start gap-3",children:[a.jsx("div",{className:"flex-shrink-0",children:a.jsx("div",{className:"h-5 w-5 rounded-full bg-amber-100 flex items-center justify-center",children:a.jsx("span",{className:"text-amber-600 text-sm font-medium",children:"💡"})})}),a.jsxs("div",{className:"flex-1",children:[a.jsx("h4",{className:"text-sm font-medium text-amber-800",children:"Let's try again with a better description"}),a.jsx("p",{className:"mt-1 text-sm text-amber-700",children:h}),a.jsx("p",{className:"mt-2 text-xs text-amber-600",children:"Refine your description above and try again, or use the manual builder if you prefer. Be sure to check what fields are available in the manual builder."})]})]})},"error-display")}),a.jsxs("div",{className:"space-y-4 flex flex-col items-center",children:[a.jsxs(jd,{mode:"wait",children:[u&&a.jsx(gk.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:-20},transition:{type:"spring",stiffness:400,damping:25,duration:.25},children:a.jsx(ooe,{children:a.jsx("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:a.jsx(gk.div,{animate:{rotate:360},transition:{duration:2,repeat:1/0,ease:"linear"},children:a.jsx(fd,{})})})})},"loading-state"),!u&&a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{type:"spring",stiffness:300,damping:30,duration:.3},className:"w-full max-w-2xl",children:a.jsx(ooe,{children:a.jsx(vge,{placeholder:"Describe your target audience...",className:"min-h-[120px] resize-none w-full",value:s,onChange:e=>l(e.target.value),disabled:u})})},"input-state")]}),a.jsx(jd,{mode:"wait",children:!u&&a.jsxs(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{type:"spring",stiffness:300,damping:30,duration:.3,delay:.1},className:"flex justify-center gap-2",children:[d&&a.jsx(gk.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{type:"spring",stiffness:400,damping:25,duration:.25},children:a.jsx(Wa,{variant:"outline",onClick:()=>{m(!1),p(void 0)},disabled:u,children:"Try Again"})}),a.jsxs(Wa,{onClick:async()=>{if(!s)return void y({title:"Please enter a description",description:"Please enter a description of your target audience",variant:"destructive"});c(!0),m(!1),p(void 0);const a=await(async e=>(await aS(`${Tk}/text-to-segment`,{method:"POST",body:JSON.stringify(e)})).data)({text:s,userCustomVerb:qx("engage:user")});if(k({message:"💬 New AI Segment requested",product:"engage",details:{userInput:s,response:a}}),a.success&&a.conditions){if(0===a.conditions.length)return m(!0),p("Received empty segment conditions from AI. This might indicate a system issue."),y({title:`${qx("engage:segment")} build failed`,description:"Something unexpected happened. Please try again or use manual builder.",variant:"destructive"}),void e(!1);f({conditions:a.conditions,title:a.title,description:a.description})}else m(!0),p(a.failureReason);c(!1)},disabled:u||!s.trim(),children:[a.jsx(fe,{className:"h-4 w-4"}),d?"Generate Again":`Generate ${qx("engage:segment")}`]}),a.jsx(Wa,{variant:"ghost",onClick:()=>{e(!1)},disabled:u,children:"Cancel"})]},"button-group")})]})]})};function OEe({segmentId:e,setOpen:n,onSegmentUpdated:t,viewOnly:i=!1}){const{toast:o}=Ck(),{data:s}=rS(),l=void 0===e,[u,c]=r.useState(!1),[d,m]=r.useState(null),{segment:h,isLoading:p}=Loe(e||""),{updateSegment:g}=(e=>{const a=jb(),n=Kb({mutationFn:a=>{if(!e)throw new Error("Segment ID is required");return Moe(e,a)},onSuccess:()=>{a.invalidateQueries({queryKey:Eoe.all})}});return{updateSegment:n.mutate,isUpdating:n.isPending,updateError:n.error,isUpdateSuccess:n.isSuccess}})(e),{createSegment:f,isCreating:v,segmentsConditions:y}=joe(),[k,b]=r.useState(!1),[S,w]=r.useState(!i&&!!l);if(r.useEffect((()=>{if(y)if(h){const e=h.conditions.map((e=>({field:e.field,operator:e.operator,value:e.value})));m({version:"1.0",id:h.id,name:h.name,description:h.description,logic:"AND",conditions:e,type:h.type})}else m((e=>({version:"1.0",id:"",name:e?.name||"",description:e?.description||"",logic:"AND",conditions:[{field:y.conditions[0].field,operator:y.conditions[0].operators[0],value:[]}],type:xoe.CUSTOM})))}),[h,y]),!y||p||!d)return a.jsx("div",{className:"flex h-full items-center justify-center",children:a.jsx(fd,{})});const A=e=>e.value.some((e=>"object"==typeof e&&"type"in e&&"relative"===e.type)),C=e=>e.value.some((e=>"object"==typeof e&&"startDate"in e&&"endDate"in e));return a.jsxs(a.Fragment,{children:[a.jsx(DEe,{segmentId:e,setOpen:n,setTextToSegment:b,promptBuilderStyle:S,textToSegment:k,viewOnly:i},"segment-builder-header"),!i&&S?a.jsx(ooe,{className:"flex-1 flex items-center justify-center",children:a.jsx(ZTe,{onSelectStyle:e=>{"ai"===e&&b(!0),w(!1)}})},"prompt-builder-style"):a.jsx(ooe,{className:"flex-1 flex flex-col overflow-hidden",children:a.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[a.jsx("div",{className:"flex flex-1 flex-col px-8 py-2 overflow-hidden",children:a.jsx("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden",children:a.jsx(jd,{children:!i&&k?a.jsx(ooe,{className:"flex items-center justify-center min-h-full",children:a.jsx(zEe,{setTextToSegment:b,setSegment:e=>{m((a=>a?{...a,conditions:e}:null))},setSegmentName:e=>{m((a=>{if(!a)return null;return{...a,name:e}}))},setSegmentDescription:e=>{m((a=>{if(!a)return null;return{...a,description:e}}))},currentSegment:d})}):a.jsx(a.Fragment,{children:a.jsx(REe,{segment:d,setSegment:m,segmentsConditions:y,updateCondition:(e,a)=>{const n=[...d.conditions];n[e]=a,m({...d,conditions:n})},duplicateCondition:e=>{const a=[...d.conditions];a.splice(e+1,0,{...d.conditions[e]}),m({...d,conditions:a})},deleteCondition:e=>{const a=d.conditions.filter(((a,n)=>n!==e));m({...d,conditions:a})},addCondition:()=>{m({...d,conditions:[...d.conditions,{field:y.conditions[0].field,operator:y.conditions[0].operators[0],value:[]}]})},businessId:s?.id??"",viewOnly:i,segmentType:h?.type,existingSegmentConditions:h?.conditions})})})})}),a.jsx("div",{className:"border-t px-8 py-4",children:a.jsxs("div",{className:"flex items-center justify-between",children:[!i&&k&&a.jsxs(Wa,{variant:"secondary",onClick:()=>b(!1),children:[a.jsx(ce,{className:"h-4 w-4"}),"Manual Builder"]}),a.jsx("div",{className:"flex gap-2 ml-auto",children:i?a.jsx(Wa,{variant:"default",onClick:()=>n(!1),children:"Close"}):a.jsxs(a.Fragment,{children:[a.jsx(Wa,{variant:"destructive",onClick:()=>n(!1),children:"Cancel"}),a.jsx(Wa,{variant:"default",onClick:async()=>{if(!d.name)return void o({title:"Name is required",description:"Please ensure all fields are filled out",variant:"destructive"});const{valid:a,error:i}=(e=>{for(const a of e){if(!a.field||!a.operator)return{valid:!1,error:"Please ensure all fields are filled out for condition"};if(a.operator!==Noe.EXISTS&&a.operator!==Noe.NOT_EXISTS&&0===a.value.length)return{valid:!1,error:`Please ensure a value is selected for ${a.field}`};if((a.operator===Noe.EXISTS||a.operator===Noe.NOT_EXISTS)&&a.value.length>0)return{valid:!1,error:`EXISTS or NOT_EXISTS operator can only be used with an empty array for ${a.field}`};if(A(a)&&a.operator!==Noe.EQUALS_MONTH_DAY&&a.operator!==Noe.EQUALS_MONTH_DAY_YEAR&&a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR&&a.operator!==Noe.GREATER_THAN&&a.operator!==Noe.LESS_THAN)return{valid:!1,error:`Relative dates can only be used with the month and day or month, day, and year operator for ${a.field}`};if(A(a)&&void 0===a.value[0].value)return{valid:!1,error:`Please select a value for the relative date for ${a.field}`};if(C(a)&&a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR)return{valid:!1,error:`Between dates can only be used with the between month day or between month day year operator for ${a.field}`};if(C(a)&&a.value.length>1)return{valid:!1,error:`Between dates can only have a single value for ${a.field}`};if(C(a)){const e=a.value[0];if(!e.startDate||!e.endDate)return{valid:!1,error:`Please ensure both a start and end date are selected for ${a.field}`};if(e.startDate instanceof Date&&e.endDate instanceof Date&&e.startDate>e.endDate)return{valid:!1,error:`Start date must be before end date for ${a.field}`};if("object"==typeof e.startDate&&"type"in e.startDate&&"relative"===e.startDate.type&&"object"==typeof e.endDate&&"type"in e.endDate&&"relative"===e.endDate.type){if(!e.startDate.value||!e.endDate.value)return{valid:!1,error:`Please ensure both a start and end date are selected for ${a.field}`};if(a.operator!==Noe.BETWEEN_MONTH_DAY&&a.operator!==Noe.BETWEEN_MONTH_DAY_YEAR&&e.startDate.direction!==e.endDate.direction)return{valid:!1,error:`Start and end date must be in the same direction (both in the past or both in the future) for ${a.field}`};const n=e=>{if(e.unit===qTe.DAYS)return e.value??0;throw poe(e.unit,qTe)};if(a.operator===Noe.BETWEEN_MONTH_DAY||a.operator===Noe.BETWEEN_MONTH_DAY_YEAR){const n=new Date,t=new Date(n),i=new Date(n);if(t.setDate("before"===e.startDate.direction?n.getDate()-e.startDate.value:n.getDate()+e.startDate.value),i.setDate("before"===e.endDate.direction?n.getDate()-e.endDate.value:n.getDate()+e.endDate.value),t>=i)return{valid:!1,error:`Start date must be before end date for ${a.field}`}}else{if("before"===e.startDate.direction&&n(e.startDate)<=n(e.endDate))return{valid:!1,error:`Start date must be before end date for ${a.field}`};if("after"===e.startDate.direction&&n(e.startDate)>=n(e.endDate))return{valid:!1,error:`Start date must be before end date for ${a.field}`}}}}}return{valid:!0,error:void 0}})(d.conditions);if(!a)return void o({title:"Conditions are invalid",description:i??"Please ensure all fields are filled out",variant:"destructive"});const r=d.conditions.map((e=>{const a=y?.conditions.find((a=>a.field===e.field));return a?.type===Toe.Date&&(e.value=e.value.map((e=>e instanceof Date?e.toISOString().split("T")[0]:e))),e}));c(!0);try{e&&h?g({name:d.name,description:d.description,conditions:r},{onSuccess:()=>{o({title:`${qx("engage:segment")} updated successfully`}),n(!1),t?.(e)},onError:()=>{o({title:`Error updating ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}}):f({name:d.name,description:d.description,conditions:d.conditions},{onSuccess:e=>{o({title:`${qx("engage:segment")} created successfully`}),t?.(e?.id??!1),n(!1)},onError:()=>{o({title:`Error creating ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}})}catch(s){o({title:`Error saving ${qx("engage:segment")}`,description:"Please try again",variant:"destructive"}),t?.("error")}finally{c(!1)}},disabled:u||v,children:u||v?a.jsxs(a.Fragment,{children:[a.jsx(V,{className:"mr-2 h-4 w-4 animate-spin"}),e?"Updating...":"Creating..."]}):e?"Update":"Create"})]})})]})})]})},"manual-builder-style")]})}function KEe({open:e,setOpen:n,segmentId:t,onSegmentUpdated:i,viewOnly:r=!1}){return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"flex h-[85vh] w-[85vw] max-w-none flex-col gap-0 overflow-hidden",hideCloseButton:!0,children:[a.jsxs(We,{children:[a.jsxs(Ai,{children:[qx("engage:segment")," Builder"]}),a.jsxs(Ci,{children:["Build a ",qx("engage:segment")," to target your audience"]})]}),a.jsx(OEe,{segmentId:t,setOpen:n,onSegmentUpdated:e=>{i?.(e),n(!1)},viewOnly:r})]})})}const IEe="reach-EstimatedMatchesView-module__learnMoreLink___M-mr-",HEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternative___kBAuQ",FEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternativeText___Sifb-",GEe="reach-EstimatedMatchesView-module__reassuranceBannerAlternativeTitle___rIfFG",VEe=()=>a.jsx(ex,{title:`The total number of ${qx("engage:user",{count:2}).toLocaleLowerCase()} may not match your SMS and email counts because some ${qx("engage:user",{count:2}).toLocaleLowerCase()} may have unsubscribed, invalid contact information, or haven't opted into marketing messages. This number can also change as new ${qx("engage:user",{count:2}).toLocaleLowerCase()} join your segments.`}),JEe=({value:e,label:n,percentage:t,variant:i,isLoading:r,selected:o,onClick:s,tooltip:l})=>a.jsxs(gk.div,{className:`rounded-md border-2 border-muted-foreground/20 px-2 pt-2 pb-3 duration-300 ease-in-out overflow-x-auto max-w-full min-w-0 ${o?"scale-[1.02] [border-color:hsl(var(--reach-primary))] shadow-lg":""} ${s?"cursor-pointer hover:bg-gray-50/50 transition-colors":""}`,style:{containerType:"inline-size"},"data-card-container":!0,onClick:s,layout:!0,children:[a.jsxs("div",{className:"flex flex-col gap-1 items-start w-full min-w-0",children:[a.jsx("div",{className:"flex items-baseline gap-2 w-full min-w-0 @container/num h-8",children:a.jsx(jd,{mode:"wait",children:r?a.jsx(gk.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"flex items-center gap-2 pl-2 h-full",children:a.jsx(fd,{size:"sm",textColor:"text-gray-500"})},"loading"):a.jsxs(gk.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"flex items-center gap-1 h-full",children:[a.jsx("span",{className:"font-semibold pl-2 break-words max-w-full min-w-0 truncate\n text-xl @[250px]/card:text-2xl @[350px]/card:text-3xl @[500px]/card:text-4xl text-primary",children:e.toLocaleString()}),l&&a.jsx(ex,{title:l}),void 0!==t&&e.toLocaleString().replace(/,/g,"").length<5&&a.jsxs("span",{className:"text-muted-foreground/50 text-sm hidden @[120px]/num:inline",children:["(",t,"%)"]})]},"content")})}),a.jsx("span",{className:`px-2 sm:px-2.5 py-1 text-xs font-medium rounded-lg ${{default:"bg-gray-100/50 text-gray-700",blue:"bg-blue-100/50 text-blue-700",green:"bg-green-100/50 text-green-700"}[i]}`,children:n})]}),a.jsx("p",{className:"text-sm text-muted-fore hidden @[250px]/card:inline mt-1",children:1===e?"contact":"contacts"})]}),UEe=({countResponse:e,selectedFilter:t="all",onFilterChange:i,isLoading:r=!1})=>{const o=n.useMemo((()=>e?.recipients?e.recipients.reduce(((a,n)=>({total:e.count,emails:a.emails+(n.email?1:0),phones:a.phones+(n.phone?1:0)})),{total:0,emails:0,phones:0}):{total:0,emails:0,phones:0}),[e]),s=e=>Math.round(e/(o.total||1)*100),l=o.total>Math.max(o.emails,o.phones);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Tge,{children:"Estimated Matches"}),a.jsx(VEe,{})]}),l&&a.jsx("div",{className:HEe,children:a.jsxs("p",{className:FEe,children:[a.jsx("span",{className:GEe,children:"Total vs. Subscribed mismatch?"})," ","Some ",qx("engage:user",{count:2}).toLowerCase()," may have unsubscribed or had hard bounces."," ",a.jsx(ex,{description:"This can happen when customers unsubscribe, emails bounces, or contact info is missing. This is normal and expected.",size:"small",iconColor:"text-muted-foreground",children:a.jsx("span",{className:IEe,children:"Learn more"})})]})}),a.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 md:mb-6 w-full gap-4 mt-3 px-1",children:[a.jsx(JEe,{value:o.total,label:"Total",variant:"default",isLoading:r||void 0===e,selected:"all"===t,onClick:i?()=>i("all"):void 0,tooltip:`Total includes all ${qx("engage:user",{count:2}).toLocaleLowerCase()} in your system. This does not factor in ${qx("engage:user",{count:2}).toLocaleLowerCase()} who might have opted out of email or sms.`}),a.jsx(JEe,{value:o.emails,label:"Subscribed to Email",percentage:s(o.emails),variant:"blue",isLoading:r||void 0===e,selected:"email"===t,onClick:i?()=>i("email"):void 0}),a.jsx(JEe,{value:o.phones,label:"Subscribed to SMS",percentage:s(o.phones),variant:"green",isLoading:r||void 0===e,selected:"phone"===t,onClick:i?()=>i("phone"):void 0})]})]})},WEe=({onSelectionChange:e,defaultValue:t=UTe.ALL,canEditAudience:i=!0})=>{const[r,o]=n.useState(t),s=a=>{i&&(o(a),e?.(a))};return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Tge,{children:"Filter"}),!i&&a.jsx(ex,{title:"You cannot edit the audience unless you are in draft mode"})]}),a.jsxs("div",{className:"grid grid-cols-3 gap-4 p-1",children:[a.jsx("div",{id:"all-users-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.ALL),title:`All ${qx("engage:user",{count:2})}`,subtitle:"Send to everyone",icon:a.jsx(sM.UsersIcon,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"all"===r,disabled:!i,hideSelectedText:!0})}),a.jsx("div",{id:"segments-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.SEGMENTS),title:`Select ${qx("engage:segment",{count:2})}`,subtitle:`Choose from ${qx("engage:segment",{count:2})}`,icon:a.jsx(sM.UserEdit,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"segments"===r,disabled:!i,hideSelectedText:!0})}),a.jsx("div",{id:"individual-users-selector",children:a.jsx(Joe,{className:"h-32",onClick:()=>s(UTe.INDIVIDUAL),title:"Select Individual",subtitle:`Pick ${qx("engage:user",{count:2}).toLowerCase()} one by one`,icon:a.jsx(sM.UserIcon,{className:"w-5 h-5 mb-2 text-gray-600"}),selected:"individual"===r,disabled:!i,hideSelectedText:!0})})]})]})},qEe=e=>{const a=`${e.firstName||""} ${e.lastName||""}`.trim();return a||(e.firstName?e.firstName:e.lastName?e.lastName:e.email?e.email:e.phone?e.phone:"Unnamed User")},ZEe=({selectedUserIds:e,onUserSelectionChange:t,canEditAudience:i=!0})=>{const[r,o]=n.useState(e),[s,l]=n.useState(),[u,c]=n.useState(!0),{segments:d}=_oe();n.useEffect((()=>{o(e)}),[e]),n.useEffect((()=>{(async()=>{if(!d)return void c(!1);if(s?.recipients)return void c(!1);const e=d.find((e=>e.type===xoe.ALL_USERS));if(e){c(!0);try{const a=await Coe({includeSegments:[e.id],excludeSegments:[]});l(a)}catch(a){}finally{c(!1)}}else c(!1)})()}),[d,s?.recipients]);const m=n.useMemo((()=>s?.recipients?s.recipients.map((e=>({label:qEe(e),value:e.externalId}))):[]),[s?.recipients]);return a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-medium text-gray-900",children:"Select Individual Users"}),a.jsx("p",{className:"text-sm text-gray-500",children:"Choose specific users to include in your automation"})]}),e.length>0&&a.jsxs("div",{className:"text-sm text-gray-500",children:[e.length," user",1!==e.length?"s":""," selected"]})]}),a.jsx(pTe,{options:[{category:"Users",items:m}],onValueChange:e=>{o(e),t(e)},selectedValues:r,setSelectedValues:o,isLoading:u,placeholder:"Select users...",title:"Select Individual Users",searchPlaceholder:"Search users...",emptyMessage:"No users found",canOpen:i})]})},$Ee=({segments:e,allSegments:t,onAddSegment:i,onRemoveSegment:r,setOpenCreateSegmentDialog:o,canEditAudience:s=!0})=>{const[l,u]=n.useState(!1),[c,d]=n.useState([]),m=t.map((e=>({label:e.name,value:e.id})));return n.useEffect((()=>{d(e)}),[e]),n.useEffect((()=>{if(0===t.length){u(!0);const e=setTimeout((()=>{u(!1)}),100);return()=>clearTimeout(e)}u(!1)}),[t.length]),a.jsx("div",{children:a.jsx(pTe,{canOpen:s,selectedValues:c,setSelectedValues:d,options:[{category:"Segments",items:m}],onValueChange:a=>{const n=a.filter((a=>!e.includes(a))),t=e.filter((e=>!a.includes(e)));n.forEach(i),t.forEach(r)},isLoading:l,placeholder:`Select ${qx("engage:segment",{count:2})}`,maxCount:5,title:`Select ${qx("engage:segment",{count:2})}`,extraCommandItems:[e=>a.jsxs("div",{onClick:()=>{e(!0),o(!0)},className:"cursor-pointer flex items-center gap-2 px-3 py-2 hover:bg-gray-100 rounded-md transition-colors",children:[a.jsx(sM.PlusIcon,{className:"w-4 h-4"}),"New"]},"new-segment")]})})},YEe=({includedSegments:e,excludedSegments:t,handleAddSegment:i,handleRemoveSegment:r,setOpenCreateSegmentDialog:o,segments:s,defaultIsExcludeOpen:l=!1,canEditAudience:u=!0})=>{const[c,d]=n.useState(l);return a.jsxs("div",{children:[a.jsx($Ee,{segments:e,allSegments:s||[],onAddSegment:e=>i(e,"include"),onRemoveSegment:e=>r(e,"include"),setOpenCreateSegmentDialog:o,canEditAudience:u}),a.jsx("div",{className:"border-t border-gray-200 my-8"}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs(Wa,{onClick:()=>{u&&d(!c)},className:"flex items-center gap-1 transition-colors",size:"sm",children:[a.jsx(gk.div,{animate:{rotate:c?180:0},transition:{duration:.2},children:a.jsx(sM.DropdownMenuTrigger,{className:"w-5 h-5"})}),a.jsx("span",{children:"Don't send to"})]}),a.jsx(jd,{children:c&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2,ease:"easeInOut"},children:a.jsx($Ee,{canEditAudience:u,segments:t,allSegments:s||[],onAddSegment:e=>i(e,"exclude"),onRemoveSegment:e=>r(e,"exclude"),setOpenCreateSegmentDialog:o})})})]})]})},QEe=({title:e="Preview Audience"})=>{const t=zoe(),[i,r]=n.useState(UTe.ALL),[o,s]=n.useState(t?.includeSegmentIds||[]),[l,u]=n.useState(t?.excludeSegmentIds||[]),[c,d]=n.useState([]),[m,h]=n.useState(!1),[p,g]=n.useState(!1),[f,v]=n.useState("all"),{segments:y,isLoading:k}=_oe(),{updateAutomation:b}=qN(t?.id??""),[S,w]=n.useState(void 0),[A,C]=n.useState(!1),[M,T]=n.useState(null),x=n.useCallback((e=>{if(M&&clearTimeout(M),e)C(!0);else{const e=setTimeout((()=>{C(!1)}),100);T(e)}}),[M]),N=1===o.length&&0===l.length&&void 0!==y?.find((e=>e.type===xoe.ALL_USERS&&e.id===o[0])),E=1!==o.length||0!==l.length||N?"":o[0],{segment:j}=Loe(E),_=j?.type===xoe.ONE_OFF;n.useEffect((()=>{(async()=>{if(t&&!p&&!1===k){if(1===o.length&&void 0!==y.find((e=>e.type===xoe.ALL_USERS&&e.id===o[0])))r(UTe.ALL);else if(_&&j){if(r(UTe.INDIVIDUAL),j.conditions){const e=[];j.conditions.forEach((a=>{"userId"===a.field&&a.operator===Noe.EQUALS&&a.value.forEach((a=>{"string"==typeof a&&e.push(a)}))})),d(e)}}else r(UTe.SEGMENTS);x(!0),Coe({includeSegments:o,excludeSegments:l}).then((e=>{w(e),x(!1)})).catch((e=>{x(!1)})),g(!0)}})()}),[t,N,_,p,o,l,y,k,j,x]);n.useEffect((()=>{if(t&&p){if(i===UTe.INDIVIDUAL&&0===o.length&&0===l.length)return;JSON.stringify(o)===JSON.stringify(t.includeSegmentIds)&&JSON.stringify(l)===JSON.stringify(t.excludeSegmentIds)||(b({includeSegments:o,excludeSegments:l}),x(!0),Coe({includeSegments:o,excludeSegments:l}).then((e=>{w(e),x(!1)})).catch((e=>{x(!1)})))}}),[o,l,t,p,b,i,x]);n.useEffect((()=>()=>{M&&clearTimeout(M)}),[M]);const P=t?.status===FN.DRAFT;return a.jsxs(HTe,{title:e,children:[!k&&y&&p?a.jsxs("div",{className:"flex gap-6 w-full pb-4 px-4 min-h-0",children:[a.jsxs("div",{className:"w-1/2 min-h-0 flex flex-col gap-6",children:[a.jsx(UEe,{countResponse:S,selectedFilter:f,onFilterChange:v,isLoading:A}),a.jsx(WEe,{onSelectionChange:async e=>{if(r(e),e===UTe.ALL){const e=y?.find((e=>e.type===xoe.ALL_USERS));if(!e)return;s([e.id]),u([]),d([])}else if(e===UTe.INDIVIDUAL){if(t?.id)try{const e=WTe(t.id);let n;try{n=await zN(e)}catch(a){}if(n){if(s([n.id]),u([]),n.conditions){const e=[];n.conditions.forEach((a=>{"userId"===a.field&&a.operator===Noe.EQUALS&&a.value.forEach((a=>{"string"==typeof a&&e.push(a)}))})),d(e)}}else{const a=await Aoe({name:e,description:"One-off segment for individual user selection",type:xoe.ONE_OFF,conditions:[{field:"userId",operator:Noe.EQUALS,value:[]}]});a?.id&&(s([a.id]),u([]))}}catch(a){}}else e===UTe.SEGMENTS&&(s([]),u([]),w({count:0,recipients:[]}))},defaultValue:i,canEditAudience:P}),a.jsx(jd,{children:i===UTe.SEGMENTS&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3,ease:"easeInOut"},className:"w-full",children:a.jsx(YEe,{canEditAudience:P,includedSegments:o,excludedSegments:l,handleAddSegment:(e,a)=>{"include"===a?s((a=>[...a,e])):u((a=>[...a,e]))},handleRemoveSegment:(e,a)=>{"include"===a?s((a=>a.filter((a=>a!==e)))):u((a=>a.filter((a=>a!==e))))},setOpenCreateSegmentDialog:h,segments:y,defaultIsExcludeOpen:l.length>0})})}),a.jsx(jd,{children:i===UTe.INDIVIDUAL&&a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.3,ease:"easeInOut"},className:"w-full",children:a.jsx(ZEe,{countResponse:S,selectedUserIds:c,onUserSelectionChange:async e=>{if(d(e),t?.id)try{const n=WTe(t.id);let i;try{i=await zN(n)}catch(a){}if(i){i=await Moe(i.id,{conditions:e.length>0?[{field:"userId",operator:Noe.EQUALS,value:e}]:[{field:"userId",operator:Noe.EQUALS,value:[]}]})}else i=await Aoe({name:n,description:"One-off segment for individual user selection",type:xoe.ONE_OFF,conditions:e.length>0?[{field:"userId",operator:Noe.EQUALS,value:e}]:[{field:"userId",operator:Noe.EQUALS,value:[]}]});if(i?.id){await b({includeSegments:[i.id],excludeSegments:[]}),await new Promise((e=>setTimeout(e,100))),x(!0);const e=await Coe({includeSegments:[i.id],excludeSegments:[]});w(e),x(!1)}}catch(a){}},canEditAudience:P})})})]}),a.jsx("div",{className:"w-1/2 min-h-0 flex flex-col",children:a.jsx(YTe,{recipients:S?.recipients||[],filter:f,audienceMode:i,isLoading:A})})]}):a.jsx("div",{children:a.jsx(fd,{text:["Fetching segments","Finishing up"]})}),a.jsx(KEe,{open:m,setOpen:h,onSegmentUpdated:e=>{e&&s((a=>[...a,e]))}})]})},XEe=()=>a.jsx("div",{id:"wizard-select-audience-step",children:a.jsx("div",{id:"wizard-audience-title-container",children:a.jsx(QEe,{title:"Select Audience"})})}),eje=({selectedChannels:e,setSelectedChannels:t,hasEmailChannelSenders:i,automationType:r,hideSms:o})=>{const{toast:s}=Ck(),l=[...i?[{label:"Email",value:"email",icon:sM.EmailIcon,checked:e.includes("email")}]:[],...o?[]:[{label:"SMS",value:"sms",icon:sM.SmsIcon,checked:e.includes("sms")}]];return n.useEffect((()=>{o&&i&&!e.includes("email")&&t(["email"])}),[o,i,e,t]),a.jsxs("div",{className:"space-y-6",children:[a.jsx("div",{className:"text-center",children:a.jsxs("p",{className:"text-muted-foreground text-sm",children:["Select the channels you want to use in this"," ",r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()]})}),a.jsx("div",{id:"wizard-channel-options-container",className:"w-full grid gap-4 max-w-2xl mx-auto "+(o?"grid-cols-1":"grid-cols-2"),children:l.map((n=>a.jsx(aTe,{id:`wizard-channel-option-${n.value}`,checked:n.checked,onCheckedChange:()=>{"email"===n.value?e.includes("email")?e.includes("sms")?t(["sms"]):s({title:"Cant Remove Email",description:`At least one channel is required for an ${r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()}`,variant:"destructive"}):t([...e,"email"]):e.includes("sms")?e.includes("email")?t(["email"]):s({title:"Cant Remove SMS",description:`At least one channel is required for an ${r===ON.ONE_TIME?qx("engage:broadcast").toLowerCase():qx("engage:automation").toLowerCase()}`,variant:"destructive"}):t([...e,"sms"])},className:"relative ring-[1px] ring-border rounded-xl px-6 py-6 text-start text-muted-foreground data-[state=checked]:ring-2 data-[state=checked]:ring-primary data-[state=checked]:font-medium hover:ring-2 hover:ring-primary/50 transition-all duration-200",children:a.jsxs("div",{className:"flex flex-col items-center text-center space-y-3",children:[a.jsx("div",{className:"w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center",children:a.jsx(n.icon,{className:"w-6 h-6 text-primary",size:24})}),a.jsxs("div",{className:"space-y-1",children:[a.jsx("span",{className:"font-semibold text-lg tracking-tight text-foreground block",children:n.label}),a.jsx("span",{className:"text-sm text-muted-foreground block",children:"email"===n.value?"Send rich content via email":"Send quick messages via text"})]}),a.jsx(nTe,{className:"absolute top-3 right-3",children:a.jsx(x,{className:"w-5 h-5 fill-primary text-primary-foreground"})})]})},n.value)))})]})},aje=({hideSms:e})=>{const{channelSenders:t}=CC(),{channelAccounts:i}=SC(),r=Ooe(),{updateCommunicationGroup:o}=Qx(),{state:{selectedChannels:s},setSelectedChannels:l}=n.useContext(ege),u=zoe(),{data:c}=cN(),d=n.useMemo((()=>TC({channelSenders:t?.results??[],channelAccounts:i?.results??[]})),[t?.results,i?.results]),m=n.useMemo((()=>vN({channelSenders:t?.results??[],channelAccounts:i?.results??[],smsApplication:c})),[t?.results,i?.results,c]),h=n.useCallback((async e=>{if(l(e),r?.id)if(e.includes("email")){if(d.length>0&&!r.emailChannelSenderId){const e=d[0];o({groupId:r?.id,params:{emailChannelSenderId:e.channelSenderId}})}}else o({groupId:r?.id,params:{emailChannelSenderId:null}});if(r?.id)if(e.includes("sms")){if(m.length>0&&!r.smsChannelSenderId){const e=m[0];o({groupId:r?.id,params:{smsChannelSenderId:e.channelSender.id}})}}else o({groupId:r?.id,params:{smsChannelSenderId:null}})}),[l,o,r?.id,r?.emailChannelSenderId,r?.smsChannelSenderId,d,m]);if(!s||void 0===d||void 0===m)return a.jsx("div",{className:"flex justify-center items-center h-full bg-white rounded-2xl w-full border border-gray-200 p-6 relative",children:a.jsx(fd,{text:["Fetching Content..."]})});const p=d.length>0;return a.jsx("div",{id:"wizard-channel-selection",className:"flex flex-col h-full w-full space-y-4 justify-center",children:a.jsxs("div",{className:"flex flex-col space-y-6",children:[a.jsx("div",{className:"text-center space-y-2",children:a.jsx("h3",{id:"wizard-channel-selection-heading",className:"text-3xl font-semibold text-foreground tracking-tight",children:"Message Channels"})}),a.jsx("div",{className:"flex justify-center",children:a.jsx(eje,{automationType:u?.triggerMetadata?.triggerType,selectedChannels:s,setSelectedChannels:h,hasEmailChannelSenders:p,hideSms:e})})]})})};var nje=(e=>(e[e.SelectChannels=1]="SelectChannels",e[e.ContentBuilderStyle=2]="ContentBuilderStyle",e[e.AIPrompt=3]="AIPrompt",e[e.EditEmailContent=4]="EditEmailContent",e[e.EditSmsContent=5]="EditSmsContent",e[e.SelectAudience=6]="SelectAudience",e[e.Schedule=7]="Schedule",e[e.PreviewAndSend=8]="PreviewAndSend",e))(nje||{});const tje="https://assets.embedreach.com/defaults/logo-placeholder-128.png",ije="You have not uploaded a custom logo. Please make sure to double check your email before sending!",rje=e=>{const a=zoe(),t=Ooe(),{state:{selectedChannels:i,contentBuilderStyle:r}}=n.useContext(ege),{data:o}=cN(),{channelSenders:s}=CC(),{channelAccounts:l}=SC(),u=vN({channelSenders:s?.results??[],channelAccounts:l?.results??[],smsApplication:o}),c=n.useCallback((async n=>a?await(async e=>{const{currentStep:a,automation:n,communicationGroup:t,selectedChannels:i,smsChannelSenders:r,contentBuilderStyle:o,isScheduleLoading:s=!1}=e;switch(a){case nje.SelectChannels:return 0===i.length?{canMove:!1,errorMessage:"Please select at least one channel"}:{canMove:!0,errorMessage:null};case nje.ContentBuilderStyle:return o?{canMove:!0,errorMessage:null}:{canMove:!1,errorMessage:"Please select a content builder style"};case nje.AIPrompt:return{canMove:!0,errorMessage:null};case nje.SelectAudience:return{canMove:n.includeSegmentIds.length>0,errorMessage:"Please ensure you have selected at least one segment"};case nje.EditSmsContent:{const e=n.actionData?.find((e=>"send_communication"===e.actionType));if(!e)return{canMove:!1,errorMessage:"Please ensure you have selected either a email communication or text communication"};if(!t)return{canMove:!1,errorMessage:"Please ensure you have selected a communication group"};const a=r.find((e=>e.channelSender.id===t.smsChannelSenderId));return a||t.emailChannelSenderId?t.smsMessageBody?a&&a.smsApplication&&a.smsApplication.status!==fN.APPROVED?{canMove:!0,errorMessage:null,warningMessage:"You will only be able to send this message once your SMS application is approved"}:{canMove:!0,errorMessage:null}:{canMove:!1,errorMessage:"Please ensure you have a text body"}:{canMove:!1,errorMessage:"Please ensure you have selected a text sender"}}case nje.EditEmailContent:{const e=n.actionData?.find((e=>"send_communication"===e.actionType));if(!e)return{canMove:!1,errorMessage:"Please ensure you have selected either a email communication or text communication"};if(!t)return{canMove:!1,errorMessage:"Please ensure you have selected a communication group"};if(!t.emailChannelSenderId&&!t.smsChannelSenderId)return{canMove:!1,errorMessage:"Please ensure you have selected an email or SMS sender"};if(!t.emailHtmlBody||!t.emailSubject)return{canMove:!1,errorMessage:"Please ensure you have a email body and subject"};let a=null;return t.emailChannelSenderId&&t.emailHtmlBody&&t.emailHtmlBody.includes(tje)&&(a=ije),{canMove:!0,errorMessage:null,warningMessage:a}}case nje.Schedule:{if(s)return{canMove:!0,errorMessage:null,warningMessage:"Schedule selection is being processed..."};if(!n.triggerMetadata)return{canMove:!1,errorMessage:"Please make sure to select a time to send before starting!"};if(n.triggerMetadata.triggerType!==ON.ONE_TIME)return{canMove:Boolean(n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),errorMessage:null};if(!n.triggerMetadata?.scheduledAt)return{canMove:!1,errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`};if(!Boolean(n.triggerMetadata?.scheduledAt&&("now"===n.triggerMetadata.scheduledAt||"now"!==n.triggerMetadata.scheduledAt&&new Date(n.triggerMetadata.scheduledAt)>new Date)))return{canMove:!1,errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`};if(!Boolean(n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))))return{canMove:!1,errorMessage:"Please ensure you have set a valid email or sms communication"};const e=n.triggerMetadata;return{canMove:Boolean(e.scheduledAt&&("now"===e.scheduledAt||new Date(e.scheduledAt)>new Date)&&n.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),errorMessage:`Please ensure you have set a valid future date for your ${qx("engage:broadcast")}`}}case nje.PreviewAndSend:return{canMove:!0,errorMessage:null};default:Vde(a,nje)}})({currentStep:n,automation:a,communicationGroup:t,selectedChannels:i,smsChannelSenders:u,contentBuilderStyle:r,isScheduleLoading:e}):{canMove:!1,errorMessage:`${qx("engage:broadcast")} not loaded`}),[a,t,i,u,r,e]);return{validateStep:c}},oje=({onFinish:e,getExtraMergeFields:t,onBeforeSchedule:i,hideSms:r})=>{const o=zoe(),s=Ooe(),{updateAutomation:l,isUpdating:u}=qN(o?.id||""),{estimatedMatchesStats:c,isLoading:d}=(e=>{const a=e?.id,{data:t,isLoading:i}=nE({automationId:a??""}),r=n.useMemo((()=>({estimatedEmails:t?.estimatedEmails??0,estimatedSms:t?.estimatedSms??0})),[t]);return{estimatedMatches:t,estimatedMatchesStats:r,isLoading:i}})(o??void 0),{generateNameAndDescription:m,isGeneratingNameAndDescription:h}=tE(),{refetchAutomation:p}=JN(o?.id||""),{state:{selectedChannels:g,contentBuilderStyle:f}}=n.useContext(ege),[v,y]=n.useState([]),{data:k}=cN(),[b,S]=n.useState(!1),{channelSenders:w}=CC(),{channelAccounts:A}=SC(),{updateCommunicationGroup:C}=Qx(),{resetCommunicationGroup:M}=Xx(),T=n.useRef(!1),[x,N]=n.useState(""),[E,j]=n.useState(!1),_=n.useRef(null),[P,L]=n.useState(!1),[B,R]=n.useState(!1),{validateStep:D}=rje(u),z=n.useMemo((()=>{if(!o||B)return!1;const e=o.name?.includes("Broadcast")||o.name?.includes("automation")||!o.name||""===o.name.trim(),a=!o.description||""===o.description.trim();return e&&a}),[o,B]),O=n.useMemo((()=>vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k})),[w?.results,A?.results,k]),K=n.useCallback((async e=>{try{if(s?.id){const a={};e.email&&(a.emailHtmlBody=e.email.html,a.emailCss=e.email.css,a.emailCompiledHtml=e.email.compiledEmail,a.emailSubject=e.email.subject,a.emailPreviewText=e.email.previewText),e.sms&&(a.smsMessageBody=e.sms.body,O.length>0&&(a.smsChannelSenderId=O[0].channelSender.id)),Object.keys(a).length>0&&C({groupId:s.id,params:a},{onSuccess:()=>{(e.name||e.description)&&l({name:e.name||o?.name||"",description:e.description||o?.description||""},{onSuccess:()=>{R(!0)},onError:e=>{}}),M({communicationGroupId:s.id,emailHtmlBody:!!e.email||null,emailTextBody:!!e.email||null,textMessageBody:!!e.sms||null}),Ak({title:"Content Generated Successfully",description:"AI content has been applied to your automation.",variant:"default"}),g.includes("email")?H(nje.EditEmailContent):g.includes("sms")?H(nje.EditSmsContent):H(nje.SelectAudience)},onError:()=>{Ak({title:"Error Applying Content",description:"Failed to apply AI-generated content. Please try again.",variant:"destructive"})}})}}catch(a){Ak({title:"Error Applying Content",description:"Failed to apply AI-generated content. Please try again.",variant:"destructive"})}finally{j(!1)}}),[s?.id,C,M,g,O,l,o?.name,o?.description]),[I,H]=n.useState(nje.SelectChannels);if(n.useEffect((()=>{if(null!==o&&null!==s){const e=vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k});y((({automation:e,communicationGroup:n,selectedChannels:t,smsChannelSenders:i,contentBuilderStyle:r,onAIContentGeneration:o,aiPrompt:s="",onAiPromptChange:l,aiContentPromptRef:u,hideSms:c})=>{if(!e)return[];const d=[{id:"select-channels",title:"Message Channels",step:1,isValid:()=>t.length>0,content:a.jsx(gge,{content:a.jsx(aje,{hideSms:c})},"select-channels"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!0,backDisabled:!1,nextDisabled:()=>0===t.length}},{id:"content-builder-style",title:"Content Builder Style",step:2,isValid:()=>!!r,content:a.jsx(gge,{content:a.jsx(xge,{})},"content-builder-style"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!r}}];return r===Xpe.AI&&d.push({id:"ai-prompt",title:"AI Prompt",step:3,isValid:()=>s.trim().length>0,content:a.jsx(gge,{content:o?a.jsx(bge,{ref:u,onGenerateContent:o,prompt:s,onPromptChange:l||(()=>{})}):a.jsx("div",{children:"AI Content Prompt"})},"ai-prompt"),footerConfig:{backText:"Back",nextText:"Generate",hideBack:!1,backDisabled:!1,nextDisabled:()=>!s.trim()}}),t.includes("email")&&d.push({id:"edit-email-content",title:"Email Content",step:4,isValid:()=>{const a=e.actionData?.find((e=>"send_communication"===e.actionType));return!!a&&!!n.emailChannelSenderId&&!(!n.emailHtmlBody||!n.emailSubject)},content:a.jsx(gge,{content:a.jsx(RMe,{})},"edit-email-content"),footerConfig:{backText:"",nextText:"",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),t.includes("sms")&&!c&&d.push({id:"edit-sms-content",title:"SMS Content",step:5,isValid:()=>{const a=e.actionData?.find((e=>"send_communication"===e.actionType));return!!(a&&a.actionMetadata.communicationGroupId&&n.smsChannelSenderId&&n.smsMessageBody)},content:a.jsx(gge,{content:a.jsx(MTe,{})},"edit-sms-content"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),d.push({id:"audience",title:"Audience",step:6,isValid:()=>e.includeSegmentIds.length>0,content:a.jsx(gge,{content:a.jsx(XEe,{})},"audience"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}}),d.push({id:"schedule",title:"Schedule",step:7,isValid:()=>Boolean(e.triggerMetadata?.triggerType===ON.ONE_TIME&&e.triggerMetadata?.scheduledAt&&("now"===e.triggerMetadata.scheduledAt||"now"!==e.triggerMetadata.scheduledAt&&new Date(e.triggerMetadata.scheduledAt)>new Date)&&e.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),content:a.jsx(gge,{className:"flex-1",content:a.jsx(JTe,{})},"schedule"),footerConfig:{backText:"Back",nextText:"Next",hideBack:!1,backDisabled:!1,nextDisabled:()=>!1}},{id:"send",title:"Send",step:8,isValid:()=>Boolean(e.triggerMetadata?.triggerType===ON.ONE_TIME&&e.triggerMetadata?.scheduledAt&&("now"===e.triggerMetadata.scheduledAt||"now"!==e.triggerMetadata.scheduledAt&&new Date(e.triggerMetadata.scheduledAt)>new Date(Date.now()+18e4))&&e.actionData?.some((e=>"send_communication"===e.actionType&&e.actionMetadata.communicationGroupId))),content:a.jsx(gge,{className:"flex-1",content:a.jsx(ITe,{})},"send"),footerConfig:{backText:"Back",nextText:e.triggerMetadata&&"scheduledAt"in e.triggerMetadata&&"now"===e.triggerMetadata.scheduledAt?"Send Now":"Schedule",hideBack:!1,backDisabled:!1,getInfoTooltipTitle:()=>{const e=i.find((e=>e.channelSender.id===n.smsChannelSenderId));if(e&&null!==e.smsApplication&&e.smsApplication?.status!==fN.APPROVED)return"You cannot send this yet if you have selected a text channel and don't have an approved SMS application. Please save as draft and try again later."},nextDisabled:()=>{const e=i.find((e=>e.channelSender.id===n.smsChannelSenderId));return!(!n.smsChannelSenderId||e&&(null===e.smsApplication||e.smsApplication?.status===fN.APPROVED))||null===n.smsChannelSenderId&&null===n.emailChannelSenderId}}}),d})({automation:o,communicationGroup:s,selectedChannels:g,smsChannelSenders:e,contentBuilderStyle:f,aiPrompt:x,onAiPromptChange:N,aiContentPromptRef:_,onAIContentGeneration:K,hideSms:r}))}}),[o,s,t,g,w?.results,A?.results,k,f,K,x,r]),n.useEffect((()=>{t&&!T.current&&t().then((e=>{s?.id&&(T.current=!0,C({groupId:s?.id,params:{extraMergeFields:e}}))}))}),[t,s,C]),!o||!I||!s)return a.jsx("div",{className:"flex-1 flex flex-col @container justify-center items-center h-[500px]",children:a.jsx(fd,{text:[`Fetching ${qx("engage:broadcast")} data`,"Finishing up"]})});const F=async()=>{!z||B||h?h?L(!0):e():(L(!0),m(o?.id||"",{onSuccess:a=>{R(!0),(a.name||a.description)&&Ak({title:"AI Enhancement Complete",description:"Your automation has been enhanced with AI-generated name and description.",variant:"default"}),p().then((()=>{L(!1),e()})).catch((a=>{L(!1),e()}))},onError:a=>{R(!0),L(!1),e()}}))},G=async()=>{const{canMove:e,errorMessage:a,warningMessage:n}=await D(I);if(!e)return void Ak({title:"Oops!",description:a,variant:"destructive"});if(n&&Ak({title:n,variant:"warning"}),I===nje.PreviewAndSend)return void(await(async()=>{if(null===s.emailChannelSenderId&&null===s.smsChannelSenderId)return void Ak({title:"Oops!",description:"Please select an email sender or sms sender",variant:"destructive"});const e=vN({channelSenders:w?.results??[],channelAccounts:A?.results??[],smsApplication:k});if(s.smsChannelSenderId){const a=e.find((e=>e.channelSender.id===s.smsChannelSenderId));if(a?.smsApplication?.application&&a?.smsApplication.status!==fN.APPROVED)return void Ak({title:"Oops!",description:"You cant schedule a communication with a pending sms application. Please save as a draft and re-try once the application is approved."})}if(i)try{let e=0;for(;d&&e<10;)await new Promise((e=>setTimeout(e,250))),e++;const a=await i({estimatedEmailRecipients:c?.estimatedEmails||0,estimatedSmsRecipients:c?.estimatedSms||0});!0===a?l({status:FN.ACTIVE},{onSuccess:()=>{Ak({title:`${qx("engage:broadcast")} scheduled!`}),F()},onError:()=>{Ak({title:"Oops!",description:"Please contact your administrator",variant:"destructive"})}}):Ak({title:"Oops!",description:a,variant:"destructive"})}catch(a){Ak({title:"Oops!",description:"An error occurred while checking scheduling conditions",variant:"destructive"})}else l({status:FN.ACTIVE}),Ak({title:`${qx("engage:broadcast")} scheduled!`}),F()})());const t=v.findIndex((e=>e.step===I));if(I===nje.AIPrompt){if(_.current){j(!0);try{return void _.current.generate()}catch(r){return j(!1),void Ak({title:"Error Generating Content",description:"Failed to generate AI content. Please try again.",variant:"destructive"})}}const e=v.find((e=>e.step===nje.EditEmailContent||e.step===nje.EditSmsContent));if(e)return void H(e.step)}if(I===nje.EditEmailContent||I===nje.EditSmsContent){const e=v.map(((e,a)=>e.step===nje.EditEmailContent||e.step===nje.EditSmsContent?a:-1)).filter((e=>-1!==e)).find((e=>e>t));if(void 0!==e)return void H(v[e].step);const a=v.find((e=>e.step===nje.SelectAudience));if(a)return void H(a.step)}t>=0&&t<v.length-1&&H(v[t+1].step)},V=()=>{const e=v.findIndex((e=>e.step===I));if(e>0){H(v[e-1].step)}},J=()=>{E||u?Ak({title:"Please wait",description:"Please wait for the current operation to finish before saving.",variant:"warning"}):F()};return a.jsxs("div",{className:"flex-1 flex flex-col @container h-full min-h-0",children:[a.jsxs("header",{className:"w-full flex items-center gap-4 h-16 px-6",children:[a.jsx("h1",{className:"text-xl font-bold leading-none",children:o.name}),a.jsx("div",{className:"flex items-center gap-4",children:a.jsx(qT,{variant:tge(o.status),children:Jde({status:o.status,automationType:o.triggerType,vsaasManaged:!1})})})]}),P?a.jsx("div",{className:"flex-1 flex flex-col justify-center items-center",children:a.jsx(pge,{automationId:o?.id||""})}):a.jsxs("main",{className:"flex gap-4 flex-1 min-h-0 overflow-hidden",children:[a.jsx("div",{className:"block",children:a.jsx("nav",{className:"space-y-0 w-50 self-start pr-6 pl-8 pt-4 "+(P?"h-0 overflow-hidden":""),children:v.map((e=>a.jsx("div",{className:`\n rounded-md transition-colors\n ${e.step===I?"bg-[var(--reach-secondary)] text-[var(--reach-primary-foreground)] font-medium":e.step<I?"text-muted-foreground hover:bg-muted":"text-muted-foreground/60"}\n ${(E||u)&&e.step===I?"opacity-75 cursor-not-allowed":E||u?"opacity-50 cursor-not-allowed":""}\n `,children:a.jsx(cse,{label:(E||u)&&e.step===I?`${e.title} (Loading...)`:e.title,id:`wizard-step-${e.step}`,isActive:e.step===I,isCompleted:e.isValid(),onClick:async()=>{if(E||u)Ak({title:"Please wait",description:"Please wait for the current operation to finish before navigating.",variant:"warning"});else if(!b)if(e.step>I){const{canMove:a,errorMessage:n,warningMessages:t}=await(async e=>{if(e<=I)return{canMove:!0,errorMessage:null};S(!0);try{const a=[];for(let n=I;n<e;n++){const{canMove:e,errorMessage:t,warningMessage:i}=await D(n);if(!e)return{canMove:e,errorMessage:t};i&&a.push(i)}return{canMove:!0,errorMessage:null,warningMessages:a}}finally{S(!1)}})(e.step);if(a){if(t&&t.length>0)for(const e of t)Ak({title:e,variant:"warning"});H(e.step)}else n&&Ak({title:"Cannot navigate to this step",description:n,variant:"destructive"})}else H(e.step)}})},e.step)))})}),(()=>{const e=v.find((e=>e.step===I));return a.jsx("section",e?{className:"flex-1 mr-6 w-full relative ml-6 @[1000px]:ml-0 flex flex-col",children:a.jsx("div",{className:"flex-1 overflow-y-auto",children:a.jsx(ooe,{className:"h-full",children:e.content},I)})}:{className:"flex-1 mr-6 w-full relative rounded-xl bg-gray-100 ml-6 @[1000px]:ml-0 flex flex-col",children:a.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:a.jsx("div",{className:"flex justify-center items-center h-full",children:a.jsxs("div",{className:"text-center",children:[a.jsx("h3",{className:"text-lg font-medium mb-2",children:"Step Not Available"}),a.jsx("p",{className:"text-muted-foreground",children:"This step is not available for your current configuration."})]})})})})})()]}),(()=>{const e=v.find((e=>e.step===I));return a.jsx("footer",{className:"w-full flex justify-end z-10 items-center px-6 "+(P?"h-0 overflow-hidden":"h-16"),children:a.jsx(hge,{handleSkipAndSaveAsDraft:J,handleBack:V,handleNext:G,hideBack:e?.footerConfig.hideBack??!1,backText:e?.footerConfig.backText??"Back",nextText:e?.footerConfig.nextText??"Next",backDisabled:(E||u||e?.footerConfig.backDisabled)??!1,nextDisabled:(E||u||e?.footerConfig.nextDisabled())??!1,getInfoTooltipTitle:e?.footerConfig.getInfoTooltipTitle??void 0})})})()]})},sje=({children:e,actionId:t})=>{const{setActionId:i}=n.useContext(Soe);return n.useEffect((()=>{i(t)}),[t,i]),a.jsx("div",{className:"h-full",children:a.jsx(age,{children:e})})},lje=()=>a.jsxs("div",{children:[a.jsx("div",{className:Zoe,children:a.jsx(sM.OneTimeBroadcast,{})}),a.jsx("h3",{className:$oe,children:qx("engage:broadcast")}),a.jsx("p",{className:Yoe,children:"Send a single message to your current list, like announcing a sale or newsletter."})]}),uje=()=>a.jsxs("div",{children:[a.jsx("div",{className:Qoe,children:"Coming Soon"}),a.jsx("div",{className:Zoe,children:a.jsx(sM.RealtimeActivity,{})}),a.jsx("h3",{className:$oe,children:"Realtime Activity"}),a.jsx("p",{className:Yoe,children:"Responds to immediate actions your contacts take, like abandoned carts, form submissions, or appointment bookings."})]}),cje=({selectedType:e,setAutomationName:n,automationName:t,setAutomationDescription:i,automationDescription:r})=>a.jsxs("div",{className:"flex flex-col items-center justify-center p-8 max-w-lg mx-auto",children:[a.jsxs("h2",{className:"text-2xl font-semibold mb-8 text-center",children:["Name Your"," ",qx(e===ON.ONE_TIME?"engage:broadcast":"engage:automation")]}),a.jsxs("div",{className:"w-full space-y-6",children:[a.jsx("div",{className:"bg-gray-50 p-6 rounded-xl items-center justify-center text-center",children:(()=>{switch(e){case ON.ONE_TIME:return a.jsx(lje,{});case ON.TRIGGER_BASED:return a.jsx(uje,{});default:throw Vde(e,ON)}})()}),a.jsxs("div",{className:"space-y-6",children:[a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[a.jsx("label",{htmlFor:"automationName",className:"block text-sm font-medium text-gray-900",children:"Name"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Only visible to your team"})]}),a.jsx(Lo,{id:"automationName",type:"text",value:t,onChange:e=>n(e.target.value),className:"w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-indigo-500 focus:border-indigo-500 shadow-sm",placeholder:"e.g. April Newsletter Campaign",autoFocus:!0})]}),a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[a.jsx("label",{htmlFor:"automationDescription",className:"block text-sm font-medium text-gray-900",children:"Description"}),a.jsx("span",{className:"text-xs text-muted-foreground",children:"Optional"})]}),a.jsx(vge,{id:"automationDescription",value:r,onChange:e=>i(e.target.value),className:"w-full min-h-[80px] resize-none",placeholder:`Add any helpful context for your team. If left blank, we'll generate one for you when you start the ${qx("engage:broadcast").toLowerCase()}`})]})]})]})]}),dje=({onClose:e,automationType:t,currentStep:i,setCurrentStep:r,getExtraMergeFields:o,onBeforeSchedule:s,hideSms:l})=>{const{createAutomation:u,isCreating:c}=WN(),[d,m]=n.useState(!1),[h,p]=n.useState(void 0),[g,f]=n.useState(void 0),[v,y]=n.useState(!1),[k,b]=n.useState(t?{name:void 0,description:void 0,type:t}:{name:void 0,description:void 0,type:void 0}),S=void 0!==k.name&&void 0!==k.type&&""!==k.name;n.useEffect((()=>{if(k.type&&!k.name&&!v){const e=new Date,a=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n=e.toLocaleDateString([],{month:"long",day:"numeric"}),t=`${qx("engage:broadcast")} ${n} ${a}`,i="";b((e=>({...e,name:t,description:i}))),y(!0)}}),[k,v]);const w=n.useCallback((async(a,n,t)=>{const i=a||k.name,o=n||k.description,s=t||k.type;if(!i||!s||""===i)return;m(!0);u({name:i,type:s,description:o},{onSuccess:async a=>{if(a.id){const n=await(async e=>(await aS(`${jk}`,{method:"POST",body:JSON.stringify(e)})).data)({}),t=hoe().toString();await DN(a.id,{action:[{actionType:"send_communication",actionMetadata:{actionType:"send_communication",communicationGroupId:n.id,currentActionId:t}}]}),p(a.id),await sx({automationId:a.id,actionId:t}),s===ON.ONE_TIME?(r(Goe.OneTimeWizard),f(t),m(!1)):e?.(a.id)}else e?.("error")},onError:()=>{e?.("error")},onSettled:()=>{b({name:void 0,description:void 0,type:void 0})}})}),[k.name,k.description,k.type,u,e,r,f,m,p]);n.useEffect((()=>{if(t&&!d&&!h){const e=new Date,a=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n=e.toLocaleDateString([],{month:"long",day:"numeric"}),i=`${qx("engage:broadcast")} ${n} ${a}`,r="";b({name:i,description:r,type:t}),w(i,r,t)}}),[t,d,h,w]);return a.jsxs("div",{id:"create-automation-modal",className:gi("relative overflow-y-auto h-full p-8"),children:[a.jsx(jd,{mode:"wait",children:c||d?a.jsx(ooe,{className:"h-full",children:a.jsx(ese,{})},"loading"):a.jsx(ooe,{className:"h-full",children:(()=>{switch(i){case Goe.ChooseAutomationType:return a.jsx(Xoe,{onNext:e=>{b({...k,type:e}),r(Goe.SetAutomationName)}});case Goe.SetAutomationName:return t?null:k.type?a.jsx(cje,{selectedType:k.type,setAutomationName:e=>{b({...k,name:e})},automationName:k.name??"",setAutomationDescription:e=>{b({...k,description:e})},automationDescription:k.description??""}):null;case Goe.OneTimeWizard:return h&&g?a.jsx(Hoe,{automationId:h,children:a.jsx(sje,{actionId:g,children:a.jsx(oje,{onFinish:()=>{e?.(h)},getExtraMergeFields:o,onBeforeSchedule:s,hideSms:l})})}):null;default:throw poe(i,Goe)}})()},"content")}),i!==Goe.OneTimeWizard&&a.jsx("div",{className:"pt-2",children:a.jsx(Voe,{onClose:e,currentStep:i,setCurrentStep:r,isDisabled:!S,createAutomation:()=>w(),disableBackButton:void 0!==t})})]})};function mje({open:e,setOpen:t,onClose:i,automationType:r,getExtraMergeFields:o,replyToSettingsText:s,replyToSettingsLink:l,fromNameSettingsText:u,fromNameSettingsLink:c,hideSms:d}){const[m,h]=n.useState(r?Goe.OneTimeWizard:Goe.ChooseAutomationType);return n.useEffect((()=>{e&&h(r?Goe.OneTimeWizard:Goe.ChooseAutomationType)}),[e,r]),a.jsx(ioe,{children:a.jsx(roe,{replyToSettingsText:s,replyToSettingsLink:l,fromNameSettingsText:u,fromNameSettingsLink:c,children:a.jsx(fi,{open:e,onOpenChange:t,children:a.jsxs(bi,{hideCloseButton:m===Goe.OneTimeWizard,className:"flex h-[95vh] w-[95vw] max-w-none flex-col gap-0 overflow-visible p-0",children:[a.jsx(Si,{children:a.jsx("div",{className:"flex items-center justify-between",children:a.jsxs(We,{children:[a.jsx(Ai,{className:"text-3xl font-normal",children:"Create Automation"}),a.jsx(Ci,{children:"Create a new automation to send messages to your customers."})]})})}),a.jsx(dje,{onClose:e=>{i?.(e),t(!1)},automationType:r,currentStep:m,setCurrentStep:h,getExtraMergeFields:o,hideSms:d})]})})})})}const hje=({feature:e,onClose:n,className:t})=>{const i={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.4,ease:[.4,0,.2,1]}}};return a.jsxs(gk.div,{initial:"hidden",animate:"visible",exit:"exit",variants:{hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.4,ease:[.4,0,.2,1],staggerChildren:.1}},exit:{opacity:0,y:-20,transition:{duration:.3,ease:[.4,0,1,1]}}},className:Fa("flex flex-col items-center text-center w-full max-w-[72ch] rounded-xl p-8 gap-6 border border-border mx-auto","bg-background shadow-sm",t),children:[a.jsx(gk.div,{variants:i,className:"w-20 h-20 rounded-full flex items-center justify-center bg-red-50 border-2 border-red-200",children:a.jsx(_,{className:"w-10 h-10 text-red-500"})}),a.jsxs(gk.div,{variants:i,className:"space-y-2",children:[a.jsx("h2",{className:"text-xl font-semibold text-foreground",children:"Sandbox Mode Not Supported"}),a.jsxs("p",{className:"text-base font-medium text-muted-foreground",children:[e," is not available in sandbox mode"]})]}),a.jsx(gk.div,{variants:i,className:"max-w-xl mx-auto space-y-4",children:a.jsxs("p",{className:"text-sm text-muted-foreground",children:["To use ",e,", please switch to a production environment or contact your administrator for assistance."]})}),a.jsx(jd,{children:n&&a.jsx(gk.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.2,ease:[.4,0,.2,1]},children:a.jsx(Wa,{variant:"outline",onClick:n,className:"bg-background hover:bg-muted",children:"Got it"})})})]})},pje=({tabs:e,activeTab:t,onTabChange:i,tabsLocation:r="left",secondaryTabs:o=!1,headerOnly:s=!1})=>{const l=n.useRef([]),[u,c]=n.useState({width:0,left:0});n.useEffect((()=>{const a=l.current[e.findIndex((e=>e.id===t))];a&&c({width:a.offsetWidth,left:a.offsetLeft})}),[t,e]);const d=e.find((e=>e.id===t)),m=()=>a.jsxs("div",{className:"relative flex items-center gap-8 "+("left"===r?"w-full justify-start":"w-full justify-center"),children:[a.jsx("div",{className:"absolute bottom-0 h-[1px] rounded-full transition-all duration-300 ease-out\n bg-gradient-to-r from-primary to-primary/90\n shadow-[0_0_8px_rgba(var(--primary-rgb),0.3)]",style:{width:`${u.width}px`,left:`${u.left}px`}}),e.map(((e,n)=>a.jsx("button",{ref:e=>l.current[n]=e,onClick:()=>i(e.id),className:gi("relative px-7 py-3 transition-all duration-200 text-lg",t!==e.id&&"text-muted-foreground",o&&"text-sm"),children:e.label},e.id)))]});return s?a.jsx(m,{}):a.jsxs("div",{className:"flex flex-col gap-4 w-full overflow-x-hidden h-full",children:[a.jsx("div",{className:"flex items-center justify-between",children:a.jsx(m,{})}),a.jsx("div",{className:"relative overflow-hidden flex-grow min-h-0",children:a.jsx("div",{className:"relative h-full",children:d?d.content:null})})]})},gje=()=>{const e={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.5,ease:"easeOut"}}},n=[{icon:P,title:"5-Day Window",description:"Short attribution lookback period"},{icon:D,title:"Engagement Required",description:"Must click or open email"},{icon:ye,title:"Automation-Linked",description:"Tied to specific campaigns"}];return a.jsxs(gk.div,{className:"space-y-8 p-2",variants:{hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.1,delayChildren:.1}}},initial:"hidden",animate:"visible",children:[a.jsx(gk.div,{variants:e,children:a.jsx(FT,{title:"Email Attribution Methodology",description:"How we track and attribute conversions to your email marketing automations",icon:U})}),a.jsx(gk.div,{variants:e,children:a.jsx(GT,{highlights:n,cardTitle:"Email Engagement Attribution Model",cardDescription:"We use a 5-day engagement-based attribution model that requires customer interaction with your emails",cardIcon:ae})}),a.jsx(gk.div,{variants:e,children:a.jsx(VT,{steps:[{number:1,title:"Email Sent via Automation",description:"An email is sent to a customer through one of your marketing automations."},{number:2,title:"Customer Engagement",description:"The customer either clicks a link or opens the email (engagement is required for attribution)."},{number:3,title:"Purchase Occurs",description:"Within 5 days of the email engagement, the customer makes a purchase."},{number:4,title:"Revenue Attribution",description:"The purchase revenue is attributed to the specific automation that sent the email."}],title:"How Email Attribution Works",icon:we})}),a.jsx(gk.div,{variants:e,children:a.jsx(ZT,{scenarios:[{id:1,title:"Valid Email Attribution",description:"Customer receives email, engages with it, and purchases within 5 days",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"Clicked",day:"Day 1",color:"bg-green-500"},{platform:"Purchase",action:"Completed",day:"Day 3",color:"bg-green-600"}],attribution:"Email campaign gets 100% credit (customer engaged and purchased within 5 days)"},{id:2,title:"No Engagement - No Attribution",description:"Customer receives email but never opens or clicks, then purchases",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"No Engagement",day:"Day 1-5",color:"bg-gray-400"},{platform:"Purchase",action:"Completed",day:"Day 3",color:"bg-green-600"}],attribution:"No attribution (email was sent but customer never engaged with it)"},{id:3,title:"Attribution Window Expired",description:"Customer engaged with email but purchased outside the 5-day window",steps:[{platform:"Email Campaign",action:"Sent",day:"Day 1",color:"bg-blue-500"},{platform:"Customer",action:"Clicked",day:"Day 1",color:"bg-green-500"},{platform:"Purchase",action:"Completed",day:"Day 8",color:"bg-green-600"}],attribution:"No attribution (purchase occurred 7 days after email engagement, outside 5-day window)"}],title:"Email Attribution Scenarios",description:"See how different email engagement patterns are attributed",icon:D})}),a.jsx(gk.div,{variants:e,children:a.jsx(YT,{title:"Important Notes",points:[{text:"Only emails sent through automations count for attribution"},{text:"Customer must click or open the email for attribution to occur"},{text:"The 5-day window starts from when the email was sent, not when it was opened"},{text:"Revenue is attributed to the specific automation that sent the email"}],variant:"highlighted"})})]})},fje=({Icon:e,label:n,value:t,tooltipText:i,onClick:r,isClickable:o=!1})=>a.jsx(ex,{title:i,children:a.jsxs("div",{className:"group relative flex items-center gap-2 px-3 py-2 rounded-lg transition-all duration-200 cursor-help "+(o?"hover:bg-primary/5 hover:shadow-sm cursor-pointer":"hover:bg-muted/20"),onClick:r,children:[a.jsx("div",{className:"w-8 h-8 rounded-md bg-primary/10 flex items-center justify-center group-hover:bg-primary/15 transition-colors",children:a.jsx(e,{className:"w-4 h-4 text-primary"})}),a.jsxs("div",{className:"flex flex-col items-start min-w-0",children:[a.jsx("span",{className:"text-sm font-bold text-foreground leading-tight",children:t}),a.jsx(Tge,{className:"text-[9px] font-medium text-muted-foreground uppercase tracking-wide leading-tight",children:n})]})]})}),vje=e=>`Number of ${e} communications that failed/errored. You can filter communications by status in the recipients table.`,yje=({statistics:e,automationId:n,onLinkClickStatsOpen:t,includeSms:i=!1,showErrors:r=!1})=>{const o=[{Icon:sM.MessagesSent,label:"Sent",value:e.email.numberSent,tooltipText:"Total number of emails that were successfully sent"},...r&&void 0!==e.email.errors?[{Icon:sM.AlertTriangleIcon,label:"Errors",value:e.email.errors,tooltipText:vje("email")}]:[],{Icon:sM.OpenRate,label:"Open Rate",value:`${(100*Number(e.email.openPercentage)).toFixed(2)}%`,tooltipText:"Percentage of recipients who opened the email"},{Icon:sM.TotalBounceRate,label:"Bounce Rate",value:`${(100*((Number(e.email.softBounceRate)||0)+(Number(e.email.hardBounceRate)||0))).toFixed(2)}%`,tooltipText:"Percentage of emails that were not delivered"},{Icon:sM.LinksClicked,label:"Clicks",value:Number(e.email.linksClicked),tooltipText:"Total number of times recipients clicked on links",onClick:t,isClickable:!!n&&!!t},{Icon:sM.SpamComplies,label:"Spam",value:`${(100*Number(e.email.spamComplaintRate)).toFixed(2)}%`,tooltipText:"Percentage of emails marked as spam"},{Icon:sM.UnsubscribeRate,label:"Unsubscribed",value:`${(100*Number(e.email.unsubscribedRate)).toFixed(2)}%`,tooltipText:"Percentage of recipients who unsubscribed"}],s=[{Icon:sM.SMSMessagesSent,label:"Sent",value:e.sms.numberSent,tooltipText:"Total number of SMS messages that were successfully sent",onClick:void 0,isClickable:!1},...r&&void 0!==e.sms.errors?[{Icon:sM.AlertTriangleIcon,label:"Errors",value:e.sms.errors,tooltipText:vje("sms"),onClick:void 0,isClickable:!1}]:[]];return a.jsx("div",{className:"bg-white rounded-xl p-4 border border-border",children:a.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-center gap-4 lg:gap-0",children:[a.jsxs("div",{className:"lg:flex-[3]",children:[a.jsx("div",{className:"flex justify-center mb-4 lg:mb-0",children:a.jsx(Tge,{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wide",children:"Email"})}),a.jsx("div",{className:"flex items-center justify-center",children:a.jsx("div",{className:"flex items-center gap-2 sm:gap-3 flex-wrap justify-evenly w-full",children:o.map(((e,n)=>a.jsx(fje,{Icon:e.Icon,label:e.label,value:e.value,tooltipText:e.tooltipText,onClick:e.onClick,isClickable:e.isClickable},n)))})})]}),i&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"hidden lg:block w-px h-8 bg-border mx-4 flex-shrink-0"}),a.jsx("div",{className:"lg:hidden w-full h-px bg-border my-2"}),a.jsxs("div",{className:"lg:flex-[1]",children:[a.jsx("div",{className:"flex justify-center mb-4 lg:mb-0",children:a.jsx(Tge,{className:"text-[10px] font-semibold text-gray-500 uppercase tracking-wide",children:"SMS"})}),a.jsx("div",{className:"flex items-center justify-center",children:a.jsx("div",{className:"flex items-center gap-2 sm:gap-3 flex-wrap justify-evenly w-full",children:s.map(((e,n)=>a.jsx(fje,{Icon:e.Icon,label:e.label,value:e.value,tooltipText:e.tooltipText,onClick:e.onClick,isClickable:e.isClickable},n)))})})]})]})]})})},kje=({automation:e,businessSales:n})=>{if(!e&&!n)return null;const t=e?[{Icon:sM.SalesAmount,label:"Order Amount",value:$de(e.derivedRevenue),tooltipText:"Total derived revenue from this campaign"},{Icon:sM.Orders,label:"Orders",value:e.derivedOrders,tooltipText:"Total individual orders from this campaign"}]:[{Icon:sM.SalesAmount,label:"Total Revenue",value:$de(n.totalRevenue),tooltipText:"Total revenue across all automations"},{Icon:sM.Orders,label:"Total Orders",value:n.totalOrders,tooltipText:"Total orders across all automations"}];return a.jsx("div",{className:"bg-white rounded-xl p-4 border border-border",children:a.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-center gap-4 lg:gap-0",children:[a.jsx("div",{className:"lg:flex-1",children:a.jsx("div",{className:"flex items-center justify-center",children:a.jsx(fje,{Icon:t[0].Icon,label:t[0].label,value:t[0].value,tooltipText:t[0].tooltipText})})}),a.jsx("div",{className:"lg:hidden w-full h-px bg-border my-2"}),a.jsx("div",{className:"lg:flex-1",children:a.jsx("div",{className:"flex items-center justify-center",children:a.jsx(fje,{Icon:t[1].Icon,label:t[1].label,value:t[1].value,tooltipText:t[1].tooltipText})})})]})})},bje=({automationId:e,isOpen:n,onClose:t})=>{const{linkClickStats:i,isGetting:r,getError:o}=rN(e);return a.jsx(fi,{open:n,onOpenChange:t,children:a.jsxs(bi,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[a.jsx(Si,{children:a.jsxs(Ai,{className:"flex items-center gap-2",children:[a.jsx(ae,{className:"h-5 w-5"}),"Link Click Statistics"]})}),a.jsxs("div",{className:"space-y-4",children:[r&&a.jsx("div",{className:"text-sm text-muted-foreground text-center py-8",children:"Loading link click statistics..."}),o&&a.jsx("div",{className:"text-sm text-destructive text-center py-8",children:"Error loading link click statistics. Please try again."}),!r&&!o&&(!i||0===Object.keys(i).length)&&a.jsx("div",{className:"text-sm text-muted-foreground text-center py-8",children:"No link clicks found."}),!r&&!o&&i&&Object.keys(i).length>0&&a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"bg-muted/50 rounded-lg p-4",children:[a.jsx("div",{className:"text-sm text-muted-foreground mb-2",children:"Summary"}),a.jsxs("div",{className:"flex gap-4 text-sm",children:[a.jsxs("div",{children:[a.jsx("span",{className:"font-semibold",children:Object.keys(i).length})," ","unique links"]}),a.jsxs("div",{children:[a.jsx("span",{className:"font-semibold",children:Object.values(i).reduce(((e,a)=>e+a),0)})," ","total clicks"]})]})]}),a.jsx("div",{className:"space-y-2",children:Object.entries(i).sort((([,e],[,a])=>a-e)).map((([e,n])=>a.jsxs("div",{className:"flex items-center justify-between p-3 border rounded-lg hover:bg-muted/50 transition-colors",children:[a.jsx("div",{className:"flex-1 min-w-0",children:a.jsxs("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 hover:underline flex items-center gap-1 truncate",children:[a.jsx("span",{className:"truncate",children:e}),a.jsx(R,{className:"h-3 w-3 flex-shrink-0"})]})}),a.jsxs("div",{className:"text-right ml-4",children:[a.jsx("span",{className:"font-semibold text-lg",children:n}),a.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:1===n?"click":"clicks"})]})]},e)))})]})]})]})})},Sje=({automationId:e,includeSales:t=!1,includeSms:i=!1,showErrors:r=!1,automation:o})=>{const[s,l]=n.useState(!1),[u,c]=n.useState(!1),{statistics:d,isLoading:m}=ZN(e),{statistics:h,isLoading:p}=eE(),[g,f]=n.useState(10),[v,y]=n.useState(void 0),k=XN({limit:g,cursor:v}),b=k.data,S=b?.pagination.cursor??null,w=b?.pagination.total??null,A=k.isLoading,C=k.isFetching,M=k.isPlaceholderData;n.useEffect((()=>{y(void 0)}),[e]);const T=n.useCallback((e=>{y(e.cursor),f(e.pageSize)}),[]),x=e?d:h,N=[{accessorKey:"automation_name",header:"Automation",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"font-medium",children:e.original.automation_name||"Unknown Automation"}),size:150},{accessorKey:"first_name",header:"Customer",enableSorting:!1,cell:({row:e})=>{const n=e.original.first_name||"",t=e.original.last_name||"",i=e.original.email||"";return a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:n&&t?`${n} ${t}`:"Unknown"}),i&&a.jsx("span",{className:"text-xs text-muted-foreground",children:i})]})},size:200},{accessorKey:"amount",header:"Amount",enableSorting:!1,cell:({row:e})=>{const a=parseFloat(e.original.amount);return $de(a)},size:120},{accessorKey:"communication_type",header:"Channel",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"capitalize text-sm",children:e.original.communication_type||"Unknown"}),size:100},{accessorKey:"schedule_send_at",header:"Sent Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.schedule_send_at;return a?new Date(a).toLocaleDateString():"Unknown"},size:140},{accessorKey:"created_date",header:"Order Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.created_date;return a?new Date(a).toLocaleDateString():"Unknown"},size:140}];return(e?m:p)||!x?a.jsx("div",{className:"bg-white rounded-2xl w-full p-6 flex items-center justify-center h-[14.05rem]",children:a.jsx(fd,{text:[`Fetching ${qx("engage:insight",{count:2})}`,"Finishing up"]})}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"bg-white rounded-2xl w-full p-6 flex flex-col gap-6",children:[a.jsxs("section",{children:[a.jsx("h3",{className:"mb-4 text-lg font-medium text-foreground",children:e?qx("engage:insight",{count:2}):`Business ${qx("engage:insight",{count:2})}`}),a.jsx(yje,{statistics:x,automationId:e,onLinkClickStatsOpen:()=>l(!0),includeSms:i,showErrors:r})]}),t&&a.jsx(hTe,{className:"my-2"}),t&&a.jsxs("section",{children:[a.jsxs("div",{className:"flex items-center justify-between mb-4",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground",children:e?qx("engage:salesInsights","Sales Insights"):qx("engage:businessSalesInsights","Business Sales Insights")}),a.jsxs(Wa,{variant:"outline",size:"sm",onClick:()=>c(!0),className:"flex items-center gap-2",children:[a.jsx(H,{className:"h-4 w-4"}),"Email Attribution"]})]}),a.jsx(kje,{automation:o,businessSales:!e&&h?.sales?{totalRevenue:h.sales.totalRevenue,totalOrders:h.sales.totalOrders}:void 0})]})]}),!e&&t&&a.jsxs("div",{className:"bg-white rounded-2xl p-6",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground mb-4",children:"Sales From All Campaigns"}),void 0!==w&&a.jsxs("p",{className:"text-sm text-muted-foreground mb-4",children:["Total Orders: ",w]}),a.jsx(dle,{data:b?.results||[],columns:N,paginationMode:"cursor",totalCount:w??void 0,initialPageSize:g,isLoading:A&&!M,cursorPaginationQueryResult:{nextCursor:S,isLoading:A,isFetching:C,isPlaceholderData:M},onQueryParametersChange:T,hideLoadingState:!1})]}),e&&a.jsx(bje,{automationId:e,isOpen:s,onClose:()=>l(!1)}),a.jsx(fi,{open:u,onOpenChange:c,children:a.jsx(bi,{className:"max-w-4xl max-h-[80vh] overflow-y-auto",children:a.jsx(gje,{})})})]})},wje=e=>{const{updateAutomation:a,updateError:t,isUpdateSuccess:i}=qN(e),{toast:r}=Ck();return n.useEffect((()=>{i?r({title:"Status updated",description:"The status has been updated successfully"}):t&&r({title:"Error updating status",description:"Please try again",variant:"destructive"})}),[i,t,r]),{toggleStatus:async e=>{try{return await a({status:e?FN.ACTIVE:FN.DRAFT}),!0}catch(n){return r({title:"Error updating status",description:"Please try again",variant:"destructive"}),!1}}}},Aje=e=>{const{automationId:a,hideSms:n}=e;return`/automations/view-modal/${a}?showBackButton=true${n?"&hideSms=true":""}`};function Cje(){const{toast:e}=Ck(),[t,i]=n.useState(null),{toggleStatus:r}=wje(t||""),o=dce(),{config:s}=ld(),[l,u]=n.useState(10),[c,d]=n.useState(void 0),[m,h]=n.useState(""),{automations:p,nextCursor:g,totalCount:f,isLoading:v,error:y,isFetching:k,isPlaceholderData:b}=YN({cursor:c,limit:l,triggerTypes:[ON.TRIGGER_BASED,ON.DATE_BASED],search:m||void 0});n.useEffect((()=>{y&&e({title:`Error Fetching ${qx("engage:automation")}`,description:y?.message||"Please try again.",variant:"destructive"})}),[y,e]);const S=n.useMemo((()=>{const e=[FN.SENDING,FN.SCHEDULED,FN.CANCELLED,FN.PARTIALLY_CANCELLED];return(p||[]).filter((a=>!e.includes(a.status))).map((e=>({...e,emailsSent:0,smsSent:0,updated_at:e.updatedAt||e.createdAt})))}),[p]),w=n.useCallback((async(e,a)=>{try{i(e);const n=a===FN.ACTIVE;await r(n)}finally{i(null)}}),[r,i]),A=n.useCallback((e=>{h(e)}),[]),C=n.useCallback((e=>{d(e.cursor),u(e.pageSize)}),[]),M=n.useCallback((e=>Aje({automationId:e,hideSms:s.hideFeature?.engage?.sms??!1})),[s.hideFeature?.engage?.sms]),T=n.useMemo((()=>mge({automationName:qx("engage:automation"),setUrl:M,onToggle:w,vsaasManaged:!0})),[w,M]);return a.jsx("div",{className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx(dle,{data:S,columns:T,paginationMode:"cursor",totalCount:f??void 0,initialPageSize:l,isLoading:v&&!b,onRowClick:e=>{o(`/automations/view-modal/${e.id}?showBackButton=true${s.hideFeature?.engage?.sms?"&hideSms=true":""}`)},cursorPaginationQueryResult:{nextCursor:g,isLoading:v,isFetching:k,isPlaceholderData:b},onQueryParametersChange:C,searchValue:m,onSearchChange:A})})})}function Mje(){const{toast:e}=Ck(),[t,i]=n.useState(null),{toggleStatus:r}=wje(t||""),{duplicateAutomation:o}=QN(),s=dce(),[l,u]=n.useState(10),[c,d]=n.useState(void 0),{config:m}=ld(),[h,p]=n.useState(""),{automations:g,totalCount:f,nextCursor:v,isLoading:y,error:k,isFetching:b,isPlaceholderData:S}=YN({cursor:c,limit:l,triggerTypes:[ON.ONE_TIME],search:h||void 0});n.useEffect((()=>{k&&e({title:`Error Fetching ${qx("engage:broadcast")}`,description:k?.message||"Please try again.",variant:"destructive"})}),[k,e]);const w=n.useMemo((()=>(g||[]).map((e=>({...e,updated_at:e.updatedAt})))),[g]),A=n.useCallback((async(e,a)=>{try{i(e);const n=a===FN.ACTIVE;await r(n)}finally{i(null)}}),[r,i]),C=n.useCallback(((e,a)=>{o({automationId:e,name:`${a} (Copy)`,description:"Duplicated broadcast"}),E()}),[o]),M=n.useCallback((async a=>{try{i(a),await r(!1),e({title:"Broadcast archived",description:"The broadcast has been archived successfully."})}catch(n){e({title:"Error archiving broadcast",description:"Please try again.",variant:"destructive"})}finally{i(null)}E()}),[r,e,i]),T=n.useCallback((e=>{const a=Aje({automationId:e,hideSms:m.hideFeature?.engage?.sms??!1});s(a)}),[s,m.hideFeature?.engage?.sms]),x=n.useCallback((async a=>{try{i(a),await r(!1),e({title:"Broadcast cancelled",description:"The broadcast has been cancelled successfully."})}catch(n){e({title:"Error cancelling broadcast",description:"Please try again.",variant:"destructive"})}finally{i(null)}E()}),[r,e,i]),N=n.useCallback((e=>{d(e.cursor),u(e.pageSize)}),[]),E=()=>{d(void 0),u(10),p("")},j=n.useCallback((e=>Aje({automationId:e,hideSms:m.hideFeature?.engage?.sms??!1})),[m.hideFeature?.engage?.sms]),_=n.useMemo((()=>mge({automationName:qx("engage:broadcast"),setUrl:j,onToggle:A,pillForStatus:!1,onDuplicate:C,onArchive:M,onEdit:T,onCancel:x})),[A,j,C,M,T,x]);return a.jsx("div",{id:"broadcast-list-container",className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx("div",{id:"broadcast-table-container",children:a.jsx(dle,{data:w,columns:_,paginationMode:"cursor",initialPageSize:l,isLoading:y&&!S,totalCount:f??void 0,cursorPaginationQueryResult:{nextCursor:v,isLoading:y,isFetching:b,isPlaceholderData:S},onRowClick:e=>{s(`/automations/view-modal/${e.id}?showBackButton=true${m.hideFeature?.engage?.sms?"&hideSms=true":""}`)},onQueryParametersChange:N,searchValue:h,onSearchChange:p})})})})}function Tje(){const{toast:e}=Ck(),[t,i]=n.useState(!1),[r,o]=n.useState(null),[s,l]=n.useState(10),[u,c]=n.useState(void 0),[d,m]=n.useState(""),{segments:h,isLoading:p,nextCursor:g,totalCount:f,isFetching:v,isPlaceholderData:y}=_oe({search:d||void 0,cursor:u,limit:s}),k=n.useCallback((e=>{o(e),i(!0)}),[o]),b=n.useMemo((()=>function(e){return[rge("name",`${qx("engage:segment")} Name`,!0),oge(),hue({accessorKey:"user_count",header:qx("engage:user_other"),enableSorting:!1,headerClassName:"justify-end text-right w-full",meta:{align:"right",displayName:qx("engage:user_other")},cellClassName:"text-muted-foreground pr-4",cellFormatter:e=>{const a=e.getValue()??0;return`${a.toLocaleString()} ${qx("engage:user",{count:a}).toLowerCase()}`}}),sge("updated_at"),dge(e||(()=>{}))]}(k)),[k]),S=n.useMemo((()=>h?h.map((e=>({...e,updated_at:e.createdAt.toString(),user_count:e.userCount,user_count_updated_at:e.userCountUpdatedAt}))):[]),[h]),w=n.useCallback((e=>{c(e.cursor),l(e.pageSize)}),[]);return a.jsxs("div",{className:"w-full h-[75vh] flex flex-col",children:[a.jsx("div",{className:"flex-grow min-h-0 p-2",children:a.jsx(dle,{data:S,columns:b,paginationMode:"cursor",initialPageSize:s,isLoading:p&&!y,totalCount:f??void 0,cursorPaginationQueryResult:{nextCursor:g,isLoading:p,isFetching:v,isPlaceholderData:y},onQueryParametersChange:w,getRowClassName:e=>e.type===xoe.ALL_USERS?"cursor-not-allowed opacity-60":"",onRowClick:a=>{if(a.type!==xoe.ALL_USERS){if(a.type!==xoe.CUSTOM)return o(a.id),void i(!0);o(a.id),i(!0)}else e({title:"Read-only segment",description:"This segment cannot be edited.",variant:"destructive"})},searchValue:d,onSearchChange:m})}),a.jsx(KEe,{open:t,setOpen:i,segmentId:r??void 0,onSegmentUpdated:a=>{nge(i,e,a,`Error creating ${qx("engage:segment")}`,"Please try again"),c(void 0),l(10),m("")},viewOnly:!!r&&h?.find((e=>e.id===r))?.type!==xoe.CUSTOM})]})}const xje=()=>{const e=jb(),t=dce(),{toast:i}=Ck(),{config:r}=ld(),[o,s]=n.useState(!1),[l,u]=n.useState(!1),[c,d]=n.useState(!1),[m,h]=n.useState(null),p=U5()["show-engage-onboarding"]??!1,[g,f]=n.useState(p),[v,y]=n.useState(null),{automations:k,isLoading:b}=YN({triggerTypes:[ON.TRIGGER_BASED,ON.DATE_BASED]}),[S,w]=n.useState();n.useEffect((()=>{e.prefetchQuery({queryKey:RN.list()}),e.prefetchQuery({queryKey:Eoe.lists()})}),[e]),n.useEffect((()=>{if(b||void 0===k)return;const e=[{id:"broadcasts",label:qx("engage:broadcast",{count:2}),content:a.jsx(Mje,{})},{id:"segments",label:qx("engage:segment",{count:2}),content:a.jsx(Tje,{})},{id:"statistics",label:qx("engage:insight",{count:2}),content:a.jsx("div",{className:"w-full h-full flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-2 overflow-y-auto",children:a.jsx("div",{className:"border rounded-lg shadow-sm hover:shadow-md transition-shadow duration-300",children:a.jsx(Sje,{includeSales:!0,includeSms:void 0===r.hideFeature?.engage?.sms||!r.hideFeature?.engage?.sms})})})})}];k.length>0?(y("automations"),w([{id:"automations",label:qx("engage:automation",{count:2}),content:a.jsx(Cje,{})},...e])):(y("broadcasts"),w(e))}),[k,b,r.hideFeature?.engage?.sms]);return null===v||null==S?a.jsx("div",{className:"w-full h-full flex justify-center items-center",children:a.jsx(fd,{})}):a.jsxs("div",{className:"w-full h-full flex flex-col",children:[p&&a.jsx(BN,{open:g,onClose:()=>f(!1),children:a.jsx(LN,{})}),a.jsx(CN,{open:o,setOpen:s,children:a.jsx(AN,{})}),a.jsxs("div",{className:"flex items-center justify-between p-4",children:[a.jsx("div",{id:"engage-tabs-container",children:a.jsx(pje,{activeTab:v,tabs:S,onTabChange:y,headerOnly:!0})}),a.jsxs("div",{className:"flex items-center space-x-2",children:[("automations"===v||"broadcasts"===v)&&a.jsxs(Wa,{id:"new-broadcast-button",className:"bg-primary",onClick:()=>u(!0),children:[a.jsx(oe,{className:"h-4 w-4 mr-1"}),"New ",qx("engage:broadcast")]}),"segments"===v&&a.jsxs(Wa,{className:"bg-primary",onClick:()=>d(!0),children:[a.jsx(oe,{className:"h-4 w-4 mr-1"}),"New ",qx("engage:segment")]}),a.jsx(Wa,{variant:"outline",onClick:()=>s(!0),children:a.jsx(de,{className:"w-4 h-4"})})]})]}),a.jsx("div",{className:"flex-1 overflow-hidden",children:S?.find((e=>e.id===v))?.content}),a.jsx(mje,{open:l,setOpen:u,onClose:e=>{if(nge(u,i,e,`Error creating ${qx("engage:broadcast")}`,"Please try again"),!1!==e){t(`/automations/view-modal/${e}?showBackButton=true${r.hideFeature?.engage?.sms?"&hideSms=true":""}`)}},automationType:ON.ONE_TIME,hideSms:r.hideFeature?.engage?.sms}),a.jsx(KEe,{open:c,setOpen:d,segmentId:m??void 0,onSegmentUpdated:e=>{nge(d,i,e,`Error creating ${qx("engage:segment")}`,"Please try again"),h(null)}})]})};function Nje({open:e,onOpenChange:n}){const t=zoe(),{toast:i}=Ck(),{updateAutomation:r,isUpdating:o}=qN(t?.id||""),s=qx(t?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation");return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Archive Automation"})}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"text-sm text-gray-600",children:["Are you sure you want to archive"," ",a.jsxs("span",{className:"font-semibold text-gray-900",children:['"',t?.name,'"']}),"?"]}),a.jsxs("div",{className:"text-sm text-gray-500 bg-amber-50 border border-amber-200 rounded-lg p-3",children:[a.jsx("p",{className:"font-medium text-amber-800 mb-1",children:"What happens when you archive:"}),a.jsxs("ul",{className:"text-amber-700 space-y-1",children:[a.jsx("li",{children:"• The automation will be hidden from your main list"}),a.jsx("li",{children:"• Historical data and settings are preserved"})]})]}),a.jsxs(wi,{className:"gap-2",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),disabled:o,children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:async function(){t?r({status:FN.ARCHIVED},{onSuccess:()=>{i({title:`${s} archived`,description:`"${t.name}" has been successfully archived.`}),n(!1)},onError:()=>{i({title:"Error archiving!",description:"Please contact your administrator.",variant:"destructive"})}}):i({title:"Error archiving automation",description:"Please try again.",variant:"destructive"})},disabled:o,children:o?"Archiving...":"Archive Automation"})]})]})]})})}function Eje({value:e,schema:t,onSubmit:i,fieldName:r,className:o,successMessage:s="Updated successfully",errorMessage:l="Failed to update",placeholderText:u}){const[c,d]=n.useState(!1),[m,h]=n.useState(!1),[p,g]=n.useState(0),[f,v]=n.useState(0),[y,b]=n.useState(e),[S,w]=n.useState(e),A=n.useRef(null),C=n.useRef(null),M=n.useRef(null),T=n.useRef(null),{toast:x}=Ck(),N=ho({resolver:gd(t),defaultValues:{[r]:e}});n.useEffect((()=>{N.reset({[r]:e}),b(e),w(e)}),[e,r,N]),n.useEffect((()=>{C.current&&g(C.current.offsetWidth),T.current&&!c&&v(T.current.offsetWidth)}),[c]),n.useEffect((()=>{M.current&&y&&g(M.current.offsetWidth)}),[y]),n.useEffect((()=>{c&&A.current&&(A.current.focus(),A.current.select())}),[c]);const E=async e=>{h(!0);const a=e[r];try{await i(e),w(a),x({variant:"success",title:s}),d(!1)}catch(n){x({variant:"destructive",title:l})}finally{h(!1)}},j=()=>{N.reset(),d(!1),b(S)},_=e=>{"Escape"===e.key&&j()};return c?a.jsx(Co,{...N,children:a.jsxs("form",{onSubmit:N.handleSubmit(E),className:gi("inline-flex items-center gap-2 min-h-[20px]",o),style:{minWidth:f?`${f}px`:"auto"},children:[a.jsx("span",{ref:M,className:"absolute invisible whitespace-pre leading-none select-none pointer-events-none",style:{font:"inherit"},children:y||S}),a.jsx(To,{control:N.control,name:r,render:({field:e})=>a.jsx(Eo,{className:"flex-1 min-w-0",children:a.jsx(_o,{children:a.jsx("input",{...e,ref:A,style:{width:`${Math.max(p+40,120)}px`,minWidth:`${Math.max(p,100)}px`,font:"inherit"},className:"bg-transparent outline-none leading-none h-[20px] border-none p-0 m-0",onChange:a=>{e.onChange(a),b(a.target.value)},onKeyDown:_,disabled:m,onBlur:a=>{e.onBlur(),setTimeout((()=>{a.currentTarget?.form&&!a.currentTarget.form.contains(document.activeElement)&&j()}),0)}})})})}),a.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[a.jsx(Wa,{type:"button",size:"icon",variant:"ghost",className:"h-5 w-5 p-0",onClick:j,disabled:m,children:a.jsx(Ee,{className:"h-3 w-3"})}),a.jsx(Wa,{type:"button",size:"icon",variant:"ghost",className:"h-5 w-5 p-0",disabled:m,onClick:()=>{N.handleSubmit(E)()},children:m?a.jsx(V,{className:"h-3 w-3 animate-spin"}):a.jsx(k,{className:"h-3 w-3"})})]})]})}):a.jsxs("button",{ref:T,type:"button",className:gi("group relative inline-flex items-center gap-2 cursor-pointer min-h-[20px] bg-transparent border-none p-0 text-left",o),onClick:()=>d(!0),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(!0))},"aria-label":"Edit field",children:[a.jsx("span",{ref:C,className:gi("leading-none select-none",o,{italic:!S}),children:S||u}),a.jsx(te,{className:"h-3 w-3 transition-opacity duration-200 flex-shrink-0 opacity-0 group-hover:opacity-100"})]})}function jje({open:e,onOpenChange:n}){const t=zoe(),{toast:i}=Ck(),{updateAutomation:r}=qN(t?.id||""),o=jb();return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:t?.status===FN.SENDING?`Cancel ${qx("engage:automation")}`:`Cancel ${qx("engage:automation")} Before Sending`})}),a.jsx("div",{className:"space-y-4",children:t?a.jsxs(a.Fragment,t.status===FN.SENDING?{children:[a.jsxs("p",{className:"text-sm text-muted-foreground",children:["We'll help you cancel your",a.jsx("span",{className:"font-bold px-1 text-primary",children:t.name}),qx("engage:automation")," as soon as possible."]}),a.jsxs("div",{className:"rounded-lg bg-muted p-4 text-sm",children:[a.jsx("p",{className:"font-medium mb-2",children:"What happens next?"}),a.jsxs("ul",{className:"list-disc pl-4 space-y-1",children:[a.jsxs("li",{children:["We'll attempt to cancel the"," ",qx("engage:broadcast").toLowerCase()]}),a.jsx("li",{children:"Any messages already in the process of being sent will be delivered"}),a.jsxs("li",{children:["Future ",qx("engage:broadcast").toLowerCase()," messages will be cancelled"]}),a.jsxs("li",{children:["You can create a new ",qx("engage:broadcast").toLowerCase()," if needed"]})]})]})]}:{children:[a.jsxs("p",{className:"text-sm text-muted-foreground",children:["We'll help you cancel your",a.jsx("span",{className:"font-bold px-1 text-primary",children:t.name}),qx("engage:automation")," before it starts sending."]}),a.jsxs("div",{className:"rounded-lg bg-muted p-4 text-sm",children:[a.jsx("p",{className:"font-medium mb-2",children:"What happens next?"}),a.jsxs("ul",{className:"list-disc pl-4 space-y-1",children:[a.jsx("li",{children:"The automation will be cancelled"}),a.jsx("li",{children:"You can create a new automation if needed"})]})]})]}):null}),a.jsxs(wi,{className:"gap-2 sm:gap-0",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),children:"Continue Running"}),a.jsxs(Wa,{variant:"destructive",onClick:()=>{if(!t)return;const e=t.status===FN.SENDING?FN.PARTIALLY_CANCELLED:FN.CANCELLED,a=t.status===FN.SENDING?`Attempting to cancel ${qx("engage:broadcast").toLowerCase()}`:`Successfully cancelled ${qx("engage:broadcast").toLowerCase()}`,s=`Failed to cancel ${qx("engage:broadcast").toLowerCase()}`;r({status:e},{onError:()=>{i({title:s,description:"Please contact your administrator.",variant:"destructive"}),o.invalidateQueries({queryKey:RN.all})},onSuccess:()=>{n(!1),i({title:a,description:t.status===FN.SENDING?`We'll attempt to cancel your ${qx("engage:broadcast").toLowerCase()}. Any messages already in progress will be delivered.`:`Your ${qx("engage:broadcast").toLowerCase()} has been cancelled.`})}})},children:["Cancel ",qx("engage:automation")]})]})]})})}function _je({open:e,onOpenChange:n,setIsActive:t}){const i=zoe(),{updateAutomation:r}=qN(i?.id||""),{toast:o}=Ck(),s=jb(),l=qx(i?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation"),u=i?.triggerType===ON.ONE_TIME?"Unschedule":`Pause ${l}`;return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:u})}),a.jsxs("div",{children:[i?.triggerType===ON.ONE_TIME?"Are you sure you want to unschedule the":"Are you sure you want to pause the",a.jsx("span",{className:"font-bold px-1 text-primary",children:i?.name})," ",l,"?"]}),a.jsxs(wi,{className:"gap-2 sm:gap-0",children:[a.jsx(Wa,{variant:"outline",onClick:()=>n(!1),children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:()=>{r({status:FN.DRAFT},{onSuccess:()=>{o({title:`Updated ${l}`,description:`${l} status updated`}),n(!1),t(!1)},onError:()=>{o({title:`Failed to update ${l}`,description:"Please try again"}),s.invalidateQueries({queryKey:RN.all})}})},children:u})]})]})})}const Pje=vA({name:tA().min(2,"Title must be at least 2 characters"),description:tA()});function Lje({open:e,onOpenChange:n,onDuplicationCreated:t}){const i=zoe(),{toast:r}=Ck(),o=ho({resolver:gd(Pje),defaultValues:{name:`${i?.name} (copy)`,description:i?.description??""}}),{duplicateAutomation:s}=QN();return a.jsx(fi,{open:e,onOpenChange:n,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsx(Si,{children:a.jsx(Ai,{children:"Duplicate Automation"})}),a.jsx(Co,{...o,children:a.jsxs("form",{onSubmit:o.handleSubmit((async function(e){i&&e.name?s({automationId:i.id,name:e.name,description:e.description},{onSuccess:e=>{e.id&&(t?.(e.id),n(!1))}}):r({title:"Error duplicating automation",description:"Please try again. Please make sure to fill in the name of the automation."})})),className:"space-y-4",children:[a.jsxs("div",{children:["Create a copy of the",a.jsx("span",{className:"font-bold px-1 text-primary",children:i?.name}),"automation with a new title and description."]}),a.jsx(To,{control:o.control,name:"name",render:({field:e})=>a.jsxs(Eo,{children:[a.jsx(jo,{children:"Title"}),a.jsx(_o,{children:a.jsx(Lo,{...e})}),a.jsx(Po,{})]})}),a.jsx(To,{control:o.control,name:"description",render:({field:e})=>a.jsxs(Eo,{children:[a.jsx(jo,{children:"Description"}),a.jsx(_o,{children:a.jsx(vge,{...e})}),a.jsx(Po,{})]})}),a.jsx(wi,{children:a.jsx(Wa,{type:"submit",children:"Duplicate"})})]})})]})})}const Bje=vA({name:tA().min(2,"Title must be at least 2 characters")}),Rje=vA({description:tA().max(300,"Description must be less than 300 characters")}),Dje=({showBackButton:e,onDuplicationCreated:t,onBeforeSchedule:i})=>{const r=zoe(),o=dce(),{updateAutomation:s}=qN(r?.id||""),{toast:l}=Ck(),u=(()=>{const{state:e}=Doe();return e.recipientStats})(),c=Koe(),{data:d}=cN(),{channelSenders:h}=CC(),{channelAccounts:p}=SC(),g=jb(),[f,v]=n.useState(void 0),[y,b]=n.useState(!1),[S,w]=n.useState(!1),[A,C]=n.useState(!1),[M,T]=n.useState(!1),[x,N]=n.useState(0),[E,j]=n.useState(!1),P=vN({channelSenders:h?.results??[],channelAccounts:p?.results??[],smsApplication:d});n.useEffect((()=>{if(r)switch(r.status){case FN.DRAFT:v(!1);break;case FN.ACTIVE:case FN.RUNNING:case FN.COMPLETED:v(!0);break;case FN.FAILED:case FN.DEACTIVATED:v(!1);break;case FN.SENDING:case FN.SCHEDULED:v(!0);break;case FN.PARTIALLY_CANCELLED:case FN.CANCELLED:case FN.ARCHIVED:v(!1);break;default:throw Vde(r.status,FN)}}),[r]);const L=qx(r?.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation"),B=n.useCallback((()=>{T(!0),s({status:FN.DRAFT},{onSuccess:()=>{v(!1),T(!1),l({title:`${L} activation undone`,description:"The automation will remain in draft status"})},onError:()=>{T(!1),l({title:"Error while updating the status",description:"Please refresh and try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})}),[L,s,g,l]),R=n.useCallback((()=>{if(!r)return l({title:`${L} not found`,description:"Please contact your administrator",variant:"destructive"}),null;const e=async e=>{if(f&&!e)C(!0);else{if(i&&!0===e){let e=0;for(;!u&&e<20;)await new Promise((e=>setTimeout(e,100))),e++;if(!u)return void l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"});const a=await i({estimatedEmailRecipients:u?.emails??0,estimatedSmsRecipients:u?.phones??0});if(!0!==a)return void l({title:"Error while updating the status",description:a,variant:"destructive"})}if(c?.emailChannelSenderId&&c?.emailHtmlBody&&c?.emailHtmlBody?.includes(tje)){if(0===x)return l({title:`${ije}. You can click send again to send anyway.`,variant:"warning"}),void N(x+1);N(x+1)}switch(r.triggerType){case ON.ONE_TIME:if(!r.triggerMetadata||!("scheduledAt"in r.triggerMetadata)||!r.triggerMetadata?.scheduledAt)return void l({title:"Ensure you have selected a scheduled time",variant:"destructive"});if(!c||!c.emailChannelSenderId&&!c.smsChannelSenderId)return void l({title:"Ensure you have selected at least one kind of communication",variant:"destructive"});break;case ON.TRIGGER_BASED:case ON.DATE_BASED:break;default:throw Vde(r.triggerType,ON)}e?(T(!0),s({status:FN.SENDING},{onSuccess:()=>{v(!0),T(!1),l({title:`${L} activation started`,variant:"default",action:a.jsx(sre,{altText:"Undo Activate",onClick:B,className:"bg-blue-50 text-blue-700 border border-blue-200 hover:bg-blue-100 transition-colors duration-150 rounded-md px-3 py-1.5 font-medium shadow-sm",children:"Undo"})})},onError:()=>{l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"}),T(!1),g.invalidateQueries({queryKey:RN.all})}})):(T(!0),s({status:e?FN.ACTIVE:FN.DEACTIVATED},{onSuccess:()=>{v(e),l(r.triggerType===ON.ONE_TIME?e?{title:`${L} started!`}:{title:`${L} has been unscheduled`}:{title:`${L} status updated to ${e?"active":"inactive"}`}),T(!1)},onError:()=>{l({title:"Error while updating the status",description:"Please contact your administrator",variant:"destructive"}),T(!1),g.invalidateQueries({queryKey:RN.all})}}))}};if(!r||!c)return null;const n=P.find((e=>e.channelSender.id===c?.smsChannelSenderId)),t=!r.triggerMetadata||null===r.triggerMetadata,o=r.triggerMetadata?.triggerType===ON.ONE_TIME&&!r.triggerMetadata?.scheduledAt,d=!c?.emailChannelSenderId&&!c?.smsChannelSenderId,m=r.triggerType===ON.ONE_TIME,h=m&&n&&n?.smsApplication?.application&&n?.smsApplication?.status!==fN.APPROVED,p=c?.emailChannelSenderId&&(!c?.emailSubject||!c?.emailHtmlBody),y=c?.smsChannelSenderId&&!c?.smsMessageBody,b=0===r.includeSegmentIds?.length,S=m&&(!r.triggerMetadata||!("scheduledAt"in r.triggerMetadata)||!r.triggerMetadata?.scheduledAt);let w,A=!1,M=!0;switch(r.status){case FN.ACTIVE:A=!1;break;case FN.DRAFT:(d||p||y||b)&&(A=!0,p&&(w="Missing subject in email communication"),y&&(w="Missing SMS message in SMS communication"),b&&(w="Missing include segment")),S&&(A=!0),h&&(A=!0);break;case FN.DEACTIVATED:case FN.PARTIALLY_CANCELLED:case FN.CANCELLED:switch(A=!0,M=!1,r.status){case FN.DEACTIVATED:w="Automation is deactivated";break;case FN.PARTIALLY_CANCELLED:w="Automation is partially cancelled";break;case FN.CANCELLED:w="Automation is cancelled";break;default:throw Vde(r.status,FN)}break;case FN.RUNNING:A=!0,r.triggerType===ON.TRIGGER_BASED?(w=`Cannot change status of running ${L}`,M=!0):M=r.triggerType===ON.ONE_TIME&&r.status===FN.RUNNING;break;case FN.COMPLETED:A=!0,w=`Cannot change status of completed ${L}`,M=!1;break;case FN.FAILED:A=!0,w=`Cannot change status of failed ${L}`,M=!1;break;case FN.SENDING:case FN.SCHEDULED:A=!1,M=!0;break;case FN.ARCHIVED:A=!0,w=`Cannot change status of archived ${L}`,M=!1;break;default:throw Vde(r.status,FN)}const E=(()=>{switch(r.triggerType){case ON.DATE_BASED:case ON.TRIGGER_BASED:return a.jsxs("div",{className:"flex items-center gap-2 w-[12ch] cursor-pointer",children:[a.jsx(f?k:_,{className:"w-4 h-4"}),a.jsx("div",{className:"text-[13px] font-medium",children:f?"Active":"Inactive"}),a.jsx(hNe,{checked:f,onCheckedChange:e,disabled:A})]});case ON.ONE_TIME:if((r.status===FN.RUNNING||r.status===FN.SCHEDULED||r.status===FN.SENDING)&&r.triggerType===ON.ONE_TIME)return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>j(!0),disabled:!1,children:"Cancel"});if(t||o||d||h||p||y||b){return a.jsx("div",{className:"flex items-center gap-2 cursor-not-allowed",children:(()=>{const n=r.triggerMetadata&&"scheduledAt"in r.triggerMetadata&&"now"===r.triggerMetadata?.scheduledAt?`Start ${L}`:"Schedule Send";if(r.status!==FN.DRAFT&&r.triggerMetadata&&"scheduledAt"in r.triggerMetadata&&"now"!==r.triggerMetadata?.scheduledAt&&r.status===FN.ACTIVE)return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:r.triggerType===ON.ONE_TIME?"Unschedule":"Convert to Draft"});const t=[];h&&t.push("The SMS number selected is still not approved"),S&&t.push("Please select a schedule time on the left sidebar"),d&&t.push("Please add at least one sender"),p&&t.push("Please add a subject to your email communication"),y&&t.push("Please add a message to your SMS communication"),b&&t.push(`Please select at least one ${qx("engage:segment",{count:1}).toLowerCase()}`);const i=t.map((e=>{return(a=e)?a.charAt(0).toUpperCase()+a.slice(1):a;var a})),o=`You cannot start this ${qx("engage:broadcast").toLowerCase()} yet. ${i.join(" · ")}`;return a.jsx("div",{className:"flex items-center gap-2",children:a.jsx(ex,{alertText:o,asChild:!1,className:"!cursor-not-allowed",children:a.jsx("div",{className:"px-4 py-2 rounded border border-input bg-background text-muted-foreground cursor-not-allowed text-sm font-medium",children:a.jsx("span",{children:n})})})})})()})}if(!f){let n="Schedule Send";return r.triggerMetadata&&r.triggerMetadata.triggerType===ON.ONE_TIME&&r.triggerMetadata.scheduledAt&&"now"===r.triggerMetadata.scheduledAt&&(n=`Start ${L}`),a.jsx(Wa,{id:"start-automation-button",variant:"default",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:n})}return a.jsx(Wa,{variant:"outline",className:"flex items-center gap-2",onClick:()=>e(!f),disabled:A,children:r.triggerType===ON.ONE_TIME?"Unschedule":"Convert to Draft"});default:throw Vde(r.triggerType,ON)}})();return A&&w&&r.triggerType===ON.TRIGGER_BASED?a.jsx(ex,{alertText:w,asChild:!0,children:a.jsx("div",{className:"flex items-center gap-2",children:M&&E})}):a.jsx("div",{className:"flex items-center gap-2",children:M&&E})}),[r,c,P,l,f,L,i,s,u,x,g,B]),D=n.useMemo((()=>r?a.jsx(qT,{variant:tge(r.status),id:"automation-status-pill",children:Jde({status:r.status,automationType:r.triggerType,vsaasManaged:r.automationType===IN.MANAGED})}):null),[r]);return r&&void 0!==f?a.jsxs("header",{className:"flex px-1 pt-1",children:[a.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e&&a.jsx(Wa,{variant:"ghost",size:"icon",onClick:()=>o(-1),children:a.jsx(m,{})}),a.jsx("div",{className:"flex items-center gap-2",children:a.jsxs("div",{className:"flex flex-col gap-0 items-start",children:[a.jsx(Eje,{value:r.name,schema:Bje,onSubmit:e=>{s({name:e.name},{onError:()=>{l({title:`Failed to update ${L} name`,description:"Please try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})},fieldName:"name",className:"text-lg",successMessage:`${L} name updated`,errorMessage:`Failed to update ${L.toLowerCase()} name`}),r.automationType!==IN.MANAGED?a.jsx(Eje,{value:r.description||"",schema:Rje,onSubmit:e=>{s({description:e.description},{onError:()=>{l({title:`Failed to update ${L.toLowerCase()} description`,description:"Please try again",variant:"destructive"}),g.invalidateQueries({queryKey:RN.all})}})},fieldName:"description",className:"text-sm "+(r.description?"text-current":"text-muted-foreground"),successMessage:"Description updated",errorMessage:"Failed to update description",placeholderText:`Describe the goal of the ${L.toLowerCase()}`}):r.description&&a.jsx("div",{className:"text-sm text-current",children:r.description})]})})]}),a.jsxs("div",{className:"ml-auto flex gap-4 items-center",children:[a.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[D,r.triggerType===ON.ONE_TIME&&a.jsxs(a.Fragment,{children:[a.jsx("div",{role:"button",tabIndex:0,className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-10 w-10 cursor-pointer",onClick:()=>b(!0),children:a.jsx(ex,{title:"Duplicate",Icon:sM.DuplicateIcon,asChild:!1,onClick:()=>b(!0)})}),(r.status===FN.COMPLETED||r.status===FN.DRAFT||r.status===FN.PARTIALLY_CANCELLED||r.status===FN.CANCELLED)&&a.jsx("div",{role:"button",tabIndex:0,className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-10 w-10 cursor-pointer",onClick:()=>w(!0),children:a.jsx(ex,{title:"Archive",Icon:sM.ArchiveIcon,asChild:!1,onClick:()=>w(!0)})})]})]}),a.jsx("div",M?{className:"flex items-center text-muted-foreground pr-2",children:a.jsx(fd,{size:"sm"})}:{className:"flex items-center",children:R()})]}),a.jsx(Lje,{open:y,onOpenChange:b,onDuplicationCreated:t}),a.jsx(_je,{open:A,onOpenChange:C,setIsActive:v}),a.jsx(jje,{open:E,onOpenChange:j}),a.jsx(Nje,{open:S,onOpenChange:w})]}):null},zje=()=>{const e=zoe(),{isLoading:t}=ZN(e?.id),[i,r]=n.useState(void 0),{orders:o,nextCursor:s,totalCount:l,isLoading:u,isFetching:c,isPlaceholderData:d}=$N({automationId:e?.id??"",cursor:i,limit:10,automationStatus:e?.status}),{state:{hideSales:m,hideSms:h}}=n.useContext(toe),p=n.useCallback((e=>{r(e.cursor)}),[]);if(!e||t)return a.jsx(fd,{text:[`Fetching ${qx("engage:insight",{count:2})}`,"Finishing up"]});const g=o?.results||[],f=[{accessorKey:"first_name",header:"Customer",enableSorting:!1,cell:({row:e})=>{const n=e.original.first_name||"",t=e.original.last_name||"",i=e.original.email||"";return a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:n&&t?`${n} ${t}`:"Unknown"}),i&&a.jsx("span",{className:"text-xs text-muted-foreground",children:i})]})},size:200},{accessorKey:"amount",header:"Amount",enableSorting:!1,cell:({row:e})=>{const a=parseFloat(e.original.amount);return $de(a)},size:120},{accessorKey:"communication_type",header:"Channel",enableSorting:!1,cell:({row:e})=>a.jsx("span",{className:"capitalize text-sm",children:e.original.communication_type||"Unknown"}),size:100},{accessorKey:"schedule_send_at",header:"Sent Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.schedule_send_at;return a?new Date(a).toLocaleDateString():"Unknown"},size:140},{accessorKey:"created_date",header:"Order Date",enableSorting:!1,cell:({row:e})=>{const a=e.original.created_date;return a?new Date(a).toLocaleDateString():"Unknown"},size:140}];return a.jsxs("div",{className:"h-full p-4 space-y-6",children:[a.jsx(Sje,{automationId:e.id,automation:e,includeSales:!m,includeSms:!h,showErrors:!0}),!m&&a.jsxs("div",{className:"bg-white rounded-2xl p-6",children:[a.jsx("h3",{className:"text-lg font-medium text-foreground mb-4",children:"Sales From This Campaigns"}),void 0!==l&&a.jsxs("p",{className:"text-sm text-muted-foreground mb-4",children:["Total Orders: ",l]}),a.jsx(dle,{data:g,columns:f,paginationMode:"cursor",totalCount:l??void 0,initialPageSize:10,isLoading:u,cursorPaginationQueryResult:{nextCursor:s||void 0,isLoading:u,isFetching:c,isPlaceholderData:d},hideLoadingState:!0,onQueryParametersChange:p,enableSorting:!1})]})]})},Oje=({options:e})=>a.jsxs(Hde,{children:[a.jsx(Fde,{asChild:!0,children:a.jsx(Wa,{className:"p-1 hover:bg-gray-100 rounded transition-colors",variant:"ghost",children:a.jsx("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:a.jsx(sM.FilterIcon,{className:"w-4 h-4"})})})}),a.jsx(Gde,{className:"w-48",children:a.jsx("div",{className:"space-y-2",children:a.jsx("div",{className:"space-y-1",children:e.map((e=>a.jsx(Wa,{onClick:e.onClick,variant:"ghost",className:"w-full text-left px-2 py-1.5 rounded text-sm transition-colors "+(e.isActive?"bg-blue-100 text-blue-700":"hover:bg-gray-100"),children:e.title},e.title)))})})})]});function Kje({automationId:e}){const[t,i]=n.useState(""),[r,o]=n.useState(!1),[s,l]=n.useState(void 0),[u,c]=n.useState(25),d=n.useRef(""),{sentCommunications:m,isLoading:h,isFetching:p,isPlaceholderData:g}=UN({automationId:e,cursor:s,limit:u,search:t||void 0,errorsOnly:r}),f={nextCursor:m?.pagination.cursor||null,isLoading:h,isFetching:p,isPlaceholderData:!!g},v=n.useCallback((e=>{l(e.cursor),c(e.pageSize)}),[]),y=[{accessorKey:"communicationJobCreatedAt",id:"lastCommunication",header:"Sent At",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>e.original.communicationJobCreatedAt?a.jsx("div",{className:"flex items-center gap-2",children:a.jsx("span",{className:"text-sm text-gray-600",children:cue(new Date(e.original.communicationJobCreatedAt),"MMM d, yyyy h:mm a")})}):a.jsx("span",{className:"text-gray-400",children:"Not available"})},{accessorFn:e=>`${e.firstName||""} ${e.lastName||""}`.trim(),id:"name",header:"Name",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>{const n=`${e.original.firstName||""} ${e.original.lastName||""}`.trim();return n||a.jsx("span",{className:"text-gray-400",children:"Not provided"})}},{accessorKey:"email",header:"Email",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>a.jsx("div",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:e.original.email||a.jsx("span",{className:"text-gray-400",children:"Not provided"})})},{accessorKey:"phone",header:"Phone",enableSorting:!1,enableColumnFilter:!1,cell:({row:e})=>a.jsx("div",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:e.original.phone?BTe(e.original.phone):a.jsx("span",{className:"text-gray-400",children:"Not provided"})})},{accessorKey:"communicationsSent",id:"communicationsSent",header:()=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{children:"Communications Sent"}),a.jsx(Oje,{options:[{title:"All Communications",onClick:()=>{o(!1)},isActive:!r},{title:"Errors Only",onClick:()=>{o(!0)},isActive:r}]})]}),enableSorting:!1,enableColumnFilter:!1,filterFn:(e,a,n)=>(n!==d.current&&(d.current=n,o("errors-only"===n)),!0),cell:({row:e})=>{const n=e.original.communicationsSent||[],t=n.filter((e=>e.type===GN.EMAIL)),i=n.filter((e=>e.type===GN.SMS)),r=t.length>0,o=i.length>0,s=t.some((e=>e.delivered)),l=i.some((e=>e.delivered)),u=t.find((e=>e.error))?.error,c=i.find((e=>e.error))?.error,d=t.some((e=>e.skipped)),m=i.some((e=>e.skipped)),h=(e,n,t,i)=>a.jsxs("div",{className:"flex items-center gap-1.5 cursor-pointer",children:[a.jsxs("div",{className:"relative",children:[a.jsx("email"===e?sM.EmailIcon:sM.SmsIcon,{className:"h-4 w-4 "+(t?"text-red-500":i?"text-gray-400":n?"text-green-500":"text-gray-400")}),n&&!t&&!i&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-green-500 ring-1 ring-white"}),t&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-red-500 ring-1 ring-white"}),i&&a.jsx("div",{className:"absolute -right-1 -top-1 h-2 w-2 rounded-full bg-gray-400 ring-1 ring-white"})]}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("span",{className:"text-sm font-medium",children:"email"===e?"Email":"SMS"}),a.jsx("span",t?{className:"text-xs text-red-500",children:"Failed"}:i?{className:"text-xs text-gray-500",children:"Skipped"}:{className:"text-xs "+(n?"text-green-600":"text-gray-500"),children:n?"Delivered":"Pending"})]})]});return a.jsxs("div",{className:"flex items-center gap-3",children:[r&&(u?a.jsx(ex,{title:u,children:h("email",s,u,d)}):h("email",s,u,d)),r&&o&&a.jsx("div",{className:"h-8 w-px bg-gray-200"}),o&&(c?a.jsx(ex,{title:c,children:h("sms",l,c,m)}):h("sms",l,c,m)),!r&&!o&&a.jsx("span",{className:"text-sm text-gray-400",children:"None"})]})}}];return a.jsx("div",{className:"w-full h-[75vh] flex flex-col",children:a.jsx("div",{className:"flex-grow min-h-0 p-4",children:a.jsx(dle,{data:m?.results||[],columns:y,isLoading:h&&!g,paginationMode:"cursor",initialPageSize:u,totalCount:m?.pagination.total,searchValue:t,onSearchChange:i,manualFiltering:!1,hideLoadingState:!0,cursorPaginationQueryResult:f,onQueryParametersChange:v})})})}const Ije=()=>{const e=zoe();return e?e?.triggerType===ON.ONE_TIME&&e?.status===FN.DRAFT?a.jsxs("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:[a.jsx("div",{className:"mb-4",children:a.jsx(sM.UserIcon,{className:"h-12 w-12 text-gray-400"})}),a.jsx("h3",{className:"mb-2 text-lg font-semibold text-gray-700",children:"No Recipients Available Yet"}),a.jsxs("p",{className:"text-gray-500",children:["Recipients will be available once this"," ",qx(e.triggerType===ON.ONE_TIME?"engage:broadcast":"engage:automation")," ","has completed running. Please check back after the automation has finished."]})]}):a.jsx(Kje,{automationId:e.id}):a.jsx(fd,{text:["Fetching Recipients","Finishing up"]})},Hje=n.createContext(null);Hje.displayName="PanelGroupContext";const Fje="data-panel-group",Gje="data-panel-group-direction",Vje="data-panel-group-id",Jje="data-panel",Uje="data-panel-collapsible",Wje="data-panel-id",qje="data-panel-size",Zje="data-resize-handle",$je="data-resize-handle-active",Yje="data-panel-resize-handle-enabled",Qje="data-panel-resize-handle-id",Xje="data-resize-handle-state",e_e=n.useLayoutEffect,a_e=r["useId".toString()],n_e="function"==typeof a_e?a_e:()=>null;let t_e=0;function i_e(e=null){const a=n_e(),t=n.useRef(e||a||null);return null===t.current&&(t.current=""+t_e++),null!=e?e:t.current}function r_e({children:e,className:a="",collapsedSize:t,collapsible:i,defaultSize:r,forwardedRef:o,id:s,maxSize:l,minSize:u,onCollapse:c,onExpand:d,onResize:m,order:h,style:p,tagName:g="div",...f}){const v=n.useContext(Hje);if(null===v)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:y,expandPanel:k,getPanelSize:b,getPanelStyle:S,groupId:w,isPanelCollapsed:A,reevaluatePanelConstraints:C,registerPanel:M,resizePanel:T,unregisterPanel:x}=v,N=i_e(s),E=n.useRef({callbacks:{onCollapse:c,onExpand:d,onResize:m},constraints:{collapsedSize:t,collapsible:i,defaultSize:r,maxSize:l,minSize:u},id:N,idIsFromProps:void 0!==s,order:h});n.useRef({didLogMissingDefaultSizeWarning:!1}),e_e((()=>{const{callbacks:e,constraints:a}=E.current,n={...a};E.current.id=N,E.current.idIsFromProps=void 0!==s,E.current.order=h,e.onCollapse=c,e.onExpand=d,e.onResize=m,a.collapsedSize=t,a.collapsible=i,a.defaultSize=r,a.maxSize=l,a.minSize=u,n.collapsedSize===a.collapsedSize&&n.collapsible===a.collapsible&&n.maxSize===a.maxSize&&n.minSize===a.minSize||C(E.current,n)})),e_e((()=>{const e=E.current;return M(e),()=>{x(e)}}),[h,N,M,x]),n.useImperativeHandle(o,(()=>({collapse:()=>{y(E.current)},expand:e=>{k(E.current,e)},getId:()=>N,getSize:()=>b(E.current),isCollapsed:()=>A(E.current),isExpanded:()=>!A(E.current),resize:e=>{T(E.current,e)}})),[y,k,b,A,N,T]);const j=S(E.current,r);return n.createElement(g,{...f,children:e,className:a,id:N,style:{...j,...p},[Vje]:w,[Jje]:"",[Uje]:i||void 0,[Wje]:N,[qje]:parseFloat(""+j.flexGrow).toFixed(1)})}const o_e=n.forwardRef(((e,a)=>n.createElement(r_e,{...e,forwardedRef:a})));r_e.displayName="Panel",o_e.displayName="forwardRef(Panel)";let s_e=null,l_e=-1,u_e=null;function c_e(e,a){var n,t;const i=function(e,a){if(a){const e=!!(a&A_e),n=!!(a&C_e);if(a&S_e)return e?"se-resize":n?"ne-resize":"e-resize";if(a&w_e)return e?"sw-resize":n?"nw-resize":"w-resize";if(e)return"s-resize";if(n)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}(e,a);if(s_e!==i){var r;if(s_e=i,null===u_e&&(u_e=document.createElement("style"),document.head.appendChild(u_e)),l_e>=0)null===(r=u_e.sheet)||void 0===r||r.removeRule(l_e);l_e=null!==(n=null===(t=u_e.sheet)||void 0===t?void 0:t.insertRule(`*{cursor: ${i} !important;}`))&&void 0!==n?n:-1}}function d_e(e){return"keydown"===e.type}function m_e(e){return e.type.startsWith("pointer")}function h_e(e){return e.type.startsWith("mouse")}function p_e(e){if(m_e(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(h_e(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}const g_e=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function f_e(e){const a=getComputedStyle(e);return"fixed"===a.position||(!("auto"===a.zIndex||"static"===a.position&&!function(e){var a;const n=getComputedStyle(null!==(a=b_e(e))&&void 0!==a?a:e).display;return"flex"===n||"inline-flex"===n}(e))||(+a.opacity<1||("transform"in a&&"none"!==a.transform||("webkitTransform"in a&&"none"!==a.webkitTransform||("mixBlendMode"in a&&"normal"!==a.mixBlendMode||("filter"in a&&"none"!==a.filter||("webkitFilter"in a&&"none"!==a.webkitFilter||("isolation"in a&&"isolate"===a.isolation||(!!g_e.test(a.willChange)||"touch"===a.webkitOverflowScrolling)))))))))}function v_e(e){let a=e.length;for(;a--;){const n=e[a];if(H_e(n,"Missing node"),f_e(n))return n}return null}function y_e(e){return e&&Number(getComputedStyle(e).zIndex)||0}function k_e(e){const a=[];for(;e;)a.push(e),e=b_e(e);return a}function b_e(e){const{parentNode:a}=e;return a&&a instanceof ShadowRoot?a.host:a}const S_e=1,w_e=2,A_e=4,C_e=8,M_e="coarse"===function(){if("function"==typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}();let T_e=[],x_e=!1,N_e=new Map,E_e=new Map;const j_e=new Set;function __e(e){const{target:a}=e,{x:n,y:t}=p_e(e);x_e=!0,R_e({target:a,x:n,y:t}),K_e(),T_e.length>0&&(I_e("down",e),e.preventDefault(),B_e(a)||e.stopImmediatePropagation())}function P_e(e){const{x:a,y:n}=p_e(e);if(x_e&&0===e.buttons&&(x_e=!1,I_e("up",e)),!x_e){const{target:t}=e;R_e({target:t,x:a,y:n})}I_e("move",e),z_e(),T_e.length>0&&e.preventDefault()}function L_e(e){const{target:a}=e,{x:n,y:t}=p_e(e);E_e.clear(),x_e=!1,T_e.length>0&&(e.preventDefault(),B_e(a)||e.stopImmediatePropagation()),I_e("up",e),R_e({target:a,x:n,y:t}),z_e(),K_e()}function B_e(e){let a=e;for(;a;){if(a.hasAttribute(Zje))return!0;a=a.parentElement}return!1}function R_e({target:e,x:a,y:n}){T_e.splice(0);let t=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(t=e),j_e.forEach((e=>{const{element:i,hitAreaMargins:r}=e,o=i.getBoundingClientRect(),{bottom:s,left:l,right:u,top:c}=o,d=M_e?r.coarse:r.fine;if(a>=l-d&&a<=u+d&&n>=c-d&&n<=s+d){if(null!==t&&document.contains(t)&&i!==t&&!i.contains(t)&&!t.contains(i)&&function(e,a){if(e===a)throw new Error("Cannot compare node with itself");const n={a:k_e(e),b:k_e(a)};let t;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),a=n.b.pop(),t=e;H_e(t,"Stacking order can only be calculated for elements with a common ancestor");const i=y_e(v_e(n.a)),r=y_e(v_e(n.b));if(i===r){const e=t.childNodes,a={a:n.a.at(-1),b:n.b.at(-1)};let i=e.length;for(;i--;){const n=e[i];if(n===a.a)return 1;if(n===a.b)return-1}}return Math.sign(i-r)}(t,i)>0){let e=t,a=!1;for(;e&&!e.contains(i);){if((m=e.getBoundingClientRect()).x<(h=o).x+h.width&&m.x+m.width>h.x&&m.y<h.y+h.height&&m.y+m.height>h.y){a=!0;break}e=e.parentElement}if(a)return}T_e.push(e)}var m,h}))}function D_e(e,a){E_e.set(e,a)}function z_e(){let e=!1,a=!1;T_e.forEach((n=>{const{direction:t}=n;"horizontal"===t?e=!0:a=!0}));let n=0;E_e.forEach((e=>{n|=e})),e&&a?c_e("intersection",n):e?c_e("horizontal",n):a?c_e("vertical",n):null!==u_e&&(document.head.removeChild(u_e),s_e=null,u_e=null,l_e=-1)}let O_e=new AbortController;function K_e(){O_e.abort(),O_e=new AbortController;const e={capture:!0,signal:O_e.signal};j_e.size&&(x_e?(T_e.length>0&&N_e.forEach(((a,n)=>{const{body:t}=n;a>0&&(t.addEventListener("contextmenu",L_e,e),t.addEventListener("pointerleave",P_e,e),t.addEventListener("pointermove",P_e,e))})),N_e.forEach(((a,n)=>{const{body:t}=n;t.addEventListener("pointerup",L_e,e),t.addEventListener("pointercancel",L_e,e)}))):N_e.forEach(((a,n)=>{const{body:t}=n;a>0&&(t.addEventListener("pointerdown",__e,e),t.addEventListener("pointermove",P_e,e))})))}function I_e(e,a){j_e.forEach((n=>{const{setResizeHandlerState:t}=n,i=T_e.includes(n);t(e,i,a)}))}function H_e(e,a){if(!e)throw Error(a)}function F_e(e,a,n=10){return e.toFixed(n)===a.toFixed(n)?0:e>a?1:-1}function G_e(e,a,n=10){return 0===F_e(e,a,n)}function V_e(e,a,n){return 0===F_e(e,a,n)}function J_e({panelConstraints:e,panelIndex:a,size:n}){const t=e[a];H_e(null!=t,`Panel constraints not found for index ${a}`);let{collapsedSize:i=0,collapsible:r,maxSize:o=100,minSize:s=0}=t;if(F_e(n,s)<0)if(r){n=F_e(n,(i+s)/2)<0?i:s}else n=s;return n=Math.min(o,n),n=parseFloat(n.toFixed(10))}function U_e({delta:e,initialLayout:a,panelConstraints:n,pivotIndices:t,prevLayout:i,trigger:r}){if(V_e(e,0))return a;const o=[...a],[s,l]=t;H_e(null!=s,"Invalid first pivot index"),H_e(null!=l,"Invalid second pivot index");let u=0;if("keyboard"===r){{const t=e<0?l:s,i=n[t];H_e(i,`Panel constraints not found for index ${t}`);const{collapsedSize:r=0,collapsible:o,minSize:u=0}=i;if(o){const n=a[t];if(H_e(null!=n,`Previous layout not found for panel index ${t}`),V_e(n,r)){const a=u-n;F_e(a,Math.abs(e))>0&&(e=e<0?0-a:a)}}}{const t=e<0?s:l,i=n[t];H_e(i,`No panel constraints found for index ${t}`);const{collapsedSize:r=0,collapsible:o,minSize:u=0}=i;if(o){const n=a[t];if(H_e(null!=n,`Previous layout not found for panel index ${t}`),V_e(n,u)){const a=n-r;F_e(a,Math.abs(e))>0&&(e=e<0?0-a:a)}}}}{const t=e<0?1:-1;let i=e<0?l:s,r=0;for(;;){const e=a[i];H_e(null!=e,`Previous layout not found for panel index ${i}`);if(r+=J_e({panelConstraints:n,panelIndex:i,size:100})-e,i+=t,i<0||i>=n.length)break}const o=Math.min(Math.abs(e),Math.abs(r));e=e<0?0-o:o}{let t=e<0?s:l;for(;t>=0&&t<n.length;){const i=Math.abs(e)-Math.abs(u),r=a[t];H_e(null!=r,`Previous layout not found for panel index ${t}`);const s=J_e({panelConstraints:n,panelIndex:t,size:r-i});if(!V_e(r,s)&&(u+=r-s,o[t]=s,u.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(function(e,a,n){if(e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!V_e(e[t],a[t],n))return!1;return!0}(i,o))return i;{const t=e<0?l:s,i=a[t];H_e(null!=i,`Previous layout not found for panel index ${t}`);const r=i+u,c=J_e({panelConstraints:n,panelIndex:t,size:r});if(o[t]=c,!V_e(c,r)){let a=r-c;let t=e<0?l:s;for(;t>=0&&t<n.length;){const i=o[t];H_e(null!=i,`Previous layout not found for panel index ${t}`);const r=J_e({panelConstraints:n,panelIndex:t,size:i+a});if(V_e(i,r)||(a-=r-i,o[t]=r),V_e(a,0))break;e>0?t--:t++}}}return V_e(o.reduce(((e,a)=>a+e),0),100)?o:i}function W_e({layout:e,panelsArray:a,pivotIndices:n}){let t=0,i=100,r=0,o=0;const s=n[0];H_e(null!=s,"No pivot index found"),a.forEach(((e,a)=>{const{constraints:n}=e,{maxSize:l=100,minSize:u=0}=n;a===s?(t=u,i=l):(r+=u,o+=l)}));return{valueMax:Math.min(i,100-r),valueMin:Math.max(t,100-o),valueNow:e[s]}}function q_e(e,a=document){return Array.from(a.querySelectorAll(`[${Qje}][data-panel-group-id="${e}"]`))}function Z_e(e,a,n=document){const t=q_e(e,n).findIndex((e=>e.getAttribute(Qje)===a));return null!=t?t:null}function $_e(e,a,n){const t=Z_e(e,a,n);return null!=t?[t,t+1]:[-1,-1]}function Y_e(e,a=document){var n;if(a instanceof HTMLElement&&(null==a||null===(n=a.dataset)||void 0===n?void 0:n.panelGroupId)==e)return a;const t=a.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return t||null}function Q_e(e,a=document){const n=a.querySelector(`[${Qje}="${e}"]`);return n||null}function X_e({committedValuesRef:e,eagerValuesRef:a,groupId:t,layout:i,panelDataArray:r,panelGroupElement:o,setLayout:s}){n.useRef({didWarnAboutMissingResizeHandle:!1}),e_e((()=>{if(!o)return;const e=q_e(t,o);for(let a=0;a<r.length-1;a++){const{valueMax:n,valueMin:t,valueNow:o}=W_e({layout:i,panelsArray:r,pivotIndices:[a,a+1]}),s=e[a];if(null==s);else{const e=r[a];H_e(e,`No panel data found for index "${a}"`),s.setAttribute("aria-controls",e.id),s.setAttribute("aria-valuemax",""+Math.round(n)),s.setAttribute("aria-valuemin",""+Math.round(t)),s.setAttribute("aria-valuenow",null!=o?""+Math.round(o):"")}}return()=>{e.forEach(((e,a)=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-valuemax"),e.removeAttribute("aria-valuemin"),e.removeAttribute("aria-valuenow")}))}}),[t,i,r,o]),n.useEffect((()=>{if(!o)return;const e=a.current;H_e(e,"Eager values not found");const{panelDataArray:n}=e;H_e(null!=Y_e(t,o),`No group found for id "${t}"`);const r=q_e(t,o);H_e(r,`No resize handles found for group id "${t}"`);const l=r.map((e=>{const a=e.getAttribute(Qje);H_e(a,"Resize handle element has no handle id attribute");const[r,l]=function(e,a,n,t=document){var i,r,o,s;const l=Q_e(a,t),u=q_e(e,t),c=l?u.indexOf(l):-1;return[null!==(i=null===(r=n[c])||void 0===r?void 0:r.id)&&void 0!==i?i:null,null!==(o=null===(s=n[c+1])||void 0===s?void 0:s.id)&&void 0!==o?o:null]}(t,a,n,o);if(null==r||null==l)return()=>{};const u=e=>{if(!e.defaultPrevented)switch(e.key){case"Enter":{e.preventDefault();const l=n.findIndex((e=>e.id===r));if(l>=0){const e=n[l];H_e(e,`No panel data found for index ${l}`);const r=i[l],{collapsedSize:u=0,collapsible:c,minSize:d=0}=e.constraints;if(null!=r&&c){const e=U_e({delta:V_e(r,u)?d-u:u-r,initialLayout:i,panelConstraints:n.map((e=>e.constraints)),pivotIndices:$_e(t,a,o),prevLayout:i,trigger:"keyboard"});i!==e&&s(e)}}break}}};return e.addEventListener("keydown",u),()=>{e.removeEventListener("keydown",u)}}));return()=>{l.forEach((e=>e()))}}),[o,e,a,t,i,r,s])}function ePe(e,a){if(e.length!==a.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==a[n])return!1;return!0}function aPe(e,a){const n="horizontal"===e,{x:t,y:i}=p_e(a);return n?t:i}function nPe(e,a,n,t,i,r){if(d_e(e)){const a="horizontal"===n;let t=0;t=e.shiftKey?100:null!=i?i:10;let r=0;switch(e.key){case"ArrowDown":r=a?0:t;break;case"ArrowLeft":r=a?-t:0;break;case"ArrowRight":r=a?t:0;break;case"ArrowUp":r=a?0:-t;break;case"End":r=100;break;case"Home":r=-100}return r}return null==t?0:function(e,a,n,t,i){const r="horizontal"===n,o=Q_e(a,i);H_e(o,`No resize handle element found for id "${a}"`);const s=o.getAttribute(Vje);H_e(s,"Resize handle element has no group id attribute");let{initialCursorPosition:l}=t;const u=aPe(n,e),c=Y_e(s,i);H_e(c,`No group element found for id "${s}"`);const d=c.getBoundingClientRect();return(u-l)/(r?d.width:d.height)*100}(e,a,n,t,r)}function tPe(e,a,n){a.forEach(((a,t)=>{const i=e[t];H_e(i,`Panel data not found for index ${t}`);const{callbacks:r,constraints:o,id:s}=i,{collapsedSize:l=0,collapsible:u}=o,c=n[s];if(null==c||a!==c){n[s]=a;const{onCollapse:e,onExpand:t,onResize:i}=r;i&&i(a,c),u&&(e||t)&&(!t||null!=c&&!G_e(c,l)||G_e(a,l)||t(),!e||null!=c&&G_e(c,l)||!G_e(a,l)||e())}}))}function iPe(e,a){if(e.length!==a.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=a[n])return!1;return!0}function rPe(e){try{if("undefined"==typeof localStorage)throw new Error("localStorage not supported in this environment");e.getItem=e=>localStorage.getItem(e),e.setItem=(e,a)=>{localStorage.setItem(e,a)}}catch(a){e.getItem=()=>null,e.setItem=()=>{}}}function oPe(e){return`react-resizable-panels:${e}`}function sPe(e){return e.map((e=>{const{constraints:a,id:n,idIsFromProps:t,order:i}=e;return t?n:i?`${i}:${JSON.stringify(a)}`:JSON.stringify(a)})).sort(((e,a)=>e.localeCompare(a))).join(",")}function lPe(e,a){try{const n=oPe(e),t=a.getItem(n);if(t){const e=JSON.parse(t);if("object"==typeof e&&null!=e)return e}}catch(n){}return null}function uPe(e,a,n,t,i){var r;const o=oPe(e),s=sPe(a),l=null!==(r=lPe(e,i))&&void 0!==r?r:{};l[s]={expandToSizes:Object.fromEntries(n.entries()),layout:t};try{i.setItem(o,JSON.stringify(l))}catch(u){}}function cPe({layout:e,panelConstraints:a}){const n=[...e],t=n.reduce(((e,a)=>e+a),0);if(n.length!==a.length)throw Error(`Invalid ${a.length} panel layout: ${n.map((e=>`${e}%`)).join(", ")}`);if(!V_e(t,100)&&n.length>0)for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);n[r]=100/t*e}let i=0;for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);const t=J_e({panelConstraints:a,panelIndex:r,size:e});e!=t&&(i+=e-t,n[r]=t)}if(!V_e(i,0))for(let r=0;r<a.length;r++){const e=n[r];H_e(null!=e,`No layout data found for index ${r}`);const t=J_e({panelConstraints:a,panelIndex:r,size:e+i});if(e!==t&&(i-=t-e,n[r]=t,V_e(i,0)))break}return n}const dPe={getItem:e=>(rPe(dPe),dPe.getItem(e)),setItem:(e,a)=>{rPe(dPe),dPe.setItem(e,a)}},mPe={};function hPe({autoSaveId:e=null,children:a,className:t="",direction:i,forwardedRef:r,id:o=null,onLayout:s=null,keyboardResizeBy:l=null,storage:u=dPe,style:c,tagName:d="div",...m}){const h=i_e(o),p=n.useRef(null),[g,f]=n.useState(null),[v,y]=n.useState([]),k=function(){const[e,a]=n.useState(0);return n.useCallback((()=>a((e=>e+1))),[])}(),b=n.useRef({}),S=n.useRef(new Map),w=n.useRef(0),A=n.useRef({autoSaveId:e,direction:i,dragState:g,id:h,keyboardResizeBy:l,onLayout:s,storage:u}),C=n.useRef({layout:v,panelDataArray:[],panelDataArrayChanged:!1});n.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),n.useImperativeHandle(r,(()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:e}=C.current;return e},setLayout:e=>{const{onLayout:a}=A.current,{layout:n,panelDataArray:t}=C.current,i=cPe({layout:e,panelConstraints:t.map((e=>e.constraints))});ePe(n,i)||(y(i),C.current.layout=i,a&&a(i),tPe(t,i,b.current))}})),[]),e_e((()=>{A.current.autoSaveId=e,A.current.direction=i,A.current.dragState=g,A.current.id=h,A.current.onLayout=s,A.current.storage=u})),X_e({committedValuesRef:A,eagerValuesRef:C,groupId:h,layout:v,panelDataArray:C.current.panelDataArray,setLayout:y,panelGroupElement:p.current}),n.useEffect((()=>{const{panelDataArray:a}=C.current;if(e){if(0===v.length||v.length!==a.length)return;let n=mPe[e];null==n&&(n=function(e,a=10){let n=null;return(...t)=>{null!==n&&clearTimeout(n),n=setTimeout((()=>{e(...t)}),a)}}(uPe,100),mPe[e]=n);const t=[...a],i=new Map(S.current);n(e,t,i,v,u)}}),[e,v,u]),n.useEffect((()=>{}));const M=n.useCallback((e=>{const{onLayout:a}=A.current,{layout:n,panelDataArray:t}=C.current;if(e.constraints.collapsible){const i=t.map((e=>e.constraints)),{collapsedSize:r=0,panelSize:o,pivotIndices:s}=fPe(t,e,n);if(H_e(null!=o,`Panel size not found for panel "${e.id}"`),!G_e(o,r)){S.current.set(e.id,o);const l=U_e({delta:gPe(t,e)===t.length-1?o-r:r-o,initialLayout:n,panelConstraints:i,pivotIndices:s,prevLayout:n,trigger:"imperative-api"});iPe(n,l)||(y(l),C.current.layout=l,a&&a(l),tPe(t,l,b.current))}}}),[]),T=n.useCallback(((e,a)=>{const{onLayout:n}=A.current,{layout:t,panelDataArray:i}=C.current;if(e.constraints.collapsible){const r=i.map((e=>e.constraints)),{collapsedSize:o=0,panelSize:s=0,minSize:l=0,pivotIndices:u}=fPe(i,e,t),c=null!=a?a:l;if(G_e(s,o)){const a=S.current.get(e.id),o=null!=a&&a>=c?a:c,l=U_e({delta:gPe(i,e)===i.length-1?s-o:o-s,initialLayout:t,panelConstraints:r,pivotIndices:u,prevLayout:t,trigger:"imperative-api"});iPe(t,l)||(y(l),C.current.layout=l,n&&n(l),tPe(i,l,b.current))}}}),[]),x=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{panelSize:t}=fPe(n,e,a);return H_e(null!=t,`Panel size not found for panel "${e.id}"`),t}),[]),N=n.useCallback(((e,a)=>{const{panelDataArray:n}=C.current,t=gPe(n,e);return function({defaultSize:e,dragState:a,layout:n,panelData:t,panelIndex:i,precision:r=3}){const o=n[i];let s;return s=null==o?null!=e?e.toPrecision(r):"1":1===t.length?"1":o.toPrecision(r),{flexBasis:0,flexGrow:s,flexShrink:1,overflow:"hidden",pointerEvents:null!==a?"none":void 0}}({defaultSize:a,dragState:g,layout:v,panelData:n,panelIndex:t})}),[g,v]),E=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{collapsedSize:t=0,collapsible:i,panelSize:r}=fPe(n,e,a);return H_e(null!=r,`Panel size not found for panel "${e.id}"`),!0===i&&G_e(r,t)}),[]),j=n.useCallback((e=>{const{layout:a,panelDataArray:n}=C.current,{collapsedSize:t=0,collapsible:i,panelSize:r}=fPe(n,e,a);return H_e(null!=r,`Panel size not found for panel "${e.id}"`),!i||F_e(r,t)>0}),[]),_=n.useCallback((e=>{const{panelDataArray:a}=C.current;a.push(e),a.sort(((e,a)=>{const n=e.order,t=a.order;return null==n&&null==t?0:null==n?-1:null==t?1:n-t})),C.current.panelDataArrayChanged=!0,k()}),[k]);e_e((()=>{if(C.current.panelDataArrayChanged){C.current.panelDataArrayChanged=!1;const{autoSaveId:e,onLayout:a,storage:n}=A.current,{layout:t,panelDataArray:i}=C.current;let r=null;if(e){const a=function(e,a,n){var t,i;return null!==(i=(null!==(t=lPe(e,n))&&void 0!==t?t:{})[sPe(a)])&&void 0!==i?i:null}(e,i,n);a&&(S.current=new Map(Object.entries(a.expandToSizes)),r=a.layout)}null==r&&(r=function({panelDataArray:e}){const a=Array(e.length),n=e.map((e=>e.constraints));let t=0,i=100;for(let r=0;r<e.length;r++){const e=n[r];H_e(e,`Panel constraints not found for index ${r}`);const{defaultSize:o}=e;null!=o&&(t++,a[r]=o,i-=o)}for(let r=0;r<e.length;r++){const o=n[r];H_e(o,`Panel constraints not found for index ${r}`);const{defaultSize:s}=o;if(null!=s)continue;const l=i/(e.length-t);t++,a[r]=l,i-=l}return a}({panelDataArray:i}));const o=cPe({layout:r,panelConstraints:i.map((e=>e.constraints))});ePe(t,o)||(y(o),C.current.layout=o,a&&a(o),tPe(i,o,b.current))}})),e_e((()=>{const e=C.current;return()=>{e.layout=[]}}),[]);const P=n.useCallback((e=>{let a=!1;const n=p.current;if(n){"rtl"===window.getComputedStyle(n,null).getPropertyValue("direction")&&(a=!0)}return function(n){n.preventDefault();const t=p.current;if(!t)return()=>null;const{direction:i,dragState:r,id:o,keyboardResizeBy:s,onLayout:l}=A.current,{layout:u,panelDataArray:c}=C.current,{initialLayout:d}=null!=r?r:{},m=$_e(o,e,t);let h=nPe(n,e,i,r,s,t);const g="horizontal"===i;g&&a&&(h=-h);const f=U_e({delta:h,initialLayout:null!=d?d:u,panelConstraints:c.map((e=>e.constraints)),pivotIndices:m,prevLayout:u,trigger:d_e(n)?"keyboard":"mouse-or-touch"}),v=!iPe(u,f);(m_e(n)||h_e(n))&&w.current!=h&&(w.current=h,D_e(e,v||0===h?0:g?h<0?S_e:w_e:h<0?A_e:C_e)),v&&(y(f),C.current.layout=f,l&&l(f),tPe(c,f,b.current))}}),[]),L=n.useCallback(((e,a)=>{const{onLayout:n}=A.current,{layout:t,panelDataArray:i}=C.current,r=i.map((e=>e.constraints)),{panelSize:o,pivotIndices:s}=fPe(i,e,t);H_e(null!=o,`Panel size not found for panel "${e.id}"`);const l=U_e({delta:gPe(i,e)===i.length-1?o-a:a-o,initialLayout:t,panelConstraints:r,pivotIndices:s,prevLayout:t,trigger:"imperative-api"});iPe(t,l)||(y(l),C.current.layout=l,n&&n(l),tPe(i,l,b.current))}),[]),B=n.useCallback(((e,a)=>{const{layout:n,panelDataArray:t}=C.current,{collapsedSize:i=0,collapsible:r}=a,{collapsedSize:o=0,collapsible:s,maxSize:l=100,minSize:u=0}=e.constraints,{panelSize:c}=fPe(t,e,n);null!=c&&(r&&s&&G_e(c,i)?G_e(i,o)||L(e,o):c<u?L(e,u):c>l&&L(e,l))}),[L]),R=n.useCallback(((e,a)=>{const{direction:n}=A.current,{layout:t}=C.current;if(!p.current)return;const i=Q_e(e,p.current);H_e(i,`Drag handle element not found for id "${e}"`);const r=aPe(n,a);f({dragHandleId:e,dragHandleRect:i.getBoundingClientRect(),initialCursorPosition:r,initialLayout:t})}),[]),D=n.useCallback((()=>{f(null)}),[]),z=n.useCallback((e=>{const{panelDataArray:a}=C.current,n=gPe(a,e);n>=0&&(a.splice(n,1),delete b.current[e.id],C.current.panelDataArrayChanged=!0,k())}),[k]),O=n.useMemo((()=>({collapsePanel:M,direction:i,dragState:g,expandPanel:T,getPanelSize:x,getPanelStyle:N,groupId:h,isPanelCollapsed:E,isPanelExpanded:j,reevaluatePanelConstraints:B,registerPanel:_,registerResizeHandle:P,resizePanel:L,startDragging:R,stopDragging:D,unregisterPanel:z,panelGroupElement:p.current})),[M,g,i,T,x,N,h,E,j,B,_,P,L,R,D,z]);return n.createElement(Hje.Provider,{value:O},n.createElement(d,{...m,children:a,className:t,id:o,ref:p,style:{...{display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",overflow:"hidden",width:"100%"},...c},[Fje]:"",[Gje]:i,[Vje]:h}))}const pPe=n.forwardRef(((e,a)=>n.createElement(hPe,{...e,forwardedRef:a})));function gPe(e,a){return e.findIndex((e=>e===a||e.id===a.id))}function fPe(e,a,n){const t=gPe(e,a);return{...a.constraints,panelSize:n[t],pivotIndices:t===e.length-1?[t-1,t]:[t,t+1]}}function vPe({children:e=null,className:a="",disabled:t=!1,hitAreaMargins:i,id:r,onBlur:o,onClick:s,onDragging:l,onFocus:u,onPointerDown:c,onPointerUp:d,style:m={},tabIndex:h=0,tagName:p="div",...g}){var f,v;const y=n.useRef(null),k=n.useRef({onClick:s,onDragging:l,onPointerDown:c,onPointerUp:d});n.useEffect((()=>{k.current.onClick=s,k.current.onDragging=l,k.current.onPointerDown=c,k.current.onPointerUp=d}));const b=n.useContext(Hje);if(null===b)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:S,groupId:w,registerResizeHandle:A,startDragging:C,stopDragging:M,panelGroupElement:T}=b,x=i_e(r),[N,E]=n.useState("inactive"),[j,_]=n.useState(!1),[P,L]=n.useState(null),B=n.useRef({state:N});e_e((()=>{B.current.state=N})),n.useEffect((()=>{if(t)L(null);else{const e=A(x);L((()=>e))}}),[t,x,A]);const R=null!==(f=null==i?void 0:i.coarse)&&void 0!==f?f:15,D=null!==(v=null==i?void 0:i.fine)&&void 0!==v?v:5;n.useEffect((()=>{if(t||null==P)return;const e=y.current;H_e(e,"Element ref not attached");let a=!1;return function(e,a,n,t,i){var r;const{ownerDocument:o}=a,s={direction:n,element:a,hitAreaMargins:t,setResizeHandlerState:i},l=null!==(r=N_e.get(o))&&void 0!==r?r:0;return N_e.set(o,l+1),j_e.add(s),K_e(),function(){var a;E_e.delete(e),j_e.delete(s);const n=null!==(a=N_e.get(o))&&void 0!==a?a:1;if(N_e.set(o,n-1),K_e(),1===n&&N_e.delete(o),T_e.includes(s)){const e=T_e.indexOf(s);e>=0&&T_e.splice(e,1),z_e(),i("up",!0,null)}}}(x,e,S,{coarse:R,fine:D},((e,n,t)=>{if(n)switch(e){case"down":{E("drag"),a=!1,H_e(t,'Expected event to be defined for "down" action'),C(x,t);const{onDragging:e,onPointerDown:n}=k.current;null==e||e(!0),null==n||n();break}case"move":{const{state:e}=B.current;a=!0,"drag"!==e&&E("hover"),H_e(t,'Expected event to be defined for "move" action'),P(t);break}case"up":{E("hover"),M();const{onClick:e,onDragging:n,onPointerUp:t}=k.current;null==n||n(!1),null==t||t(),a||null==e||e();break}}else E("inactive")}))}),[R,S,t,D,A,x,P,C,M]),function({disabled:e,handleId:a,resizeHandler:t,panelGroupElement:i}){n.useEffect((()=>{if(e||null==t||null==i)return;const n=Q_e(a,i);if(null==n)return;const r=e=>{if(!e.defaultPrevented)switch(e.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":e.preventDefault(),t(e);break;case"F6":{e.preventDefault();const t=n.getAttribute(Vje);H_e(t,`No group element found for id "${t}"`);const r=q_e(t,i),o=Z_e(t,a,i);H_e(null!==o,`No resize element found for id "${a}"`),r[e.shiftKey?o>0?o-1:r.length-1:o+1<r.length?o+1:0].focus();break}}};return n.addEventListener("keydown",r),()=>{n.removeEventListener("keydown",r)}}),[i,e,a,t])}({disabled:t,handleId:x,resizeHandler:P,panelGroupElement:T});return n.createElement(p,{...g,children:e,className:a,id:r,onBlur:()=>{_(!1),null==o||o()},onFocus:()=>{_(!0),null==u||u()},ref:y,role:"separator",style:{touchAction:"none",userSelect:"none",...m},tabIndex:h,[Gje]:S,[Vje]:w,[Zje]:"",[$je]:"drag"===N?"pointer":j?"keyboard":void 0,[Yje]:!t,[Qje]:x,[Xje]:N})}hPe.displayName="PanelGroup",pPe.displayName="forwardRef(PanelGroup)",vPe.displayName="PanelResizeHandle";const yPe=({className:e,...n})=>a.jsx(pPe,{className:gi("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...n}),kPe=o_e,bPe=({withHandle:e,className:n,...t})=>a.jsx(vPe,{className:gi("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",n),...t,children:e&&a.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:a.jsx(K,{className:"h-2.5 w-2.5"})})}),SPe=({copyText:e})=>a.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:e}),wPe="rgba(245, 246, 247, 1)",APe={[HN.SEND_COMMUNICATION]:{color:{bg:wPe},clickable:!0},[HN.WAIT_UNTIL_NEXT_FIXED_TIME]:{color:{bg:wPe},clickable:!1},[HN.WAIT_FOR_DURATION]:{color:{bg:wPe},clickable:!1},[HN.CHECK_SEGMENT_MEMBERSHIP]:{color:{bg:wPe},clickable:!1}},CPe=e=>{switch(e.actionType){case HN.SEND_COMMUNICATION:return"Send Email & SMS";case HN.WAIT_UNTIL_NEXT_FIXED_TIME:return"Wait Until";case HN.WAIT_FOR_DURATION:return"Wait For";case HN.CHECK_SEGMENT_MEMBERSHIP:return`Check ${e.segmentLanguage} Membership`;default:return"Unknown"}},MPe=({children:e,onClick:n,iconBgColor:t,iconStrokeColor:i,Icon:r,disabled:o=!1,selected:s=!1})=>{const l=r;return a.jsxs(gk.div,{layout:!0,initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,ease:"easeInOut"},style:{backgroundColor:s?t:wPe},onClick:n,className:Fa("flex gap-2 items-center rounded-md transition-colors group","p-2 border-2 border-transparent overflow-hidden",!o&&"hover:border-primary cursor-pointer",s&&"border-primary"),children:[a.jsx("div",{className:Fa("bg-purple-50 rounded-md p-2 flex items-center justify-center w-8 h-8 flex-shrink-0 transition-colors",!o&&"group-hover/trigger-audience:bg-background",t),children:a.jsx(l,{className:Fa("w-4 h-4 stroke-purple-500 group-hover/trigger-audience:fill-purple-50 transition-colors",i)})}),e]})},TPe=({segmentName:e})=>a.jsx("span",{className:"inline-flex items-center bg-white border border-gray-200 rounded-md px-2 py-0.5 text-sm font-medium shadow-sm",children:e}),xPe=()=>{const e=zoe(),{setActionId:t,state:{selectedActionId:i}}=n.useContext(Soe),{segments:r}=_oe(),o=1===e?.includeSegmentIds?.length&&0===e?.excludeSegmentIds?.length?e.includeSegmentIds[0]:"",{segment:s}=Loe(o);if(!e||!r)return null;const l=e.includeSegmentIds;let u,c=!0;return s?.type===xoe.ALL_USERS?(u=`Send to all ${qx("engage:user",{count:2})}`,c=!1):s?.type===xoe.ONE_OFF?(u=`Send to specific ${qx("engage:user",{count:2})}`,c=!1):(u=`Send to all ${qx("engage:user",{count:2})} in ${1===l.length?"this":"these"} ${qx("engage:segment",{count:l.length}).toLowerCase()}`,c=!0),a.jsx("div",{id:"automation-audience-selector",children:a.jsx(MPe,{selected:i===Ege.EditAudience,iconBgColor:"bg-purple-50",iconStrokeColor:"stroke-purple-500",onClick:()=>{t(Ege.EditAudience)},Icon:sM.AudienceIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:"Audience"}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(SPe,{copyText:u}),c&&a.jsx("div",{className:"flex gap-1",children:l.map((e=>{const n=r?.find((a=>a.id===e));return n?a.jsx(TPe,{segmentName:n.name},e):null}))})]})]})})})},NPe=e=>{if(-1===e)return"never run this automation again";if(e<=0)return null;const a=Math.floor(e/86400),n=Math.floor(e%86400/3600),t=Math.floor(e%3600/60),i=e%60,r=[];if(a>0&&r.push(`${a} ${1===a?"day":"days"}`),n>0&&r.push(`${n} ${1===n?"hour":"hours"}`),t>0&&r.push(`${t} ${1===t?"minute":"minutes"}`),i>0&&0===a&&0===n&&r.push(`${i} ${1===i?"second":"seconds"}`),0===r.length)return null;if(1===r.length)return r[0];if(2===r.length)return`${r[0]} and ${r[1]}`;const o=r.pop();return`${r.join(", ")}, and ${o}`},EPe=({isDetailsVisible:e=!1})=>{const t=zoe(),{setActionId:i,state:{selectedActionId:r}}=n.useContext(Soe),{segments:o}=_oe(),s=qx(t?.triggerType===ON.TRIGGER_BASED?"engage:automation":"engage:broadcast"),l=`Start this ${s?.toLowerCase()}`,u=`Start this ${qx("engage:automation").toLowerCase()}`;if(!t||!o)return null;return a.jsx(a.Fragment,{children:(()=>{switch(t.triggerType){case ON.DATE_BASED:{if(!t.triggerMetadata||!("monthToTrigger"in t.triggerMetadata)||!("dayToTrigger"in t.triggerMetadata))return null;const e=t.triggerMetadata?.monthToTrigger,n=t.triggerMetadata?.dayToTrigger;let i="Date not set";if(e&&n){i=`${new Date(2024,e-1,n).toLocaleDateString("en-US",{month:"long"})} ${n}`}return a.jsx(MPe,{iconBgColor:"bg-amber-100",disabled:!0,iconStrokeColor:"stroke-amber-500",onClick:()=>{},Icon:sM.TriggerIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:u}),a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:a.jsx(SPe,{copyText:t.triggerMetadata.customTriggerCopy??`Every year on ${i}`})})]})})}case ON.TRIGGER_BASED:{if(t.triggerMetadata&&t.triggerMetadata.triggerType!==ON.TRIGGER_BASED||!t.triggerMetadata||t.triggerMetadata.eventName!==KN.USER_ENTERS_SEGMENT||!t.triggerMetadata.eventFilter.segment_id)return null;const n=t.triggerMetadata.eventFilter.segment_id,i=o.find((e=>e.id===n))?.name;return i?a.jsx(MPe,{iconBgColor:"bg-amber-100",disabled:!0,iconStrokeColor:"stroke-amber-500",onClick:()=>{},Icon:sM.TriggerIcon,children:a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:l}),a.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t.triggerMetadata.customTriggerCopy?a.jsx(SPe,{copyText:t.triggerMetadata.customTriggerCopy}):a.jsxs(a.Fragment,{children:[a.jsx(SPe,{copyText:`When ${qx("engage:user").toLowerCase()} joins the`}),a.jsx(TPe,{segmentName:i})]})}),e&&void 0!==t.triggerMetadata.cooldownSeconds&&t.triggerMetadata.cooldownSeconds>0?a.jsxs("div",{className:"flex items-center gap-2 flex-wrap mt-1",children:[a.jsx(SPe,{copyText:`${qx("engage:segment",{count:1}).toLowerCase()} and wait at least`}),a.jsx("span",{className:"text-sm font-medium text-foreground",children:NPe(t.triggerMetadata.cooldownSeconds)}),a.jsx(ex,{title:"Why wait between runs?",description:`This prevents the same customer from getting the same automation multiple times. For example, if someone meets the criteria today, they won't start this ${qx("engage:automation").toLowerCase()} again for ${NPe(t.triggerMetadata.cooldownSeconds)}, even if they leave and rejoin the criteria.`,size:"small",iconColor:"text-gray-400"})]}):a.jsx(SPe,{copyText:qx("engage:segment",{count:1}).toLowerCase()})]})}):null}case ON.ONE_TIME:{const e=!t.triggerMetadata||!("scheduledAt"in t.triggerMetadata);return a.jsx("div",{id:"automation-edit-trigger-button",children:a.jsxs(MPe,{iconBgColor:"bg-amber-100",iconStrokeColor:"stroke-amber-500",onClick:()=>{i(Ege.EditTime)},selected:r===Ege.EditTime,Icon:sM.TriggerIcon,children:[a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx(Tge,{children:l}),a.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[a.jsx(SPe,e?{copyText:`Click to set the date and time for this ${qx("engage:broadcast")}`}:{copyText:"Bulk send at"}),!1===e&&t.triggerMetadata&&"scheduledAt"in t.triggerMetadata&&t.triggerMetadata.scheduledAt&&a.jsx("div",{className:"text-xs font-medium",children:a.jsx(TPe,{segmentName:"now"===t.triggerMetadata.scheduledAt?"Immediately":cue(new Date(t.triggerMetadata.scheduledAt),"h:mma MM/dd/yy")})})]})]}),a.jsx("div",{className:"",children:e&&a.jsx(ex,{title:`Please select a time before sending this ${qx("engage:broadcast")}.`,alertText:`A scheduled time is needed before sending this ${qx("engage:broadcast")}.`,Icon:sM.AlertTriangleIcon,iconColor:"text-red-500",size:"large"})})]})})}default:throw Vde(t.triggerType,ON)}})()})},jPe=({channelEnabled:e,className:n})=>a.jsx("span",{className:Fa("text-xs font-medium",e?"text-green-700":"text-gray-500",n),children:e?"Enabled":"Skipped"}),_Pe=(e,a)=>{if(e.length<=a)return e;const n=/\{\{[^}]+\}\}/g,t=[];let i;for(;null!==(i=n.exec(e));)t.push({start:i.index,end:i.index+i[0].length,field:i[0]});let r=a;for(const o of t){if(r>o.start&&r<o.end){r=o.start;break}if(r===o.start){const a=e.lastIndexOf(" ",o.start-1);r=a>0?a:o.start;break}}return 0===r?t.length>0?t[0].field:e.substring(0,Math.min(a,e.length)):e.substring(0,r)+"..."},PPe=({type:e,actionId:t})=>{const{state:{selectedSubStepType:i},setSelectedSubStepType:r,setActionId:o}=n.useContext(Soe),s=Koe(),l=zoe(),{getMergeFields:u,isGetting:c}=aN(s?.id??void 0,l?.id??void 0),d=i===e,m=(()=>{if(!s)return!1;switch(e){case jge.EMAIL:return!!s.emailChannelSenderId;case jge.SMS:return!!s.smsChannelSenderId}})(),h=(()=>{if(!s)return"Need to select a channel";switch(e){case jge.EMAIL:return s.emailChannelSenderId?s.emailHtmlBody?!!s.emailSubject||"Please add a subject to the email":"Please add content to the email":"Please select a email sender";case jge.SMS:return s.smsChannelSenderId?!!s.smsMessageBody||"Please add content to the sms":"Please select a sms sender"}})();return a.jsx(gk.div,{id:`automation-substep-${e}-${t}`,layout:!0,initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.15,ease:"easeInOut"},className:Fa("p-2 pr-3 flex gap-2 items-center rounded-md transition-colors cursor-pointer group","border-2 border-transparent",d&&"border-primary","hover:border-muted-foreground/30"),style:{backgroundColor:d?"#f5f6f7":"hsl(var(--reach-muted))"},onClick:a=>{a.target.closest("button")||(o(t),r(e))},children:a.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[a.jsx("div",{className:"rounded-md p-1.5 flex items-center justify-center w-6 h-6 flex-shrink-0 bg-white border",children:((e,n)=>{switch(e){case jge.EMAIL:return a.jsx(sM.EmailIcon,{className:Fa("w-6 h-6",n?"text-primary":"text-gray-400")});case jge.SMS:return a.jsx(sM.SmsIcon,{className:Fa("w-6 h-6",n?"text-primary":"text-gray-400")})}})(e,d)}),a.jsxs("div",{className:"flex flex-col gap-0.5 flex-1",children:[a.jsx("div",{style:{color:d?"#3b82f6":"#64748b"},children:a.jsx(Tge,{className:"text-xs",children:(()=>{switch(e){case jge.EMAIL:return"Email";case jge.SMS:return"SMS"}})()})}),m&&a.jsx("div",{className:"text-[10px] font-medium text-muted-foreground",children:e===jge.EMAIL?c?a.jsx("span",{className:"text-[10px] font-medium text-muted-foreground",children:"..."}):a.jsx(HMe,{content:s?.emailSubject||"No subject set",mergeFieldsResponse:u,variant:"minimal",className:"text-[10px] font-medium text-muted-foreground"}):c?a.jsx("span",{className:"text-[10px] font-medium text-muted-foreground",children:"..."}):a.jsx(HMe,{content:s?.smsMessageBody?_Pe(s.smsMessageBody,40):"No message set",mergeFieldsResponse:u,variant:"minimal",className:"text-[10px] font-medium text-muted-foreground"})}),!0!==h&&m&&a.jsx("div",{id:`substep-validation-${e}-${t}`,className:"text-[10px] text-amber-600 font-medium",children:h})]}),a.jsx("div",{className:"ml-auto",children:a.jsx("div",{id:`substep-status-${e}-${t}`,className:Fa("px-2 py-0.5 rounded-full text-[10px] font-medium",m?"bg-green-100 text-green-700":"bg-gray-100 text-gray-500"),children:a.jsx(jPe,{channelEnabled:m})})})]})})},LPe=e=>{switch(e){case HN.SEND_COMMUNICATION:return"Send Communication";case HN.WAIT_UNTIL_NEXT_FIXED_TIME:case HN.WAIT_FOR_DURATION:return"Wait";case HN.CHECK_SEGMENT_MEMBERSHIP:return"Check";default:throw poe(e,HN)}},BPe=e=>{switch(e){case HN.SEND_COMMUNICATION:return a.jsx(sM.CommunicationIcon,{className:"w-4 h-4"});case HN.WAIT_UNTIL_NEXT_FIXED_TIME:return a.jsx(sM.WaitUntilNextFixedTimeIcon,{className:"w-4 h-4"});case HN.WAIT_FOR_DURATION:return a.jsx(sM.WaitForDurationIcon,{className:"w-4 h-4"});case HN.CHECK_SEGMENT_MEMBERSHIP:return a.jsx(sM.CheckSegmentMembershipIcon,{className:"w-4 h-4"});default:throw Vde(e,HN)}},RPe=e=>{if(!(e&&e.actionType===HN.WAIT_UNTIL_NEXT_FIXED_TIME&&"hour"in e&&"minute"in e&&"timezone"in e))return null;const{hour:a,minute:n,timezone:t}=e;return`Wait until next ${`${a?.toString().padStart(2,"0")}:${n?.toString().padStart(2,"0")}`} ${t}`},DPe=e=>{if(!(e&&e.actionType===HN.WAIT_FOR_DURATION&&"days"in e&&"hours"in e&&"minutes"in e&&"seconds"in e))return null;const{days:a,hours:n,minutes:t,seconds:i}=e,r=[];if(a&&a>0&&r.push(`${a} ${1===a?qx("common:day").toLocaleLowerCase():qx("common:day",{count:2}).toLocaleLowerCase()}`),n&&n>0&&r.push(`${n} ${1===n?qx("common:hour").toLocaleLowerCase():qx("common:hour",{count:2}).toLocaleLowerCase()}`),t&&t>0&&r.push(`${t} ${1===t?qx("common:minute").toLocaleLowerCase():qx("common:minute",{count:2}).toLocaleLowerCase()}`),i&&i>0&&r.push(`${i} ${1===i?qx("common:second").toLocaleLowerCase():qx("common:second",{count:2}).toLocaleLowerCase()}`),0===r.length)return"Wait for duration";if(1===r.length)return`Wait for ${r[0]}`;if(2===r.length)return`Wait for ${r[0]} and ${r[1]}`;{const e=r.pop();return`Wait for ${r.join(", ")} and ${e}`}},zPe=({actionDataWithMetadata:e,segments:t})=>{const{actionData:i}=e,{state:{selectedActionId:r},setActionId:o,setSelectedCommunicationGroupId:s}=n.useContext(Soe),l=n.useMemo((()=>r===i.actionMetadata.currentActionId),[r,i.actionMetadata.currentActionId]),u=APe[i.actionType],c=u.color,d=u.clickable;return a.jsxs(gk.div,{id:`automation-step-${i.actionType}-${i.actionMetadata.currentActionId}`,layout:!0,initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,ease:"easeInOut"},className:Fa("p-2 pr-3 flex gap-2 items-center rounded-md transition-colors cursor-pointer group"," border-2 border-transparent",l&&"border-primary",i.actionType!==HN.WAIT_UNTIL_NEXT_FIXED_TIME&&i.actionType!==HN.WAIT_FOR_DURATION&&i.actionType!==HN.CHECK_SEGMENT_MEMBERSHIP&&"hover:border-primary"),style:{backgroundColor:l?c.bg:c.bgUnselected??wPe},onClick:()=>{d&&(o(i.actionMetadata.currentActionId),i.actionType===HN.SEND_COMMUNICATION&&s(i.actionMetadata.communicationGroupId))},children:[a.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[a.jsx("div",{className:"rounded-md p-2 flex items-center justify-center w-8 h-8 flex-shrink-0 bg-white",children:BPe(i.actionType)}),a.jsxs("div",{className:"flex flex-col gap-1",children:[a.jsx("div",{style:{color:l?c.text:c.textUnselected},children:a.jsx(Tge,{children:CPe({actionType:i.actionType,segmentLanguage:qx("engage:segment",{count:1})})})}),a.jsx("div",i.actionType===HN.WAIT_UNTIL_NEXT_FIXED_TIME?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:RPe(i.actionMetadata)}:i.actionType===HN.WAIT_FOR_DURATION?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:DPe(i.actionMetadata)}:i.actionType===HN.CHECK_SEGMENT_MEMBERSHIP?{className:"text-[11px] text-muted-foreground font-normal rounded bg-muted/40 w-fit max-w-full truncate",children:(()=>{const e=((e,a)=>{if(!e||e.actionType!==HN.CHECK_SEGMENT_MEMBERSHIP||!("segmentIds"in e))return null;const{segmentIds:n}=e;if(!n||0===n.length)return null;const t=n.map((e=>a.find((a=>a.id===e))?.name)).filter((e=>Boolean(e)));return t.length>0?t:null})(i.actionMetadata,t);return e?a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("span",{className:"text-[11px] text-muted-foreground font-normal",children:"Check membership in"}),e.map(((e,n)=>a.jsx(TPe,{segmentName:e},n)))]}):`Check ${qx("engage:segment",{count:1})} membership`})()}:{className:"text-xs font-medium text-muted-foreground",children:LPe(i.actionType)})]})]}),i.actionType===HN.SEND_COMMUNICATION&&a.jsx("div",{className:"flex items-center pr-2",children:a.jsx(sM.NextButton,l?{className:"w-4 h-4 text-muted-foreground rotate-90 transition-transform duration-200"}:{className:"w-4 h-4 text-muted-foreground transition-transform duration-200"})})]})},OPe=({hideSms:e,segments:t})=>{const i=Koe(),[r,o]=n.useState(!1),[s,l]=n.useState(void 0),u=zoe(),{setActionId:c,setSelectedSubStepType:d,state:{selectedActionId:m,selectedSubStepType:h}}=n.useContext(Soe);if(qN(u?.id||""),n.useEffect((()=>{if(!u)return;if(m)return;const e=u.actionData?.find((e=>e.actionType===HN.SEND_COMMUNICATION));e&&c(e.actionMetadata.currentActionId)}),[u,c,m]),n.useEffect((()=>{if(!u)return;(async()=>{const e=[];for(const a of u.actionData??[])switch(a.actionType){case HN.SEND_COMMUNICATION:{const n=await Zx(a.actionMetadata.communicationGroupId);e.push({actionData:a,communicationGroup:n});break}case HN.WAIT_UNTIL_NEXT_FIXED_TIME:case HN.WAIT_FOR_DURATION:case HN.CHECK_SEGMENT_MEMBERSHIP:e.push({actionData:a});break;default:throw poe(a.actionType,HN)}l(e)})()}),[u]),n.useEffect((()=>{if(m&&s&&i&&null===h){const e=s.find((e=>e.actionData.actionMetadata.currentActionId===m));e?.actionData.actionType===HN.SEND_COMMUNICATION&&d(i?.emailChannelSenderId?jge.EMAIL:jge.SMS)}}),[m,s,d,i,h]),!u||!s)return null;const p=(e=>{const{steps:a,rootActionId:n}=e;if(!a||!n)return a??[];const t=new Map(a.map((e=>[e.actionData.actionMetadata.currentActionId,e]))),i=t.get(n);if(!i)return a;const r=[];let o=i;for(;o;){r.push(o);const e=o.actionData.actionMetadata.nextActionId;if(!e)break;o=t.get(e)}return r})({steps:s,rootActionId:u.triggerMetadata?.triggerType===ON.TRIGGER_BASED?u.triggerMetadata.rootActionId:void 0}).filter((e=>!!r||e.actionData.actionType===HN.SEND_COMMUNICATION));let g=()=>a.jsx("div",{},"empty-trigger-audience");return(r||u.triggerType===ON.ONE_TIME)&&(g=()=>a.jsxs("div",{className:"flex flex-col gap-3",children:[u.triggerType===ON.ONE_TIME&&a.jsx(xPe,{}),u.triggerType!==ON.ONE_TIME&&a.jsx(EPe,{isDetailsVisible:r})]})),a.jsxs("div",{className:"flex-1 flex flex-col gap-2 w-full overflow-visible",children:[(u.triggerType===ON.TRIGGER_BASED||u.triggerType===ON.DATE_BASED)&&a.jsxs("div",{className:"flex gap-2 items-center justify-between",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:"Messages sent in listed order"}),a.jsxs("div",{className:"flex gap-2 items-center",children:[a.jsx("div",{className:"text-sm font-medium",children:"Show all details"}),a.jsx(hNe,{defaultChecked:r,onCheckedChange:()=>{o(!r)}})]})]}),a.jsx("div",{className:"flex-1 flex flex-col gap-3",children:a.jsxs(jd,{mode:"popLayout",children:[g(),p.map(((n,i)=>a.jsx(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2,delay:.05*i,ease:"easeInOut"},children:a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsx(zPe,{actionDataWithMetadata:n,segments:t}),n.actionData.actionType===HN.SEND_COMMUNICATION&&m===n.actionData.actionMetadata.currentActionId&&n.actionData.actionMetadata.currentActionId&&a.jsxs("div",{className:"flex gap-3",children:[a.jsx(gk.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2,delay:.25*p.length,ease:"easeInOut"},className:"w-12 flex justify-end items-center",children:a.jsx("div",{className:"w-0.5 bg-muted-foreground/30 h-full rounded-full"})}),a.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[a.jsx(PPe,{type:jge.EMAIL,actionId:n.actionData.actionMetadata.currentActionId}),!e&&a.jsx(PPe,{type:jge.SMS,actionId:n.actionData.actionMetadata.currentActionId})]})]})]})},n.actionData.actionMetadata?.currentActionId??i))),u.triggerType===ON.ONE_TIME&&a.jsx("div",{className:"flex flex-col gap-3",children:a.jsx(EPe,{isDetailsVisible:r})},"one-time-trigger")]})})]})},KPe=({hideSms:e})=>{const n=zoe(),{segments:t,isLoading:i}=_oe();return a.jsx("div",!n||i||0===t.length?{className:"flex h-full items-center justify-center",children:a.jsx(fd,{text:[`Getting details on your ${qx("engage:automation",{count:1}).toLowerCase()}`,"Finishing up"]})}:{className:"h-full pt-4 relative",children:a.jsx("div",{className:"absolute inset-0 overflow-y-auto flex flex-col gap-3",children:a.jsx(OPe,{hideSms:e,segments:t})})})},IPe=({type:e})=>{const t=Koe(),i=zoe(),{toast:r}=Ck(),[o,s]=n.useState(!1),{resetCommunicationGroupToDefault:l,isPending:u}=tN(),c=e===Pge.EMAIL?"Email":"SMS";return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"flex items-center justify-between",children:a.jsx("div",{className:"flex items-center gap-2",children:!!t&&(t.type===Nge.MANAGED&&(e===Pge.SMS?t.updatedFromDefault?.text_message_body:t.updatedFromDefault?.email_text_body||t.updatedFromDefault?.email_html_body))&&a.jsx(a.Fragment,{children:u?a.jsx(fd,{}):a.jsx(Wa,{variant:"outline",size:"sm",disabled:u,onClick:()=>s(!0),children:"Reset To Default"})})})}),a.jsx(fi,{open:o,onOpenChange:s,children:a.jsxs(bi,{className:"sm:max-w-[425px]",children:[a.jsxs(Si,{children:[a.jsx(Ai,{className:"text-xl font-semibold",children:"Reset To Default"}),a.jsxs(Ci,{className:"text-base text-muted-foreground",children:["Are you sure you want to reset this ",c.toLowerCase()," ","template to its default state? This action cannot be undone."]})]}),a.jsxs(wi,{className:"flex flex-row justify-end gap-3 mt-6",children:[a.jsx(Wa,{variant:"outline",onClick:()=>s(!1),children:"Cancel"}),a.jsx(Wa,{variant:"destructive",onClick:async()=>{t&&i?l({communicationGroupId:t.id,automationId:i.id,type:e===Pge.EMAIL?"email":"sms"},{onSuccess:()=>{r({title:qx("engage:success.communication_reset","Communication reset to default!")}),s(!1)},onSettled:()=>{s(!1)},onError:()=>{r({title:"Error updating",description:"Please reach out to your administrator",variant:"destructive"})}}):r({title:"Error updating",description:"Please reach out to your administrator",variant:"destructive"})},disabled:u,children:"Reset To Default"})]})]})})]})},HPe=e=>{const a=Koe(),{updateCommunicationGroup:t,isUpdating:i}=Qx(),{channelSenders:r}=CC(),{channelAccounts:o}=SC(),{data:s}=cN(),{toast:l}=Ck(),u=n.useMemo((()=>r?.results?.filter((e=>e.channelSenderMetadata.userPart))||[]),[r?.results]),c=n.useMemo((()=>vN({channelSenders:r?.results??[],channelAccounts:o?.results??[],smsApplication:s})),[r?.results,o?.results,s]),d=n.useCallback((()=>{if(!a)return!1;switch(e){case jge.EMAIL:return!!a.emailChannelSenderId;case jge.SMS:return!!a.smsChannelSenderId}}),[a,e])(),m=n.useCallback((async()=>{if(a?.id&&!i)try{const n={emailChannelSenderId:a.emailChannelSenderId,smsChannelSenderId:a.smsChannelSenderId};switch(e){case jge.EMAIL:if(d&&a.emailChannelSenderId)n.emailChannelSenderId=null;else{const e=u[0];e&&(n.emailChannelSenderId=e.id)}break;case jge.SMS:if(d&&a.smsChannelSenderId)n.smsChannelSenderId=null;else{const e=c[0];e&&(n.smsChannelSenderId=e.channelSender.id)}}await t({groupId:a.id,params:n},{onError:()=>{l({title:"Error toggling channel",description:"Please contact your administrator",variant:"destructive"})}})}catch(n){}}),[a,d,e,t,i,u,c,l]);return{channelEnabled:d,isUpdating:i,handleToggleChannel:m,availableEmailSenders:u,availableSmsChannelSenders:c}},FPe="reach-styles-module__base___r-a1U",GPe=Ja([FPe],{variants:{variant:{default:"reach-styles-module__default___vu2Rt",primary:"reach-styles-module__primary___mGKjo",success:"reach-styles-module__success___xn1Y1",warning:"reach-styles-module__warning___jdyU9",error:"reach-styles-module__error___Z-3IS"},size:{default:"reach-styles-module__sizeDefault___oS6W2",sm:"reach-styles-module__sizeSm___GI826",lg:"reach-styles-module__sizeLg___J--WF"},position:{default:"reach-styles-module__positionDefault___visr6",top:"reach-styles-module__positionTop___y6h-n",bottom:"reach-styles-module__positionBottom___vYLkd",inline:"reach-styles-module__positionInline___NjZsw"}},defaultVariants:{variant:"default",size:"default",position:"default"}}),VPe=({channelType:e,title:n,description:t,className:i,onEnable:r,isEnabling:o=!1})=>{const s=("email"===e?"Email":"SMS")+" Channel Disabled",l=`Enable the ${e} channel to send messages.`,u=zoe(),c=u?.status===FN.DRAFT,d=a.jsx(Wa,{size:"sm",onClick:r,disabled:o||!c,className:"bg-amber-600 hover:bg-amber-700 text-white ml-4 shrink-0",children:o?"Enabling...":"Enable "+("email"===e?"Email":"SMS")});return a.jsx("div",{className:"px-4 w-full",children:a.jsx("div",{className:"max-w-2xl mx-auto",children:a.jsx("div",{id:`channel-disabled-warning-${e}`,className:Fa(GPe({variant:"warning",size:"default",position:"inline"}),FPe,"p-4 relative mb-0",i),role:"alert",children:a.jsxs("div",{className:"flex items-start",children:[a.jsx("div",{className:"mr-3 shrink-0 pt-0.5",children:a.jsx(Ae,{className:"h-4 w-4"})}),a.jsx("div",{className:"flex-grow",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{className:"flex-1",children:[a.jsx("h5",{className:"text-sm font-medium mb-1",children:n||s}),a.jsx("div",{className:"text-sm text-muted-foreground",children:t||l})]}),r&&a.jsx(a.Fragment,{children:c?d:a.jsx(ex,{alertText:"You can only change the channel if you are in the draft state.",asChild:!1,className:"cursor-not-allowed",children:d})})]})})]})})})})},JPe=({channelEnabled:e,isUpdating:n,onToggle:t,channelType:i})=>{const r=zoe();return a.jsxs("div",{id:("email"===i?"email":"sms")+"-channel-toggle",className:"flex items-center gap-2",children:[a.jsx(hNe,{checked:e,onCheckedChange:()=>{n||t()},disabled:n||(!r||r.status!==FN.DRAFT),className:"data-[state=checked]:bg-green-500 data-[state=unchecked]:bg-gray-300"}),a.jsx(jPe,{channelEnabled:e})]})},UPe=({label:e,value:n,className:t})=>a.jsxs("div",{className:"flex items-center gap-1 min-w-0 max-w-full flex-shrink",children:[a.jsxs("span",{className:"sr-only",children:[e,":"]}),a.jsx("span",{className:Fa("truncate",t),children:n})]}),WPe=({mergeFieldsResponse:e,disableEditContent:t})=>{const i=zoe(),r=Koe(),o=(()=>{const{channelSenders:e}=CC(),{channelAccounts:a}=SC();return n.useMemo((()=>e?.results&&a?.results?e.results.filter((e=>e.channelSenderMetadata.userPart)).flatMap((e=>{const n=a.results.find((a=>a.id===e.channelAccountId));return!n?.channelAccountMetadata||n.channelAccountMetadata.type!==wC.REACH_MANAGED&&n.channelAccountMetadata.type!==wC.REACH_MANAGED_SES?[]:[{channelSenderId:e.id,fullDomain:`${e.channelSenderMetadata.userPart}@${e.channelSenderMetadata.baseDomain}`,channelSenderMetadata:e.channelSenderMetadata}]})):[]),[e?.results,a?.results])})(),{channelSenders:s}=CC(),{updateCommunicationGroup:l}=Qx(),[u,c]=n.useState(!1),{state:{replyToSettingsText:d,replyToSettingsLink:m,fromNameSettingsText:h,fromNameSettingsLink:p}}=n.useContext(toe),[g,f]=n.useState(!1),[v,y]=n.useState(r?.emailChannelSenderId||null),[k,b]=n.useState(r?.emailSubject||null),[S,w]=n.useState(r?.emailPreviewText||null),[A,C]=n.useState(""),[M,T]=n.useState(""),[x,N]=n.useState(!0),[E,j]=n.useState(!1),[_,P]=n.useState(null),[L,B]=n.useState(r?.emailSubject||null),R=AMe(k,500),D=AMe(S,500);if(n.useEffect((()=>{if(s?.results&&v){const e=s.results.find((e=>e.id===v));e&&(E&&!x||T(e.channelSenderMetadata.emailReplyTo),x&&C(e.channelSenderMetadata.emailFromName),N(!1))}}),[s?.results,v,E,x]),n.useEffect((()=>{r?.emailChannelSenderId&&!v&&y(r.emailChannelSenderId),r&&null!==r.emailSubject&&null===k&&(b(r.emailSubject),B(r.emailSubject)),r&&null!==r.emailPreviewText&&null===S&&w(r.emailPreviewText)}),[r,v,k,S]),n.useEffect((()=>{if(v&&R&&r?.id&&!x){f(!0);(async()=>{try{await l({groupId:r.id,params:{emailChannelSenderId:v,emailSubject:R,...D&&{emailPreviewText:D}}})}catch(e){}finally{f(!1)}})()}}),[v,R,D,r?.id,l,x]),!i||!r||!r.emailChannelSenderId)return null;const z=o.find((e=>e.channelSenderId===r.emailChannelSenderId)),O=A||z?.fullDomain,K=k,I=S;return a.jsx("div",{className:"w-full bg-background rounded-lg p-3",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{className:"flex items-center gap-2 overflow-hidden flex-1",children:[O&&a.jsx(UPe,{label:"From",value:O,className:"font-bold"}),K&&a.jsx(UPe,{label:"Subject",value:a.jsx(HMe,{content:K,mergeFieldsResponse:e,variant:"minimal",className:"font-normal"}),className:"font-normal"}),I&&a.jsx(UPe,{label:"Preview",value:a.jsx(HMe,{content:I,mergeFieldsResponse:e,variant:"minimal",className:"text-muted-foreground/50 italic"}),className:"text-muted-foreground/50 italic"})]}),a.jsxs(Hde,{open:u,onOpenChange:e=>{c(e),""===k?.trim()&&L&&!1===e&&(b(L),P(null))},children:[a.jsx(Fde,{asChild:!0,children:!t&&a.jsxs(Wa,{size:"sm",variant:"outline",disabled:i.status!==FN.DRAFT,children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]})}),a.jsx(Gde,{className:"w-96",align:"end",children:a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"From Email"}),a.jsxs(zc,{onValueChange:e=>{y(e),N(!0),j(!1)},value:v??void 0,disabled:g,children:[a.jsx(Ic,{className:"bg-background hover:bg-accent/50 focus:bg-accent/50 data-[state=open]:bg-accent/50 transition-colors",children:a.jsx(Kc,{placeholder:"Select email",className:"text-muted-foreground",children:v?o?.find((e=>e.channelSenderId===v))?.fullDomain:""})}),a.jsx(Gc,{children:o?.map((e=>a.jsx(Vc,{value:e.channelSenderId,children:e.fullDomain},e.channelSenderId)))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"From Name"}),a.jsx(ex,{title:h||PMe,link:p?{url:p}:void 0})]}),a.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground bg-muted/50 rounded-md",children:A||a.jsx("span",{className:"italic text-muted-foreground/70",children:"Not set"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Reply-To"}),a.jsx(ex,{title:d||_Me,link:m?{url:m}:void 0})]}),a.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground bg-muted/50 rounded-md",children:M||(v?o?.find((e=>e.channelSenderId===v))?.fullDomain:"")||a.jsx("span",{className:"italic text-muted-foreground/70",children:"Not set"})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Subject"}),a.jsx("span",{className:"text-xs text-red-500 ml-0.5",children:"*"})]}),a.jsx(wMe,{value:k,onChange:b,mergeFieldsResponse:e,placeholder:"Enter email subject",className:"bg-background hover:bg-accent/50 focus:bg-accent transition-colors placeholder:text-muted-foreground/50 "+(_?"border-red-300 focus:border-red-500":""),ariaLabel:"Insert merge field into subject"}),_&&a.jsx("p",{className:"text-xs text-red-500 animate-pulse",children:_})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Ao,{className:"text-sm font-medium text-foreground",children:"Preview Text"}),a.jsx(ex,{title:"This text will be used for the preview text of the email in the inbox"})]}),a.jsx(wMe,{value:S,onChange:w,mergeFieldsResponse:e})]})]})})]})]})})},qPe=({type:e,disablePreviewSubtext:n=!1})=>{const t="sms"===e?"SMS":"Email";return a.jsx("div",{className:"flex flex-1 w-full h-full items-center justify-center",children:a.jsxs("div",{className:"flex flex-col items-center justify-center bg-zinc-50/80 border border-zinc-100 rounded-2xl shadow-md px-6 py-12 max-w-[90vw] w-full sm:max-w-md mx-auto text-center",style:{containerType:"inline-size"},children:[a.jsx("sms"===e?sM.SmsIcon:sM.EmailIcon,{className:"w-12 h-12 text-zinc-500 mb-4"}),a.jsxs("h2",{className:"text-xl font-semibold text-zinc-800 mb-2",children:["No ",t," Content Yet"]}),!n&&a.jsxs("p",{className:"text-zinc-500 text-base mb-1",children:["Click"," ",a.jsx("span",{className:"font-medium text-zinc-700",children:"Edit content"})," to start crafting your ",t," message."]})]})})},ZPe=({disablePreview:e=!1,disableEditContent:t=!1,disablePreviewSubtext:i=!1})=>{const r=zoe(),o=Koe(),{channelSenders:s}=CC(),{channelAccounts:l}=SC(),{data:u,isLoading:c}=rS(),{state:{selectedActionId:d}}=n.useContext(Soe),{channelEnabled:m,isUpdating:h,handleToggleChannel:p}=HPe(jge.EMAIL),[g,f]=n.useState(!1),[v,y]=n.useState(!1),[k,b]=n.useState(null),[S,w]=n.useState(!1),[A,C]=n.useState(!1),[M,T]=n.useState(!1),[x,N]=n.useState({width:0,height:0}),{getMergeFields:E}=aN(o?.id??void 0,r?.id??void 0);n.useEffect((()=>{null===k&&u&&v&&(u?.uiDefaults||b(!0),u?.uiDefaults?.emailHelpDialogShow&&!k&&b(!0))}),[u,k,v]),n.useEffect((()=>{const e=()=>{N({width:window.innerWidth,height:window.innerHeight})};return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]);if(!r||!o||void 0===s||void 0===l||!d||c)return null;const j=o.emailCompiledHtml||o.emailHtmlBody||"",_=j.length&&j.length>0,P=TC({channelSenders:s?.results??[],channelAccounts:l?.results??[]}),L=o.emailChannelSenderId?o.emailSubject?o.emailHtmlBody?null:"Please first ensure you have an email content":"Please first ensure you have an email subject":"Please first select an email sender",B=r.status===FN.DRAFT&&!t,R=!e&&_,D=!o.emailChannelSenderId||0===P.length,z=()=>{if(t)return null;const e=a.jsxs(Wa,{size:"sm",variant:"outline",disabled:!B,className:Fa(!B&&"cursor-not-allowed"),onClick:()=>y(!0),children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]});return B?e:a.jsx(ex,{alertText:"You can only edit the content if we are in the draft state.",asChild:!0,className:"cursor-not-allowed",children:a.jsx("div",{className:"inline-block cursor-not-allowed",children:e})})},O=()=>{const e=a.jsx(_Te,{onClick:()=>f(!0)});return L?a.jsx(ex,{alertText:"Unable to send preview",title:"There was an error preparing the preview. Please check your automation configuration.",className:"inline-block",asChild:!0,children:e}):e};return a.jsxs("div",{className:"flex-1 flex flex-col items-center pt-4",children:[a.jsx(jMe,{showStripoEditor:v,setShowStripoEditor:y,showHelpDialog:k??!1,setShowHelpDialog:b,cancelClicked:A,setCancelClicked:C,automation:r??null,saveClicked:S,setSaveClicked:w,stripoDialogDimensions:x,mergeFieldsResponse:E??null,selectedActionId:d,isEditorReady:M,setIsEditorReady:T}),P.length>0&&a.jsx(DTe,{open:g,onOpenChange:f,automation:r}),D&&a.jsx(VPe,{channelType:"email",onEnable:p,isEnabling:h}),_?a.jsx("div",{className:"flex-1 w-full flex flex-col overflow-y-auto",children:a.jsx("div",{className:Fa("flex flex-col space-y-4 px-4 pb-20",D?"pt-0":"pt-4"),children:a.jsxs("div",{className:"flex flex-col space-y-4 px-4 pb-20",children:[a.jsx("div",{className:"w-full flex-shrink-0 max-w-2xl mx-auto rounded-md",children:a.jsx(WPe,{mergeFieldsResponse:E,disableEditContent:t})}),a.jsxs("div",{className:"rounded-lg bg-background flex-1 min-h-0 flex flex-col items-center max-w-2xl mx-auto w-full",children:[a.jsxs("div",{className:"flex items-center space-x-2 w-full justify-between p-3",children:[a.jsx(JPe,{channelEnabled:m,isUpdating:h,onToggle:p,channelType:"email"}),a.jsxs("div",{className:"flex items-center space-x-2",children:[a.jsx(IPe,{type:Pge.EMAIL}),a.jsx(z,{}),R&&a.jsx(O,{}),_&&a.jsx(ETe,{expandDialogContent:a.jsx(xTe,{emailBody:j})})]})]}),a.jsx(Oge,{html:j})]}),a.jsx("p",{className:"text-center text-sm text-muted-foreground flex-shrink-0 pt-4",children:"These previews show generally how your messages will appear to your customers"})]})})}):a.jsxs(a.Fragment,{children:[D&&a.jsx(VPe,{channelType:"email",className:"pt-4"}),a.jsx(qPe,{type:"email",disablePreviewSubtext:i})]})]})},$Pe=({label:e,value:n,className:t})=>a.jsxs("div",{className:"flex items-center gap-1 min-w-0 max-w-full flex-shrink",children:[a.jsxs("span",{className:"sr-only",children:[e,":"]}),a.jsx("span",{className:Fa("truncate",t),children:n})]}),YPe=n.memo((({trigger:e,communicationGroupId:n,initialSenderId:t,companyName:i})=>a.jsx(bTe,{communicationGroupId:n,initialSenderId:t,companyName:i,trigger:e}))),QPe=({disableEditContent:e,mergeFieldsResponse:t})=>{const i=zoe(),r=Koe(),{channelSenders:o}=CC(),{channelAccounts:s}=SC(),{data:l}=cN(),u=r?.smsMessageBody||null,c=n.useMemo((()=>vN({channelSenders:o?.results??[],channelAccounts:s?.results??[],smsApplication:l})),[o?.results,s?.results,l]),d=c?.find((e=>e.channelSender.id===r?.smsChannelSenderId)),m=d?.channelSender.channelSenderMetadata.from&&null!==d.channelSender.channelSenderMetadata.from?d.channelSender.channelSenderMetadata.from:null,h=d?.channelSender.channelSenderMetadata.friendlyName??(m&&null!==m?BTe(m??""):d?.channelSender.channelSenderMetadata.messageServiceSid),p=!(i&&r&&o&&s&&c&&(void 0!==l||d)),g=n.useRef(null),f=n.useRef(0),v=n.useMemo((()=>{const e=r?.textMessageCompanyName,a=Date.now();return e&&e.trim()?(g.current=e,f.current=a,e):!p&&a-f.current>2e3&&(null==r?.textMessageCompanyName||""===r?.textMessageCompanyName)?(g.current=null,f.current=a,null):g.current}),[r?.textMessageCompanyName,p]),y=u?u.length>50?u.substring(0,50)+"...":u:null,k=n.memo(n.forwardRef(((e,n)=>a.jsxs(Wa,{size:"sm",variant:"outline",ref:n,...e,disabled:i?.status!==FN.DRAFT,children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]}))));return a.jsx("div",{className:"w-full bg-background rounded-lg p-3",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("div",{className:"flex items-center gap-2 overflow-hidden flex-1",children:a.jsxs(a.Fragment,p?{children:[a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-16"}),a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-20"}),a.jsx("div",{className:"h-4 bg-muted animate-pulse rounded w-32"})]}:{children:[h&&a.jsx($Pe,{label:"From",value:h,className:"font-bold"}),v&&a.jsx($Pe,{label:"Company",value:v,className:"font-normal"}),y&&a.jsx($Pe,{label:"Message",value:a.jsx(HMe,{content:y,mergeFieldsResponse:t,variant:"minimal",className:"text-muted-foreground/50 italic"}),className:"text-muted-foreground/50 italic"})]})}),!e&&!p&&r&&a.jsx(YPe,{trigger:a.jsx(k,{}),communicationGroupId:r.id,initialSenderId:r.smsChannelSenderId,companyName:v})]})})},XPe=({disablePreview:e=!1,disableEditContent:t=!1})=>{const[i,r]=n.useState(!1),{channelSenders:o}=CC(),{data:s}=ix(),{brandDefaults:l}=kC(),{channelAccounts:u}=SC(),c=zoe(),d=Koe(),[m,h]=n.useState(!1),{data:p}=cN(),g=n.useRef(!1),f=n.useRef(null),{toast:v}=Ck(),[y,k]=n.useState(!1),{channelEnabled:b,isUpdating:S,handleToggleChannel:w}=HPe(Lge.SMS),{updateCommunicationGroup:A,isUpdating:C}=Qx(),M=vN({channelSenders:o?.results??[],channelAccounts:u?.results??[],smsApplication:p}),T=M.find((e=>e.channelSender.id===d?.smsChannelSenderId)),x=n.useCallback((e=>OMe(e)),[]),N=d?.smsMessageBody||"",[E,j]=n.useState("");n.useEffect((()=>{m&&d?.smsMessageBody!==E&&j(d?.smsMessageBody||"")}),[m,d?.smsMessageBody,E]);const _=n.useCallback((e=>{if(!d?.extraMergeFields)return[];const a=x(e),n=[];for(const t of d.extraMergeFields)if(t.type===zMe.DYNAMIC)for(const e of t.mergeFields)a.includes(e.templateName)&&e.image&&n.push({templateName:e.templateName,displayName:e.displayName,placeholderUrl:e.image.placeholderUrl,maxSize:e.image.maxSize});return n}),[d?.extraMergeFields,x]),P=n.useMemo((()=>d?.textMessageMediaUrls??[]),[d?.textMessageMediaUrls]),L=n.useMemo((()=>!d||!o||!u),[d,o,u]),B=n.useMemo((()=>_(E)),[_,E]),R=n.useMemo((()=>[...B.map((e=>e.placeholderUrl)),...P]),[P,B]),D=n.useRef(null),z=n.useMemo((()=>{if(null===D.current&&d?.textMessageCompanyName){const e=d.textMessageCompanyName;if(e&&e.trim())return D.current=e,e}return D.current}),[]),O=n.useMemo((()=>DMe({companyName:z??void 0,smsBody:N})),[z,N]),{getMergeFields:K}=aN(d?.id??void 0,c?.id??void 0),I=M.length>0;n.useEffect((()=>{if(!g.current&&!0===I&&d?.id&&void 0!==s&&void 0!==d&&!1===C&&void 0!==l){let e={};void 0===d?.textMessageCompanyName&&(s?.name||l?.brandName)&&(e.textMessageCompanyName=l.brandName??s.name),0===N.length&&(e.smsMessageBody="Hello 👋!"),void 0===d?.smsChannelSenderId&&M[0]?.channelSender?.id&&(e.smsChannelSenderId=M[0].channelSender.id),Object.keys(e).length>0?(g.current=!0,A({groupId:d.id,params:e})):g.current=!0}}),[d?.id,d?.textMessageCompanyName,d?.smsMessageBody,I,N,A,s,d?.smsChannelSenderId,M,d,C,l]);const H=!T?.smsApplication||T.smsApplication.status===fN.APPROVED;if(!c||void 0===o)return null;let F=null;d?.smsChannelSenderId||(F="Please first select a sms sender"),d?.smsMessageBody||(F="Please first ensure you have a sms content");const G=c.status===FN.DRAFT&&!t,V=!e&&H,J=!d?.smsChannelSenderId||0===M.length,U=()=>{if(t)return null;const e=a.jsxs(Wa,{size:"sm",variant:"outline",disabled:!G,className:Fa(!G&&"cursor-not-allowed"),onClick:()=>{h(!0)},children:[a.jsx(sM.EditIcon,{className:"w-3 h-3"}),"Edit"]});return G?e:a.jsx(ex,{alertText:"You can only edit the content if you are in the draft state.",asChild:!0,className:"cursor-not-allowed",children:a.jsx("div",{className:"inline-block cursor-not-allowed",children:e})})},W=()=>{const e=a.jsx(_Te,{onClick:()=>r(!0)});return F?a.jsx(ex,{alertText:"Unable to send preview",title:"There was an error preparing the preview. Please check your automation configuration.",className:"inline-block",asChild:!0,children:e}):e},q=n.memo(FMe,((e,a)=>{const n=e.body||"",t=a.body||"";if(n===t)return!0;if(n.replace(/^[^:]+:\s*/,"")===t.replace(/^[^:]+:\s*/,""))return!0;const i=e.imageUrls||[],r=a.imageUrls||[];if(i.length!==r.length)return!1;for(let o=0;o<i.length;o++)if(i[o]!==r[o])return!1;return!0}));return a.jsx("div",{className:"h-full",children:!1===I?a.jsx("div",{className:"w-full pt-8 mx-auto",children:a.jsx(bN,{})}):a.jsxs(gk.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.3,ease:[.16,1,.3,1]},className:"flex-1 flex flex-col items-center h-full",children:[a.jsx(zTe,{open:i,onOpenChange:r,automation:c}),a.jsx(fi,{open:m,onOpenChange:h,children:a.jsxs(bi,{hideCloseButton:!0,className:"max-w-[90vw] @container",children:[a.jsxs(We,{children:[a.jsx(Ai,{children:"SMS Editor"}),a.jsx(Ci,{children:"Learn more about the SMS editor and how to use it to create your SMS."})]}),a.jsx(ATe,{ref:f,communicationGroupId:d?.id||"",initialMessage:E,initialImageUrls:P,companyName:z,initialSenderId:d?.smsChannelSenderId}),a.jsx("div",{className:"flex justify-end mt-6",children:a.jsx(Wa,{variant:"outline",onClick:async()=>{try{k(!0),f.current?.saveChanges&&await f.current.saveChanges(),await new Promise((e=>setTimeout(e,100))),h(!1)}catch(e){v({title:"Save failed",description:"Please try again or check your message length",variant:"destructive"})}finally{k(!1)}},disabled:C||y,className:"px-4",children:y?"Saving...":"Save"})})]})}),J&&a.jsx(VPe,{channelType:"sms",onEnable:w,isEnabling:S}),I?a.jsx("div",{className:"flex-1 w-full flex flex-col overflow-y-auto",children:a.jsx("div",{className:Fa("flex flex-col space-y-4 px-4 pb-20",J?"pt-0":"pt-4"),children:a.jsxs("div",{className:"flex flex-col space-y-4 px-4 pt-4 pb-20",children:[a.jsx("div",{className:"w-full flex-shrink-0 max-w-2xl mx-auto rounded-md",children:a.jsx(QPe,{disableEditContent:t,mergeFieldsResponse:K})}),a.jsxs("div",{className:"rounded-lg bg-background flex-1 min-h-0 flex flex-col items-center max-w-2xl mx-auto w-full",children:[a.jsxs("div",{className:"flex items-center space-x-2 w-full justify-between p-3",children:[a.jsx(JPe,{channelEnabled:b,isUpdating:S,onToggle:w,channelType:"sms"}),a.jsxs("div",{className:"flex items-center space-x-2",children:[a.jsx(IPe,{type:Pge.SMS}),a.jsx(U,{}),V&&a.jsx(W,{}),I&&a.jsx(ETe,{expandDialogContent:a.jsx(jTe,{smsBody:O,imageUrls:R})})]})]}),L?a.jsx("div",{className:"flex items-center justify-center h-32",children:a.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading preview..."})}):a.jsx(q,{body:O,imageUrls:R})]}),a.jsx("p",{className:"text-center text-sm text-muted-foreground flex-shrink-0 pt-4",children:"These previews show generally how your messages will appear to your customers"})]})})}):a.jsxs(a.Fragment,{children:[J&&a.jsx(VPe,{channelType:"sms",className:"pt-4"}),a.jsx(qPe,{type:Pge.SMS})]})]})})},eLe=({disablePreview:e=!1,disableEditContent:t=!1,disablePreviewSubtext:i=!1,hideSms:r=!1})=>{const{state:{selectedSubStepType:o}}=n.useContext(Soe);if(!Koe())return a.jsx("div",{className:"flex flex-col gap-4 flex-1 bg-muted rounded-md",children:a.jsx(fd,{text:["Loading..."]})});if(!o)return a.jsx("div",{className:"flex flex-col gap-4 flex-1 bg-muted rounded-md",children:a.jsx("div",{className:"flex items-center justify-center h-full",children:a.jsxs("div",{className:"text-center",children:[a.jsx("h3",{className:"text-lg font-medium text-muted-foreground mb-2",children:"Select Communication Type"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Choose Email or SMS from the steps on the left to preview and edit content"})]})})});const s={disablePreview:e,disableEditContent:t,disablePreviewSubtext:i};return a.jsxs("div",{className:"flex flex-col flex-1 bg-muted rounded-md",children:[o===jge.EMAIL&&a.jsx(ZPe,{...s}),o===jge.SMS&&!r&&a.jsx(XPe,{...s})]})},aLe=()=>{const{state:{selectedActionId:e}}=n.useContext(Soe),{state:{hideSms:t}}=n.useContext(toe);return a.jsx("div",{className:"flex flex-col gap-4 h-full w-full",children:a.jsx(jd,{mode:"wait",children:e===Ege.EditTime?a.jsx(VTe,{}):e===Ege.EditAudience?a.jsx(QEe,{}):a.jsx(eLe,{hideSms:t})})})},nLe=({hideSms:e})=>a.jsxs(yPe,{direction:"horizontal",className:"flex-1",children:[a.jsx(kPe,{defaultSize:30,minSize:16,maxSize:48,children:a.jsx("aside",{className:"h-full",children:a.jsx(KPe,{hideSms:e})})}),a.jsx(bPe,{className:"px-1 opacity-0 hover:opacity-100 transition-opacity duration-200 mx-1"}),a.jsx(kPe,{defaultSize:70,children:a.jsx("main",{className:"h-full",children:a.jsx(aLe,{})})})]}),tLe=({hideSms:e})=>{const[t,i]=n.useState(_ge.WORKFLOW),r=[{id:_ge.WORKFLOW,label:"Workflow",content:a.jsx(nLe,{hideSms:e})},{id:_ge.RECIPIENTS,label:"Recipients",content:a.jsx(Ije,{})},{id:_ge.INSIGHTS,label:qx("engage:insight",{count:2}),content:a.jsx(zje,{})}];return a.jsx(pje,{tabs:r,activeTab:t,onTabChange:e=>i(e),tabsLocation:"left"})},iLe=({showBackButton:e=!1,onDuplicationCreated:t,onBeforeSchedule:i,getExtraMergeFields:r,hideSms:o,hideSales:s,replyToSettingsText:l,replyToSettingsLink:u,fromNameSettingsText:c,fromNameSettingsLink:d})=>{const m=zoe(),h=Koe(),{updateCommunicationGroup:p}=Qx(),{toast:g}=Ck(),{channelSenders:f}=CC(),v=n.useRef("");return n.useEffect((()=>{if(h&&r){(async()=>{const e=await r(),a=JSON.stringify(e);a!==v.current&&(v.current=a,p({groupId:h?.id,params:{extraMergeFields:e}},{onError:()=>{g({title:"Error saving merge fields!",description:"Please contact your administrator if this issue persists.",variant:"destructive"})}}))})()}}),[h,r,p,g]),n.useEffect((()=>{if(m&&h&&f&&m.automationType===IN.MANAGED&&null===h.emailChannelSenderId&&null===h.smsChannelSenderId){if(!h.emailChannelSenderId){const e=f.results.filter((e=>e.channelSenderMetadata.userPart));e.length>0&&p({groupId:h.id,params:{emailChannelSenderId:e[0].id}})}if(!h.smsChannelSenderId){const e=f.results.filter((e=>e.channelSenderMetadata.from||e.channelSenderMetadata.messageServiceSid));e.length>0&&p({groupId:h.id,params:{smsChannelSenderId:e[0].id}})}}}),[m,h,f,p]),m&&h?a.jsx(ioe,{children:a.jsx(roe,{replyToSettingsText:l,replyToSettingsLink:u,fromNameSettingsText:c,fromNameSettingsLink:d,hideSms:o,hideSales:s,children:a.jsxs("div",{className:"h-full flex flex-col gap-4 p-4",children:[a.jsx(Dje,{showBackButton:e,onDuplicationCreated:t,onBeforeSchedule:i}),a.jsx("div",{className:"flex-1 border-t",children:a.jsx(tLe,{hideSms:o})})]})})}):a.jsx("div",{className:"flex h-full items-center justify-center",children:a.jsx(fd,{text:[`Fetching ${qx("engage:automation").toLowerCase()} data`,"Finishing up"]})})},rLe=({...e})=>{const n=function(){let{matches:e}=r.useContext(rce),a=e[e.length-1];return a?a.params:{}}(),[t]=Zce(),i=e.automationId||n?.automationId||t.get("automationId")||"",o="true"===t.get("showBackButton")||e.showBackButton,s="true"===t.get("hideSms")||e.hideSms;return a.jsx(Hoe,{automationId:i,children:a.jsx("div",{className:"bg-background h-full min-h-[750px]",children:a.jsx(iLe,{...e,showBackButton:o,hideSms:s})})})};Object.values(Object.assign({}));var oLe=/(%?)(%([sdijo]))/g;function sLe(e,...a){if(0===a.length)return e;let n=0,t=e.replace(oLe,((e,t,i,r)=>{const o=function(e,a){switch(a){case"s":return e;case"d":case"i":return Number(e);case"j":return JSON.stringify(e);case"o":{if("string"==typeof e)return e;const a=JSON.stringify(e);return"{}"===a||"[]"===a||/^\[object .+?\]$/.test(a)?e:a}}}(a[n],r);return t?e:(n++,o)}));return n<a.length&&(t+=` ${a.slice(n).join(" ")}`),t=t.replace(/%{2,2}/g,"%"),t}var lLe=class extends Error{constructor(e,...a){super(e),this.message=e,this.name="Invariant Violation",this.message=sLe(e,...a),function(e){if(!e.stack)return;const a=e.stack.split("\n");a.splice(1,2),e.stack=a.join("\n")}(this)}},uLe=(e,a,...n)=>{if(!e)throw new lLe(a,...n)};uLe.as=(e,a,n,...t)=>{if(!a){const a=0===t.length?n:sLe(n,...t);let i;try{i=Reflect.construct(e,[a])}catch(YIe){i=e(a)}throw i}};const cLe={formatMessage:function(e,...a){return`[MSW] ${sLe(e,...a)}`},warn:function(e,...a){},error:function(e,...a){}};class dLe extends Error{constructor(e){super(e),this.name="InternalError"}}const mLe=/[\/\\]msw[\/\\]src[\/\\](.+)/,hLe=/(node_modules)?[\/\\]lib[\/\\](core|browser|node|native|iife)[\/\\]|^[^\/\\]*$/;class pLe{static cache=new WeakMap;__kind;info;isUsed;resolver;resolverIterator;resolverIteratorResult;options;constructor(e){this.resolver=e.resolver,this.options=e.options;const a=function(e){const a=e.stack;if(!a)return;const n=a.split("\n").slice(1).find((e=>!(mLe.test(e)||hLe.test(e))));if(!n)return;return n.replace(/\s*at [^()]*\(([^)]+)\)/,"$1").replace(/^@/,"")}(new Error);this.info={...e.info,callFrame:a},this.isUsed=!1,this.__kind="RequestHandler"}async parse(e){return{}}async test(e){const a=await this.parse({request:e.request,resolutionContext:e.resolutionContext});return this.predicate({request:e.request,parsedResult:a,resolutionContext:e.resolutionContext})}extendResolverArgs(e){return{}}cloneRequestOrGetFromCache(e){const a=pLe.cache.get(e);if(void 0!==a)return a;const n=e.clone();return pLe.cache.set(e,n),n}async run(e){if(this.isUsed&&this.options?.once)return null;const a=this.cloneRequestOrGetFromCache(e.request),n=await this.parse({request:e.request,resolutionContext:e.resolutionContext});if(!this.predicate({request:e.request,parsedResult:n,resolutionContext:e.resolutionContext}))return null;if(this.isUsed&&this.options?.once)return null;this.isUsed=!0;const t=this.wrapResolver(this.resolver)({...this.extendResolverArgs({request:e.request,parsedResult:n}),requestId:e.requestId,request:e.request}).catch((e=>{if(e instanceof Response)return e;throw e})),i=await t;return this.createExecutionResult({request:a,requestId:e.requestId,response:i,parsedResult:n})}wrapResolver(e){return async a=>{if(!this.resolverIterator){const t=await e(a);if(!(n=t)||!Reflect.has(n,Symbol.iterator)&&!Reflect.has(n,Symbol.asyncIterator))return t;this.resolverIterator=Symbol.iterator in t?t[Symbol.iterator]():t[Symbol.asyncIterator]()}var n;this.isUsed=!1;const{done:t,value:i}=await this.resolverIterator.next(),r=await i;return r&&(this.resolverIteratorResult=r.clone()),t?(this.isUsed=!0,this.resolverIteratorResult?.clone()):r}}createExecutionResult(e){return{handler:this,request:e.request,requestId:e.requestId,response:e.response,parsedResult:e.parsedResult}}}function gLe(e){if("undefined"==typeof location)return e.toString();const a=e instanceof URL?e:new URL(e);return a.origin===location.origin?a.pathname:a.origin+a.pathname}async function fLe(e,a="warn"){const n=new URL(e.url),t=gLe(n)+n.search,i="HEAD"===e.method||"GET"===e.method?null:await e.clone().text(),r=`intercepted a request without a matching request handler:${`\n\n • ${e.method} ${t}\n\n${i?` • Request body: ${i}\n\n`:""}`}If you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks`;function o(e){switch(e){case"error":throw cLe.error("Error: %s",r),new dLe(cLe.formatMessage('Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'));case"warn":cLe.warn("Warning: %s",r);break;case"bypass":break;default:throw new dLe(cLe.formatMessage('Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',e))}}"function"!=typeof a?function(e){const a=new URL(e.url);return"file:"===a.protocol||!!/(fonts\.googleapis\.com)/.test(a.hostname)||!!/node_modules/.test(a.pathname)||!!a.pathname.includes("@vite")||/\.(s?css|less|m?jsx?|m?tsx?|html|ttf|otf|woff|woff2|eot|gif|jpe?g|png|avif|webp|svg|mp4|webm|ogg|mov|mp3|wav|ogg|flac|aac|pdf|txt|csv|json|xml|md|zip|tar|gz|rar|7z)$/i.test(a.pathname)}(e)||o(a):a(e,{warning:o.bind(null,"warn"),error:o.bind(null,"error")})}function vLe(){if("undefined"!=typeof navigator&&"ReactNative"===navigator.product)return!0;if("undefined"!=typeof process){const e=process.type;return"renderer"!==e&&"worker"!==e&&!(!process.versions||!process.versions.node)}return!1}var yLe,kLe,bLe=Object.create,SLe=Object.defineProperty,wLe=Object.getOwnPropertyDescriptor,ALe=Object.getOwnPropertyNames,CLe=Object.getPrototypeOf,MLe=Object.prototype.hasOwnProperty,TLe=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,a)=>("undefined"!=typeof require?require:e)[a]}):e)((function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')})),xLe=(e,a)=>function(){return a||(0,e[ALe(e)[0]])((a={exports:{}}).exports,a),a.exports},NLe=xLe({"node_modules/punycode/punycode.js"(e,a){var n=2147483647,t=36,i=/^xn--/,r=/[^\0-\x7F]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,s={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function c(e){throw new RangeError(s[e])}function d(e,a){const n=e.split("@");let t="";n.length>1&&(t=n[0]+"@",e=n[1]);const i=function(e,a){const n=[];let t=e.length;for(;t--;)n[t]=a(e[t]);return n}((e=e.replace(o,".")).split("."),a).join(".");return t+i}function m(e){const a=[];let n=0;const t=e.length;for(;n<t;){const i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<t){const t=e.charCodeAt(n++);56320==(64512&t)?a.push(((1023&i)<<10)+(1023&t)+65536):(a.push(i),n--)}else a.push(i)}return a}var h=function(e,a){return e+22+75*(e<26)-((0!=a)<<5)},p=function(e,a,n){let i=0;for(e=n?l(e/700):e>>1,e+=l(e/a);e>455;i+=t)e=l(e/35);return l(i+36*e/(e+38))},g=function(e){const a=[],i=e.length;let r=0,o=128,s=72,u=e.lastIndexOf("-");u<0&&(u=0);for(let n=0;n<u;++n)e.charCodeAt(n)>=128&&c("not-basic"),a.push(e.charCodeAt(n));for(let m=u>0?u+1:0;m<i;){const u=r;for(let a=1,o=t;;o+=t){m>=i&&c("invalid-input");const u=(d=e.charCodeAt(m++))>=48&&d<58?d-48+26:d>=65&&d<91?d-65:d>=97&&d<123?d-97:t;u>=t&&c("invalid-input"),u>l((n-r)/a)&&c("overflow"),r+=u*a;const h=o<=s?1:o>=s+26?26:o-s;if(u<h)break;const p=t-h;a>l(n/p)&&c("overflow"),a*=p}const h=a.length+1;s=p(r-u,h,0==u),l(r/h)>n-o&&c("overflow"),o+=l(r/h),r%=h,a.splice(r++,0,o)}var d;return String.fromCodePoint(...a)},f=function(e){const a=[],i=(e=m(e)).length;let r=128,o=0,s=72;for(const n of e)n<128&&a.push(u(n));const d=a.length;let g=d;for(d&&a.push("-");g<i;){let i=n;for(const a of e)a>=r&&a<i&&(i=a);const m=g+1;i-r>l((n-o)/m)&&c("overflow"),o+=(i-r)*m,r=i;for(const f of e)if(f<r&&++o>n&&c("overflow"),f===r){let e=o;for(let n=t;;n+=t){const i=n<=s?1:n>=s+26?26:n-s;if(e<i)break;const r=e-i,o=t-i;a.push(u(h(i+r%o,0))),e=l(r/o)}a.push(u(h(e,0))),s=p(o,m,g===d),o=0,++g}++o,++r}return a.join("")};a.exports={version:"2.3.1",ucs2:{decode:m,encode:e=>String.fromCodePoint(...e)},decode:g,encode:f,toASCII:function(e){return d(e,(function(e){return r.test(e)?"xn--"+f(e):e}))},toUnicode:function(e){return d(e,(function(e){return i.test(e)?g(e.slice(4).toLowerCase()):e}))}}}}),ELe=xLe({"node_modules/requires-port/index.js"(e,a){a.exports=function(e,a){if(a=a.split(":")[0],!(e=+e))return!1;switch(a){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}}}),jLe=xLe({"node_modules/querystringify/index.js"(e){var a=Object.prototype.hasOwnProperty;function n(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(XIe){return null}}function t(e){try{return encodeURIComponent(e)}catch(XIe){return null}}e.stringify=function(e,n){n=n||"";var i,r,o=[];for(r in"string"!=typeof n&&(n="?"),e)if(a.call(e,r)){if((i=e[r])||null!=i&&!isNaN(i)||(i=""),r=t(r),i=t(i),null===r||null===i)continue;o.push(r+"="+i)}return o.length?n+o.join("&"):""},e.parse=function(e){for(var a,t=/([^=?#&]+)=?([^&]*)/g,i={};a=t.exec(e);){var r=n(a[1]),o=n(a[2]);null===r||null===o||r in i||(i[r]=o)}return i}}}),_Le=xLe({"node_modules/url-parse/index.js"(e,a){var n=ELe(),t=jLe(),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r=/[\n\r\t]/g,o=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,s=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function c(e){return(e||"").toString().replace(i,"")}var d=[["#","hash"],["?","query"],function(e,a){return p(a.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],m={hash:1,query:1};function h(e){var a;a="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var n,t={},i=typeof(e=e||(a.location||{}));if("blob:"===e.protocol)t=new f(unescape(e.pathname),{});else if("string"===i)for(n in t=new f(e,{}),m)delete t[n];else if("object"===i){for(n in e)n in m||(t[n]=e[n]);void 0===t.slashes&&(t.slashes=o.test(e.href))}return t}function p(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function g(e,a){e=(e=c(e)).replace(r,""),a=a||{};var n,t=l.exec(e),i=t[1]?t[1].toLowerCase():"",o=!!t[2],s=!!t[3],u=0;return o?s?(n=t[2]+t[3]+t[4],u=t[2].length+t[3].length):(n=t[2]+t[4],u=t[2].length):s?(n=t[3]+t[4],u=t[3].length):n=t[4],"file:"===i?u>=2&&(n=n.slice(2)):p(i)?n=t[4]:i?o&&(n=n.slice(2)):u>=2&&p(a.protocol)&&(n=t[4]),{protocol:i,slashes:o||p(i),slashesCount:u,rest:n}}function f(e,a,i){if(e=(e=c(e)).replace(r,""),!(this instanceof f))return new f(e,a,i);var o,s,l,m,v,y,k=d.slice(),b=typeof a,S=this,w=0;for("object"!==b&&"string"!==b&&(i=a,a=null),i&&"function"!=typeof i&&(i=t.parse),o=!(s=g(e||"",a=h(a))).protocol&&!s.slashes,S.slashes=s.slashes||o&&a.slashes,S.protocol=s.protocol||a.protocol||"",e=s.rest,("file:"===s.protocol&&(2!==s.slashesCount||u.test(e))||!s.slashes&&(s.protocol||s.slashesCount<2||!p(S.protocol)))&&(k[3]=[/(.*)/,"pathname"]);w<k.length;w++)"function"!=typeof(m=k[w])?(y=m[1],(l=m[0])!=l?S[y]=e:"string"==typeof l?~(v="@"===l?e.lastIndexOf(l):e.indexOf(l))&&("number"==typeof m[2]?(S[y]=e.slice(0,v),e=e.slice(v+m[2])):(S[y]=e.slice(v),e=e.slice(0,v))):(v=l.exec(e))&&(S[y]=v[1],e=e.slice(0,v.index)),S[y]=S[y]||o&&m[3]&&a[y]||"",m[4]&&(S[y]=S[y].toLowerCase())):e=m(e,S);i&&(S.query=i(S.query)),o&&a.slashes&&"/"!==S.pathname.charAt(0)&&(""!==S.pathname||""!==a.pathname)&&(S.pathname=function(e,a){if(""===e)return a;for(var n=(a||"/").split("/").slice(0,-1).concat(e.split("/")),t=n.length,i=n[t-1],r=!1,o=0;t--;)"."===n[t]?n.splice(t,1):".."===n[t]?(n.splice(t,1),o++):o&&(0===t&&(r=!0),n.splice(t,1),o--);return r&&n.unshift(""),"."!==i&&".."!==i||n.push(""),n.join("/")}(S.pathname,a.pathname)),"/"!==S.pathname.charAt(0)&&p(S.protocol)&&(S.pathname="/"+S.pathname),n(S.port,S.protocol)||(S.host=S.hostname,S.port=""),S.username=S.password="",S.auth&&(~(v=S.auth.indexOf(":"))?(S.username=S.auth.slice(0,v),S.username=encodeURIComponent(decodeURIComponent(S.username)),S.password=S.auth.slice(v+1),S.password=encodeURIComponent(decodeURIComponent(S.password))):S.username=encodeURIComponent(decodeURIComponent(S.auth)),S.auth=S.password?S.username+":"+S.password:S.username),S.origin="file:"!==S.protocol&&p(S.protocol)&&S.host?S.protocol+"//"+S.host:"null",S.href=S.toString()}f.prototype={set:function(e,a,i){var r=this;switch(e){case"query":"string"==typeof a&&a.length&&(a=(i||t.parse)(a)),r[e]=a;break;case"port":r[e]=a,n(a,r.protocol)?a&&(r.host=r.hostname+":"+a):(r.host=r.hostname,r[e]="");break;case"hostname":r[e]=a,r.port&&(a+=":"+r.port),r.host=a;break;case"host":r[e]=a,s.test(a)?(a=a.split(":"),r.port=a.pop(),r.hostname=a.join(":")):(r.hostname=a,r.port="");break;case"protocol":r.protocol=a.toLowerCase(),r.slashes=!i;break;case"pathname":case"hash":if(a){var o="pathname"===e?"/":"#";r[e]=a.charAt(0)!==o?o+a:a}else r[e]=a;break;case"username":case"password":r[e]=encodeURIComponent(a);break;case"auth":var l=a.indexOf(":");~l?(r.username=a.slice(0,l),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=a.slice(l+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(a))}for(var u=0;u<d.length;u++){var c=d[u];c[4]&&(r[c[1]]=r[c[1]].toLowerCase())}return r.auth=r.password?r.username+":"+r.password:r.username,r.origin="file:"!==r.protocol&&p(r.protocol)&&r.host?r.protocol+"//"+r.host:"null",r.href=r.toString(),r},toString:function(e){e&&"function"==typeof e||(e=t.stringify);var a,n=this,i=n.host,r=n.protocol;r&&":"!==r.charAt(r.length-1)&&(r+=":");var o=r+(n.protocol&&n.slashes||p(n.protocol)?"//":"");return n.username?(o+=n.username,n.password&&(o+=":"+n.password),o+="@"):n.password?(o+=":"+n.password,o+="@"):"file:"!==n.protocol&&p(n.protocol)&&!i&&"/"!==n.pathname&&(o+="@"),(":"===i[i.length-1]||s.test(n.hostname)&&!n.port)&&(i+=":"),o+=i+n.pathname,(a="object"==typeof n.query?e(n.query):n.query)&&(o+="?"!==a.charAt(0)?"?"+a:a),n.hash&&(o+=n.hash),o}},f.extractProtocol=g,f.location=h,f.trimLeft=c,f.qs=t,a.exports=f}}),PLe=xLe({"node_modules/psl/data/rules.json"(e,a){a.exports=["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","bet.ar","com.ar","coop.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","mutual.ar","net.ar","org.ar","senasa.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","sth.ac.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","app.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bib.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","coz.br","cri.br","cuiaba.br","curitiba.br","def.br","des.br","det.br","dev.br","ecn.br","eco.br","edu.br","emp.br","enf.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","geo.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","log.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","rep.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","seg.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","tec.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","com.cv","edu.cv","int.cv","nome.cv","org.cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","mil.cy","net.cy","org.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","art.dz","asso.dz","com.dz","edu.dz","gov.dz","org.dz","net.dz","pol.dz","soc.dz","tm.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","com.fm","edu.fm","net.fm","org.fm","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","edu.gd","gov.gd","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个��.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","com.ky","edu.ky","net.ky","org.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","biz.my","com.my","edu.my","gov.my","mil.my","name.my","net.my","org.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","me.ss","net.ss","org.ss","sch.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","info.tn","intl.tn","mincom.tn","nat.tn","net.tn","org.tn","perso.tn","tourism.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","bib.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","nom.ve","org.ve","rar.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","البحرين","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ລາວ","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","ye","com.ye","edu.ye","gov.ye","net.ye","mil.ye","org.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afl","africa","agakhan","agency","aig","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","catering","catholic","cba","cbn","cbre","cbs","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","jaguar","java","jcb","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kids","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","music","mutual","nab","nagoya","natura","navy","nba","nec","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","racing","radio","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiss","sydney","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","611.to","graphox.us","*.devcdnaccesso.com","adobeaemcloud.com","*.dev.adobeaemcloud.com","hlx.live","adobeaemcloud.net","hlx.page","hlx3.page","beep.pl","airkitapps.com","airkitapps-au.com","airkitapps.eu","aivencloud.com","barsy.ca","*.compute.estate","*.alces.network","kasserver.com","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","awsglobalaccelerator.com","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","siiites.com","appspacehosted.com","appspaceusercontent.com","appudo.net","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","cdn.prod.atlassian-dev.net","translated.page","myfritz.net","onavstack.net","*.awdev.ca","*.advisor.ws","ecommerce-shop.pl","b-data.io","backplaneapp.io","balena-devices.com","rs.ba","*.banzai.cloud","app.banzaicloud.io","*.backyards.banzaicloud.io","base.ec","official.ec","buyshop.jp","fashionstore.jp","handcrafted.jp","kawaiishop.jp","supersale.jp","theshop.jp","shopselect.net","base.shop","*.beget.app","betainabox.com","bnr.la","bitbucket.io","blackbaudcdn.net","of.je","bluebite.io","boomla.net","boutir.com","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","shop.brendly.rs","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","cafjs.com","mycd.eu","drr.ac","uwu.ai","carrd.co","crd.co","ju.mp","ae.org","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.net","hu.net","jp.net","jpn.com","mex.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","za.bz","za.com","ar.com","hu.com","kr.com","no.com","qc.com","uy.com","africa.com","gr.com","in.net","web.in","us.org","co.com","aus.basketball","nz.basketball","radio.am","radio.fm","c.la","certmgr.org","cx.ua","discourse.group","discourse.team","cleverapps.io","clerk.app","clerkstage.app","*.lcl.dev","*.lclstage.dev","*.stg.dev","*.stgstage.dev","clickrising.net","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","*.cloudera.site","pages.dev","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cnpy.gdn","codeberg.page","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","curv.dev","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","fnwk.site","folionetwork.site","platform0.app","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","dyndns.dappnode.io","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","demo.datadetect.com","instance.datadetect.com","edgestack.me","ddns5.com","debian.net","deno.dev","deno-staging.dev","dedyn.io","deta.app","deta.dev","*.rss.my.id","*.diher.solutions","discordsays.com","discordsez.com","jozi.biz","dnshome.de","online.th","shop.th","drayddns.com","shoparena.pl","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","bip.sh","bitbridge.net","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","ondigitalocean.app","*.digitaloceanspaces.com","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","eero.online","eero-stage.online","elementor.cloud","elementor.cool","en-root.fr","mytuleap.com","tuleap-partners.com","encr.app","encoreapi.com","onred.one","staging.onred.one","eu.encoway.cloud","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eurodir.ru","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","onfabrica.com","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","edgecompute.app","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastvps-server.com","fastvps.host","myfast.host","fastvps.site","myfast.space","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","conn.uk","copro.uk","hosp.uk","mydobiss.com","fh-muenster.io","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","fireweb.app","flap.id","onflashdrive.app","fldrv.com","fly.dev","edgeapp.net","shw.io","flynnhosting.net","forgeblocks.com","id.forgerock.io","framer.app","framercanvas.com","*.frusky.de","ravpage.co.il","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","freemyip.com","wien.funkfeuer.at","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","independent-commission.uk","independent-inquest.uk","independent-inquiry.uk","independent-panel.uk","independent-review.uk","public-inquiry.uk","royal-commission.uk","campaign.gov.uk","service.gov.uk","api.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","gentlentapis.com","lab.ms","cdn-edges.net","ghost.io","gsj.bz","githubusercontent.com","githubpreview.dev","github.io","gitlab.io","gitapp.si","gitpage.si","glitch.me","nog.community","co.ro","shop.ro","lolipop.io","angry.jp","babyblue.jp","babymilk.jp","backdrop.jp","bambina.jp","bitter.jp","blush.jp","boo.jp","boy.jp","boyfriend.jp","but.jp","candypop.jp","capoo.jp","catfood.jp","cheap.jp","chicappa.jp","chillout.jp","chips.jp","chowder.jp","chu.jp","ciao.jp","cocotte.jp","coolblog.jp","cranky.jp","cutegirl.jp","daa.jp","deca.jp","deci.jp","digick.jp","egoism.jp","fakefur.jp","fem.jp","flier.jp","floppy.jp","fool.jp","frenchkiss.jp","girlfriend.jp","girly.jp","gloomy.jp","gonna.jp","greater.jp","hacca.jp","heavy.jp","her.jp","hiho.jp","hippy.jp","holy.jp","hungry.jp","icurus.jp","itigo.jp","jellybean.jp","kikirara.jp","kill.jp","kilo.jp","kuron.jp","littlestar.jp","lolipopmc.jp","lolitapunk.jp","lomo.jp","lovepop.jp","lovesick.jp","main.jp","mods.jp","mond.jp","mongolian.jp","moo.jp","namaste.jp","nikita.jp","nobushi.jp","noor.jp","oops.jp","parallel.jp","parasite.jp","pecori.jp","peewee.jp","penne.jp","pepper.jp","perma.jp","pigboat.jp","pinoko.jp","punyu.jp","pupu.jp","pussycat.jp","pya.jp","raindrop.jp","readymade.jp","sadist.jp","schoolbus.jp","secret.jp","staba.jp","stripper.jp","sub.jp","sunnyday.jp","thick.jp","tonkotsu.jp","under.jp","upper.jp","velvet.jp","verse.jp","versus.jp","vivian.jp","watson.jp","weblike.jp","whitesnow.jp","zombie.jp","heteml.net","cloudapps.digital","london.cloudapps.digital","pymnt.uk","homeoffice.gov.uk","ro.im","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","*.gateway.dev","cloud.goog","translate.goog","*.usercontent.goog","cloudfunctions.net","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","goupile.fr","gov.nl","awsmppl.com","günstigbestellen.de","günstigliefern.de","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","pages.it.hs-heilbronn.de","hepforge.org","herokuapp.com","herokussl.com","ravendb.cloud","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","homesklep.pl","secaas.hk","hoplix.shop","orx.biz","biz.gl","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","edu.scot","sch.so","hostyhosting.io","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","ibxos.it","iliadboxos.it","impertrixcdn.com","impertrix.com","smushcdn.com","wphostedmail.com","wpmucdn.com","tempurl.host","wpmudev.host","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","na4u.ru","iopsys.se","ipifony.net","iservschule.de","mein-iserv.de","schulplattform.de","schulserver.de","test-iserv.de","iserv.dev","iobb.net","mel.cloudlets.com.au","cloud.interhostsolutions.be","users.scale.virtualcloud.com.br","mycloud.by","alp1.ae.flow.ch","appengine.flow.ch","es-1.axarnet.cloud","diadem.cloud","vip.jelastic.cloud","jele.cloud","it1.eur.aruba.jenv-aruba.cloud","it1.jenv-aruba.cloud","keliweb.cloud","cs.keliweb.cloud","oxa.cloud","tn.oxa.cloud","uk.oxa.cloud","primetel.cloud","uk.primetel.cloud","ca.reclaim.cloud","uk.reclaim.cloud","us.reclaim.cloud","ch.trendhosting.cloud","de.trendhosting.cloud","jele.club","amscompute.com","clicketcloud.com","dopaas.com","hidora.com","paas.hosted-by-previder.com","rag-cloud.hosteur.com","rag-cloud-ch.hosteur.com","jcloud.ik-server.com","jcloud-ver-jpc.ik-server.com","demo.jelastic.com","kilatiron.com","paas.massivegrid.com","jed.wafaicloud.com","lon.wafaicloud.com","ryd.wafaicloud.com","j.scaleforce.com.cy","jelastic.dogado.eu","fi.cloudplatform.fi","demo.datacenter.fi","paas.datacenter.fi","jele.host","mircloud.host","paas.beebyte.io","sekd1.beebyteapp.io","jele.io","cloud-fr1.unispace.io","jc.neen.it","cloud.jelastic.open.tim.it","jcloud.kz","upaas.kazteleport.kz","cloudjiffy.net","fra1-de.cloudjiffy.net","west1-us.cloudjiffy.net","jls-sto1.elastx.net","jls-sto2.elastx.net","jls-sto3.elastx.net","faststacks.net","fr-1.paas.massivegrid.net","lon-1.paas.massivegrid.net","lon-2.paas.massivegrid.net","ny-1.paas.massivegrid.net","ny-2.paas.massivegrid.net","sg-1.paas.massivegrid.net","jelastic.saveincloud.net","nordeste-idc.saveincloud.net","j.scaleforce.net","jelastic.tsukaeru.net","sdscloud.pl","unicloud.pl","mircloud.ru","jelastic.regruhosting.ru","enscaled.sg","jele.site","jelastic.team","orangecloud.tn","j.layershift.co.uk","phx.enscaled.us","mircloud.us","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","jotelulu.cloud","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","ktistory.com","kapsi.fi","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","koobin.events","oya.to","kuleuven.cloud","ezproxy.kuleuven.be","co.krd","edu.krd","krellian.net","webthings.io","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkyard.cloud","linkyard-cloud.ch","members.linode.com","*.nodebalancer.linode.com","*.linodeobjects.com","ip.linodeusercontent.com","we.bs","*.user.localcert.dev","localzone.xyz","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","servers.run","lohmus.me","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.ro","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","cn.vu","mazeplay.com","mcpe.me","mcdir.me","mcdir.ru","mcpre.ru","vps.mcdir.ru","mediatech.by","mediatech.dev","hra.health","miniserver.com","memset.net","messerli.app","*.cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","*.azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","azurestaticapps.net","1.azurestaticapps.net","centralus.azurestaticapps.net","eastasia.azurestaticapps.net","eastus2.azurestaticapps.net","westeurope.azurestaticapps.net","westus2.azurestaticapps.net","csx.cc","mintere.site","forte.id","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","hostedpi.com","customer.mythic-beasts.com","caracal.mythic-beasts.com","fentiger.mythic-beasts.com","lynx.mythic-beasts.com","ocelot.mythic-beasts.com","oncilla.mythic-beasts.com","onza.mythic-beasts.com","sphinx.mythic-beasts.com","vs.mythic-beasts.com","x.mythic-beasts.com","yali.mythic-beasts.com","cust.retrosnub.co.uk","ui.nabu.casa","pony.club","of.fashion","in.london","of.london","from.marketing","with.marketing","for.men","repair.men","and.mom","for.mom","for.one","under.one","for.sale","that.win","from.work","to.work","cloud.nospamproxy.com","netlify.app","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","*.developer.app","noop.app","*.northflank.app","*.build.run","*.code.run","*.database.run","*.migration.run","noticeable.news","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","pcloud.host","nyc.mn","static.observableusercontent.com","cya.gg","omg.lol","cloudycluster.net","omniwe.site","service.one","nid.io","opensocial.site","opencraft.hosting","orsites.com","operaunite.com","tech.orange","authgear-staging.com","authgearapps.com","skygearapp.com","outsystemscloud.com","*.webpaas.ovh.net","*.hosting.ovh.net","ownprovider.com","own.pm","*.owo.codes","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","pagexl.com","*.paywhirl.com","bar0.net","bar1.net","bar2.net","rdv.to","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","lk3.ru","on-web.fr","bc.platform.sh","ent.platform.sh","eu.platform.sh","us.platform.sh","*.platformsh.site","*.tst.site","platter-app.com","platter-app.dev","platterp.us","pdns.page","plesk.page","pleskns.com","dyn53.io","onporter.run","co.bn","postman-echo.com","pstmn.io","mock.pstmn.io","httpbin.org","prequalifyme.today","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","pythonanywhere.com","eu.pythonanywhere.com","qoto.io","qualifioapp.com","qbuser.com","cloudsite.builders","instances.spawn.cc","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","g.vbrplsbx.io","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","id.repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","wellbeingzone.co.uk","adimo.co.uk","itcouldbewor.se","git-pages.rit.edu","rocky.page","биз.рус","ком.рус","крым.рус","мир.рус","мск.рус","орг.рус","самара.рус","сочи.рус","спб.рус","я.рус","*.builder.code.com","*.dev-builder.code.com","*.stg-builder.code.com","sandcats.io","logoip.de","logoip.com","fr-par-1.baremetal.scw.cloud","fr-par-2.baremetal.scw.cloud","nl-ams-1.baremetal.scw.cloud","fnc.fr-par.scw.cloud","functions.fnc.fr-par.scw.cloud","k8s.fr-par.scw.cloud","nodes.k8s.fr-par.scw.cloud","s3.fr-par.scw.cloud","s3-website.fr-par.scw.cloud","whm.fr-par.scw.cloud","priv.instances.scw.cloud","pub.instances.scw.cloud","k8s.scw.cloud","k8s.nl-ams.scw.cloud","nodes.k8s.nl-ams.scw.cloud","s3.nl-ams.scw.cloud","s3-website.nl-ams.scw.cloud","whm.nl-ams.scw.cloud","k8s.pl-waw.scw.cloud","nodes.k8s.pl-waw.scw.cloud","s3.pl-waw.scw.cloud","s3-website.pl-waw.scw.cloud","scalebook.scw.cloud","smartlabeling.scw.cloud","dedibox.fr","schokokeks.net","gov.scot","service.gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","seidat.net","sellfy.store","senseering.net","minisite.ms","magnet.page","biz.ua","co.ua","pp.ua","shiftcrypto.dev","shiftcrypto.io","shiftedit.io","myshopblocks.com","myshopify.com","shopitsite.com","shopware.store","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","small-web.org","vp4.me","try-snowplow.com","srht.site","stackhero-network.com","musician.io","novecore.site","static.land","dev.static.land","sites.static.land","storebase.store","vps-host.net","atl.jelastic.vps-host.net","njs.jelastic.vps-host.net","ric.jelastic.vps-host.net","playstation-cloud.com","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","myspreadshop.at","myspreadshop.com.au","myspreadshop.be","myspreadshop.ca","myspreadshop.ch","myspreadshop.com","myspreadshop.de","myspreadshop.dk","myspreadshop.es","myspreadshop.fi","myspreadshop.fr","myspreadshop.ie","myspreadshop.it","myspreadshop.net","myspreadshop.nl","myspreadshop.no","myspreadshop.pl","myspreadshop.se","myspreadshop.co.uk","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","supabase.co","supabase.in","supabase.net","su.paba.se","*.s5y.io","*.sensiosite.cloud","syncloud.it","dscloud.biz","direct.quickconnect.cn","dsmynas.com","familyds.com","diskstation.me","dscloud.me","i234.me","myds.me","synology.me","dscloud.mobi","dsmynas.net","familyds.net","dsmynas.org","familyds.org","vpnplus.to","direct.quickconnect.to","tabitorder.co.il","taifun-dns.de","beta.tailscale.net","ts.net","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","site.tb-hosting.com","edugit.io","s3.teckids.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","*.firenet.ch","*.svc.firenet.ch","reservd.com","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","reservd.dev.thingdust.io","reservd.disrec.thingdust.io","reservd.testing.thingdust.io","tickets.io","arvo.network","azimuth.network","tlon.network","torproject.net","pages.torproject.net","bloxcms.com","townnews-staging.com","tbits.me","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","site.transip.me","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","typedream.app","pro.typeform.com","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","name.pm","sch.tf","biz.wf","sch.wf","org.yt","virtualuser.de","virtual-user.de","upli.io","urown.cloud","dnsupdate.info","lib.de.us","2038.io","vercel.app","vercel.dev","now.sh","router.management","v-info.info","voorloper.cloud","neko.am","nyaa.am","be.ax","cat.ax","es.ax","eu.ax","gg.ax","mc.ax","us.ax","xy.ax","nl.ci","xx.gl","app.gp","blog.gt","de.gt","to.gt","be.gy","cc.hn","blog.kg","io.kg","jp.kg","tv.kg","uk.kg","us.kg","de.ls","at.md","de.md","jp.md","to.md","indie.porn","vxl.sh","ch.tc","me.tc","we.tc","nyan.to","at.vg","blog.vu","dev.vu","me.vu","v.ua","*.vultrobjects.com","wafflecell.com","*.webhare.dev","reserve-online.net","reserve-online.com","bookonline.app","hotelwithflight.com","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","pages.wiardweb.com","wmflabs.org","toolforge.org","wmcloud.org","panel.gg","daemon.panel.gg","messwithdns.com","woltlab-demo.com","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","affinitylottery.org.uk","raffleentry.org.uk","weeklylottery.org.uk","wpenginepowered.com","js.wpenginepowered.com","wixsite.com","editorx.io","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","ynh.fr","nohost.me","noho.st","za.net","za.org","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]}}),LLe=xLe({"node_modules/psl/index.js"(e){var a=NLe(),n={};n.rules=PLe().map((function(e){return{rule:e,suffix:e.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===e.charAt(0),exception:"!"===e.charAt(0)}})),n.endsWith=function(e,a){return-1!==e.indexOf(a,e.length-a.length)},n.findRule=function(e){var t=a.toASCII(e);return n.rules.reduce((function(e,i){return-1===i.punySuffix&&(i.punySuffix=a.toASCII(i.suffix)),n.endsWith(t,"."+i.punySuffix)||t===i.punySuffix?i:e}),null)},e.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},n.validate=function(e){var n=a.toASCII(e);if(n.length<1)return"DOMAIN_TOO_SHORT";if(n.length>255)return"DOMAIN_TOO_LONG";for(var t,i=n.split("."),r=0;r<i.length;++r){if(!(t=i[r]).length)return"LABEL_TOO_SHORT";if(t.length>63)return"LABEL_TOO_LONG";if("-"===t.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===t.charAt(t.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(t))return"LABEL_INVALID_CHARS"}},e.parse=function(t){if("string"!=typeof t)throw new TypeError("Domain name must be a string.");var i=t.slice(0).toLowerCase();"."===i.charAt(i.length-1)&&(i=i.slice(0,i.length-1));var r=n.validate(i);if(r)return{input:t,error:{message:e.errorCodes[r],code:r}};var o={input:t,tld:null,sld:null,domain:null,subdomain:null,listed:!1},s=i.split(".");if("local"===s[s.length-1])return o;var l=function(){return/xn--/.test(i)?(o.domain&&(o.domain=a.toASCII(o.domain)),o.subdomain&&(o.subdomain=a.toASCII(o.subdomain)),o):o},u=n.findRule(i);if(!u)return s.length<2?o:(o.tld=s.pop(),o.sld=s.pop(),o.domain=[o.sld,o.tld].join("."),s.length&&(o.subdomain=s.pop()),l());o.listed=!0;var c=u.suffix.split("."),d=s.slice(0,s.length-c.length);return u.exception&&d.push(c.shift()),o.tld=c.join("."),d.length?(u.wildcard&&(c.unshift(d.pop()),o.tld=c.join(".")),d.length?(o.sld=d.pop(),o.domain=[o.sld,o.tld].join("."),d.length&&(o.subdomain=d.join(".")),l()):l()):l()},e.get=function(a){return a&&e.parse(a).domain||null},e.isValid=function(a){var n=e.parse(a);return Boolean(n.domain&&n.listed)}}}),BLe=xLe({"node_modules/tough-cookie/lib/pubsuffix-psl.js"(e){var a=LLe(),n=["local","example","invalid","localhost","test"],t=["localhost","invalid"];e.getPublicSuffix=function(e,i={}){const r=e.split("."),o=r[r.length-1],s=!!i.ignoreError;if(!!i.allowSpecialUseDomain&&n.includes(o)){if(r.length>1){return`${r[r.length-2]}.${o}`}if(t.includes(o))return`${o}`}if(!s&&n.includes(o))throw new Error(`Cookie has domain set to the public suffix "${o}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain:true, rejectPublicSuffixes: false}.`);return a.get(e)}}}),RLe=xLe({"node_modules/tough-cookie/lib/store.js"(e){e.Store=class{constructor(){this.synchronous=!1}findCookie(e,a,n,t){throw new Error("findCookie is not implemented")}findCookies(e,a,n,t){throw new Error("findCookies is not implemented")}putCookie(e,a){throw new Error("putCookie is not implemented")}updateCookie(e,a,n){throw new Error("updateCookie is not implemented")}removeCookie(e,a,n,t){throw new Error("removeCookie is not implemented")}removeCookies(e,a,n){throw new Error("removeCookies is not implemented")}removeAllCookies(e){throw new Error("removeAllCookies is not implemented")}getAllCookies(e){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}}}}),DLe=xLe({"node_modules/universalify/index.js"(e){e.fromCallback=function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((a,n)=>{arguments[arguments.length]=(e,t)=>{if(e)return n(e);a(t)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},e.fromPromise=function(e){return Object.defineProperty((function(){const a=arguments[arguments.length-1];if("function"!=typeof a)return e.apply(this,arguments);delete arguments[arguments.length-1],arguments.length--,e.apply(this,arguments).then((e=>a(null,e)),a)}),"name",{value:e.name})}}}),zLe=xLe({"node_modules/tough-cookie/lib/permuteDomain.js"(e){var a=BLe();e.permuteDomain=function(e,n){const t=a.getPublicSuffix(e,{allowSpecialUseDomain:n});if(!t)return null;if(t==e)return[e];"."==e.slice(-1)&&(e=e.slice(0,-1));const i=e.slice(0,-(t.length+1)).split(".").reverse();let r=t;const o=[r];for(;i.length;)r=`${i.shift()}.${r}`,o.push(r);return o}}}),OLe=xLe({"node_modules/tough-cookie/lib/pathMatch.js"(e){e.pathMatch=function(e,a){if(a===e)return!0;if(0===e.indexOf(a)){if("/"===a.substr(-1))return!0;if("/"===e.substr(a.length,1))return!0}return!1}}}),KLe=xLe({"node_modules/tough-cookie/lib/utilHelper.js"(e){function a(){try{return TLe("util")}catch(XIe){return null}}function n(){return Symbol.for("nodejs.util.inspect.custom")}e.getUtilInspect=function(e,n={}){const t=(n.requireUtil||a)();return function(a,n,i){return t?t.inspect(a,n,i):e(a)}},e.getCustomInspectSymbol=function(e={}){return(e.lookupCustomInspectSymbol||n)()||function(e){const n=(e.requireUtil||a)();return n?n.inspect.custom:null}(e)}}}),ILe=xLe({"node_modules/tough-cookie/lib/memstore.js"(e){var{fromCallback:a}=DLe(),n=RLe().Store,t=zLe().permuteDomain,i=OLe().pathMatch,{getCustomInspectSymbol:r,getUtilInspect:o}=KLe(),s=class extends n{constructor(){super(),this.synchronous=!0,this.idx=Object.create(null);const e=r();e&&(this[e]=this.inspect)}inspect(){return`{ idx: ${{inspect:o(l)}.inspect(this.idx,!1,2)} }`}findCookie(e,a,n,t){return t(null,this.idx[e]&&this.idx[e][a]?this.idx[e][a][n]||null:void 0)}findCookies(e,a,n,r){const o=[];if("function"==typeof n&&(r=n,n=!0),!e)return r(null,[]);let s;s=a?function(e){Object.keys(e).forEach((n=>{if(i(a,n)){const a=e[n];for(const e in a)o.push(a[e])}}))}:function(e){for(const a in e){const n=e[a];for(const e in n)o.push(n[e])}};const l=t(e,n)||[e],u=this.idx;l.forEach((e=>{const a=u[e];a&&s(a)})),r(null,o)}putCookie(e,a){this.idx[e.domain]||(this.idx[e.domain]=Object.create(null)),this.idx[e.domain][e.path]||(this.idx[e.domain][e.path]=Object.create(null)),this.idx[e.domain][e.path][e.key]=e,a(null)}updateCookie(e,a,n){this.putCookie(a,n)}removeCookie(e,a,n,t){this.idx[e]&&this.idx[e][a]&&this.idx[e][a][n]&&delete this.idx[e][a][n],t(null)}removeCookies(e,a,n){return this.idx[e]&&(a?delete this.idx[e][a]:delete this.idx[e]),n(null)}removeAllCookies(e){return this.idx=Object.create(null),e(null)}getAllCookies(e){const a=[],n=this.idx;Object.keys(n).forEach((e=>{Object.keys(n[e]).forEach((t=>{Object.keys(n[e][t]).forEach((i=>{null!==i&&a.push(n[e][t][i])}))}))})),a.sort(((e,a)=>(e.creationIndex||0)-(a.creationIndex||0))),e(null,a)}};function l(e){const a=Object.keys(e);if(0===a.length)return"[Object: null prototype] {}";let n="[Object: null prototype] {\n";return Object.keys(e).forEach(((t,i)=>{n+=function(e,a){const n=" ";let t=`${n}'${e}': [Object: null prototype] {\n`;return Object.keys(a).forEach(((e,n,i)=>{t+=function(e,a){const n=" ";let t=`${n}'${e}': [Object: null prototype] {\n`;return Object.keys(a).forEach(((e,n,i)=>{t+=` ${e}: ${a[e].inspect()}`,n<i.length-1&&(t+=","),t+="\n"})),t+=`${n}}`,t}(e,a[e]),n<i.length-1&&(t+=","),t+="\n"})),t+=`${n}}`,t}(t,e[t]),i<a.length-1&&(n+=","),n+="\n"})),n+="}",n}["findCookie","findCookies","putCookie","updateCookie","removeCookie","removeCookies","removeAllCookies","getAllCookies"].forEach((e=>{s.prototype[e]=a(s.prototype[e])})),e.MemoryCookieStore=s,e.inspectFallback=l}}),HLe=xLe({"node_modules/tough-cookie/lib/validators.js"(e){var a=Object.prototype.toString;function n(e){return"function"==typeof e}function t(e){return i(e)&&""!==e}function i(e){return"string"==typeof e||e instanceof String}function r(e){return"[object Object]"===a.call(e)}function o(e,a){try{return e instanceof a}catch(n){return!1}}var s=class extends Error{constructor(...e){super(...e)}};e.ParameterError=s,e.isFunction=n,e.isNonEmptyString=t,e.isDate=function(e){return o(e,Date)&&function(e){return"number"==typeof e&&e%1==0}(e.getTime())},e.isEmptyString=function(e){return""===e||e instanceof String&&""===e.toString()},e.isString=i,e.isObject=r,e.isUrlStringOrObject=function(e){return t(e)||r(e)&&"hostname"in e&&"pathname"in e&&"protocol"in e||o(e,URL)},e.validate=function(e,a,t){if(n(a)||(t=a,a=null),r(t)||(t={Error:"Failed Check"}),!e){if(!a)throw new s(t);a(new s(t))}}}}),FLe=xLe({"node_modules/tough-cookie/lib/version.js"(e,a){a.exports="4.1.4"}}),GLe=xLe({"node_modules/tough-cookie/lib/cookie.js"(e){var a=NLe(),n=_Le(),t=BLe(),i=RLe().Store,r=ILe().MemoryCookieStore,o=OLe().pathMatch,s=HLe(),l=FLe(),{fromCallback:u}=DLe(),{getCustomInspectSymbol:c}=KLe(),d=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,m=/[\x00-\x1F]/,h=["\n","\r","\0"],p=/[\x20-\x3A\x3C-\x7E]+/,g=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,f={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},v=2147483647e3,y='Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"';function k(e){s.validate(s.isNonEmptyString(e),e);const a=String(e).toLowerCase();return"none"===a||"lax"===a||"strict"===a?a:null}var b=Object.freeze({SILENT:"silent",STRICT:"strict",DISABLED:"unsafe-disabled"}),S=/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/,w="\n\\[?(?:\n(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|\n(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|\n(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|\n(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|\n(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|\n(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))\n)(?:%[0-9a-zA-Z]{1,})?\\]?\n".replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),A=new RegExp(`^${w}$`);function C(e,a,n,t){let i=0;for(;i<e.length;){const a=e.charCodeAt(i);if(a<=47||a>=58)break;i++}return i<a||i>n?null:t||i==e.length?parseInt(e.substr(0,i),10):null}function M(e){const a=e.split(":"),n=[0,0,0];if(3!==a.length)return null;for(let t=0;t<3;t++){const e=C(a[t],1,2,2==t);if(null===e)return null;n[t]=e}return n}function T(e){e=String(e).substr(0,3).toLowerCase();const a=f[e];return a>=0?a:null}function x(e){if(!e)return;const a=e.split(g);if(!a)return;let n=null,t=null,i=null,r=null,o=null,s=null;for(let l=0;l<a.length;l++){const e=a[l].trim();if(!e.length)continue;let u;null===i&&(u=M(e),u)?(n=u[0],t=u[1],i=u[2]):null!==r||(u=C(e,1,2,!0),null===u)?null!==o||(u=T(e),null===u)?null===s&&(u=C(e,2,4,!0),null!==u&&(s=u,s>=70&&s<=99?s+=1900:s>=0&&s<=69&&(s+=2e3))):o=u:r=u}return null===r||null===o||null===s||null===i||r<1||r>31||s<1601||n>23||t>59||i>59?void 0:new Date(Date.UTC(s,o,r,n,t,i))}function N(e){return s.validate(s.isDate(e),e),e.toUTCString()}function E(e){return null==e?null:(e=e.trim().replace(/^\./,""),A.test(e)&&(e=e.replace("[","").replace("]","")),a&&/[^\u0001-\u007f]/.test(e)&&(e=a.toASCII(e)),e.toLowerCase())}function j(e,a,n){if(null==e||null==a)return null;if(!1!==n&&(e=E(e),a=E(a)),e==a)return!0;const t=e.lastIndexOf(a);return!(t<=0)&&(e.length===a.length+t&&("."===e.substr(t-1,1)&&!S.test(e)))}function _(e){if(!e||"/"!==e.substr(0,1))return"/";if("/"===e)return e;const a=e.lastIndexOf("/");return 0===a?"/":e.slice(0,a)}function P(e,a){e=function(e){if(s.isEmptyString(e))return e;for(let a=0;a<h.length;a++){const n=e.indexOf(h[a]);-1!==n&&(e=e.substr(0,n))}return e}(e),s.validate(s.isString(e),e);let n,t,i=e.indexOf("=");if(a)0===i&&(i=(e=e.substr(1)).indexOf("="));else if(i<=0)return;if(i<=0?(n="",t=e.trim()):(n=e.substr(0,i).trim(),t=e.substr(i+1).trim()),m.test(n)||m.test(t))return;const r=new K;return r.key=n,r.value=t,r}function L(e,a){if(a&&"object"==typeof a||(a={}),s.isEmptyString(e)||!s.isString(e))return null;const n=(e=e.trim()).indexOf(";"),t=P(-1===n?e:e.substr(0,n),!!a.loose);if(!t)return;if(-1===n)return t;const i=e.slice(n+1).trim();if(0===i.length)return t;const r=i.split(";");for(;r.length;){const e=r.shift().trim();if(0===e.length)continue;const a=e.indexOf("=");let n,i;switch(-1===a?(n=e,i=null):(n=e.substr(0,a),i=e.substr(a+1)),n=n.trim().toLowerCase(),i&&(i=i.trim()),n){case"expires":if(i){const e=x(i);e&&(t.expires=e)}break;case"max-age":if(i&&/^-?[0-9]+$/.test(i)){const e=parseInt(i,10);t.setMaxAge(e)}break;case"domain":if(i){const e=i.trim().replace(/^\./,"");e&&(t.domain=e.toLowerCase())}break;case"path":t.path=i&&"/"===i[0]?i:null;break;case"secure":t.secure=!0;break;case"httponly":t.httpOnly=!0;break;case"samesite":switch(i?i.toLowerCase():""){case"strict":t.sameSite="strict";break;case"lax":t.sameSite="lax";break;case"none":t.sameSite="none";break;default:t.sameSite=void 0}break;default:t.extensions=t.extensions||[],t.extensions.push(e)}}return t}function B(e){let a;try{a=JSON.parse(e)}catch(XIe){return XIe}return a}function R(e){if(!e||s.isEmptyString(e))return null;let a;if("string"==typeof e){if(a=B(e),a instanceof Error)return null}else a=e;const n=new K;for(let t=0;t<K.serializableProperties.length;t++){const e=K.serializableProperties[t];void 0!==a[e]&&a[e]!==O[e]&&(n[e]="expires"===e||"creation"===e||"lastAccessed"===e?null===a[e]?null:"Infinity"==a[e]?"Infinity":new Date(a[e]):a[e])}return n}function D(e,a){s.validate(s.isObject(e),e),s.validate(s.isObject(a),a);let n=0;if(n=(a.path?a.path.length:0)-(e.path?e.path.length:0),0!==n)return n;return n=(e.creation?e.creation.getTime():v)-(a.creation?a.creation.getTime():v),0!==n||(n=e.creationIndex-a.creationIndex),n}function z(e){if(e instanceof Object)return e;try{e=decodeURI(e)}catch(YIe){}return n(e)}var O={key:"",value:"",expires:"Infinity",maxAge:null,domain:null,path:null,secure:!1,httpOnly:!1,extensions:null,hostOnly:null,pathIsDefault:null,creation:null,lastAccessed:null,sameSite:void 0},K=class e{constructor(a={}){const n=c();n&&(this[n]=this.inspect),Object.assign(this,O,a),this.creation=this.creation||new Date,Object.defineProperty(this,"creationIndex",{configurable:!1,enumerable:!1,writable:!0,value:++e.cookiesCreated})}inspect(){const e=Date.now(),a=null!=this.hostOnly?this.hostOnly:"?",n=this.creation?e-this.creation.getTime()+"ms":"?",t=this.lastAccessed?e-this.lastAccessed.getTime()+"ms":"?";return`Cookie="${this.toString()}; hostOnly=${a}; aAge=${t}; cAge=${n}"`}toJSON(){const a={};for(const n of e.serializableProperties)this[n]!==O[n]&&("expires"===n||"creation"===n||"lastAccessed"===n?a[n]=null===this[n]?null:"Infinity"==this[n]?"Infinity":this[n].toISOString():"maxAge"===n?null!==this[n]&&(a[n]=this[n]==1/0||this[n]==-1/0?this[n].toString():this[n]):this[n]!==O[n]&&(a[n]=this[n]));return a}clone(){return R(this.toJSON())}validate(){if(!d.test(this.value))return!1;if(!(this.expires==1/0||this.expires instanceof Date||x(this.expires)))return!1;if(null!=this.maxAge&&this.maxAge<=0)return!1;if(null!=this.path&&!p.test(this.path))return!1;const e=this.cdomain();if(e){if(e.match(/\.$/))return!1;if(null==t.getPublicSuffix(e))return!1}return!0}setExpires(e){this.expires=e instanceof Date?e:x(e)||"Infinity"}setMaxAge(e){this.maxAge=e===1/0||e===-1/0?e.toString():e}cookieString(){let e=this.value;return null==e&&(e=""),""===this.key?e:`${this.key}=${e}`}toString(){let a=this.cookieString();if(this.expires!=1/0&&(this.expires instanceof Date?a+=`; Expires=${N(this.expires)}`:a+=`; Expires=${this.expires}`),null!=this.maxAge&&this.maxAge!=1/0&&(a+=`; Max-Age=${this.maxAge}`),this.domain&&!this.hostOnly&&(a+=`; Domain=${this.domain}`),this.path&&(a+=`; Path=${this.path}`),this.secure&&(a+="; Secure"),this.httpOnly&&(a+="; HttpOnly"),this.sameSite&&"none"!==this.sameSite){const n=e.sameSiteCanonical[this.sameSite.toLowerCase()];a+=`; SameSite=${n||this.sameSite}`}return this.extensions&&this.extensions.forEach((e=>{a+=`; ${e}`})),a}TTL(e){if(null!=this.maxAge)return this.maxAge<=0?0:1e3*this.maxAge;let a=this.expires;return a!=1/0?(a instanceof Date||(a=x(a)||1/0),a==1/0?1/0:a.getTime()-(e||Date.now())):1/0}expiryTime(e){if(null!=this.maxAge){const a=this.maxAge<=0?-1/0:1e3*this.maxAge;return(e||this.creation||new Date).getTime()+a}return this.expires==1/0?1/0:this.expires.getTime()}expiryDate(e){const a=this.expiryTime(e);return a==1/0?new Date(v):a==-1/0?new Date(0):new Date(a)}isPersistent(){return null!=this.maxAge||this.expires!=1/0}canonicalizedDomain(){return null==this.domain?null:E(this.domain)}cdomain(){return this.canonicalizedDomain()}};function I(e){if(null!=e){const a=e.toLowerCase();switch(a){case b.STRICT:case b.SILENT:case b.DISABLED:return a}}return b.SILENT}K.cookiesCreated=0,K.parse=L,K.fromJSON=R,K.serializableProperties=Object.keys(O),K.sameSiteLevel={strict:3,lax:2,none:1},K.sameSiteCanonical={strict:"Strict",lax:"Lax"};var H=class e{constructor(e,a={rejectPublicSuffixes:!0}){"boolean"==typeof a&&(a={rejectPublicSuffixes:a}),s.validate(s.isObject(a),a),this.rejectPublicSuffixes=a.rejectPublicSuffixes,this.enableLooseMode=!!a.looseMode,this.allowSpecialUseDomain="boolean"!=typeof a.allowSpecialUseDomain||a.allowSpecialUseDomain,this.store=e||new r,this.prefixSecurity=I(a.prefixSecurity),this._cloneSync=F("clone"),this._importCookiesSync=F("_importCookies"),this.getCookiesSync=F("getCookies"),this.getCookieStringSync=F("getCookieString"),this.getSetCookieStringsSync=F("getSetCookieStrings"),this.removeAllCookiesSync=F("removeAllCookies"),this.setCookieSync=F("setCookie"),this.serializeSync=F("serialize")}setCookie(e,a,n,i){let r;if(s.validate(s.isUrlStringOrObject(a),i,n),s.isFunction(a))return(i=a)(new Error("No URL was specified"));const o=z(a);if(s.isFunction(n)&&(i=n,n={}),s.validate(s.isFunction(i),i),!s.isNonEmptyString(e)&&!s.isObject(e)&&e instanceof String&&0==e.length)return i(null);const l=E(o.hostname),u=n.loose||this.enableLooseMode;let c=null;if(n.sameSiteContext&&(c=k(n.sameSiteContext),!c))return i(new Error(y));if("string"==typeof e||e instanceof String){if(!(e=K.parse(e,{loose:u})))return r=new Error("Cookie failed to parse"),i(n.ignoreError?null:r)}else if(!(e instanceof K))return r=new Error("First argument to setCookie must be a Cookie object or string"),i(n.ignoreError?null:r);const d=n.now||new Date;if(this.rejectPublicSuffixes&&e.domain){if(null==t.getPublicSuffix(e.cdomain(),{allowSpecialUseDomain:this.allowSpecialUseDomain,ignoreError:n.ignoreError})&&!A.test(e.domain))return r=new Error("Cookie has domain set to a public suffix"),i(n.ignoreError?null:r)}if(e.domain){if(!j(l,e.cdomain(),!1))return r=new Error(`Cookie not in this host's domain. Cookie:${e.cdomain()} Request:${l}`),i(n.ignoreError?null:r);null==e.hostOnly&&(e.hostOnly=!1)}else e.hostOnly=!0,e.domain=l;if(e.path&&"/"===e.path[0]||(e.path=_(o.pathname),e.pathIsDefault=!0),!1===n.http&&e.httpOnly)return r=new Error("Cookie is HttpOnly and this isn't an HTTP API"),i(n.ignoreError?null:r);if("none"!==e.sameSite&&void 0!==e.sameSite&&c&&"none"===c)return r=new Error("Cookie is SameSite but this is a cross-origin request"),i(n.ignoreError?null:r);const m=this.prefixSecurity===b.SILENT;if(!(this.prefixSecurity===b.DISABLED)){let a,t=!1;if(!function(e){return s.validate(s.isObject(e),e),!e.key.startsWith("__Secure-")||e.secure}(e)?(t=!0,a="Cookie has __Secure prefix but Secure attribute is not set"):function(e){return s.validate(s.isObject(e)),!e.key.startsWith("__Host-")||e.secure&&e.hostOnly&&null!=e.path&&"/"===e.path}(e)||(t=!0,a="Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'"),t)return i(n.ignoreError||m?null:new Error(a))}const h=this.store;h.updateCookie||(h.updateCookie=function(e,a,n){this.putCookie(a,n)}),h.findCookie(e.domain,e.path,e.key,(function(a,t){if(a)return i(a);const r=function(a){if(a)return i(a);i(null,e)};if(t){if(!1===n.http&&t.httpOnly)return a=new Error("old Cookie is HttpOnly and this isn't an HTTP API"),i(n.ignoreError?null:a);e.creation=t.creation,e.creationIndex=t.creationIndex,e.lastAccessed=d,h.updateCookie(t,e,r)}else e.creation=e.lastAccessed=d,h.putCookie(e,r)}))}getCookies(e,a,n){s.validate(s.isUrlStringOrObject(e),n,e);const t=z(e);s.isFunction(a)&&(n=a,a={}),s.validate(s.isObject(a),n,a),s.validate(s.isFunction(n),n);const i=E(t.hostname),r=t.pathname||"/";let l=a.secure;null!=l||!t.protocol||"https:"!=t.protocol&&"wss:"!=t.protocol||(l=!0);let u=0;if(a.sameSiteContext){const e=k(a.sameSiteContext);if(u=K.sameSiteLevel[e],!u)return n(new Error(y))}let c=a.http;null==c&&(c=!0);const d=a.now||Date.now(),m=!1!==a.expire,h=!!a.allPaths,p=this.store;function g(e){if(e.hostOnly){if(e.domain!=i)return!1}else if(!j(i,e.domain,!1))return!1;if(!h&&!o(r,e.path))return!1;if(e.secure&&!l)return!1;if(e.httpOnly&&!c)return!1;if(u){if(K.sameSiteLevel[e.sameSite||"none"]>u)return!1}return!(m&&e.expiryTime()<=d)||(p.removeCookie(e.domain,e.path,e.key,(()=>{})),!1)}p.findCookies(i,h?null:r,this.allowSpecialUseDomain,((e,t)=>{if(e)return n(e);t=t.filter(g),!1!==a.sort&&(t=t.sort(D));const i=new Date;for(const a of t)a.lastAccessed=i;n(null,t)}))}getCookieString(...e){const a=e.pop();s.validate(s.isFunction(a),a);e.push((function(e,n){e?a(e):a(null,n.sort(D).map((e=>e.cookieString())).join("; "))})),this.getCookies.apply(this,e)}getSetCookieStrings(...e){const a=e.pop();s.validate(s.isFunction(a),a);e.push((function(e,n){e?a(e):a(null,n.map((e=>e.toString())))})),this.getCookies.apply(this,e)}serialize(e){s.validate(s.isFunction(e),e);let a=this.store.constructor.name;s.isObject(a)&&(a=null);const n={version:`tough-cookie@${l}`,storeType:a,rejectPublicSuffixes:!!this.rejectPublicSuffixes,enableLooseMode:!!this.enableLooseMode,allowSpecialUseDomain:!!this.allowSpecialUseDomain,prefixSecurity:I(this.prefixSecurity),cookies:[]};if(!this.store.getAllCookies||"function"!=typeof this.store.getAllCookies)return e(new Error("store does not support getAllCookies and cannot be serialized"));this.store.getAllCookies(((a,t)=>a?e(a):(n.cookies=t.map((e=>(delete(e=e instanceof K?e.toJSON():e).creationIndex,e))),e(null,n))))}toJSON(){return this.serializeSync()}_importCookies(e,a){let n=e.cookies;if(!n||!Array.isArray(n))return a(new Error("serialized jar has no cookies array"));n=n.slice();const t=e=>{if(e)return a(e);if(!n.length)return a(e,this);let i;try{i=R(n.shift())}catch(XIe){return a(XIe)}if(null===i)return t(null);this.store.putCookie(i,t)};t()}clone(a,n){1===arguments.length&&(n=a,a=null),this.serialize(((t,i)=>{if(t)return n(t);e.deserialize(i,a,n)}))}cloneSync(e){if(0===arguments.length)return this._cloneSync();if(!e.synchronous)throw new Error("CookieJar clone destination store is not synchronous; use async API instead.");return this._cloneSync(e)}removeAllCookies(e){s.validate(s.isFunction(e),e);const a=this.store;if("function"==typeof a.removeAllCookies&&a.removeAllCookies!==i.prototype.removeAllCookies)return a.removeAllCookies(e);a.getAllCookies(((n,t)=>{if(n)return e(n);if(0===t.length)return e(null);let i=0;const r=[];function o(a){if(a&&r.push(a),i++,i===t.length)return e(r.length?r[0]:null)}t.forEach((e=>{a.removeCookie(e.domain,e.path,e.key,o)}))}))}static deserialize(a,n,t){let i;if(3!==arguments.length&&(t=n,n=null),s.validate(s.isFunction(t),t),"string"==typeof a){if(i=B(a),i instanceof Error)return t(i)}else i=a;const r=new e(n,{rejectPublicSuffixes:i.rejectPublicSuffixes,looseMode:i.enableLooseMode,allowSpecialUseDomain:i.allowSpecialUseDomain,prefixSecurity:i.prefixSecurity});r._importCookies(i,(e=>{if(e)return t(e);t(null,r)}))}static deserializeSync(a,n){const t="string"==typeof a?JSON.parse(a):a,i=new e(n,{rejectPublicSuffixes:t.rejectPublicSuffixes,looseMode:t.enableLooseMode});if(!i.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");return i._importCookiesSync(t),i}};function F(e){return function(...a){if(!this.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");let n,t;if(this[e](...a,((e,a)=>{n=e,t=a})),n)throw n;return t}}H.fromJSON=H.deserializeSync,["_importCookies","clone","getCookies","getCookieString","getSetCookieStrings","removeAllCookies","serialize","setCookie"].forEach((e=>{H.prototype[e]=u(H.prototype[e])})),H.deserialize=u(H.deserialize),e.version=l,e.CookieJar=H,e.Cookie=K,e.Store=i,e.MemoryCookieStore=r,e.parseDate=x,e.formatDate=N,e.parse=L,e.fromJSON=R,e.domainMatch=j,e.defaultPath=_,e.pathMatch=o,e.getPublicSuffix=t.getPublicSuffix,e.cookieCompare=D,e.permuteDomain=zLe().permuteDomain,e.permutePath=function(e){if(s.validate(s.isString(e)),"/"===e)return["/"];const a=[e];for(;e.length>1;){const n=e.lastIndexOf("/");if(0===n)break;e=e.substr(0,n),a.push(e)}return a.push("/"),a},e.canonicalDomain=E,e.PrefixSecurityEnum=b,e.ParameterError=s.ParameterError}}),VLe=(yLe=GLe(),kLe=null!=yLe?bLe(CLe(yLe)):{},((e,a,n,t)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let i of ALe(a))MLe.call(e,i)||i===n||SLe(e,i,{get:()=>a[i],enumerable:!(t=wLe(a,i))||t.enumerable});return e})(SLe(kLe,"default",{value:yLe,enumerable:!0}),yLe)).default;
87
87
  /*! Bundled license information:
88
88
 
89
89
  tough-cookie/lib/pubsuffix-psl.js: