@canonry/canonry 4.172.4 → 4.175.0
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/assets/assets/{AuditHistoryPanel-CARZK_Wi.js → AuditHistoryPanel-C_tGzDt2.js} +1 -1
- package/assets/assets/{BacklinksPage-BEA9vbC2.js → BacklinksPage-CgKG9gLz.js} +1 -1
- package/assets/assets/{HistoryPage-DKcDQw1a.js → HistoryPage-W7VBtrf9.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-BRPI_icI.js → MeasurementPropertyPage-DMbdygLZ.js} +1 -1
- package/assets/assets/ProjectPage-D_h2PyoN.js +9 -0
- package/assets/assets/{RunRow-C8C7wrzp.js → RunRow-DI7R9Gc_.js} +1 -1
- package/assets/assets/{RunsPage-BeotkZcg.js → RunsPage-Ct90Y0n5.js} +1 -1
- package/assets/assets/{SettingsPage-BukBukvW.js → SettingsPage-CZOkHD5Q.js} +1 -1
- package/assets/assets/{SiteHealthSection-C7RuR9AA.js → SiteHealthSection-DxMTxuhq.js} +3 -3
- package/assets/assets/TrafficPage-LyHMCUIw.js +1 -0
- package/assets/assets/{TrafficSourceDetailPage-CetULBhn.js → TrafficSourceDetailPage-Fd6Pv5hY.js} +1 -1
- package/assets/assets/{extract-error-message-CDRTdeQI.js → extract-error-message-CYrIZxuc.js} +1 -1
- package/assets/assets/index-DQVTRT9J.css +1 -0
- package/assets/assets/{index-D156-4Hr.js → index-ahTB9rD2.js} +13 -13
- package/assets/assets/{react-sigma_core.esm.min-CU8AjIPg.js → react-sigma_core.esm.min-DHkPbSvc.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-N53TZMMR.js → chunk-DSGX2IAI.js} +4 -4
- package/dist/{chunk-WFVK3XC7.js → chunk-HYKZOCBT.js} +2 -2
- package/dist/{chunk-2CXNT2AC.js → chunk-J3RVQCCQ.js} +1 -1
- package/dist/{chunk-WGN2VT7L.js → chunk-OSMUOPBR.js} +17 -1
- package/dist/{chunk-BZDNTUCZ.js → chunk-TIEHKR6K.js} +1 -1
- package/dist/cli.js +5 -5
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-2E7F6I7I.js → intelligence-service-RSZTVVX2.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +9 -9
- package/assets/assets/ProjectPage-B4_EEP8k.js +0 -9
- package/assets/assets/TrafficPage-D_zPUxGq.js +0 -1
- package/assets/assets/index-CFzo8iAY.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-DxMTxuhq.js","./vendor-tanstack-Dock0eH1.js","./vendor-lucide-nYKv-BB7.js","./ChartPrimitives-BoYe2M-i.js","./vendor-recharts-D8rt5lKn.js","./ProjectPage-D_h2PyoN.js","./RunRow-DI7R9Gc_.js","./extract-error-message-CYrIZxuc.js","./AuditHistoryPanel-C_tGzDt2.js","./v2-overview-adapter-COMP5UGt.js","./vendor-radix-4UOaVWza.js","./vendor-markdown-Bn7fRwrx.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-Ct90Y0n5.js","./HistoryPage-W7VBtrf9.js","./SettingsPage-CZOkHD5Q.js","./BacklinksPage-CgKG9gLz.js","./TrafficPage-LyHMCUIw.js","./TrafficSourceDetailPage-Fd6Pv5hY.js","./MeasurementPropertyPage-DMbdygLZ.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as ij,d as sj,r as D,j as c,Q as oj,M as rj,q as pe,e as uu,L as et,a as lj,t as ro,u as Ft,f as cj,h as ms,k as Tv,l as uj,m as Rv,O as zp,n as Vn,o as ps,p as dj,s as xt,v as Ov,x as Ci,y as mj,z as pj,A as hj}from"./vendor-tanstack-Dock0eH1.js";import{S as fj,O as r0,P as Bv,C as l0,a as qv,T as c0,D as Mv,R as Pv}from"./vendor-radix-4UOaVWza.js";import{c as Iv}from"./vendor-recharts-D8rt5lKn.js";import{A as gj,X as zo,S as yj,L as bo,C as u0,R as yy,a as Vv,M as bj,b as vj,c as xj,d as d0,T as Lv,W as kj,e as m0,f as Uv,g as wj,G as Sj,P as jj,H as Aj,h as Cj,i as Nj,j as _j,k as zj,l as Dj,B as Ej,F as Tj,m as Rj,n as Oj,o as Bj,p as by,E as qj}from"./vendor-lucide-nYKv-BB7.js";import{M as Mj}from"./vendor-markdown-Bn7fRwrx.js";import{p as Pj}from"./vendor-yaml-GWJz5H2G.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))r(u);new MutationObserver(u=>{for(const f of u)if(f.type==="childList")for(const g of f.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&r(g)}).observe(document,{childList:!0,subtree:!0});function s(u){const f={};return u.integrity&&(f.integrity=u.integrity),u.referrerPolicy&&(f.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?f.credentials="include":u.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function r(u){if(u.ep)return;u.ep=!0;const f=s(u);fetch(u.href,f)}})();var Jm={exports:{}},Or={},Wm={exports:{}},ep={};var vy;function Ij(){return vy||(vy=1,(function(e){function n(V,ne){var fe=V.length;V.push(ne);e:for(;0<fe;){var De=fe-1>>>1,le=V[De];if(0<u(le,ne))V[De]=ne,V[fe]=le,fe=De;else break e}}function s(V){return V.length===0?null:V[0]}function r(V){if(V.length===0)return null;var ne=V[0],fe=V.pop();if(fe!==ne){V[0]=fe;e:for(var De=0,le=V.length,at=le>>>1;De<at;){var H=2*(De+1)-1,ue=V[H],ie=H+1,re=V[ie];if(0>u(ue,fe))ie<le&&0>u(re,ue)?(V[De]=re,V[ie]=fe,De=ie):(V[De]=ue,V[H]=fe,De=H);else if(ie<le&&0>u(re,fe))V[De]=re,V[ie]=fe,De=ie;else break e}}return ne}function u(V,ne){var fe=V.sortIndex-ne.sortIndex;return fe!==0?fe:V.id-ne.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;e.unstable_now=function(){return f.now()}}else{var g=Date,b=g.now();e.unstable_now=function(){return g.now()-b}}var x=[],k=[],S=1,C=null,j=3,E=!1,B=!1,q=!1,U=!1,G=typeof setTimeout=="function"?setTimeout:null,te=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function ae(V){for(var ne=s(k);ne!==null;){if(ne.callback===null)r(k);else if(ne.startTime<=V)r(k),ne.sortIndex=ne.expirationTime,n(x,ne);else break;ne=s(k)}}function oe(V){if(q=!1,ae(V),!B)if(s(x)!==null)B=!0,ge||(ge=!0,Oe());else{var ne=s(k);ne!==null&&ye(oe,ne.startTime-V)}}var ge=!1,M=-1,J=5,_e=-1;function he(){return U?!0:!(e.unstable_now()-_e<J)}function we(){if(U=!1,ge){var V=e.unstable_now();_e=V;var ne=!0;try{e:{B=!1,q&&(q=!1,te(M),M=-1),E=!0;var fe=j;try{t:{for(ae(V),C=s(x);C!==null&&!(C.expirationTime>V&&he());){var De=C.callback;if(typeof De=="function"){C.callback=null,j=C.priorityLevel;var le=De(C.expirationTime<=V);if(V=e.unstable_now(),typeof le=="function"){C.callback=le,ae(V),ne=!0;break t}C===s(x)&&r(x),ae(V)}else r(x);C=s(x)}if(C!==null)ne=!0;else{var at=s(k);at!==null&&ye(oe,at.startTime-V),ne=!1}}break e}finally{C=null,j=fe,E=!1}ne=void 0}}finally{ne?Oe():ge=!1}}}var Oe;if(typeof X=="function")Oe=function(){X(we)};else if(typeof MessageChannel<"u"){var je=new MessageChannel,Fe=je.port2;je.port1.onmessage=we,Oe=function(){Fe.postMessage(null)}}else Oe=function(){G(we,0)};function ye(V,ne){M=G(function(){V(e.unstable_now())},ne)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(V){V.callback=null},e.unstable_forceFrameRate=function(V){0>V||125<V?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):J=0<V?Math.floor(1e3/V):5},e.unstable_getCurrentPriorityLevel=function(){return j},e.unstable_next=function(V){switch(j){case 1:case 2:case 3:var ne=3;break;default:ne=j}var fe=j;j=ne;try{return V()}finally{j=fe}},e.unstable_requestPaint=function(){U=!0},e.unstable_runWithPriority=function(V,ne){switch(V){case 1:case 2:case 3:case 4:case 5:break;default:V=3}var fe=j;j=V;try{return ne()}finally{j=fe}},e.unstable_scheduleCallback=function(V,ne,fe){var De=e.unstable_now();switch(typeof fe=="object"&&fe!==null?(fe=fe.delay,fe=typeof fe=="number"&&0<fe?De+fe:De):fe=De,V){case 1:var le=-1;break;case 2:le=250;break;case 5:le=1073741823;break;case 4:le=1e4;break;default:le=5e3}return le=fe+le,V={id:S++,callback:ne,priorityLevel:V,startTime:fe,expirationTime:le,sortIndex:-1},fe>De?(V.sortIndex=fe,n(k,V),s(x)===null&&V===s(k)&&(q?(te(M),M=-1):q=!0,ye(oe,fe-De))):(V.sortIndex=le,n(x,V),B||E||(B=!0,ge||(ge=!0,Oe()))),V},e.unstable_shouldYield=he,e.unstable_wrapCallback=function(V){var ne=j;return function(){var fe=j;j=ne;try{return V.apply(this,arguments)}finally{j=fe}}}})(ep)),ep}var xy;function Vj(){return xy||(xy=1,Wm.exports=Ij()),Wm.exports}var ky;function Lj(){if(ky)return Or;ky=1;var e=Vj(),n=ij(),s=sj();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)a+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function f(t){var a=t,i=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(i=a.return),t=a.return;while(t)}return a.tag===3?i:null}function g(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function b(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function x(t){if(f(t)!==t)throw Error(r(188))}function k(t){var a=t.alternate;if(!a){if(a=f(t),a===null)throw Error(r(188));return a!==t?null:t}for(var i=t,l=a;;){var d=i.return;if(d===null)break;var h=d.alternate;if(h===null){if(l=d.return,l!==null){i=l;continue}break}if(d.child===h.child){for(h=d.child;h;){if(h===i)return x(d),t;if(h===l)return x(d),a;h=h.sibling}throw Error(r(188))}if(i.return!==l.return)i=d,l=h;else{for(var v=!1,w=d.child;w;){if(w===i){v=!0,i=d,l=h;break}if(w===l){v=!0,l=d,i=h;break}w=w.sibling}if(!v){for(w=h.child;w;){if(w===i){v=!0,i=h,l=d;break}if(w===l){v=!0,l=h,i=d;break}w=w.sibling}if(!v)throw Error(r(189))}}if(i.alternate!==l)throw Error(r(190))}if(i.tag!==3)throw Error(r(188));return i.stateNode.current===i?t:a}function S(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=S(t),a!==null)return a;t=t.sibling}return null}var C=Object.assign,j=Symbol.for("react.element"),E=Symbol.for("react.transitional.element"),B=Symbol.for("react.portal"),q=Symbol.for("react.fragment"),U=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),te=Symbol.for("react.consumer"),X=Symbol.for("react.context"),ae=Symbol.for("react.forward_ref"),oe=Symbol.for("react.suspense"),ge=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),_e=Symbol.for("react.activity"),he=Symbol.for("react.memo_cache_sentinel"),we=Symbol.iterator;function Oe(t){return t===null||typeof t!="object"?null:(t=we&&t[we]||t["@@iterator"],typeof t=="function"?t:null)}var je=Symbol.for("react.client.reference");function Fe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===je?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case q:return"Fragment";case G:return"Profiler";case U:return"StrictMode";case oe:return"Suspense";case ge:return"SuspenseList";case _e:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case B:return"Portal";case X:return t.displayName||"Context";case te:return(t._context.displayName||"Context")+".Consumer";case ae:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case M:return a=t.displayName||null,a!==null?a:Fe(t.type)||"Memo";case J:a=t._payload,t=t._init;try{return Fe(t(a))}catch{}}return null}var ye=Array.isArray,V=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne=s.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe={pending:!1,data:null,method:null,action:null},De=[],le=-1;function at(t){return{current:t}}function H(t){0>le||(t.current=De[le],De[le]=null,le--)}function ue(t,a){le++,De[le]=t.current,t.current=a}var ie=at(null),re=at(null),W=at(null),Z=at(null);function Ne(t,a){switch(ue(W,a),ue(re,t),ue(ie,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?V1(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=V1(a),t=L1(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}H(ie),ue(ie,t)}function Ae(){H(ie),H(re),H(W)}function st(t){t.memoizedState!==null&&ue(Z,t);var a=ie.current,i=L1(a,t.type);a!==i&&(ue(re,t),ue(ie,i))}function Qe(t){re.current===t&&(H(ie),H(re)),Z.current===t&&(H(Z),Dr._currentValue=fe)}var Pt,jt;function Ct(t){if(Pt===void 0)try{throw Error()}catch(i){var a=i.stack.trim().match(/\n( *(at )?)/);Pt=a&&a[1]||"",jt=-1<i.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Pt+t+jt}var Gn=!1;function Ri(t,a){if(!t||Gn)return"";Gn=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(a){var ee=function(){throw Error()};if(Object.defineProperty(ee.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ee,[])}catch($){var L=$}Reflect.construct(t,[],ee)}else{try{ee.call()}catch($){L=$}t.call(ee.prototype)}}else{try{throw Error()}catch($){L=$}(ee=t())&&typeof ee.catch=="function"&&ee.catch(function(){})}}catch($){if($&&L&&typeof $.stack=="string")return[$.stack,L.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var d=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");d&&d.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=l.DetermineComponentFrameRoot(),v=h[0],w=h[1];if(v&&w){var N=v.split(`
|
|
@@ -11,7 +11,7 @@ Error generating stack: `+l.message+`
|
|
|
11
11
|
|
|
12
12
|
`);J=Oe.pop()??"";for(const je of Oe){const Fe=je.split(`
|
|
13
13
|
`),ye=[];let V;for(const De of Fe)if(De.startsWith("data:"))ye.push(De.replace(/^data:\s*/,""));else if(De.startsWith("event:"))V=De.replace(/^event:\s*/,"");else if(De.startsWith("id:"))C=De.replace(/^id:\s*/,"");else if(De.startsWith("retry:")){const le=Number.parseInt(De.replace(/^retry:\s*/,""),10);Number.isNaN(le)||(q=le)}let ne,fe=!1;if(ye.length){const De=ye.join(`
|
|
14
|
-
`);try{ne=JSON.parse(De),fe=!0}catch{ne=De}}fe&&(u&&await u(ne),r&&(ne=await r(ne))),s?.({data:ne,event:V,id:C,retry:q}),ye.length&&(yield ne)}}}finally{G.removeEventListener("abort",_e),M.releaseLock()}break}catch(X){if(n?.(X),g!==void 0&&U>=g)break;const ae=Math.min(q*2**(U-1),b??3e4);await j(ae)}}}()}},Kj=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Qj=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},Zj=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Gv=({allowReserved:e,explode:n,name:s,style:r,value:u})=>{if(!n){const b=(e?u:u.map(x=>encodeURIComponent(x))).join(Qj(r));switch(r){case"label":return`.${b}`;case"matrix":return`;${s}=${b}`;case"simple":return b;default:return`${s}=${b}`}}const f=Kj(r),g=u.map(b=>r==="label"||r==="simple"?e?b:encodeURIComponent(b):du({allowReserved:e,name:s,value:b})).join(f);return r==="label"||r==="matrix"?f+g:g},du=({allowReserved:e,name:n,value:s})=>{if(s==null)return"";if(typeof s=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${n}=${e?s:encodeURIComponent(s)}`},$v=({allowReserved:e,explode:n,name:s,style:r,value:u,valueOnly:f})=>{if(u instanceof Date)return f?u.toISOString():`${s}=${u.toISOString()}`;if(r!=="deepObject"&&!n){let x=[];Object.entries(u).forEach(([S,C])=>{x=[...x,S,e?C:encodeURIComponent(C)]});const k=x.join(",");switch(r){case"form":return`${s}=${k}`;case"label":return`.${k}`;case"matrix":return`;${s}=${k}`;default:return k}}const g=Zj(r),b=Object.entries(u).map(([x,k])=>du({allowReserved:e,name:r==="deepObject"?`${s}[${x}]`:x,value:k})).join(g);return r==="label"||r==="matrix"?g+b:b},Fj=/\{[^{}]+\}/g,Yj=({path:e,url:n})=>{let s=n;const r=n.match(Fj);if(r)for(const u of r){let f=!1,g=u.substring(1,u.length-1),b="simple";g.endsWith("*")&&(f=!0,g=g.substring(0,g.length-1)),g.startsWith(".")?(g=g.substring(1),b="label"):g.startsWith(";")&&(g=g.substring(1),b="matrix");const x=e[g];if(x==null)continue;if(Array.isArray(x)){s=s.replace(u,Gv({explode:f,name:g,style:b,value:x}));continue}if(typeof x=="object"){s=s.replace(u,$v({explode:f,name:g,style:b,value:x,valueOnly:!0}));continue}if(b==="matrix"){s=s.replace(u,`;${du({name:g,value:x})}`);continue}const k=encodeURIComponent(b==="label"?`.${x}`:x);s=s.replace(u,k)}return s},Xj=({baseUrl:e,path:n,query:s,querySerializer:r,url:u})=>{const f=u.startsWith("/")?u:`/${u}`;let g=(e??"")+f;n&&(g=Yj({path:n,url:g}));let b=s?r(s):"";return b.startsWith("?")&&(b=b.substring(1)),b&&(g+=`?${b}`),g};function Jj(e){const n=e.body!==void 0;if(n&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(n)return e.body}const Wj=async(e,n)=>{const s=typeof n=="function"?await n(e):n;if(s)return e.scheme==="bearer"?`Bearer ${s}`:e.scheme==="basic"?`Basic ${btoa(s)}`:s},Hv=({allowReserved:e,array:n,object:s}={})=>u=>{const f=[];if(u&&typeof u=="object")for(const g in u){const b=u[g];if(b!=null)if(Array.isArray(b)){const x=Gv({allowReserved:e,explode:!0,name:g,style:"form",value:b,...n});x&&f.push(x)}else if(typeof b=="object"){const x=$v({allowReserved:e,explode:!0,name:g,style:"deepObject",value:b,...s});x&&f.push(x)}else{const x=du({allowReserved:e,name:g,value:b});x&&f.push(x)}}return f.join("&")},e4=e=>{if(!e)return"stream";const n=e.split(";")[0]?.trim();if(n){if(n.startsWith("application/json")||n.endsWith("+json"))return"json";if(n==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>n.startsWith(s)))return"blob";if(n.startsWith("text/"))return"text"}},t4=(e,n)=>n?!!(e.headers.has(n)||e.query?.[n]||e.headers.get("Cookie")?.includes(`${n}=`)):!1,a4=async({security:e,...n})=>{for(const s of e){if(t4(n,s.name))continue;const r=await Wj(s,n.auth);if(!r)continue;const u=s.name??"Authorization";switch(s.in){case"query":n.query||(n.query={}),n.query[u]=r;break;case"cookie":n.headers.append("Cookie",`${u}=${r}`);break;default:n.headers.set(u,r);break}}},Sy=e=>Xj({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:Hv(e.querySerializer),url:e.url}),jy=(e,n)=>{const s={...e,...n};return s.baseUrl?.endsWith("/")&&(s.baseUrl=s.baseUrl.substring(0,s.baseUrl.length-1)),s.headers=Kv(e.headers,n.headers),s},n4=e=>{const n=[];return e.forEach((s,r)=>{n.push([r,s])}),n},Kv=(...e)=>{const n=new Headers;for(const s of e){if(!s)continue;const r=s instanceof Headers?n4(s):Object.entries(s);for(const[u,f]of r)if(f===null)n.delete(u);else if(Array.isArray(f))for(const g of f)n.append(u,g);else f!==void 0&&n.set(u,typeof f=="object"?JSON.stringify(f):f)}return n};class tp{fns=[];clear(){this.fns=[]}eject(n){const s=this.getInterceptorIndex(n);this.fns[s]&&(this.fns[s]=null)}exists(n){const s=this.getInterceptorIndex(n);return!!this.fns[s]}getInterceptorIndex(n){return typeof n=="number"?this.fns[n]?n:-1:this.fns.indexOf(n)}update(n,s){const r=this.getInterceptorIndex(n);return this.fns[r]?(this.fns[r]=s,n):!1}use(n){return this.fns.push(n),this.fns.length-1}}const i4=()=>({error:new tp,request:new tp,response:new tp}),s4=Hv({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),o4={"Content-Type":"application/json"},Qv=(e={})=>({...$j,headers:o4,parseAs:"auto",querySerializer:s4,...e}),Zv=(e={})=>{let n=jy(Qv(),e);const s=()=>({...n}),r=k=>(n=jy(n,k),s()),u=i4(),f=async k=>{const S={...n,...k,fetch:k.fetch??n.fetch??globalThis.fetch,headers:Kv(n.headers,k.headers),serializedBody:void 0};S.security&&await a4({...S,security:S.security}),S.requestValidator&&await S.requestValidator(S),S.body!==void 0&&S.bodySerializer&&(S.serializedBody=S.bodySerializer(S.body)),(S.body===void 0||S.serializedBody==="")&&S.headers.delete("Content-Type");const C=Sy(S);return{opts:S,url:C}},g=async k=>{const{opts:S,url:C}=await f(k),j={redirect:"follow",...S,body:Jj(S)};let E=new Request(C,j);for(const oe of u.request.fns)oe&&(E=await oe(E,S));const B=S.fetch;let q=await B(E);for(const oe of u.response.fns)oe&&(q=await oe(q,E,S));const U={request:E,response:q};if(q.ok){const oe=(S.parseAs==="auto"?e4(q.headers.get("Content-Type")):S.parseAs)??"json";if(q.status===204||q.headers.get("Content-Length")==="0"){let M;switch(oe){case"arrayBuffer":case"blob":case"text":M=await q[oe]();break;case"formData":M=new FormData;break;case"stream":M=q.body;break;default:M={};break}return S.responseStyle==="data"?M:{data:M,...U}}let ge;switch(oe){case"arrayBuffer":case"blob":case"formData":case"json":case"text":ge=await q[oe]();break;case"stream":return S.responseStyle==="data"?q.body:{data:q.body,...U}}return oe==="json"&&(S.responseValidator&&await S.responseValidator(ge),S.responseTransformer&&(ge=await S.responseTransformer(ge))),S.responseStyle==="data"?ge:{data:ge,...U}}const G=await q.text();let te;try{te=JSON.parse(G)}catch{}const X=te??G;let ae=X;for(const oe of u.error.fns)oe&&(ae=await oe(X,q,E,S));if(ae=ae||{},S.throwOnError)throw ae;return S.responseStyle==="data"?void 0:{error:ae,...U}},b=k=>S=>g({...S,method:k}),x=k=>async S=>{const{opts:C,url:j}=await f(S);return Hj({...C,body:C.body,headers:C.headers,method:k,onRequest:async(E,B)=>{let q=new Request(E,B);for(const U of u.request.fns)U&&(q=await U(q,C));return q},url:j})};return{buildUrl:Sy,connect:b("CONNECT"),delete:b("DELETE"),get:b("GET"),getConfig:s,head:b("HEAD"),interceptors:u,options:b("OPTIONS"),patch:b("PATCH"),post:b("POST"),put:b("PUT"),request:g,setConfig:r,sse:{connect:x("CONNECT"),delete:x("DELETE"),get:x("GET"),head:x("HEAD"),options:x("OPTIONS"),patch:x("PATCH"),post:x("POST"),put:x("PUT"),trace:x("TRACE")},trace:b("TRACE")}},T=Zv(Qv()),r4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),l4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),c4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e,headers:{"Content-Type":"application/json",...e.headers}}),u4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),Fv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),d4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),m4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),p4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),h4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-setup",...e}),ZU=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft",...e}),FU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/create",...e,headers:{"Content-Type":"application/json",...e.headers}}),YU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),XU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),JU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),WU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),eG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),tG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),aG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),nG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-paired-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),iG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",...e,headers:{"Content-Type":"application/json",...e.headers}}),sG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),oG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),rG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),lG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),cG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),uG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),dG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",...e}),mG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",...e}),pG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/publish",...e,headers:{"Content-Type":"application/json",...e.headers}}),hG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/discard",...e}),Yv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-overview",...e}),f4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-evidence",...e}),g4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-question-result",...e}),y4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-competitors",...e}),b4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),v4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),x4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),k4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),w4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),S4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),j4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),Xv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),A4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),C4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),N4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),_4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e}),z4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),D4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),E4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),Jv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),T4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),R4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),O4=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),Wv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),B4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),q4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),M4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),P4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),I4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),V4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),ex=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),L4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),U4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),G4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),$4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),H4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),tx=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),K4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),Q4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),Z4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),F4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),Y4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),X4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),J4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),W4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/status",...e}),e5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),t5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/customers",...e}),a5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),n5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/sync",...e}),i5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/snapshots",...e}),s5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/connection",...e}),o5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/status",...e}),r5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),l5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts",...e}),c5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers",...e}),u5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers/{containerId}/workspaces",...e}),d5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),m5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/sync",...e}),p5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/snapshots",...e}),h5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/connection",...e}),f5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e}),g5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e,headers:{"Content-Type":"application/json",...e.headers}}),y5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}/integrity",...e}),b5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),v5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),x5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),k5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),w5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),S5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),j5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),A5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),C5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),N5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),_5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),z5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),ax=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),D5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),E5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),T5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),R5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),O5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),B5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),q5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),M5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),P5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),I5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),V5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),L5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),U5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),G5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),$5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),H5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),K5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),nx=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),Q5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),Z5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),F5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),Y5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),X5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),J5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),W5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),e6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),t6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),a6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),n6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),i6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),s6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),o6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),r6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),l6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),c6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),u6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),d6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),m6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),p6=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),h6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),f6=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),g6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),y6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),b6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),v6=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),x6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),k6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),w6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),S6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),j6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),A6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),C6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),N6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),_6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),z6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),D6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),E6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),T6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),R6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),O6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),B6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),q6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e}),M6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e,headers:{"Content-Type":"application/json",...e.headers}}),P6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),I6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),V6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),L6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl",...e}),U6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/graph",...e}),G6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages/audit",...e}),ix=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages",...e}),$6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/structure",...e}),H6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/internal-links/neighbors",...e}),K6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/dead-links",...e}),Q6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e}),Z6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),F6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/progress",...e}),Y6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/page-health-preview",...e}),X6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function J6(e){const n={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return Zv(n)}class oa extends Error{code;statusCode;details;constructor(n,s,r,u){super(n),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=s,this.details=u}}function W6(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function eA(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function p0(e){const n=eA();if(!n)return e;let s;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{s=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(s.origin!==u)return e;const g=`${f0().replace(/\/$/,"")}/api/v1`;return s.pathname!==g&&!s.pathname.startsWith(`${g}/`)?e:(s.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?s.toString():`${s.pathname}${s.search}${s.hash}`)}function tA(e,n){const s={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(s.body=e.body,s.duplex="half"),new Request(n,s)}function sx(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function aA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function nA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function iA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function sA(){return sx()!==null}function oA(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const h0=oA();function rA(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function f0(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function lA(e){const n=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return n==="localhost"||n==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(n)}function cA(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!lA(e.hostname))return;const s=e.port?`:${e.port}`:"",r=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${s}${r}`}function fG(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function gG(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function uA(){if(!(typeof window>"u"))return cA(window.location,f0())}function dA(e){return`${f0()}${e}`}function mA(e,n){if(n===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function pA(){return""}function ap(){return!!pA()}let ox=null;function Ay(e){ox=e}function g0(){ox?.()}const se=J6({baseUrl:rA()});se.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&g0(),e));se.interceptors.request.use(e=>{const n=p0(e.url);return n===e.url?e:tA(e,n)});async function de(e){const n=await e();if(n.error!==void 0&&n.error!==null){const s=n.response.status;let r=`API ${s}: ${n.response.statusText}`,u,f;if(typeof n.error=="object"&&n.error!==null){const g=n.error.error;if(typeof g=="string")r=g;else if(g&&typeof g=="object"){const b=g;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}else{const b=n.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}}else typeof n.error=="string"&&(r=n.error);throw new oa(r,s,u,f)}if(n.response.status!==204)return n.data}async function Do(e,n){const s=n?.body!=null,r=await fetch(p0(`${h0}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...s?{"Content-Type":"application/json"}:{},...n?.headers}});if(!r.ok){const u=await r.text();let f=`API ${r.status}: ${r.statusText}`,g,b;if(u)try{const x=JSON.parse(u);typeof x.error=="string"?f=x.error:x.error?.message?(f=x.error.message,g=x.error.code,b=x.error.details):x.message&&(f=x.message)}catch{f=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&g0(),new oa(f,r.status,g,b)}if(r.status!==204)return r.json()}function hA(e){return de(()=>Fv({client:se,path:{name:e}}))}function yG(e){return de(()=>Jv({client:se,path:{name:e}}))}function Zc(e){return de(()=>Wv({client:se,path:{id:e}}))}function rx(e){return de(()=>Xv({client:se,path:{name:e}}))}function fA(e){return de(()=>_4({client:se,path:{name:e}}))}function gA(e,n,s){return de(()=>P4({client:se,path:{name:e},query:{location:n,limit:s}}))}function lx(e,n){return de(()=>d6({client:se,path:{name:e},query:{location:n?.location,since:n?.since}}))}function cx(e,n){return de(()=>d4({client:se,path:{name:e},body:n}))}function ux(e){return de(()=>c4({client:se,body:e}))}function yA(e,n){return de(()=>C4({client:se,path:{name:e},body:{queries:n}}))}function bA(e,n){return de(()=>A4({client:se,path:{name:e},body:{queries:n}}))}function bG(e,n){return de(()=>j4({client:se,path:{name:e},body:{queries:n}}))}function vA(e,n){return de(()=>u6({client:se,path:{name:e},body:n}))}function xA(e,n){return de(()=>D4({client:se,path:{name:e},body:{competitors:n}}))}function vG(e,n){return de(()=>z4({client:se,path:{name:e},body:{competitors:n}}))}function xG(e,n){return de(()=>E4({client:se,path:{name:e,id:n}}))}async function kG(e,n){const s=await hA(e);return cx(e,{displayName:n.displayName??s.displayName??s.name,canonicalDomain:n.canonicalDomain??s.canonicalDomain,ownedDomains:n.ownedDomains??s.ownedDomains,aliases:n.aliases??s.aliases,country:n.country??s.country,language:n.language??s.language,tags:s.tags,labels:s.labels,providers:n.providers??s.providers,providerModels:n.providerModels??s.providerModels??{},locations:n.locations??s.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:s.defaultLocation,autoExtractBacklinks:s.autoExtractBacklinks})}function kA(e,n){const s={};return n?.location&&(s.location=n.location),n?.allLocations&&(s.allLocations=!0),n?.noLocation&&(s.noLocation=!0),de(()=>T4({client:se,path:{name:e},body:s}))}function wG(e,n){return de(()=>k4({client:se,path:{name:e},body:n}))}async function SG(e,n){await de(()=>w4({client:se,path:{name:e,label:n}}))}function jG(e,n){return de(()=>S4({client:se,path:{name:e},body:{label:n}}))}async function AG(e){await de(()=>u4({client:se,path:{name:e}}))}function CG(){return de(()=>ex({client:se}))}function Cy(){return Do("/session")}function wA(e){return Do("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function SA(e){return Do("/session",{method:"POST",body:JSON.stringify({password:e})})}function Ny(){return Do("/auth/session")}function jA(e,n){return Do("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function _y(){return Do("/auth/logout",{method:"POST"})}function AA(e,n){return de(()=>L4({client:se,path:{name:e},body:n}))}async function CA(e){for(let n=0;n<2;n+=1)try{await de(()=>X4({client:se,body:e}));return}catch(s){if(!(!(s instanceof oa)||s.statusCode>=500)||n===1)return}}function NG(e){return de(()=>U4({client:se,body:e}))}async function _G(e){try{return await de(()=>tx({client:se,path:{name:e}}))}catch(n){if(n instanceof oa&&n.statusCode===404)return null;throw n}}function zG(e,n){return de(()=>K4({client:se,path:{name:e},body:n}))}async function DG(e){await de(()=>H4({client:se,path:{name:e}}))}function EG(e){return de(()=>Q4({client:se,path:{name:e}}))}function TG(e,n){return de(()=>Z4({client:se,path:{name:e},body:n}))}async function RG(e,n){await de(()=>F4({client:se,path:{name:e,id:n}}))}function OG(e,n){return de(()=>Y4({client:se,path:{name:e,id:n}}))}function NA(e,n,s){return de(()=>N4({client:se,path:{name:e},body:{provider:n,count:s}}))}function _A(e){return de(()=>B4({client:se,body:e}))}function zA(e){return de(()=>O4({client:se,body:e??{}}))}function BG(e,n){const s=uA();return de(()=>v5({client:se,path:{name:e},body:{type:n,...s?{publicUrl:s}:{}}}))}function qG(e,n){return de(()=>x5({client:se,path:{name:e,type:n}}))}function MG(e,n,s){return de(()=>w5({client:se,path:{name:e,type:n},body:{propertyId:s}}))}function PG(e,n,s){return de(()=>S5({client:se,path:{name:e,type:n},body:{sitemapUrl:s}}))}function DA(e,n){return de(()=>j5({client:se,path:{name:e},body:n??{}}))}function IG(e,n){const s={};return n&&n!=="all"&&(s.window=n),de(()=>I4({client:se,path:{name:e},query:s}))}function VG(e,n){return de(()=>N5({client:se,path:{name:e},body:{url:n}}))}function EA(e){return de(()=>ax({client:se,path:{name:e}}))}function TA(e,n){return de(()=>T5({client:se,path:{name:e},body:n??{}}))}function LG(e,n){return de(()=>E5({client:se,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function UG(e,n){return de(()=>r4({client:se,path:{name:e},body:{sitemapUrls:n}}))}function RA(e,n){return de(()=>Z6({client:se,path:{name:e},body:n??{}}))}function GG(e,n){return de(()=>R6({client:se,path:{name:e},body:n??{}}))}function $G(e,n,s){return de(()=>M6({client:se,path:{name:e,id:n},body:s??{}}))}function HG(){return de(()=>J4({client:se}))}function KG(e,n){return de(()=>$4({client:se,body:{host:e,port:n}}))}function QG(e,n){return de(()=>R5({client:se,path:{name:e},body:n}))}function ZG(e,n){return de(()=>U5({client:se,path:{name:e},body:{apiKey:n}}))}function FG(e){return de(()=>G5({client:se,path:{name:e}}))}function YG(e,n){return de(()=>K5({client:se,path:{name:e},body:{siteUrl:n}}))}function OA(e){return de(()=>nx({client:se,path:{name:e}}))}function XG(e,n){return de(()=>Z5({client:se,path:{name:e},body:{url:n}}))}function JG(e,n){return de(()=>F5({client:se,path:{name:e},body:{}}))}function WG(e,n){return de(()=>Y5({client:se,path:{name:e},body:n}))}function e$(e){return de(()=>G4({client:se,body:{apiKey:e}}))}function dx(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function t$(e,n="agency",s){const r=new URLSearchParams({audience:n});s!==void 0&&r.set("period",String(s));const u=await fetch(p0(`${h0}/projects/${encodeURIComponent(e)}/report.html?${r.toString()}`),{credentials:"same-origin",headers:{}});if(!u.ok)throw new oa(`Failed to download report: ${u.status}`,u.status);const f=await u.blob(),g=URL.createObjectURL(f),b=dx(u.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,x=document.createElement("a");x.href=g,x.download=b,document.body.appendChild(x),x.click(),document.body.removeChild(x),URL.revokeObjectURL(g)}async function a$(e,n){const s=await fetch(`${h0}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!s.ok)throw new oa(`Failed to download results: ${s.status}`,s.status);const r=await s.blob(),u=URL.createObjectURL(r),f=dx(s.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,g=document.createElement("a");g.href=u,g.download=f,document.body.appendChild(g),g.click(),document.body.removeChild(g),URL.revokeObjectURL(u)}function n$(e,n){return de(()=>t6({client:se,path:{name:e},body:{}}))}function i$(e,n){return de(()=>J5({client:se,path:{name:e},body:n}))}function s$(e){return de(()=>W5({client:se,path:{name:e}}))}function o$(e,n){return de(()=>j6({client:se,path:{name:e},body:n}))}function r$(e,n){return de(()=>A6({client:se,path:{name:e},body:n}))}function l$(e,n){return de(()=>C6({client:se,path:{name:e},body:n}))}function c$(e,n,s){return de(()=>N6({client:se,path:{name:e,id:n},body:s??{}}))}function u$(e,n,s){return de(()=>_6({client:se,path:{name:e,id:n},body:{}}))}function BA(e,n){return de(()=>o6({client:se,path:{name:e},query:{runId:n}}))}function qA(e){if(!e||typeof e!="object")return;const n=e;if(!(typeof n.current!="string"||typeof n.latest!="string"||typeof n.url!="string"||typeof n.upgradeCommand!="string"))return{current:n.current,latest:n.latest,url:n.url,upgradeCommand:n.upgradeCommand}}async function MA(e,n){const s=dA(e);try{const r=await fetch(s,{credentials:"same-origin"});if(!r.ok)return{label:n,state:"error",detail:`${n} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:mA(e,r.status)};const u=await r.json(),f=typeof u.version=="string"?u.version:"unknown",g=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,x=qA(u.updateAvailable),k=[f,g===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:k,version:f,databaseConfigured:g,lastHeartbeatAt:b,...x?{updateAvailable:x}:{}}}catch(r){return{label:n,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${s}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function d$(){return de(()=>m6({client:se}))}function m$(){return de(()=>p6({client:se}))}function p$(){return de(()=>g6({client:se}))}function h$(){return de(()=>h6({client:se}))}function f$(e){return de(()=>f6({client:se,body:e?{release:e}:{}}))}function g$(){return de(()=>y6({client:se}))}function y$(){return de(()=>b6({client:se}))}function b$(e){return de(()=>v6({client:se,path:{release:e}}))}function v$(e,n={}){return de(()=>k6({client:se,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function x$(e,n={}){return de(()=>w6({client:se,path:{name:e},query:{limit:n.limit!==void 0?String(n.limit):void 0,offset:n.offset!==void 0?String(n.offset):void 0,release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function k$(e,n={}){return de(()=>S6({client:se,path:{name:e},query:{source:n.source}}))}function w$(e,n){return de(()=>x6({client:se,path:{name:e},body:{release:void 0}}))}const mx={account:null,canWrite:!0,isAdmin:!0},px=D.createContext(mx);function PA({account:e,children:n}){const s=e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:mx;return c.jsx(px.Provider,{value:s,children:n})}function al(){return D.useContext(px)}const hx="View only — your account cannot change this.";function $t(e){return(...n)=>{e(...n)}}const IA=6e3,VA=5,LA=180;let ea=[],UA=0;const Dp=new Set,Ep=new Map,Tp=new Map;function Fc(){const e=[...ea];for(const n of Dp)n(e)}function y0(e){const n=Ep.get(e);n&&(clearTimeout(n),Ep.delete(e));const s=Tp.get(e);s&&(clearTimeout(s),Tp.delete(e))}function fx(e){y0(e);const n=ea.length;ea=ea.filter(s=>s.id!==e),ea.length!==n&&Fc()}function zy(e){y0(e.id),Ep.set(e.id,setTimeout(()=>{Rp(e.id)},e.durationMs))}function GA(e,n,s){return typeof e=="string"?{title:e,tone:n,durationMs:s}:e}function Yt(e,n="negative",s=IA){const r=GA(e,n,s),u={id:String(++UA),title:r.title,detail:r.detail,tone:r.tone??n,durationMs:r.durationMs??s,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const f=ea.find(g=>g.dedupeKey===r.dedupeKey);if(f){if((r.dedupeMode??"drop")==="drop")return f.id;const g={...f,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return ea=ea.map(b=>b.id===f.id?g:b),Fc(),zy(g),f.id}}return ea.length>=VA&&fx(ea[0].id),ea=[...ea,u],Fc(),zy(u),u.id}function Rp(e){const n=ea.find(s=>s.id===e);!n||n.state==="closing"||(y0(e),ea=ea.map(s=>s.id===e?{...s,state:"closing"}:s),Fc(),Tp.set(e,setTimeout(()=>{fx(e)},LA)))}function $A(e){return Dp.add(e),()=>{Dp.delete(e)}}function Dy(){return ea}const HA=5*6e4,Op=30*6e4,S$=3e4,j$=6e4,vo=3e4,KA=2e3,QA=3e4;function ZA(){return new oj({defaultOptions:{queries:{staleTime:HA,retry:1,refetchOnWindowFocus:!1}},mutationCache:new rj({onError:(n,s,r,u)=>{u.meta?.skipGlobalErrorToast||Yt({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const FA="modulepreload",YA=function(e,n){return new URL(e,n).href},Ey={},Ln=function(n,s,r){let u=Promise.resolve();if(s&&s.length>0){let k=function(S){return Promise.all(S.map(C=>Promise.resolve(C).then(j=>({status:"fulfilled",value:j}),j=>({status:"rejected",reason:j}))))};const g=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),x=b?.nonce||b?.getAttribute("nonce");u=k(s.map(S=>{if(S=YA(S,r),S in Ey)return;Ey[S]=!0;const C=S.endsWith(".css"),j=C?'[rel="stylesheet"]':"";if(r)for(let B=g.length-1;B>=0;B--){const q=g[B];if(q.href===S&&(!C||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${j}`))return;const E=document.createElement("link");if(E.rel=C?"stylesheet":FA,C||(E.as="script"),E.crossOrigin="",E.href=S,x&&E.setAttribute("nonce",x),document.head.appendChild(E),C)return new Promise((B,q)=>{E.addEventListener("load",B),E.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${S}`)))})}))}function f(g){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=g,window.dispatchEvent(b),!b.defaultPrevented)throw g}return u.then(g=>{for(const b of g||[])b.status==="rejected"&&f(b.reason);return n().catch(f)})};function Q(e,n,s){function r(b,x){if(b._zod||Object.defineProperty(b,"_zod",{value:{def:x,constr:g,traits:new Set},enumerable:!1}),b._zod.traits.has(e))return;b._zod.traits.add(e),n(b,x);const k=g.prototype,S=Object.keys(k);for(let C=0;C<S.length;C++){const j=S[C];j in b||(b[j]=k[j].bind(b))}}const u=s?.Parent??Object;class f extends u{}Object.defineProperty(f,"name",{value:e});function g(b){var x;const k=s?.Parent?new f:this;r(k,b),(x=k._zod).deferred??(x.deferred=[]);for(const S of k._zod.deferred)S();return k}return Object.defineProperty(g,"init",{value:r}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>s?.Parent&&b instanceof s.Parent?!0:b?._zod?.traits?.has(e)}),Object.defineProperty(g,"name",{value:e}),g}class fo extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class gx extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}}const yx={};function Si(e){return yx}function bx(e){const n=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,u])=>n.indexOf(+r)===-1).map(([r,u])=>u)}function Bp(e,n){return typeof n=="bigint"?n.toString():n}function mu(e){return{get value(){{const n=e();return Object.defineProperty(this,"value",{value:n}),n}}}}function b0(e){return e==null}function v0(e){const n=e.startsWith("^")?1:0,s=e.endsWith("$")?e.length-1:e.length;return e.slice(n,s)}function XA(e,n){const s=(e.toString().split(".")[1]||"").length,r=n.toString();let u=(r.split(".")[1]||"").length;if(u===0&&/\d?e-\d?/.test(r)){const x=r.match(/\d?e-(\d?)/);x?.[1]&&(u=Number.parseInt(x[1]))}const f=s>u?s:u,g=Number.parseInt(e.toFixed(f).replace(".","")),b=Number.parseInt(n.toFixed(f).replace(".",""));return g%b/10**f}const Ty=Symbol("evaluating");function it(e,n,s){let r;Object.defineProperty(e,n,{get(){if(r!==Ty)return r===void 0&&(r=Ty,r=s()),r},set(u){Object.defineProperty(e,n,{value:u})},configurable:!0})}function hs(e,n,s){Object.defineProperty(e,n,{value:s,writable:!0,enumerable:!0,configurable:!0})}function Ni(...e){const n={};for(const s of e){const r=Object.getOwnPropertyDescriptors(s);Object.assign(n,r)}return Object.defineProperties({},n)}function Ry(e){return JSON.stringify(e)}function JA(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const vx="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const WA=mu(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function xo(e){if(Fr(e)===!1)return!1;const n=e.constructor;if(n===void 0||typeof n!="function")return!0;const s=n.prototype;return!(Fr(s)===!1||Object.prototype.hasOwnProperty.call(s,"isPrototypeOf")===!1)}function xx(e){return xo(e)?{...e}:Array.isArray(e)?[...e]:e}const eC=new Set(["string","number","symbol"]);function ko(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _i(e,n,s){const r=new e._zod.constr(n??e._zod.def);return(!n||s?.parent)&&(r._zod.parent=e),r}function ze(e){const n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function tC(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}const aC={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function nC(e,n){const s=e._zod.def,r=s.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const f=Ni(e._zod.def,{get shape(){const g={};for(const b in n){if(!(b in s.shape))throw new Error(`Unrecognized key: "${b}"`);n[b]&&(g[b]=s.shape[b])}return hs(this,"shape",g),g},checks:[]});return _i(e,f)}function iC(e,n){const s=e._zod.def,r=s.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const f=Ni(e._zod.def,{get shape(){const g={...e._zod.def.shape};for(const b in n){if(!(b in s.shape))throw new Error(`Unrecognized key: "${b}"`);n[b]&&delete g[b]}return hs(this,"shape",g),g},checks:[]});return _i(e,f)}function sC(e,n){if(!xo(n))throw new Error("Invalid input to extend: expected a plain object");const s=e._zod.def.checks;if(s&&s.length>0){const f=e._zod.def.shape;for(const g in n)if(Object.getOwnPropertyDescriptor(f,g)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const u=Ni(e._zod.def,{get shape(){const f={...e._zod.def.shape,...n};return hs(this,"shape",f),f}});return _i(e,u)}function oC(e,n){if(!xo(n))throw new Error("Invalid input to safeExtend: expected a plain object");const s=Ni(e._zod.def,{get shape(){const r={...e._zod.def.shape,...n};return hs(this,"shape",r),r}});return _i(e,s)}function rC(e,n){const s=Ni(e._zod.def,{get shape(){const r={...e._zod.def.shape,...n._zod.def.shape};return hs(this,"shape",r),r},get catchall(){return n._zod.def.catchall},checks:[]});return _i(e,s)}function lC(e,n,s){const u=n._zod.def.checks;if(u&&u.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const g=Ni(n._zod.def,{get shape(){const b=n._zod.def.shape,x={...b};if(s)for(const k in s){if(!(k in b))throw new Error(`Unrecognized key: "${k}"`);s[k]&&(x[k]=e?new e({type:"optional",innerType:b[k]}):b[k])}else for(const k in b)x[k]=e?new e({type:"optional",innerType:b[k]}):b[k];return hs(this,"shape",x),x},checks:[]});return _i(n,g)}function cC(e,n,s){const r=Ni(n._zod.def,{get shape(){const u=n._zod.def.shape,f={...u};if(s)for(const g in s){if(!(g in f))throw new Error(`Unrecognized key: "${g}"`);s[g]&&(f[g]=new e({type:"nonoptional",innerType:u[g]}))}else for(const g in u)f[g]=new e({type:"nonoptional",innerType:u[g]});return hs(this,"shape",f),f}});return _i(n,r)}function mo(e,n=0){if(e.aborted===!0)return!0;for(let s=n;s<e.issues.length;s++)if(e.issues[s]?.continue!==!0)return!0;return!1}function po(e,n){return n.map(s=>{var r;return(r=s).path??(r.path=[]),s.path.unshift(e),s})}function Dc(e){return typeof e=="string"?e:e?.message}function ji(e,n,s){const r={...e,path:e.path??[]};if(!e.message){const u=Dc(e.inst?._zod.def?.error?.(e))??Dc(n?.error?.(e))??Dc(s.customError?.(e))??Dc(s.localeError?.(e))??"Invalid input";r.message=u}return delete r.inst,delete r.continue,n?.reportInput||delete r.input,r}function x0(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Yr(...e){const[n,s,r]=e;return typeof n=="string"?{message:n,code:"custom",input:s,inst:r}:{...n}}const kx=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,Bp,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},wx=Q("$ZodError",kx),Sx=Q("$ZodError",kx,{Parent:Error});function uC(e,n=s=>s.message){const s={},r=[];for(const u of e.issues)u.path.length>0?(s[u.path[0]]=s[u.path[0]]||[],s[u.path[0]].push(n(u))):r.push(n(u));return{formErrors:r,fieldErrors:s}}function dC(e,n=s=>s.message){const s={_errors:[]},r=u=>{for(const f of u.issues)if(f.code==="invalid_union"&&f.errors.length)f.errors.map(g=>r({issues:g}));else if(f.code==="invalid_key")r({issues:f.issues});else if(f.code==="invalid_element")r({issues:f.issues});else if(f.path.length===0)s._errors.push(n(f));else{let g=s,b=0;for(;b<f.path.length;){const x=f.path[b];b===f.path.length-1?(g[x]=g[x]||{_errors:[]},g[x]._errors.push(n(f))):g[x]=g[x]||{_errors:[]},g=g[x],b++}}};return r(e),s}const k0=e=>(n,s,r,u)=>{const f=r?Object.assign(r,{async:!1}):{async:!1},g=n._zod.run({value:s,issues:[]},f);if(g instanceof Promise)throw new fo;if(g.issues.length){const b=new(u?.Err??e)(g.issues.map(x=>ji(x,f,Si())));throw vx(b,u?.callee),b}return g.value},w0=e=>async(n,s,r,u)=>{const f=r?Object.assign(r,{async:!0}):{async:!0};let g=n._zod.run({value:s,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){const b=new(u?.Err??e)(g.issues.map(x=>ji(x,f,Si())));throw vx(b,u?.callee),b}return g.value},pu=e=>(n,s,r)=>{const u=r?{...r,async:!1}:{async:!1},f=n._zod.run({value:s,issues:[]},u);if(f instanceof Promise)throw new fo;return f.issues.length?{success:!1,error:new(e??wx)(f.issues.map(g=>ji(g,u,Si())))}:{success:!0,data:f.value}},mC=pu(Sx),hu=e=>async(n,s,r)=>{const u=r?Object.assign(r,{async:!0}):{async:!0};let f=n._zod.run({value:s,issues:[]},u);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new e(f.issues.map(g=>ji(g,u,Si())))}:{success:!0,data:f.value}},pC=hu(Sx),hC=e=>(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return k0(e)(n,s,u)},fC=e=>(n,s,r)=>k0(e)(n,s,r),gC=e=>async(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return w0(e)(n,s,u)},yC=e=>async(n,s,r)=>w0(e)(n,s,r),bC=e=>(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return pu(e)(n,s,u)},vC=e=>(n,s,r)=>pu(e)(n,s,r),xC=e=>async(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return hu(e)(n,s,u)},kC=e=>async(n,s,r)=>hu(e)(n,s,r),wC=/^[cC][^\s-]{8,}$/,SC=/^[0-9a-z]+$/,jC=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,AC=/^[0-9a-vA-V]{20}$/,CC=/^[A-Za-z0-9]{27}$/,NC=/^[a-zA-Z0-9_-]{21}$/,_C=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,zC=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Oy=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,DC=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,EC="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function TC(){return new RegExp(EC,"u")}const RC=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,OC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,BC=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,qC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,MC=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,jx=/^[A-Za-z0-9_-]*$/,PC=/^\+[1-9]\d{6,14}$/,Ax="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",IC=new RegExp(`^${Ax}$`);function Cx(e){const n="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${n}`:e.precision===0?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}function VC(e){return new RegExp(`^${Cx(e)}$`)}function LC(e){const n=Cx({precision:e.precision}),s=["Z"];e.local&&s.push(""),e.offset&&s.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${n}(?:${s.join("|")})`;return new RegExp(`^${Ax}T(?:${r})$`)}const UC=e=>{const n=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${n}$`)},GC=/^-?\d+$/,Nx=/^-?\d+(?:\.\d+)?$/,$C=/^(?:true|false)$/i,HC=/^null$/i,KC=/^[^A-Z]*$/,QC=/^[^a-z]*$/,ba=Q("$ZodCheck",(e,n)=>{var s;e._zod??(e._zod={}),e._zod.def=n,(s=e._zod).onattach??(s.onattach=[])}),_x={number:"number",bigint:"bigint",object:"date"},zx=Q("$ZodCheckLessThan",(e,n)=>{ba.init(e,n);const s=_x[typeof n.value];e._zod.onattach.push(r=>{const u=r._zod.bag,f=(n.inclusive?u.maximum:u.exclusiveMaximum)??Number.POSITIVE_INFINITY;n.value<f&&(n.inclusive?u.maximum=n.value:u.exclusiveMaximum=n.value)}),e._zod.check=r=>{(n.inclusive?r.value<=n.value:r.value<n.value)||r.issues.push({origin:s,code:"too_big",maximum:typeof n.value=="object"?n.value.getTime():n.value,input:r.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),Dx=Q("$ZodCheckGreaterThan",(e,n)=>{ba.init(e,n);const s=_x[typeof n.value];e._zod.onattach.push(r=>{const u=r._zod.bag,f=(n.inclusive?u.minimum:u.exclusiveMinimum)??Number.NEGATIVE_INFINITY;n.value>f&&(n.inclusive?u.minimum=n.value:u.exclusiveMinimum=n.value)}),e._zod.check=r=>{(n.inclusive?r.value>=n.value:r.value>n.value)||r.issues.push({origin:s,code:"too_small",minimum:typeof n.value=="object"?n.value.getTime():n.value,input:r.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),ZC=Q("$ZodCheckMultipleOf",(e,n)=>{ba.init(e,n),e._zod.onattach.push(s=>{var r;(r=s._zod.bag).multipleOf??(r.multipleOf=n.value)}),e._zod.check=s=>{if(typeof s.value!=typeof n.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof s.value=="bigint"?s.value%n.value===BigInt(0):XA(s.value,n.value)===0)||s.issues.push({origin:typeof s.value,code:"not_multiple_of",divisor:n.value,input:s.value,inst:e,continue:!n.abort})}}),FC=Q("$ZodCheckNumberFormat",(e,n)=>{ba.init(e,n),n.format=n.format||"float64";const s=n.format?.includes("int"),r=s?"int":"number",[u,f]=aC[n.format];e._zod.onattach.push(g=>{const b=g._zod.bag;b.format=n.format,b.minimum=u,b.maximum=f,s&&(b.pattern=GC)}),e._zod.check=g=>{const b=g.value;if(s){if(!Number.isInteger(b)){g.issues.push({expected:r,format:n.format,code:"invalid_type",continue:!1,input:b,inst:e});return}if(!Number.isSafeInteger(b)){b>0?g.issues.push({input:b,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!n.abort}):g.issues.push({input:b,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!n.abort});return}}b<u&&g.issues.push({origin:"number",input:b,code:"too_small",minimum:u,inclusive:!0,inst:e,continue:!n.abort}),b>f&&g.issues.push({origin:"number",input:b,code:"too_big",maximum:f,inclusive:!0,inst:e,continue:!n.abort})}}),YC=Q("$ZodCheckMaxLength",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<u&&(r._zod.bag.maximum=n.maximum)}),e._zod.check=r=>{const u=r.value;if(u.length<=n.maximum)return;const g=x0(u);r.issues.push({origin:g,code:"too_big",maximum:n.maximum,inclusive:!0,input:u,inst:e,continue:!n.abort})}}),XC=Q("$ZodCheckMinLength",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>u&&(r._zod.bag.minimum=n.minimum)}),e._zod.check=r=>{const u=r.value;if(u.length>=n.minimum)return;const g=x0(u);r.issues.push({origin:g,code:"too_small",minimum:n.minimum,inclusive:!0,input:u,inst:e,continue:!n.abort})}}),JC=Q("$ZodCheckLengthEquals",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag;u.minimum=n.length,u.maximum=n.length,u.length=n.length}),e._zod.check=r=>{const u=r.value,f=u.length;if(f===n.length)return;const g=x0(u),b=f>n.length;r.issues.push({origin:g,...b?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!n.abort})}}),fu=Q("$ZodCheckStringFormat",(e,n)=>{var s,r;ba.init(e,n),e._zod.onattach.push(u=>{const f=u._zod.bag;f.format=n.format,n.pattern&&(f.patterns??(f.patterns=new Set),f.patterns.add(n.pattern))}),n.pattern?(s=e._zod).check??(s.check=u=>{n.pattern.lastIndex=0,!n.pattern.test(u.value)&&u.issues.push({origin:"string",code:"invalid_format",format:n.format,input:u.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(r=e._zod).check??(r.check=()=>{})}),WC=Q("$ZodCheckRegex",(e,n)=>{fu.init(e,n),e._zod.check=s=>{n.pattern.lastIndex=0,!n.pattern.test(s.value)&&s.issues.push({origin:"string",code:"invalid_format",format:"regex",input:s.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),eN=Q("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=KC),fu.init(e,n)}),tN=Q("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=QC),fu.init(e,n)}),aN=Q("$ZodCheckIncludes",(e,n)=>{ba.init(e,n);const s=ko(n.includes),r=new RegExp(typeof n.position=="number"?`^.{${n.position}}${s}`:s);n.pattern=r,e._zod.onattach.push(u=>{const f=u._zod.bag;f.patterns??(f.patterns=new Set),f.patterns.add(r)}),e._zod.check=u=>{u.value.includes(n.includes,n.position)||u.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:u.value,inst:e,continue:!n.abort})}}),nN=Q("$ZodCheckStartsWith",(e,n)=>{ba.init(e,n);const s=new RegExp(`^${ko(n.prefix)}.*`);n.pattern??(n.pattern=s),e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.startsWith(n.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:r.value,inst:e,continue:!n.abort})}}),iN=Q("$ZodCheckEndsWith",(e,n)=>{ba.init(e,n);const s=new RegExp(`.*${ko(n.suffix)}$`);n.pattern??(n.pattern=s),e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.endsWith(n.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:r.value,inst:e,continue:!n.abort})}}),sN=Q("$ZodCheckOverwrite",(e,n)=>{ba.init(e,n),e._zod.check=s=>{s.value=n.tx(s.value)}});class oN{constructor(n=[]){this.content=[],this.indent=0,this&&(this.args=n)}indented(n){this.indent+=1,n(this),this.indent-=1}write(n){if(typeof n=="function"){n(this,{execution:"sync"}),n(this,{execution:"async"});return}const r=n.split(`
|
|
14
|
+
`);try{ne=JSON.parse(De),fe=!0}catch{ne=De}}fe&&(u&&await u(ne),r&&(ne=await r(ne))),s?.({data:ne,event:V,id:C,retry:q}),ye.length&&(yield ne)}}}finally{G.removeEventListener("abort",_e),M.releaseLock()}break}catch(X){if(n?.(X),g!==void 0&&U>=g)break;const ae=Math.min(q*2**(U-1),b??3e4);await j(ae)}}}()}},Kj=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Qj=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},Zj=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Gv=({allowReserved:e,explode:n,name:s,style:r,value:u})=>{if(!n){const b=(e?u:u.map(x=>encodeURIComponent(x))).join(Qj(r));switch(r){case"label":return`.${b}`;case"matrix":return`;${s}=${b}`;case"simple":return b;default:return`${s}=${b}`}}const f=Kj(r),g=u.map(b=>r==="label"||r==="simple"?e?b:encodeURIComponent(b):du({allowReserved:e,name:s,value:b})).join(f);return r==="label"||r==="matrix"?f+g:g},du=({allowReserved:e,name:n,value:s})=>{if(s==null)return"";if(typeof s=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${n}=${e?s:encodeURIComponent(s)}`},$v=({allowReserved:e,explode:n,name:s,style:r,value:u,valueOnly:f})=>{if(u instanceof Date)return f?u.toISOString():`${s}=${u.toISOString()}`;if(r!=="deepObject"&&!n){let x=[];Object.entries(u).forEach(([S,C])=>{x=[...x,S,e?C:encodeURIComponent(C)]});const k=x.join(",");switch(r){case"form":return`${s}=${k}`;case"label":return`.${k}`;case"matrix":return`;${s}=${k}`;default:return k}}const g=Zj(r),b=Object.entries(u).map(([x,k])=>du({allowReserved:e,name:r==="deepObject"?`${s}[${x}]`:x,value:k})).join(g);return r==="label"||r==="matrix"?g+b:b},Fj=/\{[^{}]+\}/g,Yj=({path:e,url:n})=>{let s=n;const r=n.match(Fj);if(r)for(const u of r){let f=!1,g=u.substring(1,u.length-1),b="simple";g.endsWith("*")&&(f=!0,g=g.substring(0,g.length-1)),g.startsWith(".")?(g=g.substring(1),b="label"):g.startsWith(";")&&(g=g.substring(1),b="matrix");const x=e[g];if(x==null)continue;if(Array.isArray(x)){s=s.replace(u,Gv({explode:f,name:g,style:b,value:x}));continue}if(typeof x=="object"){s=s.replace(u,$v({explode:f,name:g,style:b,value:x,valueOnly:!0}));continue}if(b==="matrix"){s=s.replace(u,`;${du({name:g,value:x})}`);continue}const k=encodeURIComponent(b==="label"?`.${x}`:x);s=s.replace(u,k)}return s},Xj=({baseUrl:e,path:n,query:s,querySerializer:r,url:u})=>{const f=u.startsWith("/")?u:`/${u}`;let g=(e??"")+f;n&&(g=Yj({path:n,url:g}));let b=s?r(s):"";return b.startsWith("?")&&(b=b.substring(1)),b&&(g+=`?${b}`),g};function Jj(e){const n=e.body!==void 0;if(n&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(n)return e.body}const Wj=async(e,n)=>{const s=typeof n=="function"?await n(e):n;if(s)return e.scheme==="bearer"?`Bearer ${s}`:e.scheme==="basic"?`Basic ${btoa(s)}`:s},Hv=({allowReserved:e,array:n,object:s}={})=>u=>{const f=[];if(u&&typeof u=="object")for(const g in u){const b=u[g];if(b!=null)if(Array.isArray(b)){const x=Gv({allowReserved:e,explode:!0,name:g,style:"form",value:b,...n});x&&f.push(x)}else if(typeof b=="object"){const x=$v({allowReserved:e,explode:!0,name:g,style:"deepObject",value:b,...s});x&&f.push(x)}else{const x=du({allowReserved:e,name:g,value:b});x&&f.push(x)}}return f.join("&")},e4=e=>{if(!e)return"stream";const n=e.split(";")[0]?.trim();if(n){if(n.startsWith("application/json")||n.endsWith("+json"))return"json";if(n==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>n.startsWith(s)))return"blob";if(n.startsWith("text/"))return"text"}},t4=(e,n)=>n?!!(e.headers.has(n)||e.query?.[n]||e.headers.get("Cookie")?.includes(`${n}=`)):!1,a4=async({security:e,...n})=>{for(const s of e){if(t4(n,s.name))continue;const r=await Wj(s,n.auth);if(!r)continue;const u=s.name??"Authorization";switch(s.in){case"query":n.query||(n.query={}),n.query[u]=r;break;case"cookie":n.headers.append("Cookie",`${u}=${r}`);break;default:n.headers.set(u,r);break}}},Sy=e=>Xj({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:Hv(e.querySerializer),url:e.url}),jy=(e,n)=>{const s={...e,...n};return s.baseUrl?.endsWith("/")&&(s.baseUrl=s.baseUrl.substring(0,s.baseUrl.length-1)),s.headers=Kv(e.headers,n.headers),s},n4=e=>{const n=[];return e.forEach((s,r)=>{n.push([r,s])}),n},Kv=(...e)=>{const n=new Headers;for(const s of e){if(!s)continue;const r=s instanceof Headers?n4(s):Object.entries(s);for(const[u,f]of r)if(f===null)n.delete(u);else if(Array.isArray(f))for(const g of f)n.append(u,g);else f!==void 0&&n.set(u,typeof f=="object"?JSON.stringify(f):f)}return n};class tp{fns=[];clear(){this.fns=[]}eject(n){const s=this.getInterceptorIndex(n);this.fns[s]&&(this.fns[s]=null)}exists(n){const s=this.getInterceptorIndex(n);return!!this.fns[s]}getInterceptorIndex(n){return typeof n=="number"?this.fns[n]?n:-1:this.fns.indexOf(n)}update(n,s){const r=this.getInterceptorIndex(n);return this.fns[r]?(this.fns[r]=s,n):!1}use(n){return this.fns.push(n),this.fns.length-1}}const i4=()=>({error:new tp,request:new tp,response:new tp}),s4=Hv({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),o4={"Content-Type":"application/json"},Qv=(e={})=>({...$j,headers:o4,parseAs:"auto",querySerializer:s4,...e}),Zv=(e={})=>{let n=jy(Qv(),e);const s=()=>({...n}),r=k=>(n=jy(n,k),s()),u=i4(),f=async k=>{const S={...n,...k,fetch:k.fetch??n.fetch??globalThis.fetch,headers:Kv(n.headers,k.headers),serializedBody:void 0};S.security&&await a4({...S,security:S.security}),S.requestValidator&&await S.requestValidator(S),S.body!==void 0&&S.bodySerializer&&(S.serializedBody=S.bodySerializer(S.body)),(S.body===void 0||S.serializedBody==="")&&S.headers.delete("Content-Type");const C=Sy(S);return{opts:S,url:C}},g=async k=>{const{opts:S,url:C}=await f(k),j={redirect:"follow",...S,body:Jj(S)};let E=new Request(C,j);for(const oe of u.request.fns)oe&&(E=await oe(E,S));const B=S.fetch;let q=await B(E);for(const oe of u.response.fns)oe&&(q=await oe(q,E,S));const U={request:E,response:q};if(q.ok){const oe=(S.parseAs==="auto"?e4(q.headers.get("Content-Type")):S.parseAs)??"json";if(q.status===204||q.headers.get("Content-Length")==="0"){let M;switch(oe){case"arrayBuffer":case"blob":case"text":M=await q[oe]();break;case"formData":M=new FormData;break;case"stream":M=q.body;break;default:M={};break}return S.responseStyle==="data"?M:{data:M,...U}}let ge;switch(oe){case"arrayBuffer":case"blob":case"formData":case"json":case"text":ge=await q[oe]();break;case"stream":return S.responseStyle==="data"?q.body:{data:q.body,...U}}return oe==="json"&&(S.responseValidator&&await S.responseValidator(ge),S.responseTransformer&&(ge=await S.responseTransformer(ge))),S.responseStyle==="data"?ge:{data:ge,...U}}const G=await q.text();let te;try{te=JSON.parse(G)}catch{}const X=te??G;let ae=X;for(const oe of u.error.fns)oe&&(ae=await oe(X,q,E,S));if(ae=ae||{},S.throwOnError)throw ae;return S.responseStyle==="data"?void 0:{error:ae,...U}},b=k=>S=>g({...S,method:k}),x=k=>async S=>{const{opts:C,url:j}=await f(S);return Hj({...C,body:C.body,headers:C.headers,method:k,onRequest:async(E,B)=>{let q=new Request(E,B);for(const U of u.request.fns)U&&(q=await U(q,C));return q},url:j})};return{buildUrl:Sy,connect:b("CONNECT"),delete:b("DELETE"),get:b("GET"),getConfig:s,head:b("HEAD"),interceptors:u,options:b("OPTIONS"),patch:b("PATCH"),post:b("POST"),put:b("PUT"),request:g,setConfig:r,sse:{connect:x("CONNECT"),delete:x("DELETE"),get:x("GET"),head:x("HEAD"),options:x("OPTIONS"),patch:x("PATCH"),post:x("POST"),put:x("PUT"),trace:x("TRACE")},trace:b("TRACE")}},T=Zv(Qv()),r4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),l4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),c4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e,headers:{"Content-Type":"application/json",...e.headers}}),u4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),Fv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),d4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),m4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),p4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),h4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-setup",...e}),XU=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft",...e}),JU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/create",...e,headers:{"Content-Type":"application/json",...e.headers}}),WU=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),eG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),tG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),aG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),nG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),iG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),sG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),oG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-paired-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),rG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",...e,headers:{"Content-Type":"application/json",...e.headers}}),lG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),cG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),uG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),dG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),mG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),pG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),hG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",...e}),fG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",...e}),gG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/publish",...e,headers:{"Content-Type":"application/json",...e.headers}}),yG=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/discard",...e}),Yv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-overview",...e}),f4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-evidence",...e}),g4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-question-result",...e}),y4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-competitors",...e}),b4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),v4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),x4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),k4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),w4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),S4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),j4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),Xv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),A4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),C4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),N4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),_4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e}),z4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),D4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),E4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),Jv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),T4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),R4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),O4=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),Wv=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),B4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),q4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),M4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),P4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),I4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),V4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),ex=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),L4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),U4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),G4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),$4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),H4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),tx=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),K4=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),Q4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),Z4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),F4=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),Y4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),X4=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),J4=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),W4=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/status",...e}),e5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),t5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/customers",...e}),a5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),n5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/sync",...e}),i5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/snapshots",...e}),s5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/connection",...e}),o5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/status",...e}),r5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),l5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts",...e}),c5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers",...e}),u5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers/{containerId}/workspaces",...e}),d5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),m5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/sync",...e}),p5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/snapshots",...e}),h5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/connection",...e}),f5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e}),g5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e,headers:{"Content-Type":"application/json",...e.headers}}),y5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}/integrity",...e}),b5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),v5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),x5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),k5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),w5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),S5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),j5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),A5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),C5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),N5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),_5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),z5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),ax=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),D5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),E5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),T5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),R5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),O5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),B5=e=>(e.client??T).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),q5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),M5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),P5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),I5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),V5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),L5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),U5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),G5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),$5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),H5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),K5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),nx=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),Q5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),Z5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),F5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),Y5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),X5=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),J5=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),W5=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),e6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),t6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),a6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),n6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),i6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),s6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),o6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),r6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),l6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),c6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),u6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),d6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),m6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),p6=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),h6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),f6=e=>(e?.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),g6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),y6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),b6=e=>(e?.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),v6=e=>(e.client??T).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),x6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),k6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),w6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),S6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),j6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),A6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),C6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),N6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),_6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),z6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),D6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),E6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),T6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),R6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),O6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),B6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),q6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e}),M6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e,headers:{"Content-Type":"application/json",...e.headers}}),P6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),I6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),V6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),L6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl",...e}),U6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/graph",...e}),G6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages/audit",...e}),ix=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages",...e}),$6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/structure",...e}),H6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/internal-links/neighbors",...e}),K6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/dead-links",...e}),Q6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e}),Z6=e=>(e.client??T).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),F6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/progress",...e}),Y6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/page-health-preview",...e}),X6=e=>(e.client??T).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function J6(e){const n={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return Zv(n)}class oa extends Error{code;statusCode;details;constructor(n,s,r,u){super(n),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=s,this.details=u}}function W6(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function eA(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function p0(e){const n=eA();if(!n)return e;let s;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{s=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(s.origin!==u)return e;const g=`${f0().replace(/\/$/,"")}/api/v1`;return s.pathname!==g&&!s.pathname.startsWith(`${g}/`)?e:(s.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?s.toString():`${s.pathname}${s.search}${s.hash}`)}function tA(e,n){const s={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(s.body=e.body,s.duplex="half"),new Request(n,s)}function sx(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function aA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function nA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function iA(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function sA(){return sx()!==null}function oA(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const h0=oA();function rA(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function f0(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function lA(e){const n=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return n==="localhost"||n==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(n)}function cA(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!lA(e.hostname))return;const s=e.port?`:${e.port}`:"",r=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${s}${r}`}function bG(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function vG(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function uA(){if(!(typeof window>"u"))return cA(window.location,f0())}function dA(e){return`${f0()}${e}`}function mA(e,n){if(n===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function pA(){return""}function ap(){return!!pA()}let ox=null;function Ay(e){ox=e}function g0(){ox?.()}const se=J6({baseUrl:rA()});se.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&g0(),e));se.interceptors.request.use(e=>{const n=p0(e.url);return n===e.url?e:tA(e,n)});async function de(e){const n=await e();if(n.error!==void 0&&n.error!==null){const s=n.response.status;let r=`API ${s}: ${n.response.statusText}`,u,f;if(typeof n.error=="object"&&n.error!==null){const g=n.error.error;if(typeof g=="string")r=g;else if(g&&typeof g=="object"){const b=g;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}else{const b=n.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}}else typeof n.error=="string"&&(r=n.error);throw new oa(r,s,u,f)}if(n.response.status!==204)return n.data}async function Do(e,n){const s=n?.body!=null,r=await fetch(p0(`${h0}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...s?{"Content-Type":"application/json"}:{},...n?.headers}});if(!r.ok){const u=await r.text();let f=`API ${r.status}: ${r.statusText}`,g,b;if(u)try{const x=JSON.parse(u);typeof x.error=="string"?f=x.error:x.error?.message?(f=x.error.message,g=x.error.code,b=x.error.details):x.message&&(f=x.message)}catch{f=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&g0(),new oa(f,r.status,g,b)}if(r.status!==204)return r.json()}function hA(e){return de(()=>Fv({client:se,path:{name:e}}))}function xG(e){return de(()=>Jv({client:se,path:{name:e}}))}function Zc(e){return de(()=>Wv({client:se,path:{id:e}}))}function rx(e){return de(()=>Xv({client:se,path:{name:e}}))}function fA(e){return de(()=>_4({client:se,path:{name:e}}))}function gA(e,n,s){return de(()=>P4({client:se,path:{name:e},query:{location:n,limit:s}}))}function lx(e,n){return de(()=>d6({client:se,path:{name:e},query:{location:n?.location,since:n?.since}}))}function cx(e,n){return de(()=>d4({client:se,path:{name:e},body:n}))}function ux(e){return de(()=>c4({client:se,body:e}))}function yA(e,n){return de(()=>C4({client:se,path:{name:e},body:{queries:n}}))}function bA(e,n){return de(()=>A4({client:se,path:{name:e},body:{queries:n}}))}function kG(e,n){return de(()=>j4({client:se,path:{name:e},body:{queries:n}}))}function vA(e,n){return de(()=>u6({client:se,path:{name:e},body:n}))}function xA(e,n){return de(()=>D4({client:se,path:{name:e},body:{competitors:n}}))}function wG(e,n){return de(()=>z4({client:se,path:{name:e},body:{competitors:n}}))}function SG(e,n){return de(()=>E4({client:se,path:{name:e,id:n}}))}async function jG(e,n){const s=await hA(e);return cx(e,{displayName:n.displayName??s.displayName??s.name,canonicalDomain:n.canonicalDomain??s.canonicalDomain,ownedDomains:n.ownedDomains??s.ownedDomains,aliases:n.aliases??s.aliases,country:n.country??s.country,language:n.language??s.language,tags:s.tags,labels:s.labels,providers:n.providers??s.providers,providerModels:n.providerModels??s.providerModels??{},locations:n.locations??s.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:s.defaultLocation,autoExtractBacklinks:s.autoExtractBacklinks})}function kA(e,n){const s={};return n?.location&&(s.location=n.location),n?.allLocations&&(s.allLocations=!0),n?.noLocation&&(s.noLocation=!0),de(()=>T4({client:se,path:{name:e},body:s}))}function AG(e,n){return de(()=>k4({client:se,path:{name:e},body:n}))}async function CG(e,n){await de(()=>w4({client:se,path:{name:e,label:n}}))}function NG(e,n){return de(()=>S4({client:se,path:{name:e},body:{label:n}}))}async function _G(e){await de(()=>u4({client:se,path:{name:e}}))}function zG(){return de(()=>ex({client:se}))}function Cy(){return Do("/session")}function wA(e){return Do("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function SA(e){return Do("/session",{method:"POST",body:JSON.stringify({password:e})})}function Ny(){return Do("/auth/session")}function jA(e,n){return Do("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function _y(){return Do("/auth/logout",{method:"POST"})}function AA(e,n){return de(()=>L4({client:se,path:{name:e},body:n}))}async function CA(e){for(let n=0;n<2;n+=1)try{await de(()=>X4({client:se,body:e}));return}catch(s){if(!(!(s instanceof oa)||s.statusCode>=500)||n===1)return}}function DG(e){return de(()=>U4({client:se,body:e}))}async function EG(e){try{return await de(()=>tx({client:se,path:{name:e}}))}catch(n){if(n instanceof oa&&n.statusCode===404)return null;throw n}}function TG(e,n){return de(()=>K4({client:se,path:{name:e},body:n}))}async function RG(e){await de(()=>H4({client:se,path:{name:e}}))}function OG(e){return de(()=>Q4({client:se,path:{name:e}}))}function BG(e,n){return de(()=>Z4({client:se,path:{name:e},body:n}))}async function qG(e,n){await de(()=>F4({client:se,path:{name:e,id:n}}))}function MG(e,n){return de(()=>Y4({client:se,path:{name:e,id:n}}))}function NA(e,n,s){return de(()=>N4({client:se,path:{name:e},body:{provider:n,count:s}}))}function _A(e){return de(()=>B4({client:se,body:e}))}function zA(e){return de(()=>O4({client:se,body:e??{}}))}function PG(e,n){const s=uA();return de(()=>v5({client:se,path:{name:e},body:{type:n,...s?{publicUrl:s}:{}}}))}function IG(e,n){return de(()=>x5({client:se,path:{name:e,type:n}}))}function VG(e,n,s){return de(()=>w5({client:se,path:{name:e,type:n},body:{propertyId:s}}))}function LG(e,n,s){return de(()=>S5({client:se,path:{name:e,type:n},body:{sitemapUrl:s}}))}function DA(e,n){return de(()=>j5({client:se,path:{name:e},body:n??{}}))}function UG(e,n){const s={};return n&&n!=="all"&&(s.window=n),de(()=>I4({client:se,path:{name:e},query:s}))}function GG(e,n){return de(()=>N5({client:se,path:{name:e},body:{url:n}}))}function EA(e){return de(()=>ax({client:se,path:{name:e}}))}function TA(e,n){return de(()=>T5({client:se,path:{name:e},body:n??{}}))}function $G(e,n){return de(()=>E5({client:se,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function HG(e,n){return de(()=>r4({client:se,path:{name:e},body:{sitemapUrls:n}}))}function RA(e,n){return de(()=>Z6({client:se,path:{name:e},body:n??{}}))}function KG(e,n){return de(()=>R6({client:se,path:{name:e},body:n??{}}))}function QG(e,n,s){return de(()=>M6({client:se,path:{name:e,id:n},body:s??{}}))}function ZG(){return de(()=>J4({client:se}))}function FG(e,n){return de(()=>$4({client:se,body:{host:e,port:n}}))}function YG(e,n){return de(()=>R5({client:se,path:{name:e},body:n}))}function XG(e,n){return de(()=>U5({client:se,path:{name:e},body:{apiKey:n}}))}function JG(e){return de(()=>G5({client:se,path:{name:e}}))}function WG(e,n){return de(()=>K5({client:se,path:{name:e},body:{siteUrl:n}}))}function OA(e){return de(()=>nx({client:se,path:{name:e}}))}function e$(e,n){return de(()=>Z5({client:se,path:{name:e},body:{url:n}}))}function t$(e,n){return de(()=>F5({client:se,path:{name:e},body:{}}))}function a$(e,n){return de(()=>Y5({client:se,path:{name:e},body:n}))}function n$(e){return de(()=>G4({client:se,body:{apiKey:e}}))}function dx(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function i$(e,n="agency",s){const r=new URLSearchParams({audience:n});s!==void 0&&r.set("period",String(s));const u=await fetch(p0(`${h0}/projects/${encodeURIComponent(e)}/report.html?${r.toString()}`),{credentials:"same-origin",headers:{}});if(!u.ok)throw new oa(`Failed to download report: ${u.status}`,u.status);const f=await u.blob(),g=URL.createObjectURL(f),b=dx(u.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,x=document.createElement("a");x.href=g,x.download=b,document.body.appendChild(x),x.click(),document.body.removeChild(x),URL.revokeObjectURL(g)}async function s$(e,n){const s=await fetch(`${h0}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!s.ok)throw new oa(`Failed to download results: ${s.status}`,s.status);const r=await s.blob(),u=URL.createObjectURL(r),f=dx(s.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,g=document.createElement("a");g.href=u,g.download=f,document.body.appendChild(g),g.click(),document.body.removeChild(g),URL.revokeObjectURL(u)}function o$(e,n){return de(()=>t6({client:se,path:{name:e},body:{}}))}function r$(e,n){return de(()=>J5({client:se,path:{name:e},body:n}))}function l$(e){return de(()=>W5({client:se,path:{name:e}}))}function c$(e,n){return de(()=>j6({client:se,path:{name:e},body:n}))}function u$(e,n){return de(()=>A6({client:se,path:{name:e},body:n}))}function d$(e,n){return de(()=>C6({client:se,path:{name:e},body:n}))}function m$(e,n,s){return de(()=>N6({client:se,path:{name:e,id:n},body:s??{}}))}function p$(e,n,s){return de(()=>_6({client:se,path:{name:e,id:n},body:{}}))}function BA(e,n){return de(()=>o6({client:se,path:{name:e},query:{runId:n}}))}function qA(e){if(!e||typeof e!="object")return;const n=e;if(!(typeof n.current!="string"||typeof n.latest!="string"||typeof n.url!="string"||typeof n.upgradeCommand!="string"))return{current:n.current,latest:n.latest,url:n.url,upgradeCommand:n.upgradeCommand}}async function MA(e,n){const s=dA(e);try{const r=await fetch(s,{credentials:"same-origin"});if(!r.ok)return{label:n,state:"error",detail:`${n} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:mA(e,r.status)};const u=await r.json(),f=typeof u.version=="string"?u.version:"unknown",g=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,x=qA(u.updateAvailable),k=[f,g===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:k,version:f,databaseConfigured:g,lastHeartbeatAt:b,...x?{updateAvailable:x}:{}}}catch(r){return{label:n,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${s}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function h$(){return de(()=>m6({client:se}))}function f$(){return de(()=>p6({client:se}))}function g$(){return de(()=>g6({client:se}))}function y$(){return de(()=>h6({client:se}))}function b$(e){return de(()=>f6({client:se,body:e?{release:e}:{}}))}function v$(){return de(()=>y6({client:se}))}function x$(){return de(()=>b6({client:se}))}function k$(e){return de(()=>v6({client:se,path:{release:e}}))}function w$(e,n={}){return de(()=>k6({client:se,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function S$(e,n={}){return de(()=>w6({client:se,path:{name:e},query:{limit:n.limit!==void 0?String(n.limit):void 0,offset:n.offset!==void 0?String(n.offset):void 0,release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function j$(e,n={}){return de(()=>S6({client:se,path:{name:e},query:{source:n.source}}))}function A$(e,n){return de(()=>x6({client:se,path:{name:e},body:{release:void 0}}))}const mx={account:null,canWrite:!0,isAdmin:!0},px=D.createContext(mx);function PA({account:e,children:n}){const s=e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:mx;return c.jsx(px.Provider,{value:s,children:n})}function al(){return D.useContext(px)}const hx="View only — your account cannot change this.";function $t(e){return(...n)=>{e(...n)}}const IA=6e3,VA=5,LA=180;let ea=[],UA=0;const Dp=new Set,Ep=new Map,Tp=new Map;function Fc(){const e=[...ea];for(const n of Dp)n(e)}function y0(e){const n=Ep.get(e);n&&(clearTimeout(n),Ep.delete(e));const s=Tp.get(e);s&&(clearTimeout(s),Tp.delete(e))}function fx(e){y0(e);const n=ea.length;ea=ea.filter(s=>s.id!==e),ea.length!==n&&Fc()}function zy(e){y0(e.id),Ep.set(e.id,setTimeout(()=>{Rp(e.id)},e.durationMs))}function GA(e,n,s){return typeof e=="string"?{title:e,tone:n,durationMs:s}:e}function Yt(e,n="negative",s=IA){const r=GA(e,n,s),u={id:String(++UA),title:r.title,detail:r.detail,tone:r.tone??n,durationMs:r.durationMs??s,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const f=ea.find(g=>g.dedupeKey===r.dedupeKey);if(f){if((r.dedupeMode??"drop")==="drop")return f.id;const g={...f,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return ea=ea.map(b=>b.id===f.id?g:b),Fc(),zy(g),f.id}}return ea.length>=VA&&fx(ea[0].id),ea=[...ea,u],Fc(),zy(u),u.id}function Rp(e){const n=ea.find(s=>s.id===e);!n||n.state==="closing"||(y0(e),ea=ea.map(s=>s.id===e?{...s,state:"closing"}:s),Fc(),Tp.set(e,setTimeout(()=>{fx(e)},LA)))}function $A(e){return Dp.add(e),()=>{Dp.delete(e)}}function Dy(){return ea}const HA=5*6e4,Op=30*6e4,C$=3e4,N$=6e4,vo=3e4,KA=2e3,QA=3e4;function ZA(){return new oj({defaultOptions:{queries:{staleTime:HA,retry:1,refetchOnWindowFocus:!1}},mutationCache:new rj({onError:(n,s,r,u)=>{u.meta?.skipGlobalErrorToast||Yt({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const FA="modulepreload",YA=function(e,n){return new URL(e,n).href},Ey={},Ln=function(n,s,r){let u=Promise.resolve();if(s&&s.length>0){let k=function(S){return Promise.all(S.map(C=>Promise.resolve(C).then(j=>({status:"fulfilled",value:j}),j=>({status:"rejected",reason:j}))))};const g=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),x=b?.nonce||b?.getAttribute("nonce");u=k(s.map(S=>{if(S=YA(S,r),S in Ey)return;Ey[S]=!0;const C=S.endsWith(".css"),j=C?'[rel="stylesheet"]':"";if(r)for(let B=g.length-1;B>=0;B--){const q=g[B];if(q.href===S&&(!C||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${j}`))return;const E=document.createElement("link");if(E.rel=C?"stylesheet":FA,C||(E.as="script"),E.crossOrigin="",E.href=S,x&&E.setAttribute("nonce",x),document.head.appendChild(E),C)return new Promise((B,q)=>{E.addEventListener("load",B),E.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${S}`)))})}))}function f(g){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=g,window.dispatchEvent(b),!b.defaultPrevented)throw g}return u.then(g=>{for(const b of g||[])b.status==="rejected"&&f(b.reason);return n().catch(f)})};function Q(e,n,s){function r(b,x){if(b._zod||Object.defineProperty(b,"_zod",{value:{def:x,constr:g,traits:new Set},enumerable:!1}),b._zod.traits.has(e))return;b._zod.traits.add(e),n(b,x);const k=g.prototype,S=Object.keys(k);for(let C=0;C<S.length;C++){const j=S[C];j in b||(b[j]=k[j].bind(b))}}const u=s?.Parent??Object;class f extends u{}Object.defineProperty(f,"name",{value:e});function g(b){var x;const k=s?.Parent?new f:this;r(k,b),(x=k._zod).deferred??(x.deferred=[]);for(const S of k._zod.deferred)S();return k}return Object.defineProperty(g,"init",{value:r}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>s?.Parent&&b instanceof s.Parent?!0:b?._zod?.traits?.has(e)}),Object.defineProperty(g,"name",{value:e}),g}class fo extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class gx extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}}const yx={};function Si(e){return yx}function bx(e){const n=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,u])=>n.indexOf(+r)===-1).map(([r,u])=>u)}function Bp(e,n){return typeof n=="bigint"?n.toString():n}function mu(e){return{get value(){{const n=e();return Object.defineProperty(this,"value",{value:n}),n}}}}function b0(e){return e==null}function v0(e){const n=e.startsWith("^")?1:0,s=e.endsWith("$")?e.length-1:e.length;return e.slice(n,s)}function XA(e,n){const s=(e.toString().split(".")[1]||"").length,r=n.toString();let u=(r.split(".")[1]||"").length;if(u===0&&/\d?e-\d?/.test(r)){const x=r.match(/\d?e-(\d?)/);x?.[1]&&(u=Number.parseInt(x[1]))}const f=s>u?s:u,g=Number.parseInt(e.toFixed(f).replace(".","")),b=Number.parseInt(n.toFixed(f).replace(".",""));return g%b/10**f}const Ty=Symbol("evaluating");function it(e,n,s){let r;Object.defineProperty(e,n,{get(){if(r!==Ty)return r===void 0&&(r=Ty,r=s()),r},set(u){Object.defineProperty(e,n,{value:u})},configurable:!0})}function hs(e,n,s){Object.defineProperty(e,n,{value:s,writable:!0,enumerable:!0,configurable:!0})}function Ni(...e){const n={};for(const s of e){const r=Object.getOwnPropertyDescriptors(s);Object.assign(n,r)}return Object.defineProperties({},n)}function Ry(e){return JSON.stringify(e)}function JA(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const vx="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const WA=mu(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function xo(e){if(Fr(e)===!1)return!1;const n=e.constructor;if(n===void 0||typeof n!="function")return!0;const s=n.prototype;return!(Fr(s)===!1||Object.prototype.hasOwnProperty.call(s,"isPrototypeOf")===!1)}function xx(e){return xo(e)?{...e}:Array.isArray(e)?[...e]:e}const eC=new Set(["string","number","symbol"]);function ko(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _i(e,n,s){const r=new e._zod.constr(n??e._zod.def);return(!n||s?.parent)&&(r._zod.parent=e),r}function ze(e){const n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function tC(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}const aC={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function nC(e,n){const s=e._zod.def,r=s.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const f=Ni(e._zod.def,{get shape(){const g={};for(const b in n){if(!(b in s.shape))throw new Error(`Unrecognized key: "${b}"`);n[b]&&(g[b]=s.shape[b])}return hs(this,"shape",g),g},checks:[]});return _i(e,f)}function iC(e,n){const s=e._zod.def,r=s.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const f=Ni(e._zod.def,{get shape(){const g={...e._zod.def.shape};for(const b in n){if(!(b in s.shape))throw new Error(`Unrecognized key: "${b}"`);n[b]&&delete g[b]}return hs(this,"shape",g),g},checks:[]});return _i(e,f)}function sC(e,n){if(!xo(n))throw new Error("Invalid input to extend: expected a plain object");const s=e._zod.def.checks;if(s&&s.length>0){const f=e._zod.def.shape;for(const g in n)if(Object.getOwnPropertyDescriptor(f,g)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const u=Ni(e._zod.def,{get shape(){const f={...e._zod.def.shape,...n};return hs(this,"shape",f),f}});return _i(e,u)}function oC(e,n){if(!xo(n))throw new Error("Invalid input to safeExtend: expected a plain object");const s=Ni(e._zod.def,{get shape(){const r={...e._zod.def.shape,...n};return hs(this,"shape",r),r}});return _i(e,s)}function rC(e,n){const s=Ni(e._zod.def,{get shape(){const r={...e._zod.def.shape,...n._zod.def.shape};return hs(this,"shape",r),r},get catchall(){return n._zod.def.catchall},checks:[]});return _i(e,s)}function lC(e,n,s){const u=n._zod.def.checks;if(u&&u.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const g=Ni(n._zod.def,{get shape(){const b=n._zod.def.shape,x={...b};if(s)for(const k in s){if(!(k in b))throw new Error(`Unrecognized key: "${k}"`);s[k]&&(x[k]=e?new e({type:"optional",innerType:b[k]}):b[k])}else for(const k in b)x[k]=e?new e({type:"optional",innerType:b[k]}):b[k];return hs(this,"shape",x),x},checks:[]});return _i(n,g)}function cC(e,n,s){const r=Ni(n._zod.def,{get shape(){const u=n._zod.def.shape,f={...u};if(s)for(const g in s){if(!(g in f))throw new Error(`Unrecognized key: "${g}"`);s[g]&&(f[g]=new e({type:"nonoptional",innerType:u[g]}))}else for(const g in u)f[g]=new e({type:"nonoptional",innerType:u[g]});return hs(this,"shape",f),f}});return _i(n,r)}function mo(e,n=0){if(e.aborted===!0)return!0;for(let s=n;s<e.issues.length;s++)if(e.issues[s]?.continue!==!0)return!0;return!1}function po(e,n){return n.map(s=>{var r;return(r=s).path??(r.path=[]),s.path.unshift(e),s})}function Dc(e){return typeof e=="string"?e:e?.message}function ji(e,n,s){const r={...e,path:e.path??[]};if(!e.message){const u=Dc(e.inst?._zod.def?.error?.(e))??Dc(n?.error?.(e))??Dc(s.customError?.(e))??Dc(s.localeError?.(e))??"Invalid input";r.message=u}return delete r.inst,delete r.continue,n?.reportInput||delete r.input,r}function x0(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Yr(...e){const[n,s,r]=e;return typeof n=="string"?{message:n,code:"custom",input:s,inst:r}:{...n}}const kx=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,Bp,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},wx=Q("$ZodError",kx),Sx=Q("$ZodError",kx,{Parent:Error});function uC(e,n=s=>s.message){const s={},r=[];for(const u of e.issues)u.path.length>0?(s[u.path[0]]=s[u.path[0]]||[],s[u.path[0]].push(n(u))):r.push(n(u));return{formErrors:r,fieldErrors:s}}function dC(e,n=s=>s.message){const s={_errors:[]},r=u=>{for(const f of u.issues)if(f.code==="invalid_union"&&f.errors.length)f.errors.map(g=>r({issues:g}));else if(f.code==="invalid_key")r({issues:f.issues});else if(f.code==="invalid_element")r({issues:f.issues});else if(f.path.length===0)s._errors.push(n(f));else{let g=s,b=0;for(;b<f.path.length;){const x=f.path[b];b===f.path.length-1?(g[x]=g[x]||{_errors:[]},g[x]._errors.push(n(f))):g[x]=g[x]||{_errors:[]},g=g[x],b++}}};return r(e),s}const k0=e=>(n,s,r,u)=>{const f=r?Object.assign(r,{async:!1}):{async:!1},g=n._zod.run({value:s,issues:[]},f);if(g instanceof Promise)throw new fo;if(g.issues.length){const b=new(u?.Err??e)(g.issues.map(x=>ji(x,f,Si())));throw vx(b,u?.callee),b}return g.value},w0=e=>async(n,s,r,u)=>{const f=r?Object.assign(r,{async:!0}):{async:!0};let g=n._zod.run({value:s,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){const b=new(u?.Err??e)(g.issues.map(x=>ji(x,f,Si())));throw vx(b,u?.callee),b}return g.value},pu=e=>(n,s,r)=>{const u=r?{...r,async:!1}:{async:!1},f=n._zod.run({value:s,issues:[]},u);if(f instanceof Promise)throw new fo;return f.issues.length?{success:!1,error:new(e??wx)(f.issues.map(g=>ji(g,u,Si())))}:{success:!0,data:f.value}},mC=pu(Sx),hu=e=>async(n,s,r)=>{const u=r?Object.assign(r,{async:!0}):{async:!0};let f=n._zod.run({value:s,issues:[]},u);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new e(f.issues.map(g=>ji(g,u,Si())))}:{success:!0,data:f.value}},pC=hu(Sx),hC=e=>(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return k0(e)(n,s,u)},fC=e=>(n,s,r)=>k0(e)(n,s,r),gC=e=>async(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return w0(e)(n,s,u)},yC=e=>async(n,s,r)=>w0(e)(n,s,r),bC=e=>(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return pu(e)(n,s,u)},vC=e=>(n,s,r)=>pu(e)(n,s,r),xC=e=>async(n,s,r)=>{const u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return hu(e)(n,s,u)},kC=e=>async(n,s,r)=>hu(e)(n,s,r),wC=/^[cC][^\s-]{8,}$/,SC=/^[0-9a-z]+$/,jC=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,AC=/^[0-9a-vA-V]{20}$/,CC=/^[A-Za-z0-9]{27}$/,NC=/^[a-zA-Z0-9_-]{21}$/,_C=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,zC=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Oy=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,DC=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,EC="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function TC(){return new RegExp(EC,"u")}const RC=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,OC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,BC=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,qC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,MC=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,jx=/^[A-Za-z0-9_-]*$/,PC=/^\+[1-9]\d{6,14}$/,Ax="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",IC=new RegExp(`^${Ax}$`);function Cx(e){const n="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${n}`:e.precision===0?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}function VC(e){return new RegExp(`^${Cx(e)}$`)}function LC(e){const n=Cx({precision:e.precision}),s=["Z"];e.local&&s.push(""),e.offset&&s.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${n}(?:${s.join("|")})`;return new RegExp(`^${Ax}T(?:${r})$`)}const UC=e=>{const n=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${n}$`)},GC=/^-?\d+$/,Nx=/^-?\d+(?:\.\d+)?$/,$C=/^(?:true|false)$/i,HC=/^null$/i,KC=/^[^A-Z]*$/,QC=/^[^a-z]*$/,ba=Q("$ZodCheck",(e,n)=>{var s;e._zod??(e._zod={}),e._zod.def=n,(s=e._zod).onattach??(s.onattach=[])}),_x={number:"number",bigint:"bigint",object:"date"},zx=Q("$ZodCheckLessThan",(e,n)=>{ba.init(e,n);const s=_x[typeof n.value];e._zod.onattach.push(r=>{const u=r._zod.bag,f=(n.inclusive?u.maximum:u.exclusiveMaximum)??Number.POSITIVE_INFINITY;n.value<f&&(n.inclusive?u.maximum=n.value:u.exclusiveMaximum=n.value)}),e._zod.check=r=>{(n.inclusive?r.value<=n.value:r.value<n.value)||r.issues.push({origin:s,code:"too_big",maximum:typeof n.value=="object"?n.value.getTime():n.value,input:r.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),Dx=Q("$ZodCheckGreaterThan",(e,n)=>{ba.init(e,n);const s=_x[typeof n.value];e._zod.onattach.push(r=>{const u=r._zod.bag,f=(n.inclusive?u.minimum:u.exclusiveMinimum)??Number.NEGATIVE_INFINITY;n.value>f&&(n.inclusive?u.minimum=n.value:u.exclusiveMinimum=n.value)}),e._zod.check=r=>{(n.inclusive?r.value>=n.value:r.value>n.value)||r.issues.push({origin:s,code:"too_small",minimum:typeof n.value=="object"?n.value.getTime():n.value,input:r.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),ZC=Q("$ZodCheckMultipleOf",(e,n)=>{ba.init(e,n),e._zod.onattach.push(s=>{var r;(r=s._zod.bag).multipleOf??(r.multipleOf=n.value)}),e._zod.check=s=>{if(typeof s.value!=typeof n.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof s.value=="bigint"?s.value%n.value===BigInt(0):XA(s.value,n.value)===0)||s.issues.push({origin:typeof s.value,code:"not_multiple_of",divisor:n.value,input:s.value,inst:e,continue:!n.abort})}}),FC=Q("$ZodCheckNumberFormat",(e,n)=>{ba.init(e,n),n.format=n.format||"float64";const s=n.format?.includes("int"),r=s?"int":"number",[u,f]=aC[n.format];e._zod.onattach.push(g=>{const b=g._zod.bag;b.format=n.format,b.minimum=u,b.maximum=f,s&&(b.pattern=GC)}),e._zod.check=g=>{const b=g.value;if(s){if(!Number.isInteger(b)){g.issues.push({expected:r,format:n.format,code:"invalid_type",continue:!1,input:b,inst:e});return}if(!Number.isSafeInteger(b)){b>0?g.issues.push({input:b,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!n.abort}):g.issues.push({input:b,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!n.abort});return}}b<u&&g.issues.push({origin:"number",input:b,code:"too_small",minimum:u,inclusive:!0,inst:e,continue:!n.abort}),b>f&&g.issues.push({origin:"number",input:b,code:"too_big",maximum:f,inclusive:!0,inst:e,continue:!n.abort})}}),YC=Q("$ZodCheckMaxLength",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<u&&(r._zod.bag.maximum=n.maximum)}),e._zod.check=r=>{const u=r.value;if(u.length<=n.maximum)return;const g=x0(u);r.issues.push({origin:g,code:"too_big",maximum:n.maximum,inclusive:!0,input:u,inst:e,continue:!n.abort})}}),XC=Q("$ZodCheckMinLength",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>u&&(r._zod.bag.minimum=n.minimum)}),e._zod.check=r=>{const u=r.value;if(u.length>=n.minimum)return;const g=x0(u);r.issues.push({origin:g,code:"too_small",minimum:n.minimum,inclusive:!0,input:u,inst:e,continue:!n.abort})}}),JC=Q("$ZodCheckLengthEquals",(e,n)=>{var s;ba.init(e,n),(s=e._zod.def).when??(s.when=r=>{const u=r.value;return!b0(u)&&u.length!==void 0}),e._zod.onattach.push(r=>{const u=r._zod.bag;u.minimum=n.length,u.maximum=n.length,u.length=n.length}),e._zod.check=r=>{const u=r.value,f=u.length;if(f===n.length)return;const g=x0(u),b=f>n.length;r.issues.push({origin:g,...b?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!n.abort})}}),fu=Q("$ZodCheckStringFormat",(e,n)=>{var s,r;ba.init(e,n),e._zod.onattach.push(u=>{const f=u._zod.bag;f.format=n.format,n.pattern&&(f.patterns??(f.patterns=new Set),f.patterns.add(n.pattern))}),n.pattern?(s=e._zod).check??(s.check=u=>{n.pattern.lastIndex=0,!n.pattern.test(u.value)&&u.issues.push({origin:"string",code:"invalid_format",format:n.format,input:u.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(r=e._zod).check??(r.check=()=>{})}),WC=Q("$ZodCheckRegex",(e,n)=>{fu.init(e,n),e._zod.check=s=>{n.pattern.lastIndex=0,!n.pattern.test(s.value)&&s.issues.push({origin:"string",code:"invalid_format",format:"regex",input:s.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),eN=Q("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=KC),fu.init(e,n)}),tN=Q("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=QC),fu.init(e,n)}),aN=Q("$ZodCheckIncludes",(e,n)=>{ba.init(e,n);const s=ko(n.includes),r=new RegExp(typeof n.position=="number"?`^.{${n.position}}${s}`:s);n.pattern=r,e._zod.onattach.push(u=>{const f=u._zod.bag;f.patterns??(f.patterns=new Set),f.patterns.add(r)}),e._zod.check=u=>{u.value.includes(n.includes,n.position)||u.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:u.value,inst:e,continue:!n.abort})}}),nN=Q("$ZodCheckStartsWith",(e,n)=>{ba.init(e,n);const s=new RegExp(`^${ko(n.prefix)}.*`);n.pattern??(n.pattern=s),e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.startsWith(n.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:r.value,inst:e,continue:!n.abort})}}),iN=Q("$ZodCheckEndsWith",(e,n)=>{ba.init(e,n);const s=new RegExp(`.*${ko(n.suffix)}$`);n.pattern??(n.pattern=s),e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.endsWith(n.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:r.value,inst:e,continue:!n.abort})}}),sN=Q("$ZodCheckOverwrite",(e,n)=>{ba.init(e,n),e._zod.check=s=>{s.value=n.tx(s.value)}});class oN{constructor(n=[]){this.content=[],this.indent=0,this&&(this.args=n)}indented(n){this.indent+=1,n(this),this.indent-=1}write(n){if(typeof n=="function"){n(this,{execution:"sync"}),n(this,{execution:"async"});return}const r=n.split(`
|
|
15
15
|
`).filter(g=>g),u=Math.min(...r.map(g=>g.length-g.trimStart().length)),f=r.map(g=>g.slice(u)).map(g=>" ".repeat(this.indent*2)+g);for(const g of f)this.content.push(g)}compile(){const n=Function,s=this?.args,u=[...(this?.content??[""]).map(f=>` ${f}`)];return new n(...s,u.join(`
|
|
16
16
|
`))}}const rN={major:4,minor:3,patch:6},kt=Q("$ZodType",(e,n)=>{var s;e??(e={}),e._zod.def=n,e._zod.bag=e._zod.bag||{},e._zod.version=rN;const r=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&r.unshift(e);for(const u of r)for(const f of u._zod.onattach)f(e);if(r.length===0)(s=e._zod).deferred??(s.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const u=(g,b,x)=>{let k=mo(g),S;for(const C of b){if(C._zod.def.when){if(!C._zod.def.when(g))continue}else if(k)continue;const j=g.issues.length,E=C._zod.check(g);if(E instanceof Promise&&x?.async===!1)throw new fo;if(S||E instanceof Promise)S=(S??Promise.resolve()).then(async()=>{await E,g.issues.length!==j&&(k||(k=mo(g,j)))});else{if(g.issues.length===j)continue;k||(k=mo(g,j))}}return S?S.then(()=>g):g},f=(g,b,x)=>{if(mo(g))return g.aborted=!0,g;const k=u(b,r,x);if(k instanceof Promise){if(x.async===!1)throw new fo;return k.then(S=>e._zod.parse(S,x))}return e._zod.parse(k,x)};e._zod.run=(g,b)=>{if(b.skipChecks)return e._zod.parse(g,b);if(b.direction==="backward"){const k=e._zod.parse({value:g.value,issues:[]},{...b,skipChecks:!0});return k instanceof Promise?k.then(S=>f(S,g,b)):f(k,g,b)}const x=e._zod.parse(g,b);if(x instanceof Promise){if(b.async===!1)throw new fo;return x.then(k=>u(k,r,b))}return u(x,r,b)}}it(e,"~standard",()=>({validate:u=>{try{const f=mC(e,u);return f.success?{value:f.data}:{issues:f.error?.issues}}catch{return pC(e,u).then(g=>g.success?{value:g.data}:{issues:g.error?.issues})}},vendor:"zod",version:1}))}),S0=Q("$ZodString",(e,n)=>{kt.init(e,n),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??UC(e._zod.bag),e._zod.parse=(s,r)=>{if(n.coerce)try{s.value=String(s.value)}catch{}return typeof s.value=="string"||s.issues.push({expected:"string",code:"invalid_type",input:s.value,inst:e}),s}}),wt=Q("$ZodStringFormat",(e,n)=>{fu.init(e,n),S0.init(e,n)}),lN=Q("$ZodGUID",(e,n)=>{n.pattern??(n.pattern=zC),wt.init(e,n)}),cN=Q("$ZodUUID",(e,n)=>{if(n.version){const r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[n.version];if(r===void 0)throw new Error(`Invalid UUID version: "${n.version}"`);n.pattern??(n.pattern=Oy(r))}else n.pattern??(n.pattern=Oy());wt.init(e,n)}),uN=Q("$ZodEmail",(e,n)=>{n.pattern??(n.pattern=DC),wt.init(e,n)}),dN=Q("$ZodURL",(e,n)=>{wt.init(e,n),e._zod.check=s=>{try{const r=s.value.trim(),u=new URL(r);n.hostname&&(n.hostname.lastIndex=0,n.hostname.test(u.hostname)||s.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:n.hostname.source,input:s.value,inst:e,continue:!n.abort})),n.protocol&&(n.protocol.lastIndex=0,n.protocol.test(u.protocol.endsWith(":")?u.protocol.slice(0,-1):u.protocol)||s.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:n.protocol.source,input:s.value,inst:e,continue:!n.abort})),n.normalize?s.value=u.href:s.value=r;return}catch{s.issues.push({code:"invalid_format",format:"url",input:s.value,inst:e,continue:!n.abort})}}}),mN=Q("$ZodEmoji",(e,n)=>{n.pattern??(n.pattern=TC()),wt.init(e,n)}),pN=Q("$ZodNanoID",(e,n)=>{n.pattern??(n.pattern=NC),wt.init(e,n)}),hN=Q("$ZodCUID",(e,n)=>{n.pattern??(n.pattern=wC),wt.init(e,n)}),fN=Q("$ZodCUID2",(e,n)=>{n.pattern??(n.pattern=SC),wt.init(e,n)}),gN=Q("$ZodULID",(e,n)=>{n.pattern??(n.pattern=jC),wt.init(e,n)}),yN=Q("$ZodXID",(e,n)=>{n.pattern??(n.pattern=AC),wt.init(e,n)}),bN=Q("$ZodKSUID",(e,n)=>{n.pattern??(n.pattern=CC),wt.init(e,n)}),vN=Q("$ZodISODateTime",(e,n)=>{n.pattern??(n.pattern=LC(n)),wt.init(e,n)}),xN=Q("$ZodISODate",(e,n)=>{n.pattern??(n.pattern=IC),wt.init(e,n)}),kN=Q("$ZodISOTime",(e,n)=>{n.pattern??(n.pattern=VC(n)),wt.init(e,n)}),wN=Q("$ZodISODuration",(e,n)=>{n.pattern??(n.pattern=_C),wt.init(e,n)}),SN=Q("$ZodIPv4",(e,n)=>{n.pattern??(n.pattern=RC),wt.init(e,n),e._zod.bag.format="ipv4"}),jN=Q("$ZodIPv6",(e,n)=>{n.pattern??(n.pattern=OC),wt.init(e,n),e._zod.bag.format="ipv6",e._zod.check=s=>{try{new URL(`http://[${s.value}]`)}catch{s.issues.push({code:"invalid_format",format:"ipv6",input:s.value,inst:e,continue:!n.abort})}}}),AN=Q("$ZodCIDRv4",(e,n)=>{n.pattern??(n.pattern=BC),wt.init(e,n)}),CN=Q("$ZodCIDRv6",(e,n)=>{n.pattern??(n.pattern=qC),wt.init(e,n),e._zod.check=s=>{const r=s.value.split("/");try{if(r.length!==2)throw new Error;const[u,f]=r;if(!f)throw new Error;const g=Number(f);if(`${g}`!==f)throw new Error;if(g<0||g>128)throw new Error;new URL(`http://[${u}]`)}catch{s.issues.push({code:"invalid_format",format:"cidrv6",input:s.value,inst:e,continue:!n.abort})}}});function Ex(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const NN=Q("$ZodBase64",(e,n)=>{n.pattern??(n.pattern=MC),wt.init(e,n),e._zod.bag.contentEncoding="base64",e._zod.check=s=>{Ex(s.value)||s.issues.push({code:"invalid_format",format:"base64",input:s.value,inst:e,continue:!n.abort})}});function _N(e){if(!jx.test(e))return!1;const n=e.replace(/[-_]/g,r=>r==="-"?"+":"/"),s=n.padEnd(Math.ceil(n.length/4)*4,"=");return Ex(s)}const zN=Q("$ZodBase64URL",(e,n)=>{n.pattern??(n.pattern=jx),wt.init(e,n),e._zod.bag.contentEncoding="base64url",e._zod.check=s=>{_N(s.value)||s.issues.push({code:"invalid_format",format:"base64url",input:s.value,inst:e,continue:!n.abort})}}),DN=Q("$ZodE164",(e,n)=>{n.pattern??(n.pattern=PC),wt.init(e,n)});function EN(e,n=null){try{const s=e.split(".");if(s.length!==3)return!1;const[r]=s;if(!r)return!1;const u=JSON.parse(atob(r));return!("typ"in u&&u?.typ!=="JWT"||!u.alg||n&&(!("alg"in u)||u.alg!==n))}catch{return!1}}const TN=Q("$ZodJWT",(e,n)=>{wt.init(e,n),e._zod.check=s=>{EN(s.value,n.alg)||s.issues.push({code:"invalid_format",format:"jwt",input:s.value,inst:e,continue:!n.abort})}}),Tx=Q("$ZodNumber",(e,n)=>{kt.init(e,n),e._zod.pattern=e._zod.bag.pattern??Nx,e._zod.parse=(s,r)=>{if(n.coerce)try{s.value=Number(s.value)}catch{}const u=s.value;if(typeof u=="number"&&!Number.isNaN(u)&&Number.isFinite(u))return s;const f=typeof u=="number"?Number.isNaN(u)?"NaN":Number.isFinite(u)?void 0:"Infinity":void 0;return s.issues.push({expected:"number",code:"invalid_type",input:u,inst:e,...f?{received:f}:{}}),s}}),RN=Q("$ZodNumberFormat",(e,n)=>{FC.init(e,n),Tx.init(e,n)}),ON=Q("$ZodBoolean",(e,n)=>{kt.init(e,n),e._zod.pattern=$C,e._zod.parse=(s,r)=>{if(n.coerce)try{s.value=!!s.value}catch{}const u=s.value;return typeof u=="boolean"||s.issues.push({expected:"boolean",code:"invalid_type",input:u,inst:e}),s}}),BN=Q("$ZodNull",(e,n)=>{kt.init(e,n),e._zod.pattern=HC,e._zod.values=new Set([null]),e._zod.parse=(s,r)=>{const u=s.value;return u===null||s.issues.push({expected:"null",code:"invalid_type",input:u,inst:e}),s}}),qN=Q("$ZodUnknown",(e,n)=>{kt.init(e,n),e._zod.parse=s=>s}),MN=Q("$ZodNever",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>(s.issues.push({expected:"never",code:"invalid_type",input:s.value,inst:e}),s)});function By(e,n,s){e.issues.length&&n.issues.push(...po(s,e.issues)),n.value[s]=e.value}const PN=Q("$ZodArray",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{const u=s.value;if(!Array.isArray(u))return s.issues.push({expected:"array",code:"invalid_type",input:u,inst:e}),s;s.value=Array(u.length);const f=[];for(let g=0;g<u.length;g++){const b=u[g],x=n.element._zod.run({value:b,issues:[]},r);x instanceof Promise?f.push(x.then(k=>By(k,s,g))):By(x,s,g)}return f.length?Promise.all(f).then(()=>s):s}});function Yc(e,n,s,r,u){if(e.issues.length){if(u&&!(s in r))return;n.issues.push(...po(s,e.issues))}e.value===void 0?s in r&&(n.value[s]=void 0):n.value[s]=e.value}function Rx(e){const n=Object.keys(e.shape);for(const r of n)if(!e.shape?.[r]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${r}": expected a Zod schema`);const s=tC(e.shape);return{...e,keys:n,keySet:new Set(n),numKeys:n.length,optionalKeys:new Set(s)}}function Ox(e,n,s,r,u,f){const g=[],b=u.keySet,x=u.catchall._zod,k=x.def.type,S=x.optout==="optional";for(const C in n){if(b.has(C))continue;if(k==="never"){g.push(C);continue}const j=x.run({value:n[C],issues:[]},r);j instanceof Promise?e.push(j.then(E=>Yc(E,s,C,n,S))):Yc(j,s,C,n,S)}return g.length&&s.issues.push({code:"unrecognized_keys",keys:g,input:n,inst:f}),e.length?Promise.all(e).then(()=>s):s}const IN=Q("$ZodObject",(e,n)=>{if(kt.init(e,n),!Object.getOwnPropertyDescriptor(n,"shape")?.get){const b=n.shape;Object.defineProperty(n,"shape",{get:()=>{const x={...b};return Object.defineProperty(n,"shape",{value:x}),x}})}const r=mu(()=>Rx(n));it(e._zod,"propValues",()=>{const b=n.shape,x={};for(const k in b){const S=b[k]._zod;if(S.values){x[k]??(x[k]=new Set);for(const C of S.values)x[k].add(C)}}return x});const u=Fr,f=n.catchall;let g;e._zod.parse=(b,x)=>{g??(g=r.value);const k=b.value;if(!u(k))return b.issues.push({expected:"object",code:"invalid_type",input:k,inst:e}),b;b.value={};const S=[],C=g.shape;for(const j of g.keys){const E=C[j],B=E._zod.optout==="optional",q=E._zod.run({value:k[j],issues:[]},x);q instanceof Promise?S.push(q.then(U=>Yc(U,b,j,k,B))):Yc(q,b,j,k,B)}return f?Ox(S,k,b,x,r.value,e):S.length?Promise.all(S).then(()=>b):b}}),VN=Q("$ZodObjectJIT",(e,n)=>{IN.init(e,n);const s=e._zod.parse,r=mu(()=>Rx(n)),u=j=>{const E=new oN(["shape","payload","ctx"]),B=r.value,q=X=>{const ae=Ry(X);return`shape[${ae}]._zod.run({ value: input[${ae}], issues: [] }, ctx)`};E.write("const input = payload.value;");const U=Object.create(null);let G=0;for(const X of B.keys)U[X]=`key_${G++}`;E.write("const newResult = {};");for(const X of B.keys){const ae=U[X],oe=Ry(X),M=j[X]?._zod?.optout==="optional";E.write(`const ${ae} = ${q(X)};`),M?E.write(`
|
|
17
17
|
if (${ae}.issues.length) {
|
|
@@ -49,19 +49,19 @@ Error generating stack: `+l.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}E.write("payload.value = newResult;"),E.write("return payload;");const te=E.compile();return(X,ae)=>te(j,X,ae)};let f;const g=Fr,b=!yx.jitless,k=b&&WA.value,S=n.catchall;let C;e._zod.parse=(j,E)=>{C??(C=r.value);const B=j.value;return g(B)?b&&k&&E?.async===!1&&E.jitless!==!0?(f||(f=u(n.shape)),j=f(j,E),S?Ox([],B,j,E,C,e):j):s(j,E):(j.issues.push({expected:"object",code:"invalid_type",input:B,inst:e}),j)}});function qy(e,n,s,r){for(const f of e)if(f.issues.length===0)return n.value=f.value,n;const u=e.filter(f=>!mo(f));return u.length===1?(n.value=u[0].value,u[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:s,errors:e.map(f=>f.issues.map(g=>ji(g,r,Si())))}),n)}const Bx=Q("$ZodUnion",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.options.some(u=>u._zod.optin==="optional")?"optional":void 0),it(e._zod,"optout",()=>n.options.some(u=>u._zod.optout==="optional")?"optional":void 0),it(e._zod,"values",()=>{if(n.options.every(u=>u._zod.values))return new Set(n.options.flatMap(u=>Array.from(u._zod.values)))}),it(e._zod,"pattern",()=>{if(n.options.every(u=>u._zod.pattern)){const u=n.options.map(f=>f._zod.pattern);return new RegExp(`^(${u.map(f=>v0(f.source)).join("|")})$`)}});const s=n.options.length===1,r=n.options[0]._zod.run;e._zod.parse=(u,f)=>{if(s)return r(u,f);let g=!1;const b=[];for(const x of n.options){const k=x._zod.run({value:u.value,issues:[]},f);if(k instanceof Promise)b.push(k),g=!0;else{if(k.issues.length===0)return k;b.push(k)}}return g?Promise.all(b).then(x=>qy(x,u,e,f)):qy(b,u,e,f)}}),LN=Q("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,Bx.init(e,n);const s=e._zod.parse;it(e._zod,"propValues",()=>{const u={};for(const f of n.options){const g=f._zod.propValues;if(!g||Object.keys(g).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(f)}"`);for(const[b,x]of Object.entries(g)){u[b]||(u[b]=new Set);for(const k of x)u[b].add(k)}}return u});const r=mu(()=>{const u=n.options,f=new Map;for(const g of u){const b=g._zod.propValues?.[n.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(g)}"`);for(const x of b){if(f.has(x))throw new Error(`Duplicate discriminator value "${String(x)}"`);f.set(x,g)}}return f});e._zod.parse=(u,f)=>{const g=u.value;if(!Fr(g))return u.issues.push({code:"invalid_type",expected:"object",input:g,inst:e}),u;const b=r.value.get(g?.[n.discriminator]);return b?b._zod.run(u,f):n.unionFallback?s(u,f):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:g,path:[n.discriminator],inst:e}),u)}}),UN=Q("$ZodIntersection",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{const u=s.value,f=n.left._zod.run({value:u,issues:[]},r),g=n.right._zod.run({value:u,issues:[]},r);return f instanceof Promise||g instanceof Promise?Promise.all([f,g]).then(([x,k])=>My(s,x,k)):My(s,f,g)}});function qp(e,n){if(e===n)return{valid:!0,data:e};if(e instanceof Date&&n instanceof Date&&+e==+n)return{valid:!0,data:e};if(xo(e)&&xo(n)){const s=Object.keys(n),r=Object.keys(e).filter(f=>s.indexOf(f)!==-1),u={...e,...n};for(const f of r){const g=qp(e[f],n[f]);if(!g.valid)return{valid:!1,mergeErrorPath:[f,...g.mergeErrorPath]};u[f]=g.data}return{valid:!0,data:u}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const s=[];for(let r=0;r<e.length;r++){const u=e[r],f=n[r],g=qp(u,f);if(!g.valid)return{valid:!1,mergeErrorPath:[r,...g.mergeErrorPath]};s.push(g.data)}return{valid:!0,data:s}}return{valid:!1,mergeErrorPath:[]}}function My(e,n,s){const r=new Map;let u;for(const b of n.issues)if(b.code==="unrecognized_keys"){u??(u=b);for(const x of b.keys)r.has(x)||r.set(x,{}),r.get(x).l=!0}else e.issues.push(b);for(const b of s.issues)if(b.code==="unrecognized_keys")for(const x of b.keys)r.has(x)||r.set(x,{}),r.get(x).r=!0;else e.issues.push(b);const f=[...r].filter(([,b])=>b.l&&b.r).map(([b])=>b);if(f.length&&u&&e.issues.push({...u,keys:f}),mo(e))return e;const g=qp(n.value,s.value);if(!g.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(g.mergeErrorPath)}`);return e.value=g.data,e}const GN=Q("$ZodRecord",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{const u=s.value;if(!xo(u))return s.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),s;const f=[],g=n.keyType._zod.values;if(g){s.value={};const b=new Set;for(const k of g)if(typeof k=="string"||typeof k=="number"||typeof k=="symbol"){b.add(typeof k=="number"?k.toString():k);const S=n.valueType._zod.run({value:u[k],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...po(k,C.issues)),s.value[k]=C.value})):(S.issues.length&&s.issues.push(...po(k,S.issues)),s.value[k]=S.value)}let x;for(const k in u)b.has(k)||(x=x??[],x.push(k));x&&x.length>0&&s.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:x})}else{s.value={};for(const b of Reflect.ownKeys(u)){if(b==="__proto__")continue;let x=n.keyType._zod.run({value:b,issues:[]},r);if(x instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof b=="string"&&Nx.test(b)&&x.issues.length){const C=n.keyType._zod.run({value:Number(b),issues:[]},r);if(C instanceof Promise)throw new Error("Async schemas not supported in object keys currently");C.issues.length===0&&(x=C)}if(x.issues.length){n.mode==="loose"?s.value[b]=u[b]:s.issues.push({code:"invalid_key",origin:"record",issues:x.issues.map(C=>ji(C,r,Si())),input:b,path:[b],inst:e});continue}const S=n.valueType._zod.run({value:u[b],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...po(b,C.issues)),s.value[x.value]=C.value})):(S.issues.length&&s.issues.push(...po(b,S.issues)),s.value[x.value]=S.value)}}return f.length?Promise.all(f).then(()=>s):s}}),$N=Q("$ZodEnum",(e,n)=>{kt.init(e,n);const s=bx(n.entries),r=new Set(s);e._zod.values=r,e._zod.pattern=new RegExp(`^(${s.filter(u=>eC.has(typeof u)).map(u=>typeof u=="string"?ko(u):u.toString()).join("|")})$`),e._zod.parse=(u,f)=>{const g=u.value;return r.has(g)||u.issues.push({code:"invalid_value",values:s,input:g,inst:e}),u}}),HN=Q("$ZodLiteral",(e,n)=>{if(kt.init(e,n),n.values.length===0)throw new Error("Cannot create literal schema with no valid values");const s=new Set(n.values);e._zod.values=s,e._zod.pattern=new RegExp(`^(${n.values.map(r=>typeof r=="string"?ko(r):r?ko(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,u)=>{const f=r.value;return s.has(f)||r.issues.push({code:"invalid_value",values:n.values,input:f,inst:e}),r}}),KN=Q("$ZodTransform",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);const u=n.transform(s.value,s);if(r.async)return(u instanceof Promise?u:Promise.resolve(u)).then(g=>(s.value=g,s));if(u instanceof Promise)throw new fo;return s.value=u,s}});function Py(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const qx=Q("$ZodOptional",(e,n)=>{kt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",it(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),it(e._zod,"pattern",()=>{const s=n.innerType._zod.pattern;return s?new RegExp(`^(${v0(s.source)})?$`):void 0}),e._zod.parse=(s,r)=>{if(n.innerType._zod.optin==="optional"){const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Py(f,s.value)):Py(u,s.value)}return s.value===void 0?s:n.innerType._zod.run(s,r)}}),QN=Q("$ZodExactOptional",(e,n)=>{qx.init(e,n),it(e._zod,"values",()=>n.innerType._zod.values),it(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(s,r)=>n.innerType._zod.run(s,r)}),ZN=Q("$ZodNullable",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.innerType._zod.optin),it(e._zod,"optout",()=>n.innerType._zod.optout),it(e._zod,"pattern",()=>{const s=n.innerType._zod.pattern;return s?new RegExp(`^(${v0(s.source)}|null)$`):void 0}),it(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(s,r)=>s.value===null?s:n.innerType._zod.run(s,r)}),FN=Q("$ZodDefault",(e,n)=>{kt.init(e,n),e._zod.optin="optional",it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);if(s.value===void 0)return s.value=n.defaultValue,s;const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Iy(f,n)):Iy(u,n)}});function Iy(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const YN=Q("$ZodPrefault",(e,n)=>{kt.init(e,n),e._zod.optin="optional",it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>(r.direction==="backward"||s.value===void 0&&(s.value=n.defaultValue),n.innerType._zod.run(s,r))}),XN=Q("$ZodNonOptional",(e,n)=>{kt.init(e,n),it(e._zod,"values",()=>{const s=n.innerType._zod.values;return s?new Set([...s].filter(r=>r!==void 0)):void 0}),e._zod.parse=(s,r)=>{const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Vy(f,e)):Vy(u,e)}});function Vy(e,n){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:n}),e}const JN=Q("$ZodCatch",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.innerType._zod.optin),it(e._zod,"optout",()=>n.innerType._zod.optout),it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>(s.value=f.value,f.issues.length&&(s.value=n.catchValue({...s,error:{issues:f.issues.map(g=>ji(g,r,Si()))},input:s.value}),s.issues=[]),s)):(s.value=u.value,u.issues.length&&(s.value=n.catchValue({...s,error:{issues:u.issues.map(f=>ji(f,r,Si()))},input:s.value}),s.issues=[]),s)}}),WN=Q("$ZodPipe",(e,n)=>{kt.init(e,n),it(e._zod,"values",()=>n.in._zod.values),it(e._zod,"optin",()=>n.in._zod.optin),it(e._zod,"optout",()=>n.out._zod.optout),it(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(s,r)=>{if(r.direction==="backward"){const f=n.out._zod.run(s,r);return f instanceof Promise?f.then(g=>Ec(g,n.in,r)):Ec(f,n.in,r)}const u=n.in._zod.run(s,r);return u instanceof Promise?u.then(f=>Ec(f,n.out,r)):Ec(u,n.out,r)}});function Ec(e,n,s){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},s)}const e8=Q("$ZodReadonly",(e,n)=>{kt.init(e,n),it(e._zod,"propValues",()=>n.innerType._zod.propValues),it(e._zod,"values",()=>n.innerType._zod.values),it(e._zod,"optin",()=>n.innerType?._zod?.optin),it(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(Ly):Ly(u)}});function Ly(e){return e.value=Object.freeze(e.value),e}const t8=Q("$ZodCustom",(e,n)=>{ba.init(e,n),kt.init(e,n),e._zod.parse=(s,r)=>s,e._zod.check=s=>{const r=s.value,u=n.fn(r);if(u instanceof Promise)return u.then(f=>Uy(f,s,r,e));Uy(u,s,r,e)}});function Uy(e,n,s,r){if(!e){const u={code:"custom",input:s,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(u.params=r._zod.def.params),n.issues.push(Yr(u))}}var Gy;class a8{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...s){const r=s[0];return this._map.set(n,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,n),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(n){const s=this._map.get(n);return s&&typeof s=="object"&&"id"in s&&this._idmap.delete(s.id),this._map.delete(n),this}get(n){const s=n._zod.parent;if(s){const r={...this.get(s)??{}};delete r.id;const u={...r,...this._map.get(n)};return Object.keys(u).length?u:void 0}return this._map.get(n)}has(n){return this._map.has(n)}}function n8(){return new a8}(Gy=globalThis).__zod_globalRegistry??(Gy.__zod_globalRegistry=n8());const Ur=globalThis.__zod_globalRegistry;function i8(e,n){return new e({type:"string",...ze(n)})}function s8(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ze(n)})}function $y(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ze(n)})}function o8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ze(n)})}function r8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ze(n)})}function l8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ze(n)})}function c8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ze(n)})}function u8(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ze(n)})}function d8(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ze(n)})}function m8(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ze(n)})}function p8(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ze(n)})}function h8(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ze(n)})}function f8(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ze(n)})}function g8(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ze(n)})}function y8(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ze(n)})}function b8(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ze(n)})}function v8(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ze(n)})}function x8(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ze(n)})}function k8(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ze(n)})}function w8(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ze(n)})}function S8(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ze(n)})}function j8(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ze(n)})}function A8(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ze(n)})}function C8(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ze(n)})}function N8(e,n){return new e({type:"string",format:"date",check:"string_format",...ze(n)})}function _8(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...ze(n)})}function z8(e,n){return new e({type:"string",format:"duration",check:"string_format",...ze(n)})}function D8(e,n){return new e({type:"number",checks:[],...ze(n)})}function E8(e,n){return new e({type:"number",coerce:!0,checks:[],...ze(n)})}function T8(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ze(n)})}function R8(e,n){return new e({type:"boolean",...ze(n)})}function O8(e,n){return new e({type:"null",...ze(n)})}function B8(e){return new e({type:"unknown"})}function q8(e,n){return new e({type:"never",...ze(n)})}function Hy(e,n){return new zx({check:"less_than",...ze(n),value:e,inclusive:!1})}function np(e,n){return new zx({check:"less_than",...ze(n),value:e,inclusive:!0})}function Ky(e,n){return new Dx({check:"greater_than",...ze(n),value:e,inclusive:!1})}function ip(e,n){return new Dx({check:"greater_than",...ze(n),value:e,inclusive:!0})}function Qy(e,n){return new ZC({check:"multiple_of",...ze(n),value:e})}function Mx(e,n){return new YC({check:"max_length",...ze(n),maximum:e})}function Xc(e,n){return new XC({check:"min_length",...ze(n),minimum:e})}function Px(e,n){return new JC({check:"length_equals",...ze(n),length:e})}function M8(e,n){return new WC({check:"string_format",format:"regex",...ze(n),pattern:e})}function P8(e){return new eN({check:"string_format",format:"lowercase",...ze(e)})}function I8(e){return new tN({check:"string_format",format:"uppercase",...ze(e)})}function V8(e,n){return new aN({check:"string_format",format:"includes",...ze(n),includes:e})}function L8(e,n){return new nN({check:"string_format",format:"starts_with",...ze(n),prefix:e})}function U8(e,n){return new iN({check:"string_format",format:"ends_with",...ze(n),suffix:e})}function Eo(e){return new sN({check:"overwrite",tx:e})}function G8(e){return Eo(n=>n.normalize(e))}function $8(){return Eo(e=>e.trim())}function H8(){return Eo(e=>e.toLowerCase())}function K8(){return Eo(e=>e.toUpperCase())}function Q8(){return Eo(e=>JA(e))}function Z8(e,n,s){return new e({type:"array",element:n,...ze(s)})}function F8(e,n,s){return new e({type:"custom",check:"custom",fn:n,...ze(s)})}function Y8(e){const n=X8(s=>(s.addIssue=r=>{if(typeof r=="string")s.issues.push(Yr(r,s.value,n._zod.def));else{const u=r;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=s.value),u.inst??(u.inst=n),u.continue??(u.continue=!n._zod.def.abort),s.issues.push(Yr(u))}},e(s.value,s)));return n}function X8(e,n){const s=new ba({check:"custom",...ze(n)});return s._zod.check=e,s}function Ix(e){let n=e?.target??"draft-2020-12";return n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Ur,target:n,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function Mt(e,n,s={path:[],schemaPath:[]}){var r;const u=e._zod.def,f=n.seen.get(e);if(f)return f.count++,s.schemaPath.includes(e)&&(f.cycle=s.path),f.schema;const g={schema:{},count:1,cycle:void 0,path:s.path};n.seen.set(e,g);const b=e._zod.toJSONSchema?.();if(b)g.schema=b;else{const S={...s,schemaPath:[...s.schemaPath,e],path:s.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,g.schema,S);else{const j=g.schema,E=n.processors[u.type];if(!E)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);E(e,n,j,S)}const C=e._zod.parent;C&&(g.ref||(g.ref=C),Mt(C,n,S),n.seen.get(C).isParent=!0)}const x=n.metadataRegistry.get(e);return x&&Object.assign(g.schema,x),n.io==="input"&&ia(e)&&(delete g.schema.examples,delete g.schema.default),n.io==="input"&&g.schema._prefault&&((r=g.schema).default??(r.default=g.schema._prefault)),delete g.schema._prefault,n.seen.get(e).schema}function Vx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const g of e.seen.entries()){const b=e.metadataRegistry.get(g[0])?.id;if(b){const x=r.get(b);if(x&&x!==g[0])throw new Error(`Duplicate schema id "${b}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(b,g[0])}}const u=g=>{const b=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const C=e.external.registry.get(g[0])?.id,j=e.external.uri??(B=>B);if(C)return{ref:j(C)};const E=g[1].defId??g[1].schema.id??`schema${e.counter++}`;return g[1].defId=E,{defId:E,ref:`${j("__shared")}#/${b}/${E}`}}if(g[1]===s)return{ref:"#"};const k=`#/${b}/`,S=g[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:k+S}},f=g=>{if(g[1].schema.$ref)return;const b=g[1],{ref:x,defId:k}=u(g);b.def={...b.schema},k&&(b.defId=k);const S=b.schema;for(const C in S)delete S[C];S.$ref=x};if(e.cycles==="throw")for(const g of e.seen.entries()){const b=g[1];if(b.cycle)throw new Error(`Cycle detected: #/${b.cycle?.join("/")}/<root>
|
|
51
51
|
|
|
52
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(n===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(n!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function Lx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const x=b.def??b.schema,k={...x},S=b.ref;if(b.ref=null,S){r(S);const j=e.seen.get(S),E=j.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(E)):Object.assign(x,E),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(E.$ref&&j.def)for(const q in x)q==="$ref"||q==="allOf"||q in j.def&&JSON.stringify(x[q])===JSON.stringify(j.def[q])&&delete x[q]}const C=g._zod.parent;if(C&&C!==S){r(C);const j=e.seen.get(C);if(j?.schema.$ref&&(x.$ref=j.schema.$ref,j.def))for(const E in x)E==="$ref"||E==="allOf"||E in j.def&&JSON.stringify(x[E])===JSON.stringify(j.def[E])&&delete x[E]}e.override({zodSchema:g,jsonSchema:x,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(n)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...n["~standard"],jsonSchema:{input:Jc(n,"input",e.processors),output:Jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function ia(e,n){const s=n??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return ia(r.element,s);if(r.type==="set")return ia(r.valueType,s);if(r.type==="lazy")return ia(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return ia(r.innerType,s);if(r.type==="intersection")return ia(r.left,s)||ia(r.right,s);if(r.type==="record"||r.type==="map")return ia(r.keyType,s)||ia(r.valueType,s);if(r.type==="pipe")return ia(r.in,s)||ia(r.out,s);if(r.type==="object"){for(const u in r.shape)if(ia(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(ia(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(ia(u,s))return!0;return!!(r.rest&&ia(r.rest,s))}return!1}const J8=(e,n={})=>s=>{const r=Ix({...s,processors:n});return Mt(e,r),Vx(r,e),Lx(r,e)},Jc=(e,n,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Ix({...u??{},target:f,io:n,processors:s});return Mt(e,g),Vx(g,e),Lx(g,e)},W8={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},e7=(e,n,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:x,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=W8[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),x&&x.size>0){const S=[...x];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(C=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},t7=(e,n,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:x,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&n.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&n.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},a7=(e,n,s,r)=>{s.type="boolean"},n7=(e,n,s,r)=>{n.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},i7=(e,n,s,r)=>{s.not={}},s7=(e,n,s,r)=>{},o7=(e,n,s,r)=>{const u=e._zod.def,f=bx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},r7=(e,n,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,n.target==="draft-04"||n.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},l7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},c7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},u7=(e,n,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Mt(f.element,n,{...r,path:[...r.path,"items"]})},d7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Mt(g[k],n,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),x=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));x.size>0&&(u.required=Array.from(x)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Mt(f.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},m7=(e,n,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,n,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},p7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.left,n,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,x=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=x},h7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,x=g._zod.bag?.patterns;if(f.mode==="loose"&&x&&x.size>0){const S=Mt(f.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(C=>typeof C=="string"||typeof C=="number");S.length>0&&(u.required=S)}},f7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,n,r),g=n.seen.get(e);n.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},g7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},y7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},b7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,n.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},v7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},x7=(e,n,s,r)=>{const u=e._zod.def,f=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,n,r);const g=n.seen.get(e);g.ref=f},k7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Ux=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},w7=Q("ZodISODateTime",(e,n)=>{vN.init(e,n),At.init(e,n)});function Gx(e){return C8(w7,e)}const S7=Q("ZodISODate",(e,n)=>{xN.init(e,n),At.init(e,n)});function $x(e){return N8(S7,e)}const j7=Q("ZodISOTime",(e,n)=>{kN.init(e,n),At.init(e,n)});function A7(e){return _8(j7,e)}const C7=Q("ZodISODuration",(e,n)=>{wN.init(e,n),At.init(e,n)});function N7(e){return z8(C7,e)}const _7=(e,n)=>{wx.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>dC(e,s)},flatten:{value:s=>uC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Bp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Bp,2)}},isEmpty:{get(){return e.issues.length===0}}})},La=Q("ZodError",_7,{Parent:Error}),z7=k0(La),D7=w0(La),E7=pu(La),T7=hu(La),R7=hC(La),O7=fC(La),B7=gC(La),q7=yC(La),M7=bC(La),P7=vC(La),I7=xC(La),V7=kC(La),St=Q("ZodType",(e,n)=>(kt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Jc(e,"input"),output:Jc(e,"output")}}),e.toJSONSchema=J8(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...s)=>e.clone(Ni(n,{checks:[...n.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>_i(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>z7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>E7(e,s,r),e.parseAsync=async(s,r)=>D7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>T7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>R7(e,s,r),e.decode=(s,r)=>O7(e,s,r),e.encodeAsync=async(s,r)=>B7(e,s,r),e.decodeAsync=async(s,r)=>q7(e,s,r),e.safeEncode=(s,r)=>M7(e,s,r),e.safeDecode=(s,r)=>P7(e,s,r),e.safeEncodeAsync=async(s,r)=>I7(e,s,r),e.safeDecodeAsync=async(s,r)=>V7(e,s,r),e.refine=(s,r)=>e.check(R_(s,r)),e.superRefine=s=>e.check(O_(s)),e.overwrite=s=>e.check(Eo(s)),e.optional=()=>Yy(e),e.exactOptional=()=>x_(e),e.nullable=()=>Xy(e),e.nullish=()=>Yy(Xy(e)),e.nonoptional=s=>C_(e,s),e.array=()=>y(e),e.or=s=>Ve([e,s]),e.and=s=>f_(e,s),e.transform=s=>Pp(e,Qx(s)),e.default=s=>S_(e,s),e.prefault=s=>A_(e,s),e.catch=s=>__(e,s),e.pipe=s=>Pp(e,s),e.readonly=()=>E_(e),e.describe=s=>{const r=e.clone();return Ur.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Ur.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Ur.get(e);const r=e.clone();return Ur.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Hx=Q("_ZodString",(e,n)=>{S0.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>e7(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(M8(...r)),e.includes=(...r)=>e.check(V8(...r)),e.startsWith=(...r)=>e.check(L8(...r)),e.endsWith=(...r)=>e.check(U8(...r)),e.min=(...r)=>e.check(Xc(...r)),e.max=(...r)=>e.check(Mx(...r)),e.length=(...r)=>e.check(Px(...r)),e.nonempty=(...r)=>e.check(Xc(1,...r)),e.lowercase=r=>e.check(P8(r)),e.uppercase=r=>e.check(I8(r)),e.trim=()=>e.check($8()),e.normalize=(...r)=>e.check(G8(...r)),e.toLowerCase=()=>e.check(H8()),e.toUpperCase=()=>e.check(K8()),e.slugify=()=>e.check(Q8())}),L7=Q("ZodString",(e,n)=>{S0.init(e,n),Hx.init(e,n),e.email=s=>e.check(s8(U7,s)),e.url=s=>e.check(u8(G7,s)),e.jwt=s=>e.check(A8(i_,s)),e.emoji=s=>e.check(d8($7,s)),e.guid=s=>e.check($y(Zy,s)),e.uuid=s=>e.check(o8(Tc,s)),e.uuidv4=s=>e.check(r8(Tc,s)),e.uuidv6=s=>e.check(l8(Tc,s)),e.uuidv7=s=>e.check(c8(Tc,s)),e.nanoid=s=>e.check(m8(H7,s)),e.guid=s=>e.check($y(Zy,s)),e.cuid=s=>e.check(p8(K7,s)),e.cuid2=s=>e.check(h8(Q7,s)),e.ulid=s=>e.check(f8(Z7,s)),e.base64=s=>e.check(w8(t_,s)),e.base64url=s=>e.check(S8(a_,s)),e.xid=s=>e.check(g8(F7,s)),e.ksuid=s=>e.check(y8(Y7,s)),e.ipv4=s=>e.check(b8(X7,s)),e.ipv6=s=>e.check(v8(J7,s)),e.cidrv4=s=>e.check(x8(W7,s)),e.cidrv6=s=>e.check(k8(e_,s)),e.e164=s=>e.check(j8(n_,s)),e.datetime=s=>e.check(Gx(s)),e.date=s=>e.check($x(s)),e.time=s=>e.check(A7(s)),e.duration=s=>e.check(N7(s))});function o(e){return i8(L7,e)}const At=Q("ZodStringFormat",(e,n)=>{wt.init(e,n),Hx.init(e,n)}),U7=Q("ZodEmail",(e,n)=>{uN.init(e,n),At.init(e,n)}),Zy=Q("ZodGUID",(e,n)=>{lN.init(e,n),At.init(e,n)}),Tc=Q("ZodUUID",(e,n)=>{cN.init(e,n),At.init(e,n)}),G7=Q("ZodURL",(e,n)=>{dN.init(e,n),At.init(e,n)}),$7=Q("ZodEmoji",(e,n)=>{mN.init(e,n),At.init(e,n)}),H7=Q("ZodNanoID",(e,n)=>{pN.init(e,n),At.init(e,n)}),K7=Q("ZodCUID",(e,n)=>{hN.init(e,n),At.init(e,n)}),Q7=Q("ZodCUID2",(e,n)=>{fN.init(e,n),At.init(e,n)}),Z7=Q("ZodULID",(e,n)=>{gN.init(e,n),At.init(e,n)}),F7=Q("ZodXID",(e,n)=>{yN.init(e,n),At.init(e,n)}),Y7=Q("ZodKSUID",(e,n)=>{bN.init(e,n),At.init(e,n)}),X7=Q("ZodIPv4",(e,n)=>{SN.init(e,n),At.init(e,n)}),J7=Q("ZodIPv6",(e,n)=>{jN.init(e,n),At.init(e,n)}),W7=Q("ZodCIDRv4",(e,n)=>{AN.init(e,n),At.init(e,n)}),e_=Q("ZodCIDRv6",(e,n)=>{CN.init(e,n),At.init(e,n)}),t_=Q("ZodBase64",(e,n)=>{NN.init(e,n),At.init(e,n)}),a_=Q("ZodBase64URL",(e,n)=>{zN.init(e,n),At.init(e,n)}),n_=Q("ZodE164",(e,n)=>{DN.init(e,n),At.init(e,n)}),i_=Q("ZodJWT",(e,n)=>{TN.init(e,n),At.init(e,n)}),j0=Q("ZodNumber",(e,n)=>{Tx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>t7(e,r,u),e.gt=(r,u)=>e.check(Ky(r,u)),e.gte=(r,u)=>e.check(ip(r,u)),e.min=(r,u)=>e.check(ip(r,u)),e.lt=(r,u)=>e.check(Hy(r,u)),e.lte=(r,u)=>e.check(np(r,u)),e.max=(r,u)=>e.check(np(r,u)),e.int=r=>e.check(Fy(r)),e.safe=r=>e.check(Fy(r)),e.positive=r=>e.check(Ky(0,r)),e.nonnegative=r=>e.check(ip(0,r)),e.negative=r=>e.check(Hy(0,r)),e.nonpositive=r=>e.check(np(0,r)),e.multipleOf=(r,u)=>e.check(Qy(r,u)),e.step=(r,u)=>e.check(Qy(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function m(e){return D8(j0,e)}const s_=Q("ZodNumberFormat",(e,n)=>{RN.init(e,n),j0.init(e,n)});function Fy(e){return T8(s_,e)}const o_=Q("ZodBoolean",(e,n)=>{ON.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>a7(e,s,r)});function _(e){return R8(o_,e)}const r_=Q("ZodNull",(e,n)=>{BN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>n7(e,s,r)});function ce(e){return O8(r_,e)}const l_=Q("ZodUnknown",(e,n)=>{qN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>s7()});function ya(){return B8(l_)}const c_=Q("ZodNever",(e,n)=>{MN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>i7(e,s,r)});function u_(e){return q8(c_,e)}const d_=Q("ZodArray",(e,n)=>{PN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>u7(e,s,r,u),e.element=n.element,e.min=(s,r)=>e.check(Xc(s,r)),e.nonempty=s=>e.check(Xc(1,s)),e.max=(s,r)=>e.check(Mx(s,r)),e.length=(s,r)=>e.check(Px(s,r)),e.unwrap=()=>e.element});function y(e,n){return Z8(d_,e,n)}const m_=Q("ZodObject",(e,n)=>{VN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>d7(e,s,r,u),it(e,"shape",()=>n.shape),e.keyof=()=>A(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ya()}),e.loose=()=>e.clone({...e._zod.def,catchall:ya()}),e.strict=()=>e.clone({...e._zod.def,catchall:u_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>sC(e,s),e.safeExtend=s=>oC(e,s),e.merge=s=>rC(e,s),e.pick=s=>nC(e,s),e.omit=s=>iC(e,s),e.partial=(...s)=>lC(Zx,e,s[0]),e.required=(...s)=>cC(Fx,e,s[0])});function p(e,n){const s={type:"object",shape:e??{},...ze(n)};return new m_(s)}const Kx=Q("ZodUnion",(e,n)=>{Bx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>m7(e,s,r,u),e.options=n.options});function Ve(e,n){return new Kx({type:"union",options:e,...ze(n)})}const p_=Q("ZodDiscriminatedUnion",(e,n)=>{Kx.init(e,n),LN.init(e,n)});function Be(e,n,s){return new p_({type:"union",options:n,discriminator:e,...ze(s)})}const h_=Q("ZodIntersection",(e,n)=>{UN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>p7(e,s,r,u)});function f_(e,n){return new h_({type:"intersection",left:e,right:n})}const g_=Q("ZodRecord",(e,n)=>{GN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ie(e,n,s){return new g_({type:"record",keyType:e,valueType:n,...ze(s)})}const Mp=Q("ZodEnum",(e,n)=>{$N.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>o7(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const s=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=n.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...n.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})}});function A(e,n){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Mp({type:"enum",entries:s,...ze(n)})}const y_=Q("ZodLiteral",(e,n)=>{HN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>r7(e,s,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function O(e,n){return new y_({type:"literal",values:Array.isArray(e)?e:[e],...ze(n)})}const b_=Q("ZodTransform",(e,n)=>{KN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>c7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Yr(f,s.value,n));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Yr(g))}};const u=n.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function Qx(e){return new b_({type:"transform",transform:e})}const Zx=Q("ZodOptional",(e,n)=>{qx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Yy(e){return new Zx({type:"optional",innerType:e})}const v_=Q("ZodExactOptional",(e,n)=>{QN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function x_(e){return new v_({type:"optional",innerType:e})}const k_=Q("ZodNullable",(e,n)=>{ZN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Xy(e){return new k_({type:"nullable",innerType:e})}const w_=Q("ZodDefault",(e,n)=>{FN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>y7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function S_(e,n){return new w_({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const j_=Q("ZodPrefault",(e,n)=>{YN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>b7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function A_(e,n){return new j_({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const Fx=Q("ZodNonOptional",(e,n)=>{XN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function C_(e,n){return new Fx({type:"nonoptional",innerType:e,...ze(n)})}const N_=Q("ZodCatch",(e,n)=>{JN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function __(e,n){return new N_({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const z_=Q("ZodPipe",(e,n)=>{WN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x7(e,s,r,u),e.in=n.in,e.out=n.out});function Pp(e,n){return new z_({type:"pipe",in:e,out:n})}const D_=Q("ZodReadonly",(e,n)=>{e8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>k7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function E_(e){return new D_({type:"readonly",innerType:e})}const T_=Q("ZodCustom",(e,n)=>{t8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>l7(e,s)});function R_(e,n={}){return F8(T_,e,n)}function O_(e){return Y8(e)}function A0(e,n){return Pp(Qx(e),n)}const Ye={custom:"custom"};function Yx(e){return E8(j0,e)}const Xx=p({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:_(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});p({keys:y(Xx)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});Xx.extend({key:o()});const B_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ft=o().min(1),C0=Ie(o(),o().trim().min(1));o().min(1);const la=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),N0=A(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);p({id:o(),projectId:o(),channel:O("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(N0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(N0).min(1),source:o().optional()});function q_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}function sp(e,n=!1){const s=new Set,r=[];for(const u of e){const f=n?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Jy(e){try{const n=e.includes("://"),s=new URL(n?e:`https://${e}`);if(!n&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const M_=o().trim().min(1).refine(e=>Jy(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Jy(e)??e),P_=o().trim().min(1),I_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),_0=p({marketingHosts:y(M_).overwrite(e=>sp(e,!0)),brandTerms:y(P_).overwrite(e=>sp(e,!0)),leadEventNames:y(I_).overwrite(e=>sp(e))});function V_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const op=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),Jx=()=>V_(),Wy=A(["never-synced","ready","error"]),L_=A(["landing-page","channel"]),U_=A(["30d","60d","90d"]),G_=A(["marketing","all"]),Gr=$x(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Gr,endDate:Gr}),rp=nl.extend({sessions:m().int().nonnegative()}),eb=nl.extend({eventCount:m().int().nonnegative()}),tb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),$_=nl.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),H_=nl.extend({sessions:m().int().nonnegative(),engagementRate:m().min(0).max(1).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:_(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),K_=p({window:U_,bucketDays:O(30),filters:p({hostScope:G_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(rp),channels:y(p({channelGroup:o(),periods:y(rp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(rp)}))}),leads:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:L_.nullable(),hostAndPathFiltersApplied:_(),periods:y(eb),channels:y(p({channelGroup:o(),periods:y(eb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Gr.nullable(),latestDate:Gr.nullable(),periods:y(H_)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y($_),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(tb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(tb)})),latestDate:Gr.nullable()})}),Q_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Z_=/[\0-\x1F\x7F-\x9F]/,F_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Y_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var X_=class{src_Any=Q_.source;src_Cc=Z_.source;src_Z=Y_.source;src_P=F_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,s=4){const r=this.escapeRE(e),u=this.escapeRE(n),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},lp={validate:(e,n,s)=>{const r=s.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},J_={"http:":lp,"https:":lp,"ftp:":lp,"//":{validate:function(e,n,s){const r=s.re.get_relative_proto_validator();r.lastIndex=n;const u=r.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,s){const r=s.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},W_="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",ez="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function tz(){const e=ez.split("|");return W_.split("|").forEach(n=>{const s=n.indexOf(":"),r=n.slice(0,s);for(const u of n.slice(s+1))e.push(r+u)}),e}var az={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:tz(),urlAuth:!1,maxLength:1e4},ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,s,r){const u=e.slice(s,r);this.schema=n.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},nz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...s}=e;this.__opts__={...az,...s},this.__schemas__={...J_},this.re=n||new X_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(n=s.exec(e))!==null;)if(this.testSchemaAt(e,n[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(n=r.exec(e))!==null;){const f=e.slice(Math.max(0,n.index-65),n.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,n,s){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const n=[],s=this.re.get_schema_search();let r,u,f,g,b,x,k=!1,S=!1,C=!1,j=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(X){if(b={schema:"mailto:",index:te.index-X[1].length,lastIndex:te.index+te[0].length},b.index>=j)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=j)break;r.lastIndex<E&&(r.lastIndex=E)}let B=b;(!B||g&&(g.index<B.index||g.index===B.index&&g.lastIndex>B.lastIndex))&&(B=g);let q;if(!k)for(;;){if(!x){s.lastIndex<E&&(s.lastIndex=E);const ae=s.exec(e);if(!ae){k=!0;break}x={schema:ae[2],index:ae.index+ae[1].length,lastIndex:ae.index+ae[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const te=x;x=void 0;const X=this.testSchemaAt(e,te.schema,te.lastIndex);if(X){q={schema:te.schema,index:te.index,lastIndex:te.lastIndex+X};break}}let U=q;if((!U||b&&(b.index<U.index||b.index===U.index&&b.lastIndex>U.lastIndex))&&(U=b),(!U||g&&(g.index<U.index||g.index===U.index&&g.lastIndex>U.lastIndex))&&(U=g),!U)break;U===b?b=void 0:U===g&&(g=void 0);const G=new ab(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),n.push(G),j=U.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const s=this.testSchemaAt(e,n[2],n[0].length);if(!s)return null;const r=new ab(e,n[2],n.index+n[1].length,n.index+n[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const iz=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function sz(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function oz(e,n){const s=e.length-n.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function rz(e,n,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(sz(n,f))return f}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:oz(n,e)}function lz(e,n){return e.slice(0,-n.length-1)}const cp=/[\t\n\r]/g;let Ip=!1;function nb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function ib(e,n,s){const r=s-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function $r(e,n,s=!1){let r=0,u=e.length,f=!1,g=!1;if(Ip=!1,!n){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const U=e.indexOf(":/",r);if(U!==-1){const G=ib(e,r,U);if(G===1)for(g=!0,r=U+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(G===2){g=!0,r=U+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<U;te+=1){const X=e.charCodeAt(te)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const ae=e.charCodeAt(te);return ae===9||ae===10||ae===13?$r(e.replace(cp,""),n,s):null}}if(e.charCodeAt(U+2)===47)r=U+3;else return null}}else if(e.charCodeAt(r)!==91){let G=-1;for(let te=r;te<u;te+=1){const X=e.charCodeAt(te);if(X===9||X===10||X===13)return $r(e.replace(cp,""),n,s);if(X===58){G=te;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let te=!1;for(let X=G+1;X<u;X+=1){const ae=e.charCodeAt(X);if(ae===47||ae===92||ae===63||ae===35)break;if(ae===64){te=!0;break}}if(!te){let X=!0,ae=G+1;for(;ae<u;ae+=1){const oe=e.charCodeAt(ae);if(oe===47||oe===92||oe===63||oe===35)break;if(oe<48||oe>57){X=!1;break}}if(ae===G+1&&(X=!1),!X){const oe=ib(e,r,G);if(oe===0){let ge=!1;for(let M=G+1;M<u;M+=1){const J=e.charCodeAt(M);if(J===47||J===92||J===63||J===35)break;if(J===58){ge=!0;break}}if(!ge)return null}else if(g=!0,r=G+1,oe===2){let ge=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ge<2;)r+=1,ge+=1;if(ge<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let x=-1,k=-1,S=-1,C=-1,j=!1,E=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(nb(U)||U===46||U===95)||U===45)&&(E=!1)}for(let U=r;U<u;U+=1){const G=e.charCodeAt(U);if(G<64)if(G===47||G===35||G===63){u=U;break}else G===58?(C===-1&&(C=U),S=U):G===9||G===10||G===13?j=!0:s&&(G===46?((U-B>64||q===46||q===45)&&(E=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(E=!1));else if(g&&G===92){u=U;break}else G===64?(x=U,C=-1):G===93?k=U:G>=65&&G<=90?f=!0:s&&!nb(G)&&(E=!1);s&&(q=G)}if(j)return $r(e.replace(cp,""),n,s);if(x!==-1&&x>=r&&x<u&&(r=x+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&C===S&&(u=S),r>=u)return null;s&&E&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&(Ip=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function cz(e){if(e.length<7||e.length>15)return!1;let n=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)n+=1;else if(r<48||r>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function uz(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-n>39)return!1;let r=!1;for(;n<s;n+=1){const u=e.charCodeAt(n);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function dz(e){return uz(e)||cz(e)}const mz=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function pz(e){for(const n of mz)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function sb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ob(e){if(e.length>255||e.length===0||!sb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-n>64||s===46||s===45)return!1;n=u}else if(!(sb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-n-1<=63&&s!==45}function Wx({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const hz=Wx({});function fz(e){return e===void 0?hz:Wx(e)}function gz(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function yz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function e2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function t2(e,n,s,r,u){const f=fz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=ob(e),u.hostname=$r(e,g,f.validateHostname)):u.hostname=$r(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=dz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!Ip&&!ob(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&f.detectSpecialUse&&(u.isSpecialUse=pz(u.hostname)),s(u.hostname,f,u),n===2||u.publicSuffix===null)||(u.domain=rz(u.publicSuffix,u.hostname,f),n===3||u.domain===null)||(u.subdomain=gz(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=lz(u.domain,u.publicSuffix)),u)}function bz(e,n,s){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const ls=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wc=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),eu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),rb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Vp="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",vz=621,xz=625,a2=ls.length,n2=eu.length,i2=new Uint32Array(n2),Hc=new Uint32Array(n2),Lp=new Int32Array(a2).fill(-1);for(let e=0,n=0;e<a2;e+=1)for(let s=Wc[e];s<Wc[e+1];s+=1){i2[s]=n;const r=n+eu[s];let u=5381;for(let f=r-1;f>=n;f-=1)u=u*33^Vp.charCodeAt(f);Hc[s]=u>>>0,eu[s]===1&&Vp.charCodeAt(n)===42&&(Lp[e]=s),n=r}let qn=-1,Up=0,Gp=0;function lb(e,n,s,r){if(eu[e]!==r)return!1;const u=i2[e];for(let f=0;f<r;f+=1)if(Vp.charCodeAt(u+f)!==n.charCodeAt(s+f))return!1;return!0}function cb(e,n,s,r,u){let f=Wc[e],g=Wc[e+1];for(;f<g;){const b=f+g>>>1,x=Hc[b];if(x<n)f=b+1;else if(x>n)g=b;else{for(let k=b;k>=f&&Hc[k]===n;k-=1)if(lb(k,s,r,u))return k;for(let k=b+1;k<g&&Hc[k]===n;k+=1)if(lb(k,s,r,u))return k;return-1}}return-1}function ub(e,n,s){let r=n,u=e.length,f=5381;qn=-1;for(let b=e.length-1;b>=0;b-=1){const x=e.charCodeAt(b);if(x===46){const k=b+1;let S=cb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Lp[r]),S===-1)return qn!==-1;r=rb[S],(ls[r]&s)!==0&&(qn=r,Up=k,Gp=u),u=b,f=5381}else f=f*33^x}let g=cb(r,f>>>0,e,0,u);return g===-1&&(g=Lp[r]),g!==-1&&(r=rb[g],(ls[r]&s)!==0&&(qn=r,Up=0,Gp=u)),qn!==-1}function s2(e,n,s){if(bz(e,n,s))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(ub(e,xz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Gp+1);return}if(ub(e,vz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Up);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const tu=yz();function kz(e,n){return e2(tu),t2(e,0,s2,n,tu).hostname}function wz(e,n){return e2(tu),t2(e,5,s2,n,tu).domainWithoutSuffix}const Sz={allowPrivateDomains:!0};new nz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(iz);function gu(e){if(e==null)return null;const n=e.trim();if(!n)return null;const s=kz(n);return s?s.replace(/^www\./i,"").toLowerCase():null}function jz(e){return e==null||e.trim()===""?"":wz(e,Sz)?.toLowerCase()??""}const Az=new Intl.Segmenter("en",{granularity:"word"}),Cz=/[\p{L}\p{N}]+/gu;function Nz(e){return e.normalize("NFKC").toLocaleLowerCase("en")}function _z(e){const n=[];for(const s of Az.segment(e))if(s.isWordLike)for(const r of s.segment.match(Cz)??[])n.push(r);return n}function zz(e){return _z(Nz(e))}function cs(e){return zz(e).join("")}const o2=A(["cli","api","config-file"]);function Dz(e){const n=new Set,s=new Set;for(const r of e){if(n.has(r.label)){s.add(r.label);continue}n.add(r.label)}return[...s]}function Ez(e,n){return n?e.some(s=>s.label===n):!0}const Tz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Ie(o(),o()).optional(),providers:y(ft).optional(),providerModels:C0.optional(),locations:y(la).optional(),defaultLocation:o().nullable().optional(),measurement:_0.optional(),autoExtractBacklinks:_().optional(),configSource:o2.optional()});Tz.extend({name:o().trim().min(1).max(120)});const Rz=p({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Ie(o(),o()).default({}),providers:y(o()).default([]),providerModels:C0.default({}),locations:y(la).default([]),defaultLocation:o().nullable().optional(),measurement:_0.default(Jx),autoExtractBacklinks:_().default(!1),configSource:o2.default("cli"),configRevision:m().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});p({id:o(),query:o(),createdAt:o()});p({id:o(),keyword:o(),createdAt:o()});p({queries:y(o().trim().min(1)).min(1)});p({keywords:y(o().trim().min(1)).min(1)});p({provider:ft,count:m().int().min(1).max(20).optional()});p({id:o(),domain:o(),createdAt:o()});p({competitors:y(o().trim().min(1)).min(1)});function $p(e){return gu(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Oz(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of n){const f=u.trim();if(!f)continue;const g=$p(f);s.has(g)||(s.add(g),r.push(f))}return r}const Bz=p({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Ie(o(),o()).optional().default({})}),qz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ft).optional().default([]),enabled:_().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Mz=p({channel:O("webhook"),url:o().url(),events:y(N0).min(1)}),Pz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),db=y(o().min(1)),Iz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:db.optional(),keywords:db.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ft).optional().default([]),providerModels:C0.optional().default({}),locations:y(la).optional().default([]),defaultLocation:o().optional(),measurement:_0.optional().default(Jx),schedule:qz,notifications:y(Mz).optional().default([]),google:Pz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=Dz(e.locations);s.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Ez(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Bz,spec:Iz});const Vz=["branded","non-brand"],Lz=A(Vz),Uz=A(["all","branded","non-brand"]),Gz=2,$z=o().regex(/^[a-f0-9]{64}$/),yu=o().trim().min(1).max(256),mb=A(["sensitive","insensitive"]),ke=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Hz=o().trim().min(1).refine(e=>gu(e)!==null,"A competitor domain must be a valid hostname"),Kz=Be("kind",[p({kind:O("exact"),url:o().min(1),pathCase:mb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:mb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),Qz=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),Zz=p({projectBrand:Qz}).strict(),Fz=p({stableKey:ke,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(Kz),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),r2=p({stableKey:ke,label:o().trim().min(1),domain:Hz,aliases:y(o().min(1))}).strict(),Yz=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(r2)}).strict(),Xz=A(["manual","query-set","template","discovery"]),Jz=p({source:Xz,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),Wz=p({queryId:yu,queryText:o().min(1),provenance:Jz}).strict(),e9=p({providers:y(ft).min(1),models:Ie(ft,o().min(1)),location:la.nullable()}).strict(),t9=p({stableKey:o().min(1),queryId:yu,queryText:o().min(1),context:e9,expectedSnapshots:m().int().nonnegative()}).strict(),z0=Lz,a9=p({targetKey:ke,queryId:yu,queryClass:z0,executionNodeKey:o().min(1)}).strict(),n9=p({executionNodeKey:o().min(1),targetKey:ke,queryId:yu}).strict(),bu=p({schemaVersion:O(Gz),identities:Zz,targets:y(Fz),groups:y(Yz),querySnapshots:y(Wz),assignments:y(a9),executionNodes:y(t9),usageEdges:y(n9),compiledChecksum:$z}).strict().superRefine((e,n)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&n.addIssue({code:Ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${u.stableKey}"`}),s.add(u.stableKey);const r=new Set(e.targets.map(u=>u.stableKey));e.usageEdges.forEach((u,f)=>{s.has(u.executionNodeKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["assignments",f,"targetKey"],message:`Assignment references unknown Target "${u.targetKey}"`})});for(const u of e.groups)for(const f of u.targetKeys)r.has(f)||n.addIssue({code:Ye.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),D0=100;function wo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const E0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=Be("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),T0=A(["all","group","property"]),Wa=Uz,i9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),R0=A(["not_measured","queued","running","complete","partial","failed"]),s9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:T0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:i9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const o9=p({provider:ft,mentionCoverage:Lt,citationCoverage:Lt}).strict(),r9=p({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),l9=p({targetKey:ke,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(o9),flags:m().int().nonnegative()}).strict(),c9=p({kind:A(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:m().int().nonnegative(),share:m().min(0).max(1)}).strict(),u9=p({groupKey:ke,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(c9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:T0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:_().optional()}).strict(),nextAction:p({kind:s9,count:m().int().nonnegative().optional()}).strict(),metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt,brandPresence:Lt,sov:Lt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:wo(l9),outcomes:r9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:u9.optional()}).strict();const l2=A(["sources","answers"]),d9=l2.enum;d9.sources;p({targetKey:ke,queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:l2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c2=1,il=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sl=o().trim().min(1).max(256),pb=A(["sensitive","insensitive"]);function au(e){const n=gu(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function m9(e){const n=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||n.push(u),s=!0):(n.push(u),s=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function hb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function u2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return m9(n.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Hp(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=n.startsWith("/")?n:`/${n}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return u2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function p9(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function fb(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=au(s.hostname),u=Hp(p9(n));return`https://${r}${u}`}const Xr=o().trim().min(1).refine(e=>{try{return au(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>au(e)),h9=o().trim().min(1).refine(e=>{try{return Hp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Hp(e)),f9=o().trim().min(1).refine(e=>{try{return fb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>fb(e)),g9=Be("kind",[p({kind:O("exact"),url:f9,pathCase:pb}).strict(),p({kind:O("prefix"),host:Xr,pathPrefix:h9,pathCase:pb}).strict(),p({kind:O("host"),host:Xr}).strict()]),d2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),y9=Ie(o().trim().min(1),o()),b9=Xr,m2=p({stableKey:Ut,label:o().trim().min(1),urls:y(g9).min(1),aliases:y(d2),metadata:y9.optional()}).strict(),O0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(b9).optional()}).strict(),p2=p({targetKey:Ut,queryIds:y(sl).min(1),context:la.nullable().optional()}).strict();function v9(e,n){return e<n?-1:e>n?1:0}function x9(e,n=s=>s){const s=new Set,r=new Set;for(const u of e){const f=n(u);s.has(f)&&r.add(f),s.add(f)}return r}function up(e,n,s,r,u){for(const f of x9(n,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function gb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:au(n.hostname),pathname:u2(n.pathname||"/")}}function k9(e,n,s,r){return e===s||(n==="insensitive"||r==="insensitive")&&hb(e)===hb(s)}function w9(e,n){if(e.kind!==n.kind)return!1;const s=gb(e),r=gb(n);return s.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:k9(s.pathname,e.pathCase,r.pathname,n.pathCase)}function S9(e){const n=new Set;return[...e].sort(v9).filter(s=>{const r=cs(s);return n.has(r)?!1:(n.add(r),!0)})}const h2=p({schemaVersion:O(c2),targets:y(m2).min(1),groups:y(O0).optional(),targetQuerySelections:y(p2).optional()}).strict().superRefine((e,n)=>{const s=e.groups??[],r=e.targetQuerySelections??[];up(n,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),up(n,s.map(x=>x.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(x=>x.stableKey)),f=new Set(s.map(x=>x.stableKey));for(const x of u)f.has(x)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${x}`});const g=new Map,b=[];e.targets.forEach((x,k)=>{for(const S of S9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&n.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${j}: ${S}`}),g.set(C,x.stableKey)}x.urls.forEach((S,C)=>{b.find(E=>E.targetKey!==x.stableKey&&w9(E.matcher,S))&&n.addIssue({code:"custom",path:["targets",k,"urls",C],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:x.stableKey,matcher:S})})}),s.forEach((x,k)=>{up(n,x.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<x.targetKeys.length;S++){const C=x.targetKeys[S];u.has(C)||n.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});h2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:il.nullable(),plan:h2}).strict();const j9=p({queryId:sl,queryText:o().min(1)}).strict(),B0=p({stableKey:o().min(1),queryText:o().min(1),context:la.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),A9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:sl}).strict(),C9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:sl,targetKey:Ut}).strict(),Kp=Be("kind",[A9,C9]),f2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),g2=m2.extend({mentionNotApplicable:_()}),y2=p({schemaVersion:O(c2),defaultContext:la.nullable(),effectiveOwnedHosts:y(Xr),projectCanonicalHost:Xr,projectBrandNames:y(d2),targets:y(g2),groups:y(O0),targetQuerySelections:y(p2),querySnapshots:y(j9),executionNodes:y(B0),usageEdges:y(Kp),warnings:y(f2)}).strict(),N9=y2,b2=Be("schemaVersion",[y2,bu]),q0=o().regex(/^[a-f0-9]{64}$/),M0=o().datetime(),v2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ie(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),_9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),z9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:il,checksum:q0,createdAt:M0,plan:b2}).nullable()});p({versions:y(p({revision:il,checksum:q0,createdAt:M0,active:_()}))});p({version:p({revision:il,checksum:q0,createdAt:M0,active:_(),plan:b2})});const Kc=p({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),D9=A(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),x2=p({id:D9,severity:A(["fail","warn"]),message:o().min(1),path:y(Ve([o(),m().int()]))}).strict(),E9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),k2=p({ok:O(!0),checks:y(x2),executionNodes:y(B0),dedupSaved:m().int().nonnegative(),usageEdges:E9,estCostUsd:ce(),plan:N9,warnings:y(f2),counts:Kc}).strict(),w2=p({ok:O(!1),checks:y(x2).min(1),executionNodes:y(B0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:ce()}).strict();Be("ok",[k2,w2]);const Rc=p({targetKey:Ut,context:la.nullable(),queryIds:y(sl)}).strict();function yb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const T9=k2.extend({diff:p({activeRevision:il.nullable(),targets:yb(g2),groups:yb(O0),querySelections:p({added:y(Rc),removed:y(Rc),changed:y(p({targetKey:Ut,before:Rc,after:Rc}).strict()),unchanged:y(p({targetKey:Ut,context:la.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Kp),removedUsageEdges:y(Kp),counts:p({before:Kc.nullable(),after:Kc,delta:Kc.nullable()}).strict()}).strict()}).strict()}).strict(),R9=w2.extend({diff:ce()}).strict();Be("ok",[T9,R9]);const vu=A(["complete","partial","failed","unsupported"]);vu.enum;A(["proposed","alias","shared","unmatched","excluded"]);A(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const O9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),B9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),bb=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),P0=p({primary:bb,aliases:y(bb).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(B9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:P0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const dp=p({url:o(),canonicalUrl:o().nullable(),classification:A(["shared","unmatched","excluded"]),reason:A(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),q9=p({classification:O("proposed"),reason:O("primary-match"),stableKey:Ut,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),M9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),P9=p({kind:O9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(q9),aliases:y(M9),shared:y(dp),unmatched:y(dp),excluded:y(dp),diagnostics:y(P9)}).strict().superRefine((e,n)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const I0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),S2=A(["baseline","target"]),j2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Ve([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:ce(),denominator:ce(),rate:ce(),reason:j2}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),I9=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),V9=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:I9,context:la.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(V9)}).strict().superRefine((e,n)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const xu=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),vb=Ve([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:ce(),of:ce(),reason:j2}).strict()]),L9=p({domains:y(vb),providers:y(p({provider:ft,domains:y(vb)}).strict())}).strict(),U9=p({provider:ft,completeness:xu,answerCoverage:us}).strict(),G9=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:xu,answerCoverage:us,targetCoverage:us,sov:L9,providers:y(U9)}).strict(),$9=p({provider:ft,completeness:xu,citationCoverage:us,mentionCoverage:us}).strict(),H9=p({id:o().trim().min(1),label:o().trim().min(1),completeness:xu,citationCoverage:us,mentionCoverage:us,providers:y($9)}).strict(),A2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:I0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),K9=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:I0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),Q9=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),queryClass:Ve([A(["branded","non-brand"]),ce()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(K9),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),Z9=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),F9=p({id:o().trim().min(1),status:A(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();p({revision:m().int().positive(),run:F9.nullable(),groups:y(G9),targets:y(H9),evidence:y(A2),diagnostics:Z9}).strict();p({property:p({targetKey:ke,label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:wo(A2).optional(),answers:wo(Q9).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const V0=A(["used","not-used","unknown","not-applicable"]);V0.enum;const L0=A(["native-auto-v1","search-required-v1"]);L0.enum;const Xa=o().trim().min(1),ol=o().trim().min(1),Y9=o().trim().min(1),tt=m().int().nonnegative(),rl=p({state:R0,displayedRunId:Xa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),ll=p({targetKey:ke,label:ol}).strict(),za={runId:Xa.optional(),provider:ft.optional(),location:Y9.optional()},Jr=o().trim().min(1);p({runId:za.runId,groupKey:ke.optional(),queryClass:Wa.default("non-brand"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict();const X9=ll.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:tt,recommendedInstead:y(p({name:Jr,occurrences:tt}).strict()).max(5),recommendedInsteadTotal:tt,recommendedInsteadTruncated:_()}).strict().superRefine((e,n)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),J9=p({groupKey:ke,label:ol,propertyCount:tt,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:ke.nullable(),label:ol.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),measurement:rl,queryClass:Wa,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(X9),markets:y(J9),totalProperties:tt,truncated:_()}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Qp={queryId:Xa,text:ol,class:z0,provider:ft,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},W9=Be("status",[p({resultId:Xa,...Qp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answerExcerpt:o().nullable()}).strict(),p({resultId:ce(),...Qp,status:O("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(Jr).length(0),answerExcerpt:ce()}).strict()]);p({property:ll,measurement:rl,queryClass:Wa,questions:y(W9),total:tt,truncated:_()}).strict();p({targetKey:ke,resultId:Xa}).strict();const eD=p({url:Xa,classification:I0,matchedTargetKeys:y(ke),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:Ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:ll,measurement:rl,question:p({resultId:Xa,...Qp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answer:o().nullable(),sources:y(eD),captureStatus:Ve([vu,ce()]),retrievalStatus:Ve([V0,ce()]),retrievalContract:Ve([L0,ce()])}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),limit:m().int().positive().max(50).optional()}).strict();const tD=Be("state",[p({state:O("available"),answeredResults:tt,targetMissResults:tt,recommendationOccurrences:tt}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),aD=p({name:Jr,occurrences:tt,providers:y(ft).max(5),providerTotal:tt,providersTruncated:_(),questions:y(ol).max(5),questionTotal:tt,questionsTruncated:_()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:Ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:Ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:Ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:ll,measurement:rl,queryClass:Wa,basis:tD,competitors:y(aD),total:tt,truncated:_()}).strict();p({runId:za.runId,scope:T0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.default("all"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:Ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const C2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),N2=rl.extend({executionIdentity:Xa.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),Br=Be("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,n)=>{if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:Ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:Ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:E0}).strict()]);p({current:N2,comparison:Be("state",[p({state:O("available"),previous:p({displayedRunId:Xa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:Xa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Br,mentionCoverage:Br,citationCoverage:Br}).strict(),changedProperties:y(ll.extend({mentionCoverage:Br,citationCoverage:Br,flags:tt}).strict()),totalProperties:tt,truncated:_()}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:Ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:Ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:Ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:za.runId}).strict();const nD=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),ku=p({state:O("unavailable"),reason:nD}).strict(),iD=p({state:O("available"),expected:tt,executed:tt,answered:tt,missing:tt}).strict(),sD=Be("state",[iD,ku]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:Ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:Ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),oD=p({state:O("available"),complete:tt,partial:tt,failed:tt,unsupported:tt,notRecorded:tt}).strict(),rD=Be("state",[oD,ku]),lD=p({state:O("available"),used:tt,notUsed:tt,unknown:tt,notApplicable:tt,notRecorded:tt}).strict(),cD=Be("state",[lD,ku]),uD=p({state:O("available"),expectedQuestions:tt,answeredQuestions:tt,missingQuestions:tt}).strict(),dD=Be("state",[uD,ku]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:Ye.custom,message:"Expected questions must equal answered plus missing"})});p({run:N2,completeness:sD,capture:rD,retrieval:cD,population:dD,comparison:Be("state",[p({state:O("available"),previousDisplayedRunId:Xa}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const So=o().regex(/^[a-f0-9]{64}$/),Ja=o().trim().min(1).max(256),zi=m().int().positive(),xb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),mD=A(["proposed","included","excluded"]),pD=A(["manual","sitemap"]),U0=p({stableKey:ke,label:o().trim().min(1),status:mD,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:pD,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),wu=p({providers:y(ft).optional(),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),hD=A(["branded","non-brand","unclassified"]),fD=A(["rule","operator"]),_2=p({targetKey:ke,queryId:Ja,contextOverride:wu.optional(),queryClass:hD,classificationSource:fD}).strict(),G0=r2,z2=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0)}).strict(),gD=p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)),inputChecksum:So,reviewedAt:o().datetime().optional()}).strict(),yD=p({providers:y(ft),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),bD=p({defaultContext:yD,targets:y(U0),assignments:y(_2),groups:y(z2),discovery:gD.optional()}).strict(),vD=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:bD,createdBy:xb,updatedBy:xb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$0=p({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),xD=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict(),kD=p({etag:o().trim().min(1),changed:_(),warnings:y(xD),counts:$0}).strict();p({draft:vD.nullable(),etag:o().trim().min(1).nullable()}).strict();wo(U0);wo(_2);wo(z2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)).optional()}).strict();const wD=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:ke.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(wD),selectedTargetKeys:y(ke).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:U0}).strict();p({targetKey:ke,label:o().trim().min(1)}).strict();p({targetKey:ke,mergedKeys:y(ke).min(1)}).strict();p({targetKey:ke,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:ke,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const D2={targetKeys:y(ke).optional(),groupKeys:y(ke).optional()};function E2(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(D2).strict().superRefine(E2);const SD=p({...D2,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict().superRefine(E2);Ve([p({targetKey:ke,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict(),SD]);const jD=p({groupKey:ke,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(jD),resolvedTargetKeys:y(ke),overlapCount:m().int().nonnegative(),assignments:p({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:p({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();p({pairs:y(p({targetKey:ke,queryId:Ja}).strict()).min(1),contextOverride:wu.optional()}).strict();Ve([p({targetKey:ke,queryId:Ja}).strict(),p({targetKeys:y(ke).min(1),queryId:Ja}).strict()]);p({targetKey:ke}).strict();p({queryClass:z0,assignments:y(p({targetKey:ke,queryId:Ja}).strict()).min(1)}).strict();p({group:p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0).optional()}).strict()}).strict();p({groupKey:ke}).strict();p({groupKey:ke,competitor:G0}).strict();p({groupKey:ke,competitorKey:ke}).strict();const nu=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1)}).strict()]);const kb=p({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),AD=p({activeRevision:zi.nullable(),targets:kb,groups:kb,assignments:p({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:p({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu,diff:AD}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1),diff:ce()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:So}).strict();p({published:_(),active:p({revision:zi,checksum:So,compiledChecksum:So,createdAt:o().datetime(),plan:bu}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const CD=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),ND=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),_D=A(["simple","draft-only","active-v1","active-v2"]);p({state:CD,nextAction:ND,mode:_D,activeRevision:zi.nullable(),activeSchemaVersion:Ve([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const T2=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:m().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),zD=p({queryId:Ja,queryText:o().min(1),position:m().int().nonnegative()}).strict();T2.extend({items:y(zD)}).strict();p({querySets:y(T2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(Ja)}).strict();const DD=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();p({templates:y(DD)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();p({bindings:y(Ie(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:Ja,queryText:o().min(1)}).strict()),existing:y(p({queryId:Ja,queryText:o().min(1)}).strict())}).strict();const iu=o().regex(/^[a-f0-9]{64}$/),Su=m().int().positive();p({stableKey:ke,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const ED=A(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Zp=p({dataRow:Su,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),qr=Zp.extend({reason:ED}),TD=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),RD=p({proposedGroupKey:ke,evidence:y(TD).min(1)}).strict(),OD=Be("status",[Zp.extend({status:O("matched"),targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("ambiguous"),candidateTargetKeys:y(ke).min(1).optional(),candidateGroupKeys:y(ke).min(1).optional()}).strict(),qr.extend({status:O("unmatched")}).strict(),qr.extend({status:O("invalid"),groupKeyConflict:RD.optional()}).strict(),Zp.extend({status:O("duplicate"),duplicateOfRow:Su,targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("proposed"),targetKey:ke}).strict(),qr.extend({status:O("excluded"),targetKey:ke}).strict()]),BD=p({normalizedGroupLabel:o(),groupKey:ke,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(Su),targetKeys:y(ke),addedTargetKeys:y(ke),unchangedTargetKeys:y(ke)}).strict(),qD=p({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();p({draftEtag:o().trim().min(1),sourceChecksum:iu,previewChecksum:iu,rows:y(OD),groupChanges:y(BD),counts:qD}).strict();p({csv:o(),sourceChecksum:iu,previewChecksum:iu,acceptedRows:y(Su).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});kD.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const R2=A(["introduced","repointed","retired"]),MD=R2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:R2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const PD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];MD.repointed;new Set(PD.map(e=>e.modelId.toLowerCase()));const ID=A(["not-exposed","no-known-change","known-change"]);ID.enum;const VD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),LD=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(VD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),UD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function GD(e){const n=e.trim().toLowerCase();return UD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function mp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Mr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function pp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function $D(e,n){const s=GD(e),r=Array.isArray(n.changes)?n.changes:[],u=mp(n.changeCount)||r.length,f=Math.min(u,mp(n.unverifiedChangeCount)||mp(n.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Mr(n.knownGoodAsOf),b=n.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:pp(r.filter(S=>S.confirmed!==!1).map(S=>Mr(S.date))),unconfirmedDates:pp(r.filter(S=>S.confirmed===!1).map(S=>Mr(S.date)))};const k=pp([Mr(n.firstChangeDate),Mr(n.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function HD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function wb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function KD(e){const n=wb(e.confirmedDates,e.confirmedCount),s=wb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&s)return`${r} was updated ${n}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Sb(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function A$(e){const n=Object.entries(e??{}).map(([x,k])=>$D(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(n.length===0)return null;const s=n.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(n.map(E=>E.engine))],k=x.length>1,S=Sb(n),C=[...new Set(n.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),j=S??(C.length>0?`We last checked for model updates on ${C[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${HD(x)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${j?` ${j}`:""}`}}const r=s.reduce((x,k)=>x+k.confirmedCount+k.unconfirmedCount,0),u=s.some(x=>x.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=Sb(n);return{kind:"change",text:`${s.map(KD).join(" ")} ${g}${b?` ${b}`:""}`}}const Oc=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),QD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:QD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const ZD=p({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:m(),impressions:m(),ctr:m(),position:m()});A(["clicks","impressions","date"]);p({rows:y(ZD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const FD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),YD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),XD=p({clicks:Oc.nullable(),impressions:Oc.nullable(),ctr:Oc.nullable(),position:Oc.nullable()}),jb=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),JD=p({days:m(),prior:jb,trailing:jb,comparable:_(),change:p({clicks:m().nullable(),impressions:m().nullable(),ctr:m().nullable(),position:m().nullable()})});p({totals:p({clicks:m(),impressions:m(),ctr:m(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(FD),window:YD.optional(),trends:XD.optional(),periodComparison:JD.nullable().optional()});const WD=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(WD),totals:p({clicks:m(),impressions:m(),ctr:m(),days:m(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:_()}).nullable(),totalsSource:O("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const Fp=p({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:_().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});A(["stable","reindexed","deindexed","still-missing","new"]);const eE=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),tE=p({reason:o(),count:m(),urls:y(Fp).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Fp).default([]),notIndexed:y(Fp).default([]),deindexed:y(eE).default([]),reasonGroups:y(tE).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const aE=p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:A(["success","error"]),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(aE).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ie(o(),m()).default({})});const nE=p({siteUrl:o(),permissionLevel:o()});p({sites:y(nE).default([])});const iE=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),O2=p({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:_().optional(),isSitemapsIndex:_().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(iE).optional()});p({sitemaps:y(O2).default([]),summary:p({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});p({sitemapUrls:y(o().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const sE=p({sitemapUrl:o(),status:A(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(sE)});p({sitemaps:y(O2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Xe=o().trim().min(1),Ab=o().regex(/^[a-f0-9]{64}$/i);function oE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const Yp=o().refine(oE,{message:"Expected a calendar date as YYYY-MM-DD."});function rE(e,n){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const lE=A(["not-connected","selection-required","connected","stale"]),Bc=lE.enum,B2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);B2.enum;const q2=A(["enabled","paused","removed","unknown"]);q2.enum;const M2=A(["enabled","hidden","removed","unknown"]);M2.enum;const H0=A(["customer","campaign"]);H0.enum;const P2=A(["customer-goal","campaign-goal","custom-goal"]);P2.enum;const I2=p({loginCustomerId:Xe.nullable(),customerId:Xe.nullable(),selectedAt:o().nullable()}).strict(),hp=p({id:Xe,projectId:Xe,scopes:y(o()).default([]),selection:I2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Xp=p({resourceName:Xe,customerId:Xe,parentCustomerId:Xe.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:B2}).strict(),cE=p({customers:y(Xp),totalAccessible:m().int().nonnegative(),truncated:_(),selection:I2,fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(Bc["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc["selection-required"]),connection:hp,selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc.connected),connection:hp,selectedCustomer:Xp}).strict(),p({connected:O(!0),status:O(Bc.stale),connection:hp,selectedCustomer:Xp}).strict()]);const uE=p({id:Xe,resourceName:Xe,name:o(),status:q2,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),dE=p({id:Xe,resourceName:Xe,name:o(),status:M2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),mE=p({category:o(),origin:o(),biddable:_()}).strict(),pE=p({campaignId:Xe,category:o(),origin:o(),biddable:_()}).strict(),hE=p({id:Xe,name:o(),conversionActionIds:y(Xe)}).strict(),fE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable()}).strict(),gE=p({customerId:Xe,fetchedAt:o(),campaigns:y(uE),conversionActions:y(dE),customerConversionGoals:y(mE),campaignConversionGoals:y(pE),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(hE),campaignGoalConfigurations:y(fE)}).strict(),yE=p({source:P2,category:o().nullable(),origin:o().nullable(),customGoalId:Xe.nullable(),biddable:_().nullable(),conversionActionIds:y(Xe),primaryConversionActionIds:y(Xe),secondaryConversionActionIds:y(Xe),missingConversionActionIds:y(Xe)}).strict(),bE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable(),missingCustomGoalId:Xe.nullable(),goals:y(yE)}).strict();p({customerId:Xe,derivedAt:o(),campaigns:y(bE)}).strict();const V2=50,Jp=31,vE=V2*Jp,xE=p({campaignIds:y(Xe).min(1).max(V2),startDate:Yp,endDate:Yp}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:Ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:Ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}rE(e.startDate,e.endDate)>Jp&&n.addIssue({code:Ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Jp} calendar days.`})}),kE=p({campaignId:Xe,date:Yp,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),wE=p({query:xE,rows:y(kE).max(vE),truncated:_(),fetchedAt:o()}).strict(),L2=A(["accessible-customers","inventory","campaign-metrics"]),fp=L2.enum,K0=p({id:Xe,projectId:Xe,connectionId:Xe,runId:Xe,kind:L2,customerId:Xe.nullable(),payloadChecksum:Ab,rawPayloadSha256:Ab.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),SE=Be("kind",[p({kind:O(fp["accessible-customers"]),data:cE}).strict(),p({kind:O(fp.inventory),data:gE}).strict(),p({kind:O(fp["campaign-metrics"]),data:wE}).strict()]),jE=p({metadata:K0,payload:SE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Ke=o().trim().min(1),Cb=o().regex(/^[a-f0-9]{64}$/i),AE=A(["not-connected","selection-required","connected","stale"]),qc=AE.enum,CE=A(["live","draft"]),U2=CE.enum,Qc=p({accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),selectedAt:o().nullable()}).strict(),gp=p({id:Ke,projectId:Ke,scopes:y(o()).default([]),selection:Qc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),G2=p({id:Ke,path:o(),name:o(),shareData:_().nullable()}).strict(),$2=p({accountId:Ke,id:Ke,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),Q0=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),NE=p({accounts:y(G2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containers:y($2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containerId:Ke,workspaces:y(Q0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const _E=p({id:Ke,name:o(),type:o(),paused:_(),firingTriggerIds:y(Ke),blockingTriggerIds:y(Ke),referencedVariableIds:y(Ke),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),zE=p({id:Ke,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),DE=p({id:Ke,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),H2=A(["recognized","unknown"]),Nb=H2.enum,EE=A(["literal","variable-ref","absent","unknown"]),ju=EE.enum,TE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),To=p({source:O(ju.absent),literal:ce(),variableRef:ce()}).strict(),Ro=p({source:O(ju.unknown),literal:ce(),variableRef:ce()}).strict(),Oo=p({source:O(ju["variable-ref"]),literal:ce(),variableRef:TE}).strict();function cl(e){return p({source:O(ju.literal),literal:e,variableRef:ce()}).strict()}const RE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),OE=o().trim().min(1).max(128).regex(/^[\w-]+$/),BE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),qE=o().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[cl(o().trim().min(1).max(256)),Oo,To,Ro]);const ME=Be("source",[cl(RE),Oo,To,Ro]),PE=Be("source",[cl(OE),Oo,To,Ro]),IE=Be("source",[cl(BE),Oo,To,Ro]),VE=Be("source",[Oo,To,Ro]),LE=Be("source",[cl(qE),Oo,To,Ro]),K2=A(["all-pages","custom-event","filtered","unknown"]);K2.enum;const _b=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),UE=p({triggerId:Ke,triggerType:o(),eventPredicates:y(_b),hostnamePredicates:y(_b),unsupportedConditionCount:m().int().nonnegative()}).strict(),Q2=A(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);Q2.enum;const GE=p({tagId:Ke,tagType:o(),recognition:H2,recognitionReason:o().nullable(),conversionId:ME,conversionLabel:PE,value:IE,transactionId:VE,currency:LE,triggerStrategy:K2,triggerIds:y(Ke),triggerPredicates:y(UE),reviewReasons:y(Q2)}).strict().superRefine((e,n)=>{e.recognition===Nb.recognized&&e.recognitionReason!==null&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Nb.unknown&&!e.recognitionReason&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Z2=p({accountId:Ke,containerId:Ke,workspaceId:Ke.nullable(),tags:y(_E),triggers:y(zE),variables:y(DE),googleAdsTagAssessments:y(GE).default([])}).strict(),$E=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),F2=p({source:O(U2.live),version:$E,graph:Z2,fetchedAt:o()}).strict(),Y2=p({source:O(U2.draft),workspace:Q0,graph:Z2,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),HE=p({account:G2,container:$2,workspaces:y(Q0),live:F2.nullable(),draft:Y2.nullable(),fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(qc["not-connected"]),connection:ce(),selection:ce()}).strict(),p({connected:O(!0),status:O(qc["selection-required"]),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.connected),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.stale),connection:gp,selection:Qc}).strict()]);const X2=A(["accounts","container","live","draft"]),Mc=X2.enum,Z0=p({id:Ke,projectId:Ke,connectionId:Ke,runId:Ke,kind:X2,accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),payloadChecksum:Cb,rawPayloadSha256:Cb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),KE=Be("kind",[p({kind:O(Mc.accounts),data:NE}).strict(),p({kind:O(Mc.container),data:HE}).strict(),p({kind:O(Mc.live),data:F2}).strict(),p({kind:O(Mc.draft),data:Y2}).strict()]),QE=p({metadata:Z0,payload:KE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Fa=o().trim().min(1),ZE=o().trim().min(1).refine(e=>gu(e)!==null,"Expected a hostname or http(s) URL."),F0=A(["configured","statically-consistent","runtime-unverified","observed"]);F0.enum;const J2=A(["pass","fail","unknown"]);J2.enum;const W2=A(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);W2.enum;const ek=p({id:Fa,projectId:Fa,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:Fa,conversionActionId:Fa,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(Fa).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:Fa,containerId:Fa,tagId:Fa,triggerIds:y(Fa).default([]),variableIds:y(Fa).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(ZE).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();ek.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const tk=A(["not-run","consistent","inconsistent"]);tk.enum;const ak=A(["not-run","not-observed","observed"]);ak.enum;p({staticCheck:tk,runtimeVerificationRequired:_(),runtimeObservation:ak}).strict();const FE=p({code:W2,subject:o().trim().min(1),outcome:J2,status:F0,evidenceIds:y(Fa).default([])}).strict(),YE=p({contract:ek,status:F0,findings:y(FE),evaluatedAt:o()}).strict(),Hr=o().trim().min(1);function zb(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const XE=/^[\w-]+$/;function Y0(e){const n=e.trim();return XE.test(n)?n:null}function JE(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Y0(n)}function WE(e,n){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===n?r[2]:null:Y0(s)}function eT(e,n,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===s?u[3]:null:Y0(r)}function tT(e){const n=zb(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const s=zb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:n}:null}function aT(e){const n=JE(e.accountId);if(!n)return null;const s=WE(e.containerId,n);if(!s)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:s};const r=eT(e.workspaceId,n,s);return r?{accountId:n,containerId:s,workspaceId:r}:null}const Au=A(["google-ads","gtm"]);Au.enum;p({provider:Au,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Au,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Hr.nullable().optional(),customerId:Hr}).strict().superRefine((e,n)=>{tT(e)||n.addIssue({code:Ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Hr,containerId:Hr,workspaceId:Hr.optional()}).strict().superRefine((e,n)=>{aT(e)||n.addIssue({code:Ye.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Au,disconnected:_()}).strict();const nk=100;p({snapshots:y(K0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:jE}).strict();p({snapshots:y(Z0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:QE}).strict();p({assessment:YE,googleAdsSnapshot:K0.nullable(),gtmSnapshot:Z0.nullable()}).strict();const nT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(nT),total:m().int().nonnegative()});const iT=p({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Ie(o(),ya()).nullable(),regularHours:Ie(o(),ya()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(iT),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});p({selectAllNew:_().default(!0),accountName:o().optional(),switchAccount:_().default(!1)});p({selected:_()});p({locationNames:y(o()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});p({runId:o(),status:o()});const sT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(sT),total:m().int().nonnegative()});const oT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(oT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const rT=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(rT),total:m().int().nonnegative()});const lT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ie(o(),ya())});p({lodging:y(lT),total:m().int().nonnegative()});const cT=p({name:o(),valueType:o(),values:y(Ve([_(),o()])),unsetValues:y(o()),uris:y(o())}),uT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(cT)});p({attributes:y(uT),total:m().int().nonnegative()});const dT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ie(o(),ya())});p({places:y(dT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ie(o(),m()),recent7d:Ie(o(),m()),prior7d:Ie(o(),m()),deltaPct:Ie(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ie(o(),m())})),keywords:p({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)}),placeActions:p({total:m().int().nonnegative(),hasReservationCta:_(),hasBookingCta:_(),hasDirectMerchantCta:_()}),lodging:p({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:p({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const mT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function pT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const s=n.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function C$(e){return mT[e]??pT(e)}const hT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],fT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function N$(e){return hT.includes(e)?"conversion":fT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const yp=p({id:o(),url:o(),httpCode:m().nullable().optional(),inIndex:_().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:o().nullable().optional()});p({summary:p({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:m()}),lastInspectedAt:o().nullable(),indexed:y(yp).default([]),notIndexed:y(yp).default([]),unknown:y(yp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const gT=p({url:o(),status:A(["success","error"]),submittedAt:o(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(gT).default([])});const ik=p({url:o(),verified:_()});p({sites:y(ik).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(ik).default([])});p({siteUrl:o()});const yT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(yT).default([])});const Bo=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Bo,createdAt:o(),updatedAt:o()});const Db=p({url:o(),reachable:_(),pageCount:m().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:p({id:m(),slug:o()}).nullable().optional()});p({connected:_(),projectName:o(),defaultEnv:Bo,live:Db.nullable(),staging:Db.nullable(),adminUrl:o().nullable().optional()});const bT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),sk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),vT=p({type:o(),json:Ie(o(),ya())}),xT=bT.extend({env:Bo,content:o(),seo:sk,schemaBlocks:y(vT).default([])}),Eb=xT.extend({contentHash:o(),contentSnippet:o()}),ok=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),kT=p({slug:o(),severity:A(["high","medium","low"]),code:A(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});p({slug:o(),title:o(),status:o(),wordCount:m(),seo:sk,schemaPresent:_(),issues:y(kT).default([])});const wT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:ok.optional()});p({env:Bo,strategy:A(["plugin","manual"]),results:y(wT)});const ST=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ok.optional(),error:o().optional()});p({env:Bo,results:y(ST)});const jT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Bo,pages:y(jT)});const AT=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(AT)});p({slug:o(),live:Eb,staging:Eb,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const CT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:B_.optional(),vertexConfigured:_().optional()}),NT=p({name:o(),displayName:o(),mode:A(["api","browser"]),modelConfigurable:_(),defaultModel:o(),knownModels:y(p({id:o(),displayName:o(),tier:A(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:p({source:o(),flags:o()}),modelValidationHint:o()}),Tb=p({configured:_()});p({providers:y(CT).default([]),providerCatalog:y(NT).default([]),google:Tb,bing:Tb});const en=A(["queued","running","completed","partial","failed","cancelled"]),sa=en.enum,rk=A(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),Te=rk.enum,X0=A(["manual","scheduled","config-apply","backfill","probe"]),go=X0.enum,Pn=A(["cited","not-cited"]),su=Pn.enum,ou=A(["visible","not-visible"]);ou.enum;const Wr=A(["mentioned","not-mentioned"]);Wr.enum;const lk=A(["new","cited","lost","emerging","not-cited"]);lk.enum;const _T=A(["new","mentioned","lost","emerging","not-mentioned"]);_T.enum;const zT=A([go.manual,go.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:zT.optional(),providers:y(ft).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:_9.optional(),location:o().min(1).optional(),allLocations:_().optional(),noLocation:_().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const DT=p({message:o(),raw:ya().optional()}),ET=p({message:o().optional(),providers:Ie(o(),DT).optional()}),TT=p({id:o(),projectId:o(),kind:rk,status:en,trigger:X0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ie(o(),ya()).nullable().optional(),measurementScope:z9.nullable().optional(),measurementExecutionIdentity:v2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:ET.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function J0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[s,r]=n[0];return`${s}: ${r.message}`}if(n.length>1)return n.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Cu=p({uri:o(),title:o()}),RT=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:la.nullable().optional()}),ck=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ft,citationState:Pn,answerMentioned:_().optional(),visibilityState:ou.optional(),mentionState:Wr.optional(),transition:lk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Ve([vu,ce()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Ve([V0,ce()]).default(null),retrievalContract:Ve([L0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:la.nullable().optional(),supportedContext:RT.nullable().optional(),createdAt:o()});p({snapshots:y(ck),total:m().int().nonnegative()});const OT=p({queryId:o().nullable(),query:o().nullable(),run1State:Pn.nullable(),run2State:Pn.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:ou.nullable(),run2VisibilityState:ou.nullable(),run1MentionState:Wr.nullable().optional(),run2MentionState:Wr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(OT)});const BT=TT.extend({snapshots:y(ck).optional()}),qT=p({totalRuns:m().int().nonnegative(),run:BT.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:ya().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const MT=A(["yes","no","unknown","not-mentioned"]),Rb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Rb.optional(),phrases:Rb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const PT=p({name:o(),count:m().int().nonnegative()}),IT=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),VT=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(IT).default([])}),LT=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),UT=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:MT,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),GT=p({query:o(),providerResults:y(UT).default([])}),$T=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(PT).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});p({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:LT,audit:VT,queryResults:y(GT).default([]),summary:$T});const uk=Ve([en,ce()]),W0=A(["pass","partial","fail"]);W0.enum;const dk=A(["up","down","flat"]);dk.enum;const HT=p({id:o(),name:o(),weight:m(),avgScore:m(),status:W0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),KT=p({factorId:o(),factorName:o(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:m().int().nonnegative(),topRecommendations:y(o()).default([])});p({project:o(),hasData:_(),runId:o().nullable(),runStatus:uk,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Ve([dk,ce()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(HT).default([]),crossCuttingIssues:y(KT).default([]),prioritizedFixes:y(o()).default([])});const mk=p({id:o(),name:o(),weight:m(),score:m()}),QT=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(mk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(QT).default([])});const ZT=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(ZT).default([])});const FT=A(["disabled","complete","partial","unavailable"]);FT.enum;const YT=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),XT=Be("state",[p({state:O("unavailable")}),p({state:O("disabled")}),p({state:O("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),p({state:O("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);p({project:o(),hasCrawlData:_(),legacyAuditAvailable:_(),runId:o().nullable(),runStatus:uk,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Ie(o(),ya()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:YT,deadLinks:XT});A(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const Nu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),_$=Nu.enum,z$=Nu.options,lo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Pc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},JT={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function WT(e){return e.indexabilityReasons?.some(n=>n===JT.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function D$(e){switch(e.fetchState){case lo.fetchError:return"failed";case lo.discovered:return"unchecked";case lo.nonHtml:return"resource";case lo.redirect:return"redirect";case lo.robotsBlocked:return"hidden";case lo.html:break;default:return"unchecked"}if(WT(e))return"hidden";switch(e.indexabilityState){case Pc.indexable:return"eligible";case Pc.noindex:case Pc.blocked:return"hidden";case Pc.unknown:default:return"unchecked"}}const E$=15,eR=A(["navigation","content","unknown"]);eR.enum;const tR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),pk=A(["placement","ubiquity","unmeasured"]);pk.enum;const _u=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);_u.enum;function T$(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const zu=A(["all","content","template"]);zu.enum;const aR=A(["anchor","redirect","canonical","link"]);aR.enum;const el=p({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:m().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:m().nullable(),healthState:Nu}),nR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ob=mk.extend({status:W0,applicable:_().nullable(),findings:y(nR).default([]),recommendations:y(o()).default([])}),Bb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Ic=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),qb=p({nodeKey:o(),url:o(),auditState:o()});Be("state",[p({state:O("no-crawl"),project:o(),runId:ce()}),Ic.extend({state:O("details-unavailable")}),Ic.extend({state:O("not-found")}),Ic.merge(qb).extend({state:O("not-audited"),auditScore:ce(),factors:y(Ob).length(0).default([]),criticalDefects:y(Bb).length(0).default([])}),Ic.merge(qb).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ob).default([]),criticalDefects:y(Bb).default([])})]);const iR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Ve([iR,ce()]).default(null),pages:y(el).default([])});const sR=p({path:o(),url:o().nullable(),hasPage:_(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});p({project:o(),hasCrawlData:_(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(sR).default([])});const ds=p({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:_(),followable:_(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Ve([_(),ce()]),templateRatio:Ve([m(),ce()]),templateSource:pk,placementOccurrences:Ve([tR,ce()])}),oR=p({nodeKey:o(),url:o(),path:o(),depth:m().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:m().nullable(),healthState:Nu,x:m(),y:m()}),rR=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),lR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),cR=Be("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:ce(),reason:lR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:cR,templateDetection:_u,linkKind:zu,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(oR).default([]),edges:y(rR).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const R$=2e4,O$=5e4,uR=A(["focus","inbound","outbound","both","transitive"]),dR=el.extend({distance:m().int().nonnegative(),relationToFocus:uR});p({project:o(),hasCrawlData:_(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(dR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Mb=p({nodeKey:o(),url:o(),path:o()});p({project:o(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Mb.nullable(),to:Mb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(el).default([]),edges:y(ds).default([])});const hk=A(["added","removed","changed"]),mR=p({entity:O("page"),change:hk,key:o(),changedFields:y(o()).default([]),before:el.nullable(),after:el.nullable()}),pR=p({entity:O("link"),change:hk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),hR=Be("entity",[mR,pR]),Pb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),fR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});Be("state",[p({project:o(),state:O("unavailable"),reason:A(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),p({project:o(),state:O("incompatible"),reason:O("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),p({project:o(),state:O("ready"),fromRunId:o(),toRunId:o(),versions:p({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:fR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Pb,links:Pb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(hR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:_u,linkKind:zu,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:_u,linkKind:zu,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Ib=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ie(o(),ya()).default({})});Be("state",[p({project:o(),runId:o().nullable(),state:O("unavailable"),legacyAuditAvailable:_()}),p({project:o(),runId:o(),state:O("disabled"),checkDeadLinks:O(!1)}),p({project:o(),runId:o(),state:O("complete"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])}),p({project:o(),runId:o(),state:O("partial"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])})]);p({sitemapUrl:o().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:m().int().positive().max(5e4).optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:_().default(!1)});p({runId:o(),status:en});const gR=p({runId:o(),status:en,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(gR).default([])});const yR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),bR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),vR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:en,phase:yR,attempt:vR.nullable(),layout:bR,error:o().nullable()});const xR=A(["waiting","collecting","terminal"]),kR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:en,state:xR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(kR).max(12).default([])});const eh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);eh.enum;p({id:o(),projectId:o(),kind:eh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ft).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:eh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ft).optional().default([]),sourceId:o().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const th=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);th.enum;const ah=A(["cited","aspirational","wasted-surface"]),Vb=ah.enum;Vb.cited,Vb.aspirational;const Du=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),wR=Du.enum;wR["direct-competitor"];const Eu=A(["queued","seeding","probing","completed","failed"]);Eu.enum;const fk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Du.default("unknown")}),SR=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:ah.nullable().default(null),citationState:Pn,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),jR=p({id:o(),projectId:o(),status:Eu,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(la).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:m().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Ie(o(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(fk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});jR.extend({probes:y(SR).default([])});const AR=500,CR=8,NR=["gemini","openai"],_R=A(NR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(_R).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(AR).optional(),probeConcurrency:m().int().min(1).max(CR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(ah).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Du).min(1).optional()});p({sessionId:o(),projectId:o(),status:Eu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(fk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Ve([O("cli"),o().regex(/^discovery:.+$/)]);const zR=p({query:o().min(1),probeHits:m().int().positive()}),DR=p({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:p({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});p({sessionId:o(),projectId:o(),provider:o(),status:Eu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(zR),stats:DR});const nh=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);nh.enum;const gk=A(["7d","30d","90d","all"]),Lb=A(["improving","declining","stable"]),ER=A(["mentioned","cited"]);ER.enum;const Wp=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),ih=o().trim().min(1),TR=y(ih).min(1).superRefine((e,n)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),jo=Be("status",[p({status:O("known"),model:ih}),p({status:O("unknown")}),p({status:O("mixed"),models:TR,includesUnknown:_()})]),RR=p({observedAt:o(),bucketStartDate:o(),from:jo,to:jo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),yk=p({latestObservation:p({observedAt:o(),state:jo}),events:y(RR),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),OR=Ie(o(),yk),BR=yk.extend({latestServedModelIds:y(ih).default([])}),qR=Ie(o(),BR),MR=p({observedAt:o(),configured:jo,served:jo}),PR=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),IR=p({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:m().int().nonnegative(),citationRate:m(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:m(),mentionedCount:m().int(),mentionShare:PR,byProvider:Ie(o(),Wp),modelEvidenceByProvider:Ie(o(),jo).default({}),basketRevision:m().int().nullable().default(null)}),VR=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),LR=p({date:o(),delta:m().int(),label:o()}),UR=p({at:o(),identity:v2});p({window:gk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(IR),overall:Wp,byProvider:Ie(o(),Wp),trend:Lb,mentionTrend:Lb,queryChanges:y(LR),basketChanges:y(VR).default([]),executionIdentityChanges:y(UR).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:OR.default({}),servedModelAttribution:qR.default({}),modelServiceMismatch:Ie(o(),MR).default({}),modelPointerChanges:Ie(o(),LD).default({})});const Ub=p({category:th,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),GR=p({domain:o(),count:m().int(),percentage:m(),category:th,label:o(),surfaceClass:nh}),$R=p({surfaceClass:nh,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Gb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(GR),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y($R)});p({overall:y(Ub),byQuery:Ie(o(),y(Ub)),ranked:Gb,byProvider:Ie(o(),Gb),runId:o(),window:gk,limit:m().int().nullable()});const sh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),bk=sh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),HR=sh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(bk).optional()}),KR=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),QR=A(["provider"]),e0=p({domain:o(),mentions:m().int()}),ZR=p({queryClass:A(["branded","non-brand","pooled"]),percent:m().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(e0)});p({project:o(),groupBy:QR.optional(),window:KR,totals:sh,byProvider:y(bk).optional(),queries:y(HR),shareOfVoice:ZR.optional()});const FR=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),YR=A(["up","down","flat"]),$b=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),XR=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),JR=p({key:XR,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:$b,to:$b,rateRatio:m().nullable(),direction:Ve([YR,ce()]),verdict:FR}),Hb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),WR=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),eO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),tO=A(["included","model-discontinuous","model-unknown"]),aO=p({provider:o(),status:tO,fromModels:y(o()),toModels:y(o())}),nO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),iO=p({status:nO,comparedProviders:y(o()),providers:y(aO)}),sO=p({provider:o(),from:p({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:p({checked:m().int(),mentioned:m().int(),cited:m().int()})}),oO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Hb,to:Hb,basket:WR,metrics:y(JR),queriesMentioned:oO,byProvider:y(sO),modelChanges:y(eO),continuity:iO,competitors:p({from:y(e0),to:y(e0)})});A(["json","csv"]);const rO=p({runId:o(),runKind:O("answer-visibility"),runStatus:en,runTrigger:X0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:Pn,cited:_(),answerMentioned:_().nullable(),mentionState:Ve([Wr,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Ve([vu,ce()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(Cu),searchQueries:y(o())}),lO=p({since:o().nullable(),until:o().nullable(),includeProbes:_()});p({schemaVersion:O("canonry.results-export/v1"),generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:lO,recordCount:m().int().nonnegative(),records:y(rO)});const Tu=A(["organic","paid"]);Tu.enum;p({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:_(),createdAt:o(),updatedAt:o()});p({date:o(),landingPage:o(),sessions:m(),organicSessions:m(),users:m()});const oh=A(["session","first_user","manual_utm"]),cO=p({source:o(),medium:o(),trafficClass:Tu,sessions:m(),users:m().optional(),sourceDimension:oh}),uO=p({source:o(),medium:o(),trafficClass:Tu,sourceDimension:oh,landingPage:o(),sessions:m(),users:m().optional()}),dO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),Pr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),mO=p({organic:Pr,social:Pr,direct:Pr,ai:Pr,other:Pr});p({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(p({landingPage:o(),sessions:m(),organicSessions:m(),directSessions:m(),users:m()})),aiReferrals:y(cO),aiReferralLandingPages:y(uO),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(dO),socialSessions:m(),socialUsers:m(),channelBreakdown:mO,organicSharePct:m(),aiSharePct:m(),aiSharePctBySession:m(),paidAiSharePct:m(),paidAiSharePctBySession:m(),organicAiSharePct:m(),organicAiSharePctBySession:m(),directSharePct:m(),socialSharePct:m(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:m(),otherSharePct:m(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});p({connected:_(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:A(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const pO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(pO)});p({synced:_(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:_(),syncedAt:o(),measurement:p({acquisition:p({days:m().int().nonnegative(),status:A(["ready","error"]),rowCount:m().int().nonnegative(),error:o().optional()}),leads:p({days:m().int().nonnegative(),status:A(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:A(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});p({date:o(),source:o(),medium:o(),trafficClass:Tu,landingPage:o(),sessions:m(),users:m(),sourceDimension:oh});const hO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),fO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(hO)});p({days:y(fO),sources:y(o()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});p({date:o(),source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()});p({date:o(),sessions:m(),organicSessions:m(),users:m(),usersSource:A(["deduplicated","landing-page-sum"])});p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});const vk=A(["claude","openai","gemini","zai","deepinfra"]),gO=p({id:vk,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(gO).default([]),defaultProvider:vk.nullable()});const yO=A(["aero","user","compaction"]);yO.enum;const xk=128;p({key:o().min(1).max(xk),value:o().min(1)});p({key:o().min(1).max(xk)});const qo=A(["commoncrawl","bing-webmaster"]);qo.enum;const rh=A(["queued","downloading","querying","ready","failed"]);rh.enum;p({id:o(),release:o(),status:rh,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const bO=p({linkingDomain:o(),numHosts:m().int(),source:qo}),vO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:qo,summary:vO.nullable(),total:m().int(),rows:y(bO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo});const xO=p({source:qo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(xO),anyConnected:_(),anyData:_()});p({duckdbInstalled:_(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});p({installed:_(),version:o(),path:o(),alreadyPresent:_()});p({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:o().nullable()});p({release:o(),syncStatus:rh.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const lh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:lh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),Kb=p({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),perCompetitor:y(p({domain:o(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:m()})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:m().int().min(0).max(100).nullable()}),kO=wi.extend({breakdown:Kb,scope:A(["non-brand","pooled"]),branded:Kb}),bp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:lh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),wO=p({hasPreviousRun:_(),comparable:_(),querySetChanged:_(),previousRunAt:o().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),SO=p({id:o(),projectId:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:p({action:o(),target:o().optional(),reason:o()}).optional(),cause:p({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:_(),createdAt:o()}),jO=p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});p({project:Rz,latestRun:qT,health:jO.nullable(),topInsights:y(SO),queryCounts:p({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:m(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:m()}),providers:y(p({provider:o(),citedRate:m(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:p({since:o().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:p({mention:wi,visibility:wi,mentionShare:kO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:bp,citationMovement:bp,mentionMovement:bp,movementComparison:wO,competitors:y(p({id:o(),domain:o(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:A(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(p({provider:o(),model:o().nullable(),score:m(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(m()).optional()})),attentionItems:y(p({id:o(),tone:lh,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(p({runId:o(),createdAt:o(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:m(),mentionedCount:m().int().nonnegative(),mentionRate:m(),status:o()})),suggestedQueries:p({rows:y(p({query:o(),impressions:m(),clicks:m(),avgPosition:m(),reason:o()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});A(["snapshot","insight"]);const AO=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Pn,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),CO=p({kind:O("insight"),id:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:A(["title","query","recommendation","cause"]),snippet:o(),dismissed:_(),createdAt:o()}),NO=Be("kind",[AO,CO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(NO)});const kk=A(["create","expand","refresh","add-schema"]);kk.enum;function B$(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const wk=A(["gsc","competitor-evidence","both"]);wk.enum;const Sk=A(["high","medium","low"]);Sk.enum;const _O=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);_O.enum;const jk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jk.enum;const ch=A(["ownable","ceded"]);ch.enum;const zO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),DO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),EO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),TO=p({actionId:o(),state:jk,lastUpdated:o()}),Ak=p({targetRef:o(),query:o(),action:kk,ourBestPage:zO.nullable(),winningCompetitor:DO.nullable(),score:m(),scoreBreakdown:EO,drivers:y(o()),demandSource:wk,actionConfidence:Sk,existingAction:TO.nullable(),winnabilityClass:ch,winnability:m().min(0).max(1).nullable()});p({targets:y(Ak),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const RO=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(RO)});p({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:m().int().nonnegative(),generatedAt:o()});p({provider:o().optional(),model:o().optional(),forceRefresh:_().optional()});const OO=p({targetQuery:o().trim().min(1),winnabilityClass:ch,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:OO,costMillicents:m().int().nonnegative(),generatedAt:o()});const BO=p({domain:o(),competitorType:Du,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(BO)});const qO=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ft)}),Ck=p({query:o(),groundingSources:y(qO)});p({sources:y(Ck),latestRunId:o()});const Nk=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Nk),latestRunId:o()});const _k=A(["ok","warn","fail","skipped"]);_k.enum;const uh=A(["global","project"]);uh.enum;const zk=A(["auth","config","providers","integrations","database","schedules","agent"]);zk.enum;const MO=p({id:o(),category:zk,scope:uh,title:o(),status:_k,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ie(o(),ya()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});p({scope:uh,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:p({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(MO)});const PO=p({provider:o(),citationState:Pn,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),IO=p({queryId:o(),query:o(),providers:y(PO),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),VO=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),LO=p({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});p({summary:LO,byQuery:y(IO),competitorGaps:y(VO),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const q$=[7,14,30,90],M$=30;Ve([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const UO=A(["prompt","request-param","browser-geo","ignored"]),GO=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),$O=p({provider:o(),treatment:UO,description:o()}),HO=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:GO.nullable(),providerLocationHandling:y($O),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),KO=p({citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),trend:A(["up","down","flat","unknown"]),queryCount:m(),competitorCount:m(),providerCount:m(),gsc:p({clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),periodStart:o(),periodEnd:o()}).nullable(),ga:p({sessions:m(),users:m(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(p({title:o(),detail:o(),tone:A(["positive","caution","negative","neutral"])}))}),QO=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),ZO=p({queries:y(o()),providers:y(o()),matrix:y(y(QO.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),FO=p({domain:o(),citationCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:m(),theirCitedPages:y(p({url:o(),citedFor:y(o())}))}),YO=p({projectCitationCount:m(),competitors:y(FO)}),XO=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),vp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(XO)}),JO=vp.extend({scope:A(["non-brand","pooled"]),nonBrand:vp,branded:vp}),WO=p({category:o(),label:o(),count:m(),sharePct:m()}),eB=p({categories:y(WO),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),tB=p({query:o(),clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),category:A(["brand","lead-gen","industry","other"])}),aB=p({periodStart:o(),periodEnd:o(),totalClicks:m(),totalImpressions:m(),ctr:m(),avgPosition:m(),topQueries:y(tB),categoryBreakdown:y(p({category:A(["brand","lead-gen","industry","other"]),clicks:m(),impressions:m(),sharePct:m()})),trend:y(p({date:o(),clicks:m(),impressions:m()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),nB=p({totalSessions:m(),totalUsers:m(),totalOrganicSessions:m(),periodStart:o(),periodEnd:o(),topLandingPages:y(p({page:o(),sessions:m(),users:m(),organicSessions:m()})),channelBreakdown:y(p({channel:o(),sessions:m(),sharePct:m()}))}),iB=p({totalSessions:m(),organicSessions:m(),paidSessions:m(),channels:y(p({channelGroup:o(),sessions:m(),sharePct:m()})),topCampaigns:y(p({source:o(),medium:o(),sessions:m()}))}),sB=p({totalSessions:m(),paidSessions:m(),organicSessions:m(),totalUsers:m().optional(),paidUsers:m().optional(),organicUsers:m().optional(),bySource:y(p({source:o(),sessions:m(),users:m().optional(),paidSessions:m(),organicSessions:m(),sharePct:m()})),trend:y(p({date:o(),sessions:m()})),topLandingPages:y(p({page:o(),sessions:m(),users:m().optional()}))}),oB=p({windowStart:o(),windowEnd:o(),hasData:_(),verifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),unverifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),aiUserFetchHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivals:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivalsByClass:p({paid:p({current:m(),prior:m(),deltaPct:m().nullable()}),organic:p({current:m(),prior:m(),deltaPct:m().nullable()}),unclassified:p({current:m(),prior:m(),deltaPct:m().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(p({operator:o(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:m().nullable()})),topCrawledPaths:y(p({path:o(),verifiedHits:m(),distinctOperators:m()})),referralProducts:y(p({product:o(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(p({date:o(),verifiedCrawlerHits:m(),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(p({path:o(),arrivals:m(),distinctProducts:m()}))}),rB=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),lB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),t0=p({id:o(),type:A(["regression","gain","opportunity"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:m()}),cB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),co=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),uB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),dB=p({enoughHistory:_(),headline:o(),citationRate:co.nullable(),mentionRate:co.nullable(),citedQueryCount:co.nullable(),mentionedQueryCount:co.nullable(),gscClicksDelta:co.nullable(),aiReferralsDelta:co.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(uB),wins:y(t0),regressions:y(t0)});A(["agency","client"]);const mB=A(["agency","client","both"]),pB=A(["immediate","short-term","medium-term"]),hB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const fB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),dh=p({audience:mB,priority:m(),horizon:pB,category:fB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:hB,targetRef:o().optional()}),gB=p({headline:o(),overview:o(),actionItems:y(dh),confidenceNotes:y(o())}),yB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),bB=p({priorities:y(dh),diagnostics:y(yB)});function P$(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function I$(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function V$(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function L$(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function U$(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:HO,executiveSummary:KO,citationScorecard:ZO,competitorLandscape:YO,mentionLandscape:JO,aiSourceOrigin:eB,gsc:aB.nullable(),ga:nB.nullable(),socialReferrals:iB.nullable(),aiReferrals:sB.nullable(),serverActivity:oB.nullable(),indexingHealth:rB.nullable(),citationsTrend:y(lB),whatsChanged:dB,insights:y(t0),recommendedNextSteps:y(cB),actionPlan:y(dh),clientSummary:gB,agencyDiagnostics:bB,contentOpportunities:y(Ak),contentGaps:y(Nk),groundingSources:y(Ck)});const vB=Ve([O(60),O(90)]),xB=A(["earliest","middle","prior","latest"]),uo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Dk=p({name:xB,startDate:o(),endDate:o()}),kB=Dk.extend({totals:uo}),wB=Dk.extend({organicSessions:m().int().nonnegative()}),xp=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Vc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Qb=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:vB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:xp.nullable(),ga4:xp.nullable(),server:xp.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:uo,namedBrand:uo,namedNonBrand:uo,suppressedOrUnreportedResidual:uo,cohorts:y(kB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(wB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:K_,pages:y(p({path:o(),gsc:uo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const SB=A(["claude","codex"]);SB.enum;const jB=A(["claude","codex","all"]);jB.enum;const Ek=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),AB=A(["content","sitemap","robots","asset","other"]),mh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);mh.enum;const CB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);CB.enum;const NB=A(["raw-request","aggregate-bucket"]),_B=NB.enum,zB=A(["observed","provider-aggregated","inferred"]),DB=zB.enum,EB=p({type:o().nullable(),labels:Ie(o(),o())}),TB=p({sourceType:mh,evidenceKind:O(_B["raw-request"]),confidence:O(DB.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:EB,providerLabels:Ie(o(),o())});p({events:y(TB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Tk=A(["connected","paused","error","archived"]),G$=Tk.enum,Rk=A(["oauth","service-account"]);Rk.enum;const RB=A(["verified","claimed_unverified","unknown_ai_like"]),$$=RB.enum,OB=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Ok=p({manifestId:o().min(1),manifest:OB.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Rk});p({baseUrl:o().url(),username:o().min(1)});const ph=A(["production","preview"]);ph.enum;p({projectId:o().min(1),teamId:o().min(1),environment:ph});const Bk=p({id:o(),projectId:o(),sourceType:mh,displayName:o(),status:Tk,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ie(o(),ya()),createdAt:o(),updatedAt:o()});p({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});p({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});p({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:ph.optional(),displayName:o().min(1).optional()});const BB=A(["direct-push","queue-pull"]),Mo=BB.enum,hh=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),qk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),qB=qk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().nullable()}),MB=qk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});function Mk(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}A0(Mk,Be("deliveryMode",[qB,MB]));const Pk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),PB=Pk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().min(1).optional()}),IB=Pk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});A0(Mk,Be("deliveryMode",[PB,IB]));const Ik=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),VB=Ik.extend({deliveryMode:O(Mo["direct-push"]),activationRequired:_().default(!1)}),LB=Ik.extend({deliveryMode:O(Mo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[VB,LB]);const UB=p({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:p({verifiedBot:_().nullable(),botScore:m().int().nullable(),country:o().nullable(),asn:m().int().nullable(),asOrganization:o().nullable()}).nullable()});p({schemaVersion:O(1),workerVersion:o().min(1),events:y(UB).min(1).max(100)});p({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:o(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});p({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});p({days:m().int().positive().optional()});p({advanceToNow:O(!0)});p({sourceId:o(),runId:o(),status:en,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const GB=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Bk)});const $B=Bk.extend({totals24h:GB,latestRun:p({runId:o(),status:en,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y($B)});const HB=A(["crawler","ai-user-fetch","ai-referral"]),fh=HB.enum,Vk=A(["hour","day"]);Vk.enum;const KB=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative()}),QB=p({kind:O(fh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:AB,status:m().int(),hits:m().int().nonnegative()}),ZB=p({kind:O(fh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),FB=p({kind:O(fh["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),YB=Be("kind",[QB,ZB,FB]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Vk,points:y(KB)}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:p({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:_()}),events:y(YB)});const Lk=A(["queued","running","completed","partial","failed"]),H$=Lk.enum,Uk=A(["queued","running","completed","failed"]),K$=Uk.enum;p({queries:y(o().trim().min(1).max(4e3)).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:la.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:Ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const Gk=p({id:o(),projectId:o(),status:Lk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:la.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),XB=p({id:o(),position:m().int(),query:o(),status:Uk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Cu),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Pn.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Gk.extend({queries:y(XB)});p({runs:y(Gk)});p({apiKey:o().min(1)});p({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});p({q:o().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const JB=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(JB)});const WB=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(WB)});const eq=p({id:o(),name:o().optional()}),tq=p({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(eq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(tq)});p({connected:_(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:_().optional()});p({disconnected:_()});p({runId:o(),status:o()});const aq=p({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),ul=A(["impressions","clicks"]),nq=ul.enum,dl=A(["impression","click"]);dl.enum;const iq=p({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:aq.nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),sq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Ve([dl,ce()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(iq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),oq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Ve([ul,ce()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(sq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(oq)});const $k=A(["campaign","ad_group"]);$k.enum;const rq=p({level:$k,entityId:o(),date:o(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable(),inProgress:_()});p({rows:y(rq),currencyCode:o().nullable().optional()});const Hk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Kk=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable()});p({connected:_(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:Hk,totals:Kk});const Qk=A(["unavailable","partial","complete"]);Qk.enum;const Zk=A(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Zk.enum;const Fk=A(["unavailable","reported"]);Fk.enum;const lq={storedSnapshot:"stored_ads_snapshot"},Yk=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Yk.enum;const cq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),uq=p({id:o(),name:o(),status:o(),billingEventType:Ve([dl,ce()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(cq)}),dq=p({id:o(),name:o(),status:o(),biddingType:Ve([ul,ce()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(uq)});p({snapshot:p({status:Qk,issue:Ve([Zk,ce()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:en}).nullable()}),historicalCampaignRollups:p({status:Fk,window:Hk,totals:Kk.nullable()}),storedConfiguration:p({basis:O(lq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(dq)}),assessment:p({state:Yk})});const Un=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),Ao=m().int().min(946684800).max(4102444800),Co=m().int().positive().max(Number.MAX_SAFE_INTEGER),gh=o().regex(/^[a-f0-9]{64}$/),Xk=y(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Jk=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),Wk=A(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);Wk.enum;const e3=A(["pending","reconciling","succeeded","failed","unknown"]),yo=e3.enum,t3=A(["known_entity","create_fingerprint","manual_only"]);t3.enum;const a3=A([yo.pending,yo.unknown,yo.reconciling]);a3.enum;const n3=A(["active","paused","archived"]);n3.enum;const i3=A(["file","campaign","ad_group","ad"]);i3.enum;const s3=A(["campaign","ad_group","ad"]);s3.enum;const yh=p({id:vt,expectedUpdatedAt:m().int().nonnegative()}).strict(),mq=yh,ru=100,pq=yh.extend({ads:y(mq).min(1).max(ru-1)}).strict(),hq=yh.extend({adGroups:y(pq).min(1).max(ru-1)}).strict();function fq(e,n){return e<n?-1:e>n?1:0}function Zb(e,n,s){for(let r=1;r<e.length;r+=1)if(fq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const o3=p({campaign:hq}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((u,f)=>u+1+f.ads.length,0)>ru&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${ru} entities`}),Zb(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Zb(f.ads,["campaign","adGroups",u,"ads"],n);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),r3=gh,gq=A(["approved","executing","consumed","revoked","expired","unknown"]),Mn=gq.enum,yq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Di=yq.enum,bq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:n3.optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).max(100).optional(),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional(),campaignId:vt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:Co.max(1e8).optional(),billingEventType:dl.optional(),adGroupId:vt.optional(),creativeFingerprint:gh.optional()}).strict();p({operationKey:Un,imageUrl:Jk});p({operationKey:Un,name:fs,description:o().max(4e3).optional(),startTime:Ao.optional(),endTime:Ao.optional(),lifetimeSpendLimitMicros:Co.min(1e6),locationIds:y(vt).min(1).max(100),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===nq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:Un,campaignId:vt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:Co.max(1e8),billingEventType:dl.optional()});const l3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Jk,fileId:vt});p({operationKey:Un,adGroupId:vt,name:fs,creative:l3});function bh(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).min(1).max(100).optional()}).refine(bh,{message:"At least one campaign field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Co.max(1e8).optional()}).refine(bh,{message:"At least one ad group field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:l3.optional()}).refine(bh,{message:"At least one ad field must be updated"});p({operationKey:Un});const Ru=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:Wk,state:e3,entityType:Ve([i3,ce()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Ve([t3,ce()]),reconcileParentId:vt.nullable(),reconcileFingerprint:gh.nullable(),reconcileFields:bq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Ru,replayed:_()});const ht=Gx({offset:!0}),Po={id:vt,projectId:vt,adAccountId:vt,manifestHash:r3,manifest:o3,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ht,approvedAt:ht,createdAt:ht,updatedAt:ht,revocationRequestedAt:ht.nullable()},vq=p({...Po,state:O(Mn.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),xq=p({...Po,state:O(Mn.executing),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),kq=p({...Po,state:O(Mn.consumed),operationId:vt,executionStartedAt:ht,consumedAt:ht,revokedAt:ce(),expiredAt:ce()}).strict(),wq=p({...Po,state:O(Mn.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ht,expiredAt:ce()}).strict(),Sq=p({...Po,state:O(Mn.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ht}).strict(),jq=p({...Po,state:O(Mn.unknown),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),c3=Be("state",[vq,xq,kq,wq,Sq,jq]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mn.executing&&e.state!==Mn.unknown&&e.state!==Mn.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Ei={id:vt,operationId:vt,ordinal:m().int().nonnegative(),entityType:s3,entityId:vt,expectedUpdatedAt:m().int().nonnegative(),createdAt:ht,updatedAt:ht},ml={errorCode:ce(),errorMessage:ce()},vh={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},Aq=p({...Ei,...ml,state:O(Di.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),Cq=p({...Ei,...ml,state:O(Di.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:ht,finishedAt:ce()}).strict(),Nq=p({...Ei,...ml,state:O(Di.active),providerUpdatedAt:m().int().nonnegative(),remediation:ce(),startedAt:ht,finishedAt:ht}).strict(),_q=p({...Ei,...vh,state:O(Di.failed),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),zq=p({...Ei,...ml,state:O(Di.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ce()}).strict(),Dq=p({...Ei,...ml,state:O(Di.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ht}).strict(),Eq=p({...Ei,...vh,state:O(Di.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:ht,finishedAt:ht}).strict(),Tq=p({...Ei,...vh,state:O(Di.unknown),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),Rq=Be("state",[Aq,Cq,Nq,_q,zq,Dq,Eq,Tq]),a0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},Oq=A([a0.exact,a0.refreshSemanticallyUnchanged]);p({manifest:o3,executorApiKeyId:vt,expiresAt:ht,versionPolicy:Oq.default(a0.exact)}).strict();p({grant:c3}).strict();p({}).strict();p({operationKey:Un,grantId:vt,manifestHash:r3}).strict();p({grant:c3,operation:Ru,steps:y(Rq)}).strict();const Bq=[yo.pending,yo.unknown,yo.reconciling];function qq(e){if(e===void 0||e==="")return Bq;if(Array.isArray(e)){const n=[];for(const s of e)typeof s=="string"?n.push(...s.split(",")):n.push(s);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:A0(qq,y(a3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Yx().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Ru),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Ru,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:Yx().int().min(1).max(30).default(7)});const u3=A(["campaign","ad_group","ad"]);u3.enum;const d3=A(["both","live-only","stored-only"]);d3.enum;const Mq=O("live-provider-read"),Pq=p({date:o().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Fb=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),Iq=p({date:o(),live:Fb.nullable(),stored:Fb.nullable(),drifted:_()}),Vq=p({field:o(),live:o().nullable(),stored:o().nullable()}),Lq=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),Uq=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),Gq=p({entityType:u3,id:o(),parentId:o().nullable(),presence:d3,live:Lq.nullable(),stored:Uq.nullable(),fieldDeltas:y(Vq),liveMetrics:y(Pq).nullable(),metricDeltas:y(Iq).nullable(),drifted:_()}),$q=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:Mq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:p({lookbackDays:m().int().positive()}),bounds:p({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:_()}),entities:y(Gq),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y($q)});const m3=A(["admin","viewer"]),Hq=/^[a-z\d][\w.-]{0,63}$/i,Kq=o().regex(Hq,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Yb=12,Qq=o().min(Yb,`A password must be at least ${Yb} characters.`),p3=p({id:o(),name:o(),role:m3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(p3)});p({name:Kq,password:Qq,role:m3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:p3.pick({name:!0,role:!0}).nullable()});const zt=1,kp=A(["system","project","queries","competitors","run"]),wp=A(["0","1","2-3","4-5","6-10","11+"]);function cn(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xb=A(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","unknown"]),Lc=p({eventId:o().uuid(),flowVersion:O(zt),onboardingSessionId:o().uuid()});Be("event",[Lc.extend({event:O("onboarding.started"),step:kp,resumed:_()}).strict(),Lc.extend({event:O("onboarding.step_completed"),step:kp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:wp.optional()}).strict(),Lc.extend({event:O("onboarding.blocked"),step:kp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xb}).strict(),Lc.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),providerCountBucket:wp,queryCountBucket:wp,reasonCode:Xb.optional()}).strict()]);p({accepted:_()});const Zq=4;function Fq(e){return e.length<Zq}var Yq=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(Yq||{});const Q$={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},Z$={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},Xq=J0;function Jq(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?n.push(`${u}
|
|
52
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(n===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(n!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function Lx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const x=b.def??b.schema,k={...x},S=b.ref;if(b.ref=null,S){r(S);const j=e.seen.get(S),E=j.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(E)):Object.assign(x,E),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(E.$ref&&j.def)for(const q in x)q==="$ref"||q==="allOf"||q in j.def&&JSON.stringify(x[q])===JSON.stringify(j.def[q])&&delete x[q]}const C=g._zod.parent;if(C&&C!==S){r(C);const j=e.seen.get(C);if(j?.schema.$ref&&(x.$ref=j.schema.$ref,j.def))for(const E in x)E==="$ref"||E==="allOf"||E in j.def&&JSON.stringify(x[E])===JSON.stringify(j.def[E])&&delete x[E]}e.override({zodSchema:g,jsonSchema:x,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(n)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...n["~standard"],jsonSchema:{input:Jc(n,"input",e.processors),output:Jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function ia(e,n){const s=n??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return ia(r.element,s);if(r.type==="set")return ia(r.valueType,s);if(r.type==="lazy")return ia(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return ia(r.innerType,s);if(r.type==="intersection")return ia(r.left,s)||ia(r.right,s);if(r.type==="record"||r.type==="map")return ia(r.keyType,s)||ia(r.valueType,s);if(r.type==="pipe")return ia(r.in,s)||ia(r.out,s);if(r.type==="object"){for(const u in r.shape)if(ia(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(ia(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(ia(u,s))return!0;return!!(r.rest&&ia(r.rest,s))}return!1}const J8=(e,n={})=>s=>{const r=Ix({...s,processors:n});return Mt(e,r),Vx(r,e),Lx(r,e)},Jc=(e,n,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Ix({...u??{},target:f,io:n,processors:s});return Mt(e,g),Vx(g,e),Lx(g,e)},W8={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},e7=(e,n,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:x,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=W8[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),x&&x.size>0){const S=[...x];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(C=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},t7=(e,n,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:x,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&n.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&n.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},a7=(e,n,s,r)=>{s.type="boolean"},n7=(e,n,s,r)=>{n.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},i7=(e,n,s,r)=>{s.not={}},s7=(e,n,s,r)=>{},o7=(e,n,s,r)=>{const u=e._zod.def,f=bx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},r7=(e,n,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,n.target==="draft-04"||n.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},l7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},c7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},u7=(e,n,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Mt(f.element,n,{...r,path:[...r.path,"items"]})},d7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Mt(g[k],n,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),x=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));x.size>0&&(u.required=Array.from(x)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Mt(f.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},m7=(e,n,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,n,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},p7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.left,n,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,x=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=x},h7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,x=g._zod.bag?.patterns;if(f.mode==="loose"&&x&&x.size>0){const S=Mt(f.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(C=>typeof C=="string"||typeof C=="number");S.length>0&&(u.required=S)}},f7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,n,r),g=n.seen.get(e);n.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},g7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},y7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},b7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,n.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},v7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},x7=(e,n,s,r)=>{const u=e._zod.def,f=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,n,r);const g=n.seen.get(e);g.ref=f},k7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Ux=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},w7=Q("ZodISODateTime",(e,n)=>{vN.init(e,n),At.init(e,n)});function Gx(e){return C8(w7,e)}const S7=Q("ZodISODate",(e,n)=>{xN.init(e,n),At.init(e,n)});function $x(e){return N8(S7,e)}const j7=Q("ZodISOTime",(e,n)=>{kN.init(e,n),At.init(e,n)});function A7(e){return _8(j7,e)}const C7=Q("ZodISODuration",(e,n)=>{wN.init(e,n),At.init(e,n)});function N7(e){return z8(C7,e)}const _7=(e,n)=>{wx.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>dC(e,s)},flatten:{value:s=>uC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Bp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Bp,2)}},isEmpty:{get(){return e.issues.length===0}}})},La=Q("ZodError",_7,{Parent:Error}),z7=k0(La),D7=w0(La),E7=pu(La),T7=hu(La),R7=hC(La),O7=fC(La),B7=gC(La),q7=yC(La),M7=bC(La),P7=vC(La),I7=xC(La),V7=kC(La),St=Q("ZodType",(e,n)=>(kt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Jc(e,"input"),output:Jc(e,"output")}}),e.toJSONSchema=J8(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...s)=>e.clone(Ni(n,{checks:[...n.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>_i(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>z7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>E7(e,s,r),e.parseAsync=async(s,r)=>D7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>T7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>R7(e,s,r),e.decode=(s,r)=>O7(e,s,r),e.encodeAsync=async(s,r)=>B7(e,s,r),e.decodeAsync=async(s,r)=>q7(e,s,r),e.safeEncode=(s,r)=>M7(e,s,r),e.safeDecode=(s,r)=>P7(e,s,r),e.safeEncodeAsync=async(s,r)=>I7(e,s,r),e.safeDecodeAsync=async(s,r)=>V7(e,s,r),e.refine=(s,r)=>e.check(R_(s,r)),e.superRefine=s=>e.check(O_(s)),e.overwrite=s=>e.check(Eo(s)),e.optional=()=>Yy(e),e.exactOptional=()=>x_(e),e.nullable=()=>Xy(e),e.nullish=()=>Yy(Xy(e)),e.nonoptional=s=>C_(e,s),e.array=()=>y(e),e.or=s=>Ve([e,s]),e.and=s=>f_(e,s),e.transform=s=>Pp(e,Qx(s)),e.default=s=>S_(e,s),e.prefault=s=>A_(e,s),e.catch=s=>__(e,s),e.pipe=s=>Pp(e,s),e.readonly=()=>E_(e),e.describe=s=>{const r=e.clone();return Ur.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Ur.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Ur.get(e);const r=e.clone();return Ur.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Hx=Q("_ZodString",(e,n)=>{S0.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>e7(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(M8(...r)),e.includes=(...r)=>e.check(V8(...r)),e.startsWith=(...r)=>e.check(L8(...r)),e.endsWith=(...r)=>e.check(U8(...r)),e.min=(...r)=>e.check(Xc(...r)),e.max=(...r)=>e.check(Mx(...r)),e.length=(...r)=>e.check(Px(...r)),e.nonempty=(...r)=>e.check(Xc(1,...r)),e.lowercase=r=>e.check(P8(r)),e.uppercase=r=>e.check(I8(r)),e.trim=()=>e.check($8()),e.normalize=(...r)=>e.check(G8(...r)),e.toLowerCase=()=>e.check(H8()),e.toUpperCase=()=>e.check(K8()),e.slugify=()=>e.check(Q8())}),L7=Q("ZodString",(e,n)=>{S0.init(e,n),Hx.init(e,n),e.email=s=>e.check(s8(U7,s)),e.url=s=>e.check(u8(G7,s)),e.jwt=s=>e.check(A8(i_,s)),e.emoji=s=>e.check(d8($7,s)),e.guid=s=>e.check($y(Zy,s)),e.uuid=s=>e.check(o8(Tc,s)),e.uuidv4=s=>e.check(r8(Tc,s)),e.uuidv6=s=>e.check(l8(Tc,s)),e.uuidv7=s=>e.check(c8(Tc,s)),e.nanoid=s=>e.check(m8(H7,s)),e.guid=s=>e.check($y(Zy,s)),e.cuid=s=>e.check(p8(K7,s)),e.cuid2=s=>e.check(h8(Q7,s)),e.ulid=s=>e.check(f8(Z7,s)),e.base64=s=>e.check(w8(t_,s)),e.base64url=s=>e.check(S8(a_,s)),e.xid=s=>e.check(g8(F7,s)),e.ksuid=s=>e.check(y8(Y7,s)),e.ipv4=s=>e.check(b8(X7,s)),e.ipv6=s=>e.check(v8(J7,s)),e.cidrv4=s=>e.check(x8(W7,s)),e.cidrv6=s=>e.check(k8(e_,s)),e.e164=s=>e.check(j8(n_,s)),e.datetime=s=>e.check(Gx(s)),e.date=s=>e.check($x(s)),e.time=s=>e.check(A7(s)),e.duration=s=>e.check(N7(s))});function o(e){return i8(L7,e)}const At=Q("ZodStringFormat",(e,n)=>{wt.init(e,n),Hx.init(e,n)}),U7=Q("ZodEmail",(e,n)=>{uN.init(e,n),At.init(e,n)}),Zy=Q("ZodGUID",(e,n)=>{lN.init(e,n),At.init(e,n)}),Tc=Q("ZodUUID",(e,n)=>{cN.init(e,n),At.init(e,n)}),G7=Q("ZodURL",(e,n)=>{dN.init(e,n),At.init(e,n)}),$7=Q("ZodEmoji",(e,n)=>{mN.init(e,n),At.init(e,n)}),H7=Q("ZodNanoID",(e,n)=>{pN.init(e,n),At.init(e,n)}),K7=Q("ZodCUID",(e,n)=>{hN.init(e,n),At.init(e,n)}),Q7=Q("ZodCUID2",(e,n)=>{fN.init(e,n),At.init(e,n)}),Z7=Q("ZodULID",(e,n)=>{gN.init(e,n),At.init(e,n)}),F7=Q("ZodXID",(e,n)=>{yN.init(e,n),At.init(e,n)}),Y7=Q("ZodKSUID",(e,n)=>{bN.init(e,n),At.init(e,n)}),X7=Q("ZodIPv4",(e,n)=>{SN.init(e,n),At.init(e,n)}),J7=Q("ZodIPv6",(e,n)=>{jN.init(e,n),At.init(e,n)}),W7=Q("ZodCIDRv4",(e,n)=>{AN.init(e,n),At.init(e,n)}),e_=Q("ZodCIDRv6",(e,n)=>{CN.init(e,n),At.init(e,n)}),t_=Q("ZodBase64",(e,n)=>{NN.init(e,n),At.init(e,n)}),a_=Q("ZodBase64URL",(e,n)=>{zN.init(e,n),At.init(e,n)}),n_=Q("ZodE164",(e,n)=>{DN.init(e,n),At.init(e,n)}),i_=Q("ZodJWT",(e,n)=>{TN.init(e,n),At.init(e,n)}),j0=Q("ZodNumber",(e,n)=>{Tx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>t7(e,r,u),e.gt=(r,u)=>e.check(Ky(r,u)),e.gte=(r,u)=>e.check(ip(r,u)),e.min=(r,u)=>e.check(ip(r,u)),e.lt=(r,u)=>e.check(Hy(r,u)),e.lte=(r,u)=>e.check(np(r,u)),e.max=(r,u)=>e.check(np(r,u)),e.int=r=>e.check(Fy(r)),e.safe=r=>e.check(Fy(r)),e.positive=r=>e.check(Ky(0,r)),e.nonnegative=r=>e.check(ip(0,r)),e.negative=r=>e.check(Hy(0,r)),e.nonpositive=r=>e.check(np(0,r)),e.multipleOf=(r,u)=>e.check(Qy(r,u)),e.step=(r,u)=>e.check(Qy(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function m(e){return D8(j0,e)}const s_=Q("ZodNumberFormat",(e,n)=>{RN.init(e,n),j0.init(e,n)});function Fy(e){return T8(s_,e)}const o_=Q("ZodBoolean",(e,n)=>{ON.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>a7(e,s,r)});function _(e){return R8(o_,e)}const r_=Q("ZodNull",(e,n)=>{BN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>n7(e,s,r)});function ce(e){return O8(r_,e)}const l_=Q("ZodUnknown",(e,n)=>{qN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>s7()});function ya(){return B8(l_)}const c_=Q("ZodNever",(e,n)=>{MN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>i7(e,s,r)});function u_(e){return q8(c_,e)}const d_=Q("ZodArray",(e,n)=>{PN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>u7(e,s,r,u),e.element=n.element,e.min=(s,r)=>e.check(Xc(s,r)),e.nonempty=s=>e.check(Xc(1,s)),e.max=(s,r)=>e.check(Mx(s,r)),e.length=(s,r)=>e.check(Px(s,r)),e.unwrap=()=>e.element});function y(e,n){return Z8(d_,e,n)}const m_=Q("ZodObject",(e,n)=>{VN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>d7(e,s,r,u),it(e,"shape",()=>n.shape),e.keyof=()=>A(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ya()}),e.loose=()=>e.clone({...e._zod.def,catchall:ya()}),e.strict=()=>e.clone({...e._zod.def,catchall:u_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>sC(e,s),e.safeExtend=s=>oC(e,s),e.merge=s=>rC(e,s),e.pick=s=>nC(e,s),e.omit=s=>iC(e,s),e.partial=(...s)=>lC(Zx,e,s[0]),e.required=(...s)=>cC(Fx,e,s[0])});function p(e,n){const s={type:"object",shape:e??{},...ze(n)};return new m_(s)}const Kx=Q("ZodUnion",(e,n)=>{Bx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>m7(e,s,r,u),e.options=n.options});function Ve(e,n){return new Kx({type:"union",options:e,...ze(n)})}const p_=Q("ZodDiscriminatedUnion",(e,n)=>{Kx.init(e,n),LN.init(e,n)});function Be(e,n,s){return new p_({type:"union",options:n,discriminator:e,...ze(s)})}const h_=Q("ZodIntersection",(e,n)=>{UN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>p7(e,s,r,u)});function f_(e,n){return new h_({type:"intersection",left:e,right:n})}const g_=Q("ZodRecord",(e,n)=>{GN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ie(e,n,s){return new g_({type:"record",keyType:e,valueType:n,...ze(s)})}const Mp=Q("ZodEnum",(e,n)=>{$N.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>o7(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const s=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=n.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...n.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})}});function A(e,n){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Mp({type:"enum",entries:s,...ze(n)})}const y_=Q("ZodLiteral",(e,n)=>{HN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>r7(e,s,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function O(e,n){return new y_({type:"literal",values:Array.isArray(e)?e:[e],...ze(n)})}const b_=Q("ZodTransform",(e,n)=>{KN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>c7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Yr(f,s.value,n));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Yr(g))}};const u=n.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function Qx(e){return new b_({type:"transform",transform:e})}const Zx=Q("ZodOptional",(e,n)=>{qx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Yy(e){return new Zx({type:"optional",innerType:e})}const v_=Q("ZodExactOptional",(e,n)=>{QN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function x_(e){return new v_({type:"optional",innerType:e})}const k_=Q("ZodNullable",(e,n)=>{ZN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Xy(e){return new k_({type:"nullable",innerType:e})}const w_=Q("ZodDefault",(e,n)=>{FN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>y7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function S_(e,n){return new w_({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const j_=Q("ZodPrefault",(e,n)=>{YN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>b7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function A_(e,n){return new j_({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const Fx=Q("ZodNonOptional",(e,n)=>{XN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function C_(e,n){return new Fx({type:"nonoptional",innerType:e,...ze(n)})}const N_=Q("ZodCatch",(e,n)=>{JN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function __(e,n){return new N_({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const z_=Q("ZodPipe",(e,n)=>{WN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x7(e,s,r,u),e.in=n.in,e.out=n.out});function Pp(e,n){return new z_({type:"pipe",in:e,out:n})}const D_=Q("ZodReadonly",(e,n)=>{e8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>k7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function E_(e){return new D_({type:"readonly",innerType:e})}const T_=Q("ZodCustom",(e,n)=>{t8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>l7(e,s)});function R_(e,n={}){return F8(T_,e,n)}function O_(e){return Y8(e)}function A0(e,n){return Pp(Qx(e),n)}const Ye={custom:"custom"};function Yx(e){return E8(j0,e)}const Xx=p({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:_(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});p({keys:y(Xx)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});Xx.extend({key:o()});const B_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ft=o().min(1),C0=Ie(o(),o().trim().min(1));o().min(1);const la=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),N0=A(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);p({id:o(),projectId:o(),channel:O("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(N0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(N0).min(1),source:o().optional()});function q_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}function sp(e,n=!1){const s=new Set,r=[];for(const u of e){const f=n?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Jy(e){try{const n=e.includes("://"),s=new URL(n?e:`https://${e}`);if(!n&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const M_=o().trim().min(1).refine(e=>Jy(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Jy(e)??e),P_=o().trim().min(1),I_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),_0=p({marketingHosts:y(M_).overwrite(e=>sp(e,!0)),brandTerms:y(P_).overwrite(e=>sp(e,!0)),leadEventNames:y(I_).overwrite(e=>sp(e))});function V_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const op=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),Jx=()=>V_(),Wy=A(["never-synced","ready","error"]),L_=A(["landing-page","channel"]),U_=A(["30d","60d","90d"]),G_=A(["marketing","all"]),Gr=$x(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Gr,endDate:Gr}),rp=nl.extend({sessions:m().int().nonnegative()}),eb=nl.extend({eventCount:m().int().nonnegative()}),tb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),$_=nl.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),H_=nl.extend({sessions:m().int().nonnegative(),engagementRate:m().min(0).max(1).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:_(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),K_=p({window:U_,bucketDays:O(30),filters:p({hostScope:G_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(rp),channels:y(p({channelGroup:o(),periods:y(rp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(rp)}))}),leads:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:L_.nullable(),hostAndPathFiltersApplied:_(),periods:y(eb),channels:y(p({channelGroup:o(),periods:y(eb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Gr.nullable(),latestDate:Gr.nullable(),periods:y(H_)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y($_),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(tb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(tb)})),latestDate:Gr.nullable()})}),Q_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Z_=/[\0-\x1F\x7F-\x9F]/,F_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Y_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var X_=class{src_Any=Q_.source;src_Cc=Z_.source;src_Z=Y_.source;src_P=F_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,s=4){const r=this.escapeRE(e),u=this.escapeRE(n),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},lp={validate:(e,n,s)=>{const r=s.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},J_={"http:":lp,"https:":lp,"ftp:":lp,"//":{validate:function(e,n,s){const r=s.re.get_relative_proto_validator();r.lastIndex=n;const u=r.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,s){const r=s.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},W_="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",ez="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function tz(){const e=ez.split("|");return W_.split("|").forEach(n=>{const s=n.indexOf(":"),r=n.slice(0,s);for(const u of n.slice(s+1))e.push(r+u)}),e}var az={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:tz(),urlAuth:!1,maxLength:1e4},ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,s,r){const u=e.slice(s,r);this.schema=n.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},nz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...s}=e;this.__opts__={...az,...s},this.__schemas__={...J_},this.re=n||new X_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(n=s.exec(e))!==null;)if(this.testSchemaAt(e,n[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(n=r.exec(e))!==null;){const f=e.slice(Math.max(0,n.index-65),n.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,n,s){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const n=[],s=this.re.get_schema_search();let r,u,f,g,b,x,k=!1,S=!1,C=!1,j=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(X){if(b={schema:"mailto:",index:te.index-X[1].length,lastIndex:te.index+te[0].length},b.index>=j)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=j)break;r.lastIndex<E&&(r.lastIndex=E)}let B=b;(!B||g&&(g.index<B.index||g.index===B.index&&g.lastIndex>B.lastIndex))&&(B=g);let q;if(!k)for(;;){if(!x){s.lastIndex<E&&(s.lastIndex=E);const ae=s.exec(e);if(!ae){k=!0;break}x={schema:ae[2],index:ae.index+ae[1].length,lastIndex:ae.index+ae[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const te=x;x=void 0;const X=this.testSchemaAt(e,te.schema,te.lastIndex);if(X){q={schema:te.schema,index:te.index,lastIndex:te.lastIndex+X};break}}let U=q;if((!U||b&&(b.index<U.index||b.index===U.index&&b.lastIndex>U.lastIndex))&&(U=b),(!U||g&&(g.index<U.index||g.index===U.index&&g.lastIndex>U.lastIndex))&&(U=g),!U)break;U===b?b=void 0:U===g&&(g=void 0);const G=new ab(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),n.push(G),j=U.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const s=this.testSchemaAt(e,n[2],n[0].length);if(!s)return null;const r=new ab(e,n[2],n.index+n[1].length,n.index+n[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const iz=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function sz(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function oz(e,n){const s=e.length-n.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function rz(e,n,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(sz(n,f))return f}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:oz(n,e)}function lz(e,n){return e.slice(0,-n.length-1)}const cp=/[\t\n\r]/g;let Ip=!1;function nb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function ib(e,n,s){const r=s-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function $r(e,n,s=!1){let r=0,u=e.length,f=!1,g=!1;if(Ip=!1,!n){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const U=e.indexOf(":/",r);if(U!==-1){const G=ib(e,r,U);if(G===1)for(g=!0,r=U+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(G===2){g=!0,r=U+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<U;te+=1){const X=e.charCodeAt(te)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const ae=e.charCodeAt(te);return ae===9||ae===10||ae===13?$r(e.replace(cp,""),n,s):null}}if(e.charCodeAt(U+2)===47)r=U+3;else return null}}else if(e.charCodeAt(r)!==91){let G=-1;for(let te=r;te<u;te+=1){const X=e.charCodeAt(te);if(X===9||X===10||X===13)return $r(e.replace(cp,""),n,s);if(X===58){G=te;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let te=!1;for(let X=G+1;X<u;X+=1){const ae=e.charCodeAt(X);if(ae===47||ae===92||ae===63||ae===35)break;if(ae===64){te=!0;break}}if(!te){let X=!0,ae=G+1;for(;ae<u;ae+=1){const oe=e.charCodeAt(ae);if(oe===47||oe===92||oe===63||oe===35)break;if(oe<48||oe>57){X=!1;break}}if(ae===G+1&&(X=!1),!X){const oe=ib(e,r,G);if(oe===0){let ge=!1;for(let M=G+1;M<u;M+=1){const J=e.charCodeAt(M);if(J===47||J===92||J===63||J===35)break;if(J===58){ge=!0;break}}if(!ge)return null}else if(g=!0,r=G+1,oe===2){let ge=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ge<2;)r+=1,ge+=1;if(ge<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let x=-1,k=-1,S=-1,C=-1,j=!1,E=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(nb(U)||U===46||U===95)||U===45)&&(E=!1)}for(let U=r;U<u;U+=1){const G=e.charCodeAt(U);if(G<64)if(G===47||G===35||G===63){u=U;break}else G===58?(C===-1&&(C=U),S=U):G===9||G===10||G===13?j=!0:s&&(G===46?((U-B>64||q===46||q===45)&&(E=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(E=!1));else if(g&&G===92){u=U;break}else G===64?(x=U,C=-1):G===93?k=U:G>=65&&G<=90?f=!0:s&&!nb(G)&&(E=!1);s&&(q=G)}if(j)return $r(e.replace(cp,""),n,s);if(x!==-1&&x>=r&&x<u&&(r=x+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&C===S&&(u=S),r>=u)return null;s&&E&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&(Ip=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function cz(e){if(e.length<7||e.length>15)return!1;let n=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)n+=1;else if(r<48||r>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function uz(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-n>39)return!1;let r=!1;for(;n<s;n+=1){const u=e.charCodeAt(n);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function dz(e){return uz(e)||cz(e)}const mz=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function pz(e){for(const n of mz)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function sb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ob(e){if(e.length>255||e.length===0||!sb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-n>64||s===46||s===45)return!1;n=u}else if(!(sb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-n-1<=63&&s!==45}function Wx({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const hz=Wx({});function fz(e){return e===void 0?hz:Wx(e)}function gz(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function yz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function e2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function t2(e,n,s,r,u){const f=fz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=ob(e),u.hostname=$r(e,g,f.validateHostname)):u.hostname=$r(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=dz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!Ip&&!ob(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&f.detectSpecialUse&&(u.isSpecialUse=pz(u.hostname)),s(u.hostname,f,u),n===2||u.publicSuffix===null)||(u.domain=rz(u.publicSuffix,u.hostname,f),n===3||u.domain===null)||(u.subdomain=gz(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=lz(u.domain,u.publicSuffix)),u)}function bz(e,n,s){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const ls=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wc=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),eu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),rb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Vp="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",vz=621,xz=625,a2=ls.length,n2=eu.length,i2=new Uint32Array(n2),Hc=new Uint32Array(n2),Lp=new Int32Array(a2).fill(-1);for(let e=0,n=0;e<a2;e+=1)for(let s=Wc[e];s<Wc[e+1];s+=1){i2[s]=n;const r=n+eu[s];let u=5381;for(let f=r-1;f>=n;f-=1)u=u*33^Vp.charCodeAt(f);Hc[s]=u>>>0,eu[s]===1&&Vp.charCodeAt(n)===42&&(Lp[e]=s),n=r}let qn=-1,Up=0,Gp=0;function lb(e,n,s,r){if(eu[e]!==r)return!1;const u=i2[e];for(let f=0;f<r;f+=1)if(Vp.charCodeAt(u+f)!==n.charCodeAt(s+f))return!1;return!0}function cb(e,n,s,r,u){let f=Wc[e],g=Wc[e+1];for(;f<g;){const b=f+g>>>1,x=Hc[b];if(x<n)f=b+1;else if(x>n)g=b;else{for(let k=b;k>=f&&Hc[k]===n;k-=1)if(lb(k,s,r,u))return k;for(let k=b+1;k<g&&Hc[k]===n;k+=1)if(lb(k,s,r,u))return k;return-1}}return-1}function ub(e,n,s){let r=n,u=e.length,f=5381;qn=-1;for(let b=e.length-1;b>=0;b-=1){const x=e.charCodeAt(b);if(x===46){const k=b+1;let S=cb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Lp[r]),S===-1)return qn!==-1;r=rb[S],(ls[r]&s)!==0&&(qn=r,Up=k,Gp=u),u=b,f=5381}else f=f*33^x}let g=cb(r,f>>>0,e,0,u);return g===-1&&(g=Lp[r]),g!==-1&&(r=rb[g],(ls[r]&s)!==0&&(qn=r,Up=0,Gp=u)),qn!==-1}function s2(e,n,s){if(bz(e,n,s))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(ub(e,xz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Gp+1);return}if(ub(e,vz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Up);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const tu=yz();function kz(e,n){return e2(tu),t2(e,0,s2,n,tu).hostname}function wz(e,n){return e2(tu),t2(e,5,s2,n,tu).domainWithoutSuffix}const Sz={allowPrivateDomains:!0};new nz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(iz);function gu(e){if(e==null)return null;const n=e.trim();if(!n)return null;const s=kz(n);return s?s.replace(/^www\./i,"").toLowerCase():null}function jz(e){return e==null||e.trim()===""?"":wz(e,Sz)?.toLowerCase()??""}const Az=new Intl.Segmenter("en",{granularity:"word"}),Cz=/[\p{L}\p{N}]+/gu,Nz=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,_z=new RegExp("\\P{ASCII}","u");function zz(e){if(!_z.test(e))return e;let n="";for(const s of e){if(s.charCodeAt(0)<128){n+=s;continue}const r=s.normalize("NFD"),u=r[0];n+=r.length>1&&Nz.test(u)?u:s}return n}function Dz(e){return zz(e.normalize("NFKC")).toLocaleLowerCase("en")}function Ez(e){const n=[];for(const s of Az.segment(e))if(s.isWordLike)for(const r of s.segment.match(Cz)??[])n.push(r);return n}function Tz(e){return Ez(Dz(e))}function cs(e){return Tz(e).join("")}const o2=A(["cli","api","config-file"]);function Rz(e){const n=new Set,s=new Set;for(const r of e){if(n.has(r.label)){s.add(r.label);continue}n.add(r.label)}return[...s]}function Oz(e,n){return n?e.some(s=>s.label===n):!0}const Bz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Ie(o(),o()).optional(),providers:y(ft).optional(),providerModels:C0.optional(),locations:y(la).optional(),defaultLocation:o().nullable().optional(),measurement:_0.optional(),autoExtractBacklinks:_().optional(),configSource:o2.optional()});Bz.extend({name:o().trim().min(1).max(120)});const qz=p({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Ie(o(),o()).default({}),providers:y(o()).default([]),providerModels:C0.default({}),locations:y(la).default([]),defaultLocation:o().nullable().optional(),measurement:_0.default(Jx),autoExtractBacklinks:_().default(!1),configSource:o2.default("cli"),configRevision:m().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});p({id:o(),query:o(),createdAt:o()});p({id:o(),keyword:o(),createdAt:o()});p({queries:y(o().trim().min(1)).min(1)});p({keywords:y(o().trim().min(1)).min(1)});p({provider:ft,count:m().int().min(1).max(20).optional()});p({id:o(),domain:o(),createdAt:o()});p({competitors:y(o().trim().min(1)).min(1)});function $p(e){return gu(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Mz(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of n){const f=u.trim();if(!f)continue;const g=$p(f);s.has(g)||(s.add(g),r.push(f))}return r}const Pz=p({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Ie(o(),o()).optional().default({})}),Iz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ft).optional().default([]),enabled:_().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Vz=p({channel:O("webhook"),url:o().url(),events:y(N0).min(1)}),Lz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),db=y(o().min(1)),Uz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:db.optional(),keywords:db.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ft).optional().default([]),providerModels:C0.optional().default({}),locations:y(la).optional().default([]),defaultLocation:o().optional(),measurement:_0.optional().default(Jx),schedule:Iz,notifications:y(Vz).optional().default([]),google:Lz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=Rz(e.locations);s.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Oz(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Pz,spec:Uz});const Gz=["branded","non-brand"],$z=A(Gz),Hz=A(["all","branded","non-brand"]),Kz=2,Qz=o().regex(/^[a-f0-9]{64}$/),yu=o().trim().min(1).max(256),mb=A(["sensitive","insensitive"]),ke=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Zz=o().trim().min(1).refine(e=>gu(e)!==null,"A competitor domain must be a valid hostname"),Fz=Be("kind",[p({kind:O("exact"),url:o().min(1),pathCase:mb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:mb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),Yz=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),Xz=p({projectBrand:Yz}).strict(),Jz=p({stableKey:ke,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(Fz),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),r2=p({stableKey:ke,label:o().trim().min(1),domain:Zz,aliases:y(o().min(1))}).strict(),Wz=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(r2)}).strict(),e9=A(["manual","query-set","template","discovery"]),t9=p({source:e9,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),a9=p({queryId:yu,queryText:o().min(1),provenance:t9}).strict(),n9=p({providers:y(ft).min(1),models:Ie(ft,o().min(1)),location:la.nullable()}).strict(),i9=p({stableKey:o().min(1),queryId:yu,queryText:o().min(1),context:n9,expectedSnapshots:m().int().nonnegative()}).strict(),z0=$z,s9=p({targetKey:ke,queryId:yu,queryClass:z0,executionNodeKey:o().min(1)}).strict(),o9=p({executionNodeKey:o().min(1),targetKey:ke,queryId:yu}).strict(),bu=p({schemaVersion:O(Kz),identities:Xz,targets:y(Jz),groups:y(Wz),querySnapshots:y(a9),assignments:y(s9),executionNodes:y(i9),usageEdges:y(o9),compiledChecksum:Qz}).strict().superRefine((e,n)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&n.addIssue({code:Ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${u.stableKey}"`}),s.add(u.stableKey);const r=new Set(e.targets.map(u=>u.stableKey));e.usageEdges.forEach((u,f)=>{s.has(u.executionNodeKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["assignments",f,"targetKey"],message:`Assignment references unknown Target "${u.targetKey}"`})});for(const u of e.groups)for(const f of u.targetKeys)r.has(f)||n.addIssue({code:Ye.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),D0=100;function wo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const E0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=Be("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),T0=A(["all","group","property"]),Wa=Hz,r9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),R0=A(["not_measured","queued","running","complete","partial","failed"]),l9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:T0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:r9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c9=p({provider:ft,mentionCoverage:Lt,citationCoverage:Lt}).strict(),u9=p({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),d9=p({targetKey:ke,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(c9),flags:m().int().nonnegative()}).strict(),m9=p({kind:A(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:m().int().nonnegative(),share:m().min(0).max(1)}).strict(),p9=p({groupKey:ke,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(m9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:T0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:_().optional()}).strict(),nextAction:p({kind:l9,count:m().int().nonnegative().optional()}).strict(),metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt,brandPresence:Lt,sov:Lt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:wo(d9),outcomes:u9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:p9.optional()}).strict();const l2=A(["sources","answers"]),h9=l2.enum;h9.sources;p({targetKey:ke,queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:l2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c2=1,il=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sl=o().trim().min(1).max(256),pb=A(["sensitive","insensitive"]);function au(e){const n=gu(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function f9(e){const n=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||n.push(u),s=!0):(n.push(u),s=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function hb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function u2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return f9(n.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Hp(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=n.startsWith("/")?n:`/${n}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return u2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function g9(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function fb(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=au(s.hostname),u=Hp(g9(n));return`https://${r}${u}`}const Xr=o().trim().min(1).refine(e=>{try{return au(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>au(e)),y9=o().trim().min(1).refine(e=>{try{return Hp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Hp(e)),b9=o().trim().min(1).refine(e=>{try{return fb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>fb(e)),v9=Be("kind",[p({kind:O("exact"),url:b9,pathCase:pb}).strict(),p({kind:O("prefix"),host:Xr,pathPrefix:y9,pathCase:pb}).strict(),p({kind:O("host"),host:Xr}).strict()]),d2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),x9=Ie(o().trim().min(1),o()),k9=Xr,m2=p({stableKey:Ut,label:o().trim().min(1),urls:y(v9).min(1),aliases:y(d2),metadata:x9.optional()}).strict(),O0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(k9).optional()}).strict(),p2=p({targetKey:Ut,queryIds:y(sl).min(1),context:la.nullable().optional()}).strict();function w9(e,n){return e<n?-1:e>n?1:0}function S9(e,n=s=>s){const s=new Set,r=new Set;for(const u of e){const f=n(u);s.has(f)&&r.add(f),s.add(f)}return r}function up(e,n,s,r,u){for(const f of S9(n,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function gb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:au(n.hostname),pathname:u2(n.pathname||"/")}}function j9(e,n,s,r){return e===s||(n==="insensitive"||r==="insensitive")&&hb(e)===hb(s)}function A9(e,n){if(e.kind!==n.kind)return!1;const s=gb(e),r=gb(n);return s.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:j9(s.pathname,e.pathCase,r.pathname,n.pathCase)}function C9(e){const n=new Set;return[...e].sort(w9).filter(s=>{const r=cs(s);return n.has(r)?!1:(n.add(r),!0)})}const h2=p({schemaVersion:O(c2),targets:y(m2).min(1),groups:y(O0).optional(),targetQuerySelections:y(p2).optional()}).strict().superRefine((e,n)=>{const s=e.groups??[],r=e.targetQuerySelections??[];up(n,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),up(n,s.map(x=>x.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(x=>x.stableKey)),f=new Set(s.map(x=>x.stableKey));for(const x of u)f.has(x)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${x}`});const g=new Map,b=[];e.targets.forEach((x,k)=>{for(const S of C9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&n.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${j}: ${S}`}),g.set(C,x.stableKey)}x.urls.forEach((S,C)=>{b.find(E=>E.targetKey!==x.stableKey&&A9(E.matcher,S))&&n.addIssue({code:"custom",path:["targets",k,"urls",C],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:x.stableKey,matcher:S})})}),s.forEach((x,k)=>{up(n,x.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<x.targetKeys.length;S++){const C=x.targetKeys[S];u.has(C)||n.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});h2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:il.nullable(),plan:h2}).strict();const N9=p({queryId:sl,queryText:o().min(1)}).strict(),B0=p({stableKey:o().min(1),queryText:o().min(1),context:la.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),_9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:sl}).strict(),z9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:sl,targetKey:Ut}).strict(),Kp=Be("kind",[_9,z9]),f2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),g2=m2.extend({mentionNotApplicable:_()}),y2=p({schemaVersion:O(c2),defaultContext:la.nullable(),effectiveOwnedHosts:y(Xr),projectCanonicalHost:Xr,projectBrandNames:y(d2),targets:y(g2),groups:y(O0),targetQuerySelections:y(p2),querySnapshots:y(N9),executionNodes:y(B0),usageEdges:y(Kp),warnings:y(f2)}).strict(),D9=y2,b2=Be("schemaVersion",[y2,bu]),q0=o().regex(/^[a-f0-9]{64}$/),M0=o().datetime(),v2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ie(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),E9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),T9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:il,checksum:q0,createdAt:M0,plan:b2}).nullable()});p({versions:y(p({revision:il,checksum:q0,createdAt:M0,active:_()}))});p({version:p({revision:il,checksum:q0,createdAt:M0,active:_(),plan:b2})});const Kc=p({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),R9=A(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),x2=p({id:R9,severity:A(["fail","warn"]),message:o().min(1),path:y(Ve([o(),m().int()]))}).strict(),O9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),k2=p({ok:O(!0),checks:y(x2),executionNodes:y(B0),dedupSaved:m().int().nonnegative(),usageEdges:O9,estCostUsd:ce(),plan:D9,warnings:y(f2),counts:Kc}).strict(),w2=p({ok:O(!1),checks:y(x2).min(1),executionNodes:y(B0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:ce()}).strict();Be("ok",[k2,w2]);const Rc=p({targetKey:Ut,context:la.nullable(),queryIds:y(sl)}).strict();function yb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const B9=k2.extend({diff:p({activeRevision:il.nullable(),targets:yb(g2),groups:yb(O0),querySelections:p({added:y(Rc),removed:y(Rc),changed:y(p({targetKey:Ut,before:Rc,after:Rc}).strict()),unchanged:y(p({targetKey:Ut,context:la.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Kp),removedUsageEdges:y(Kp),counts:p({before:Kc.nullable(),after:Kc,delta:Kc.nullable()}).strict()}).strict()}).strict()}).strict(),q9=w2.extend({diff:ce()}).strict();Be("ok",[B9,q9]);const vu=A(["complete","partial","failed","unsupported"]);vu.enum;A(["proposed","alias","shared","unmatched","excluded"]);A(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const M9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),P9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),bb=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),P0=p({primary:bb,aliases:y(bb).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(P9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:P0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const dp=p({url:o(),canonicalUrl:o().nullable(),classification:A(["shared","unmatched","excluded"]),reason:A(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),I9=p({classification:O("proposed"),reason:O("primary-match"),stableKey:Ut,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),V9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),L9=p({kind:M9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(I9),aliases:y(V9),shared:y(dp),unmatched:y(dp),excluded:y(dp),diagnostics:y(L9)}).strict().superRefine((e,n)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const I0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),S2=A(["baseline","target"]),j2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Ve([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:ce(),denominator:ce(),rate:ce(),reason:j2}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),U9=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),G9=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:U9,context:la.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(G9)}).strict().superRefine((e,n)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const xu=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),vb=Ve([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:ce(),of:ce(),reason:j2}).strict()]),$9=p({domains:y(vb),providers:y(p({provider:ft,domains:y(vb)}).strict())}).strict(),H9=p({provider:ft,completeness:xu,answerCoverage:us}).strict(),K9=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:xu,answerCoverage:us,targetCoverage:us,sov:$9,providers:y(H9)}).strict(),Q9=p({provider:ft,completeness:xu,citationCoverage:us,mentionCoverage:us}).strict(),Z9=p({id:o().trim().min(1),label:o().trim().min(1),completeness:xu,citationCoverage:us,mentionCoverage:us,providers:y(Q9)}).strict(),A2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:I0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),F9=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:I0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),Y9=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),queryClass:Ve([A(["branded","non-brand"]),ce()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(F9),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),X9=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),J9=p({id:o().trim().min(1),status:A(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();p({revision:m().int().positive(),run:J9.nullable(),groups:y(K9),targets:y(Z9),evidence:y(A2),diagnostics:X9}).strict();p({property:p({targetKey:ke,label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:wo(A2).optional(),answers:wo(Y9).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const V0=A(["used","not-used","unknown","not-applicable"]);V0.enum;const L0=A(["native-auto-v1","search-required-v1"]);L0.enum;const Xa=o().trim().min(1),ol=o().trim().min(1),W9=o().trim().min(1),tt=m().int().nonnegative(),rl=p({state:R0,displayedRunId:Xa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),ll=p({targetKey:ke,label:ol}).strict(),za={runId:Xa.optional(),provider:ft.optional(),location:W9.optional()},Jr=o().trim().min(1);p({runId:za.runId,groupKey:ke.optional(),queryClass:Wa.default("non-brand"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict();const eD=ll.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:tt,recommendedInstead:y(p({name:Jr,occurrences:tt}).strict()).max(5),recommendedInsteadTotal:tt,recommendedInsteadTruncated:_()}).strict().superRefine((e,n)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),tD=p({groupKey:ke,label:ol,propertyCount:tt,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:ke.nullable(),label:ol.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),measurement:rl,queryClass:Wa,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(eD),markets:y(tD),totalProperties:tt,truncated:_()}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Qp={queryId:Xa,text:ol,class:z0,provider:ft,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},aD=Be("status",[p({resultId:Xa,...Qp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answerExcerpt:o().nullable()}).strict(),p({resultId:ce(),...Qp,status:O("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(Jr).length(0),answerExcerpt:ce()}).strict()]);p({property:ll,measurement:rl,queryClass:Wa,questions:y(aD),total:tt,truncated:_()}).strict();p({targetKey:ke,resultId:Xa}).strict();const nD=p({url:Xa,classification:I0,matchedTargetKeys:y(ke),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:Ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:ll,measurement:rl,question:p({resultId:Xa,...Qp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answer:o().nullable(),sources:y(nD),captureStatus:Ve([vu,ce()]),retrievalStatus:Ve([V0,ce()]),retrievalContract:Ve([L0,ce()])}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),limit:m().int().positive().max(50).optional()}).strict();const iD=Be("state",[p({state:O("available"),answeredResults:tt,targetMissResults:tt,recommendationOccurrences:tt}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),sD=p({name:Jr,occurrences:tt,providers:y(ft).max(5),providerTotal:tt,providersTruncated:_(),questions:y(ol).max(5),questionTotal:tt,questionsTruncated:_()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:Ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:Ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:Ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:ll,measurement:rl,queryClass:Wa,basis:iD,competitors:y(sD),total:tt,truncated:_()}).strict();p({runId:za.runId,scope:T0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.default("all"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:Ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const C2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),N2=rl.extend({executionIdentity:Xa.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),Br=Be("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,n)=>{if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:Ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:Ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:E0}).strict()]);p({current:N2,comparison:Be("state",[p({state:O("available"),previous:p({displayedRunId:Xa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:Xa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Br,mentionCoverage:Br,citationCoverage:Br}).strict(),changedProperties:y(ll.extend({mentionCoverage:Br,citationCoverage:Br,flags:tt}).strict()),totalProperties:tt,truncated:_()}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:Ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:Ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:Ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:za.runId}).strict();const oD=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),ku=p({state:O("unavailable"),reason:oD}).strict(),rD=p({state:O("available"),expected:tt,executed:tt,answered:tt,missing:tt}).strict(),lD=Be("state",[rD,ku]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:Ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:Ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),cD=p({state:O("available"),complete:tt,partial:tt,failed:tt,unsupported:tt,notRecorded:tt}).strict(),uD=Be("state",[cD,ku]),dD=p({state:O("available"),used:tt,notUsed:tt,unknown:tt,notApplicable:tt,notRecorded:tt}).strict(),mD=Be("state",[dD,ku]),pD=p({state:O("available"),expectedQuestions:tt,answeredQuestions:tt,missingQuestions:tt}).strict(),hD=Be("state",[pD,ku]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:Ye.custom,message:"Expected questions must equal answered plus missing"})});p({run:N2,completeness:lD,capture:uD,retrieval:mD,population:hD,comparison:Be("state",[p({state:O("available"),previousDisplayedRunId:Xa}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const So=o().regex(/^[a-f0-9]{64}$/),Ja=o().trim().min(1).max(256),zi=m().int().positive(),xb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),fD=A(["proposed","included","excluded"]),gD=A(["manual","sitemap"]),U0=p({stableKey:ke,label:o().trim().min(1),status:fD,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:gD,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),wu=p({providers:y(ft).optional(),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),yD=A(["branded","non-brand","unclassified"]),bD=A(["rule","operator"]),_2=p({targetKey:ke,queryId:Ja,contextOverride:wu.optional(),queryClass:yD,classificationSource:bD}).strict(),G0=r2,z2=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0)}).strict(),vD=p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)),inputChecksum:So,reviewedAt:o().datetime().optional()}).strict(),xD=p({providers:y(ft),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),kD=p({defaultContext:xD,targets:y(U0),assignments:y(_2),groups:y(z2),discovery:vD.optional()}).strict(),wD=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:kD,createdBy:xb,updatedBy:xb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$0=p({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),SD=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict(),jD=p({etag:o().trim().min(1),changed:_(),warnings:y(SD),counts:$0}).strict();p({draft:wD.nullable(),etag:o().trim().min(1).nullable()}).strict();wo(U0);wo(_2);wo(z2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)).optional()}).strict();const AD=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:ke.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(AD),selectedTargetKeys:y(ke).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:U0}).strict();p({targetKey:ke,label:o().trim().min(1)}).strict();p({targetKey:ke,mergedKeys:y(ke).min(1)}).strict();p({targetKey:ke,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:ke,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const D2={targetKeys:y(ke).optional(),groupKeys:y(ke).optional()};function E2(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(D2).strict().superRefine(E2);const CD=p({...D2,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict().superRefine(E2);Ve([p({targetKey:ke,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict(),CD]);const ND=p({groupKey:ke,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(ND),resolvedTargetKeys:y(ke),overlapCount:m().int().nonnegative(),assignments:p({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:p({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();p({pairs:y(p({targetKey:ke,queryId:Ja}).strict()).min(1),contextOverride:wu.optional()}).strict();Ve([p({targetKey:ke,queryId:Ja}).strict(),p({targetKeys:y(ke).min(1),queryId:Ja}).strict()]);p({targetKey:ke}).strict();p({queryClass:z0,assignments:y(p({targetKey:ke,queryId:Ja}).strict()).min(1)}).strict();p({group:p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0).optional()}).strict()}).strict();p({groupKey:ke}).strict();p({groupKey:ke,competitor:G0}).strict();p({groupKey:ke,competitorKey:ke}).strict();const nu=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1)}).strict()]);const kb=p({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),_D=p({activeRevision:zi.nullable(),targets:kb,groups:kb,assignments:p({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:p({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu,diff:_D}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1),diff:ce()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:So}).strict();p({published:_(),active:p({revision:zi,checksum:So,compiledChecksum:So,createdAt:o().datetime(),plan:bu}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const zD=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),DD=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),ED=A(["simple","draft-only","active-v1","active-v2"]);p({state:zD,nextAction:DD,mode:ED,activeRevision:zi.nullable(),activeSchemaVersion:Ve([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const T2=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:m().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),TD=p({queryId:Ja,queryText:o().min(1),position:m().int().nonnegative()}).strict();T2.extend({items:y(TD)}).strict();p({querySets:y(T2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(Ja)}).strict();const RD=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();p({templates:y(RD)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();p({bindings:y(Ie(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:Ja,queryText:o().min(1)}).strict()),existing:y(p({queryId:Ja,queryText:o().min(1)}).strict())}).strict();const iu=o().regex(/^[a-f0-9]{64}$/),Su=m().int().positive();p({stableKey:ke,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const OD=A(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Zp=p({dataRow:Su,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),qr=Zp.extend({reason:OD}),BD=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),qD=p({proposedGroupKey:ke,evidence:y(BD).min(1)}).strict(),MD=Be("status",[Zp.extend({status:O("matched"),targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("ambiguous"),candidateTargetKeys:y(ke).min(1).optional(),candidateGroupKeys:y(ke).min(1).optional()}).strict(),qr.extend({status:O("unmatched")}).strict(),qr.extend({status:O("invalid"),groupKeyConflict:qD.optional()}).strict(),Zp.extend({status:O("duplicate"),duplicateOfRow:Su,targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("proposed"),targetKey:ke}).strict(),qr.extend({status:O("excluded"),targetKey:ke}).strict()]),PD=p({normalizedGroupLabel:o(),groupKey:ke,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(Su),targetKeys:y(ke),addedTargetKeys:y(ke),unchangedTargetKeys:y(ke)}).strict(),ID=p({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();p({draftEtag:o().trim().min(1),sourceChecksum:iu,previewChecksum:iu,rows:y(MD),groupChanges:y(PD),counts:ID}).strict();p({csv:o(),sourceChecksum:iu,previewChecksum:iu,acceptedRows:y(Su).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});jD.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const R2=A(["introduced","repointed","retired"]),VD=R2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:R2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const LD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];VD.repointed;new Set(LD.map(e=>e.modelId.toLowerCase()));const UD=A(["not-exposed","no-known-change","known-change"]);UD.enum;const GD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),$D=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(GD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),HD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function KD(e){const n=e.trim().toLowerCase();return HD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function mp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Mr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function pp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function QD(e,n){const s=KD(e),r=Array.isArray(n.changes)?n.changes:[],u=mp(n.changeCount)||r.length,f=Math.min(u,mp(n.unverifiedChangeCount)||mp(n.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Mr(n.knownGoodAsOf),b=n.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:pp(r.filter(S=>S.confirmed!==!1).map(S=>Mr(S.date))),unconfirmedDates:pp(r.filter(S=>S.confirmed===!1).map(S=>Mr(S.date)))};const k=pp([Mr(n.firstChangeDate),Mr(n.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function ZD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function wb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function FD(e){const n=wb(e.confirmedDates,e.confirmedCount),s=wb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&s)return`${r} was updated ${n}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Sb(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function _$(e){const n=Object.entries(e??{}).map(([x,k])=>QD(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(n.length===0)return null;const s=n.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(n.map(E=>E.engine))],k=x.length>1,S=Sb(n),C=[...new Set(n.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),j=S??(C.length>0?`We last checked for model updates on ${C[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${ZD(x)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${j?` ${j}`:""}`}}const r=s.reduce((x,k)=>x+k.confirmedCount+k.unconfirmedCount,0),u=s.some(x=>x.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=Sb(n);return{kind:"change",text:`${s.map(FD).join(" ")} ${g}${b?` ${b}`:""}`}}const Oc=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),YD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:YD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const XD=p({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:m(),impressions:m(),ctr:m(),position:m()});A(["clicks","impressions","date"]);p({rows:y(XD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const JD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),WD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),eE=p({clicks:Oc.nullable(),impressions:Oc.nullable(),ctr:Oc.nullable(),position:Oc.nullable()}),jb=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),tE=p({days:m(),prior:jb,trailing:jb,comparable:_(),change:p({clicks:m().nullable(),impressions:m().nullable(),ctr:m().nullable(),position:m().nullable()})});p({totals:p({clicks:m(),impressions:m(),ctr:m(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(JD),window:WD.optional(),trends:eE.optional(),periodComparison:tE.nullable().optional()});const aE=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(aE),totals:p({clicks:m(),impressions:m(),ctr:m(),days:m(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:_()}).nullable(),totalsSource:O("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const Fp=p({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:_().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});A(["stable","reindexed","deindexed","still-missing","new"]);const nE=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),iE=p({reason:o(),count:m(),urls:y(Fp).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Fp).default([]),notIndexed:y(Fp).default([]),deindexed:y(nE).default([]),reasonGroups:y(iE).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const sE=p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:A(["success","error"]),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(sE).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ie(o(),m()).default({})});const oE=p({siteUrl:o(),permissionLevel:o()});p({sites:y(oE).default([])});const rE=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),O2=p({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:_().optional(),isSitemapsIndex:_().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(rE).optional()});p({sitemaps:y(O2).default([]),summary:p({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});p({sitemapUrls:y(o().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const lE=p({sitemapUrl:o(),status:A(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(lE)});p({sitemaps:y(O2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Xe=o().trim().min(1),Ab=o().regex(/^[a-f0-9]{64}$/i);function cE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const Yp=o().refine(cE,{message:"Expected a calendar date as YYYY-MM-DD."});function uE(e,n){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const dE=A(["not-connected","selection-required","connected","stale"]),Bc=dE.enum,B2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);B2.enum;const q2=A(["enabled","paused","removed","unknown"]);q2.enum;const M2=A(["enabled","hidden","removed","unknown"]);M2.enum;const H0=A(["customer","campaign"]);H0.enum;const P2=A(["customer-goal","campaign-goal","custom-goal"]);P2.enum;const I2=p({loginCustomerId:Xe.nullable(),customerId:Xe.nullable(),selectedAt:o().nullable()}).strict(),hp=p({id:Xe,projectId:Xe,scopes:y(o()).default([]),selection:I2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Xp=p({resourceName:Xe,customerId:Xe,parentCustomerId:Xe.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:B2}).strict(),mE=p({customers:y(Xp),totalAccessible:m().int().nonnegative(),truncated:_(),selection:I2,fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(Bc["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc["selection-required"]),connection:hp,selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc.connected),connection:hp,selectedCustomer:Xp}).strict(),p({connected:O(!0),status:O(Bc.stale),connection:hp,selectedCustomer:Xp}).strict()]);const pE=p({id:Xe,resourceName:Xe,name:o(),status:q2,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),hE=p({id:Xe,resourceName:Xe,name:o(),status:M2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),fE=p({category:o(),origin:o(),biddable:_()}).strict(),gE=p({campaignId:Xe,category:o(),origin:o(),biddable:_()}).strict(),yE=p({id:Xe,name:o(),conversionActionIds:y(Xe)}).strict(),bE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable()}).strict(),vE=p({customerId:Xe,fetchedAt:o(),campaigns:y(pE),conversionActions:y(hE),customerConversionGoals:y(fE),campaignConversionGoals:y(gE),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(yE),campaignGoalConfigurations:y(bE)}).strict(),xE=p({source:P2,category:o().nullable(),origin:o().nullable(),customGoalId:Xe.nullable(),biddable:_().nullable(),conversionActionIds:y(Xe),primaryConversionActionIds:y(Xe),secondaryConversionActionIds:y(Xe),missingConversionActionIds:y(Xe)}).strict(),kE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable(),missingCustomGoalId:Xe.nullable(),goals:y(xE)}).strict();p({customerId:Xe,derivedAt:o(),campaigns:y(kE)}).strict();const V2=50,Jp=31,wE=V2*Jp,SE=p({campaignIds:y(Xe).min(1).max(V2),startDate:Yp,endDate:Yp}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:Ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:Ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}uE(e.startDate,e.endDate)>Jp&&n.addIssue({code:Ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Jp} calendar days.`})}),jE=p({campaignId:Xe,date:Yp,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),AE=p({query:SE,rows:y(jE).max(wE),truncated:_(),fetchedAt:o()}).strict(),L2=A(["accessible-customers","inventory","campaign-metrics"]),fp=L2.enum,K0=p({id:Xe,projectId:Xe,connectionId:Xe,runId:Xe,kind:L2,customerId:Xe.nullable(),payloadChecksum:Ab,rawPayloadSha256:Ab.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),CE=Be("kind",[p({kind:O(fp["accessible-customers"]),data:mE}).strict(),p({kind:O(fp.inventory),data:vE}).strict(),p({kind:O(fp["campaign-metrics"]),data:AE}).strict()]),NE=p({metadata:K0,payload:CE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Ke=o().trim().min(1),Cb=o().regex(/^[a-f0-9]{64}$/i),_E=A(["not-connected","selection-required","connected","stale"]),qc=_E.enum,zE=A(["live","draft"]),U2=zE.enum,Qc=p({accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),selectedAt:o().nullable()}).strict(),gp=p({id:Ke,projectId:Ke,scopes:y(o()).default([]),selection:Qc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),G2=p({id:Ke,path:o(),name:o(),shareData:_().nullable()}).strict(),$2=p({accountId:Ke,id:Ke,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),Q0=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),DE=p({accounts:y(G2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containers:y($2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containerId:Ke,workspaces:y(Q0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const EE=p({id:Ke,name:o(),type:o(),paused:_(),firingTriggerIds:y(Ke),blockingTriggerIds:y(Ke),referencedVariableIds:y(Ke),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),TE=p({id:Ke,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),RE=p({id:Ke,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),H2=A(["recognized","unknown"]),Nb=H2.enum,OE=A(["literal","variable-ref","absent","unknown"]),ju=OE.enum,BE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),To=p({source:O(ju.absent),literal:ce(),variableRef:ce()}).strict(),Ro=p({source:O(ju.unknown),literal:ce(),variableRef:ce()}).strict(),Oo=p({source:O(ju["variable-ref"]),literal:ce(),variableRef:BE}).strict();function cl(e){return p({source:O(ju.literal),literal:e,variableRef:ce()}).strict()}const qE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),ME=o().trim().min(1).max(128).regex(/^[\w-]+$/),PE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),IE=o().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[cl(o().trim().min(1).max(256)),Oo,To,Ro]);const VE=Be("source",[cl(qE),Oo,To,Ro]),LE=Be("source",[cl(ME),Oo,To,Ro]),UE=Be("source",[cl(PE),Oo,To,Ro]),GE=Be("source",[Oo,To,Ro]),$E=Be("source",[cl(IE),Oo,To,Ro]),K2=A(["all-pages","custom-event","filtered","unknown"]);K2.enum;const _b=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),HE=p({triggerId:Ke,triggerType:o(),eventPredicates:y(_b),hostnamePredicates:y(_b),unsupportedConditionCount:m().int().nonnegative()}).strict(),Q2=A(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);Q2.enum;const KE=p({tagId:Ke,tagType:o(),recognition:H2,recognitionReason:o().nullable(),conversionId:VE,conversionLabel:LE,value:UE,transactionId:GE,currency:$E,triggerStrategy:K2,triggerIds:y(Ke),triggerPredicates:y(HE),reviewReasons:y(Q2)}).strict().superRefine((e,n)=>{e.recognition===Nb.recognized&&e.recognitionReason!==null&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Nb.unknown&&!e.recognitionReason&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Z2=p({accountId:Ke,containerId:Ke,workspaceId:Ke.nullable(),tags:y(EE),triggers:y(TE),variables:y(RE),googleAdsTagAssessments:y(KE).default([])}).strict(),QE=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),F2=p({source:O(U2.live),version:QE,graph:Z2,fetchedAt:o()}).strict(),Y2=p({source:O(U2.draft),workspace:Q0,graph:Z2,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),ZE=p({account:G2,container:$2,workspaces:y(Q0),live:F2.nullable(),draft:Y2.nullable(),fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(qc["not-connected"]),connection:ce(),selection:ce()}).strict(),p({connected:O(!0),status:O(qc["selection-required"]),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.connected),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.stale),connection:gp,selection:Qc}).strict()]);const X2=A(["accounts","container","live","draft"]),Mc=X2.enum,Z0=p({id:Ke,projectId:Ke,connectionId:Ke,runId:Ke,kind:X2,accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),payloadChecksum:Cb,rawPayloadSha256:Cb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),FE=Be("kind",[p({kind:O(Mc.accounts),data:DE}).strict(),p({kind:O(Mc.container),data:ZE}).strict(),p({kind:O(Mc.live),data:F2}).strict(),p({kind:O(Mc.draft),data:Y2}).strict()]),YE=p({metadata:Z0,payload:FE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Fa=o().trim().min(1),XE=o().trim().min(1).refine(e=>gu(e)!==null,"Expected a hostname or http(s) URL."),F0=A(["configured","statically-consistent","runtime-unverified","observed"]);F0.enum;const J2=A(["pass","fail","unknown"]);J2.enum;const W2=A(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);W2.enum;const ek=p({id:Fa,projectId:Fa,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:Fa,conversionActionId:Fa,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(Fa).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:Fa,containerId:Fa,tagId:Fa,triggerIds:y(Fa).default([]),variableIds:y(Fa).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(XE).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();ek.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const tk=A(["not-run","consistent","inconsistent"]);tk.enum;const ak=A(["not-run","not-observed","observed"]);ak.enum;p({staticCheck:tk,runtimeVerificationRequired:_(),runtimeObservation:ak}).strict();const JE=p({code:W2,subject:o().trim().min(1),outcome:J2,status:F0,evidenceIds:y(Fa).default([])}).strict(),WE=p({contract:ek,status:F0,findings:y(JE),evaluatedAt:o()}).strict(),Hr=o().trim().min(1);function zb(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const eT=/^[\w-]+$/;function Y0(e){const n=e.trim();return eT.test(n)?n:null}function tT(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Y0(n)}function aT(e,n){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===n?r[2]:null:Y0(s)}function nT(e,n,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===s?u[3]:null:Y0(r)}function iT(e){const n=zb(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const s=zb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:n}:null}function sT(e){const n=tT(e.accountId);if(!n)return null;const s=aT(e.containerId,n);if(!s)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:s};const r=nT(e.workspaceId,n,s);return r?{accountId:n,containerId:s,workspaceId:r}:null}const Au=A(["google-ads","gtm"]);Au.enum;p({provider:Au,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Au,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Hr.nullable().optional(),customerId:Hr}).strict().superRefine((e,n)=>{iT(e)||n.addIssue({code:Ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Hr,containerId:Hr,workspaceId:Hr.optional()}).strict().superRefine((e,n)=>{sT(e)||n.addIssue({code:Ye.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Au,disconnected:_()}).strict();const nk=100;p({snapshots:y(K0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:NE}).strict();p({snapshots:y(Z0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:YE}).strict();p({assessment:WE,googleAdsSnapshot:K0.nullable(),gtmSnapshot:Z0.nullable()}).strict();const oT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(oT),total:m().int().nonnegative()});const rT=p({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Ie(o(),ya()).nullable(),regularHours:Ie(o(),ya()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(rT),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});p({selectAllNew:_().default(!0),accountName:o().optional(),switchAccount:_().default(!1)});p({selected:_()});p({locationNames:y(o()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});p({runId:o(),status:o()});const lT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(lT),total:m().int().nonnegative()});const cT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(cT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const uT=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(uT),total:m().int().nonnegative()});const dT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ie(o(),ya())});p({lodging:y(dT),total:m().int().nonnegative()});const mT=p({name:o(),valueType:o(),values:y(Ve([_(),o()])),unsetValues:y(o()),uris:y(o())}),pT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(mT)});p({attributes:y(pT),total:m().int().nonnegative()});const hT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ie(o(),ya())});p({places:y(hT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ie(o(),m()),recent7d:Ie(o(),m()),prior7d:Ie(o(),m()),deltaPct:Ie(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ie(o(),m())})),keywords:p({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)}),placeActions:p({total:m().int().nonnegative(),hasReservationCta:_(),hasBookingCta:_(),hasDirectMerchantCta:_()}),lodging:p({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:p({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const fT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function gT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const s=n.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function z$(e){return fT[e]??gT(e)}const yT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],bT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function D$(e){return yT.includes(e)?"conversion":bT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const yp=p({id:o(),url:o(),httpCode:m().nullable().optional(),inIndex:_().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:o().nullable().optional()});p({summary:p({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:m()}),lastInspectedAt:o().nullable(),indexed:y(yp).default([]),notIndexed:y(yp).default([]),unknown:y(yp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const vT=p({url:o(),status:A(["success","error"]),submittedAt:o(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(vT).default([])});const ik=p({url:o(),verified:_()});p({sites:y(ik).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(ik).default([])});p({siteUrl:o()});const xT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(xT).default([])});const Bo=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Bo,createdAt:o(),updatedAt:o()});const Db=p({url:o(),reachable:_(),pageCount:m().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:p({id:m(),slug:o()}).nullable().optional()});p({connected:_(),projectName:o(),defaultEnv:Bo,live:Db.nullable(),staging:Db.nullable(),adminUrl:o().nullable().optional()});const kT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),sk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),wT=p({type:o(),json:Ie(o(),ya())}),ST=kT.extend({env:Bo,content:o(),seo:sk,schemaBlocks:y(wT).default([])}),Eb=ST.extend({contentHash:o(),contentSnippet:o()}),ok=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),jT=p({slug:o(),severity:A(["high","medium","low"]),code:A(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});p({slug:o(),title:o(),status:o(),wordCount:m(),seo:sk,schemaPresent:_(),issues:y(jT).default([])});const AT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:ok.optional()});p({env:Bo,strategy:A(["plugin","manual"]),results:y(AT)});const CT=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ok.optional(),error:o().optional()});p({env:Bo,results:y(CT)});const NT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Bo,pages:y(NT)});const _T=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(_T)});p({slug:o(),live:Eb,staging:Eb,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const zT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:B_.optional(),vertexConfigured:_().optional()}),DT=p({name:o(),displayName:o(),mode:A(["api","browser"]),modelConfigurable:_(),defaultModel:o(),knownModels:y(p({id:o(),displayName:o(),tier:A(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:p({source:o(),flags:o()}),modelValidationHint:o()}),Tb=p({configured:_()});p({providers:y(zT).default([]),providerCatalog:y(DT).default([]),google:Tb,bing:Tb});const en=A(["queued","running","completed","partial","failed","cancelled"]),sa=en.enum,rk=A(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),Te=rk.enum,X0=A(["manual","scheduled","config-apply","backfill","probe"]),go=X0.enum,Pn=A(["cited","not-cited"]),su=Pn.enum,ou=A(["visible","not-visible"]);ou.enum;const Wr=A(["mentioned","not-mentioned"]);Wr.enum;const lk=A(["new","cited","lost","emerging","not-cited"]);lk.enum;const ET=A(["new","mentioned","lost","emerging","not-mentioned"]);ET.enum;const TT=A([go.manual,go.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:TT.optional(),providers:y(ft).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:E9.optional(),location:o().min(1).optional(),allLocations:_().optional(),noLocation:_().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const RT=p({message:o(),raw:ya().optional()}),OT=p({message:o().optional(),providers:Ie(o(),RT).optional()}),BT=p({id:o(),projectId:o(),kind:rk,status:en,trigger:X0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ie(o(),ya()).nullable().optional(),measurementScope:T9.nullable().optional(),measurementExecutionIdentity:v2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:OT.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function J0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[s,r]=n[0];return`${s}: ${r.message}`}if(n.length>1)return n.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Cu=p({uri:o(),title:o()}),qT=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:la.nullable().optional()}),ck=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ft,citationState:Pn,answerMentioned:_().optional(),visibilityState:ou.optional(),mentionState:Wr.optional(),transition:lk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Ve([vu,ce()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Ve([V0,ce()]).default(null),retrievalContract:Ve([L0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:la.nullable().optional(),supportedContext:qT.nullable().optional(),createdAt:o()});p({snapshots:y(ck),total:m().int().nonnegative()});const MT=p({queryId:o().nullable(),query:o().nullable(),run1State:Pn.nullable(),run2State:Pn.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:ou.nullable(),run2VisibilityState:ou.nullable(),run1MentionState:Wr.nullable().optional(),run2MentionState:Wr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(MT)});const PT=BT.extend({snapshots:y(ck).optional()}),IT=p({totalRuns:m().int().nonnegative(),run:PT.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:ya().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const VT=A(["yes","no","unknown","not-mentioned"]),Rb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Rb.optional(),phrases:Rb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const LT=p({name:o(),count:m().int().nonnegative()}),UT=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),GT=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(UT).default([])}),$T=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),HT=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:VT,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),KT=p({query:o(),providerResults:y(HT).default([])}),QT=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(LT).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});p({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:$T,audit:GT,queryResults:y(KT).default([]),summary:QT});const uk=Ve([en,ce()]),W0=A(["pass","partial","fail"]);W0.enum;const dk=A(["up","down","flat"]);dk.enum;const ZT=p({id:o(),name:o(),weight:m(),avgScore:m(),status:W0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),FT=p({factorId:o(),factorName:o(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:m().int().nonnegative(),topRecommendations:y(o()).default([])});p({project:o(),hasData:_(),runId:o().nullable(),runStatus:uk,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Ve([dk,ce()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(ZT).default([]),crossCuttingIssues:y(FT).default([]),prioritizedFixes:y(o()).default([])});const mk=p({id:o(),name:o(),weight:m(),score:m()}),YT=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(mk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(YT).default([])});const XT=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(XT).default([])});const JT=A(["disabled","complete","partial","unavailable"]);JT.enum;const WT=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),eR=Be("state",[p({state:O("unavailable")}),p({state:O("disabled")}),p({state:O("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),p({state:O("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);p({project:o(),hasCrawlData:_(),legacyAuditAvailable:_(),runId:o().nullable(),runStatus:uk,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Ie(o(),ya()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:WT,deadLinks:eR});A(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const Nu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),E$=Nu.enum,T$=Nu.options,lo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Pc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},tR={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function aR(e){return e.indexabilityReasons?.some(n=>n===tR.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function R$(e){switch(e.fetchState){case lo.fetchError:return"failed";case lo.discovered:return"unchecked";case lo.nonHtml:return"resource";case lo.redirect:return"redirect";case lo.robotsBlocked:return"hidden";case lo.html:break;default:return"unchecked"}if(aR(e))return"hidden";switch(e.indexabilityState){case Pc.indexable:return"eligible";case Pc.noindex:case Pc.blocked:return"hidden";case Pc.unknown:default:return"unchecked"}}const O$=15,nR=A(["navigation","content","unknown"]);nR.enum;const iR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),pk=A(["placement","ubiquity","unmeasured"]);pk.enum;const _u=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);_u.enum;function B$(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const zu=A(["all","content","template"]);zu.enum;const sR=A(["anchor","redirect","canonical","link"]);sR.enum;const el=p({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:m().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:m().nullable(),healthState:Nu}),oR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ob=mk.extend({status:W0,applicable:_().nullable(),findings:y(oR).default([]),recommendations:y(o()).default([])}),Bb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Ic=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),qb=p({nodeKey:o(),url:o(),auditState:o()});Be("state",[p({state:O("no-crawl"),project:o(),runId:ce()}),Ic.extend({state:O("details-unavailable")}),Ic.extend({state:O("not-found")}),Ic.merge(qb).extend({state:O("not-audited"),auditScore:ce(),factors:y(Ob).length(0).default([]),criticalDefects:y(Bb).length(0).default([])}),Ic.merge(qb).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ob).default([]),criticalDefects:y(Bb).default([])})]);const rR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Ve([rR,ce()]).default(null),pages:y(el).default([])});const lR=p({path:o(),url:o().nullable(),hasPage:_(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});p({project:o(),hasCrawlData:_(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(lR).default([])});const ds=p({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:_(),followable:_(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Ve([_(),ce()]),templateRatio:Ve([m(),ce()]),templateSource:pk,placementOccurrences:Ve([iR,ce()])}),cR=p({nodeKey:o(),url:o(),path:o(),depth:m().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:m().nullable(),healthState:Nu,x:m(),y:m()}),uR=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),dR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),mR=Be("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:ce(),reason:dR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:mR,templateDetection:_u,linkKind:zu,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(cR).default([]),edges:y(uR).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const q$=2e4,M$=5e4,pR=A(["focus","inbound","outbound","both","transitive"]),hR=el.extend({distance:m().int().nonnegative(),relationToFocus:pR});p({project:o(),hasCrawlData:_(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(hR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Mb=p({nodeKey:o(),url:o(),path:o()});p({project:o(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Mb.nullable(),to:Mb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(el).default([]),edges:y(ds).default([])});const hk=A(["added","removed","changed"]),fR=p({entity:O("page"),change:hk,key:o(),changedFields:y(o()).default([]),before:el.nullable(),after:el.nullable()}),gR=p({entity:O("link"),change:hk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),yR=Be("entity",[fR,gR]),Pb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),bR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});Be("state",[p({project:o(),state:O("unavailable"),reason:A(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),p({project:o(),state:O("incompatible"),reason:O("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),p({project:o(),state:O("ready"),fromRunId:o(),toRunId:o(),versions:p({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:bR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Pb,links:Pb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(yR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:_u,linkKind:zu,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:_u,linkKind:zu,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Ib=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ie(o(),ya()).default({})});Be("state",[p({project:o(),runId:o().nullable(),state:O("unavailable"),legacyAuditAvailable:_()}),p({project:o(),runId:o(),state:O("disabled"),checkDeadLinks:O(!1)}),p({project:o(),runId:o(),state:O("complete"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])}),p({project:o(),runId:o(),state:O("partial"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])})]);p({sitemapUrl:o().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:m().int().positive().max(5e4).optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:_().default(!1)});p({runId:o(),status:en});const vR=p({runId:o(),status:en,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(vR).default([])});const xR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),kR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),wR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:en,phase:xR,attempt:wR.nullable(),layout:kR,error:o().nullable()});const SR=A(["waiting","collecting","terminal"]),jR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:en,state:SR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(jR).max(12).default([])});const eh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);eh.enum;p({id:o(),projectId:o(),kind:eh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ft).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:eh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ft).optional().default([]),sourceId:o().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const th=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);th.enum;const ah=A(["cited","aspirational","wasted-surface"]),Vb=ah.enum;Vb.cited,Vb.aspirational;const Du=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),AR=Du.enum;AR["direct-competitor"];const Eu=A(["queued","seeding","probing","completed","failed"]);Eu.enum;const fk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Du.default("unknown")}),CR=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:ah.nullable().default(null),citationState:Pn,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),NR=p({id:o(),projectId:o(),status:Eu,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(la).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:m().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Ie(o(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(fk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});NR.extend({probes:y(CR).default([])});const _R=500,zR=8,DR=["gemini","openai"],ER=A(DR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(ER).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(_R).optional(),probeConcurrency:m().int().min(1).max(zR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(ah).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Du).min(1).optional()});p({sessionId:o(),projectId:o(),status:Eu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(fk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Ve([O("cli"),o().regex(/^discovery:.+$/)]);const TR=p({query:o().min(1),probeHits:m().int().positive()}),RR=p({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:p({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});p({sessionId:o(),projectId:o(),provider:o(),status:Eu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(TR),stats:RR});const nh=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);nh.enum;const gk=A(["7d","30d","90d","all"]),Lb=A(["improving","declining","stable"]),OR=A(["mentioned","cited"]);OR.enum;const Wp=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),ih=o().trim().min(1),BR=y(ih).min(1).superRefine((e,n)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),jo=Be("status",[p({status:O("known"),model:ih}),p({status:O("unknown")}),p({status:O("mixed"),models:BR,includesUnknown:_()})]),qR=p({observedAt:o(),bucketStartDate:o(),from:jo,to:jo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),yk=p({latestObservation:p({observedAt:o(),state:jo}),events:y(qR),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),MR=Ie(o(),yk),PR=yk.extend({latestServedModelIds:y(ih).default([])}),IR=Ie(o(),PR),VR=p({observedAt:o(),configured:jo,served:jo}),LR=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),UR=p({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:m().int().nonnegative(),citationRate:m(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:m(),mentionedCount:m().int(),mentionShare:LR,byProvider:Ie(o(),Wp),modelEvidenceByProvider:Ie(o(),jo).default({}),basketRevision:m().int().nullable().default(null)}),GR=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),$R=p({date:o(),delta:m().int(),label:o()}),HR=p({at:o(),identity:v2});p({window:gk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(UR),overall:Wp,byProvider:Ie(o(),Wp),trend:Lb,mentionTrend:Lb,queryChanges:y($R),basketChanges:y(GR).default([]),executionIdentityChanges:y(HR).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:MR.default({}),servedModelAttribution:IR.default({}),modelServiceMismatch:Ie(o(),VR).default({}),modelPointerChanges:Ie(o(),$D).default({})});const Ub=p({category:th,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),KR=p({domain:o(),count:m().int(),percentage:m(),category:th,label:o(),surfaceClass:nh}),QR=p({surfaceClass:nh,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Gb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(KR),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(QR)});p({overall:y(Ub),byQuery:Ie(o(),y(Ub)),ranked:Gb,byProvider:Ie(o(),Gb),runId:o(),window:gk,limit:m().int().nullable()});const sh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),bk=sh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),ZR=sh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(bk).optional()}),FR=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),YR=A(["provider"]),e0=p({domain:o(),mentions:m().int()}),XR=p({queryClass:A(["branded","non-brand","pooled"]),percent:m().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(e0)});p({project:o(),groupBy:YR.optional(),window:FR,totals:sh,byProvider:y(bk).optional(),queries:y(ZR),shareOfVoice:XR.optional()});const JR=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),WR=A(["up","down","flat"]),$b=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),eO=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),tO=p({key:eO,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:$b,to:$b,rateRatio:m().nullable(),direction:Ve([WR,ce()]),verdict:JR}),Hb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),aO=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),nO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),iO=A(["included","model-discontinuous","model-unknown"]),sO=p({provider:o(),status:iO,fromModels:y(o()),toModels:y(o())}),oO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),rO=p({status:oO,comparedProviders:y(o()),providers:y(sO)}),lO=p({provider:o(),from:p({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:p({checked:m().int(),mentioned:m().int(),cited:m().int()})}),cO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Hb,to:Hb,basket:aO,metrics:y(tO),queriesMentioned:cO,byProvider:y(lO),modelChanges:y(nO),continuity:rO,competitors:p({from:y(e0),to:y(e0)})});A(["json","csv"]);const uO=p({runId:o(),runKind:O("answer-visibility"),runStatus:en,runTrigger:X0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:Pn,cited:_(),answerMentioned:_().nullable(),mentionState:Ve([Wr,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Ve([vu,ce()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(Cu),searchQueries:y(o())}),dO=p({since:o().nullable(),until:o().nullable(),includeProbes:_()});p({schemaVersion:O("canonry.results-export/v1"),generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:dO,recordCount:m().int().nonnegative(),records:y(uO)});const Tu=A(["organic","paid"]);Tu.enum;p({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:_(),createdAt:o(),updatedAt:o()});p({date:o(),landingPage:o(),sessions:m(),organicSessions:m(),users:m()});const oh=A(["session","first_user","manual_utm"]),mO=p({source:o(),medium:o(),trafficClass:Tu,sessions:m(),users:m().optional(),sourceDimension:oh}),pO=p({source:o(),medium:o(),trafficClass:Tu,sourceDimension:oh,landingPage:o(),sessions:m(),users:m().optional()}),hO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),Pr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),fO=p({organic:Pr,social:Pr,direct:Pr,ai:Pr,other:Pr});p({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(p({landingPage:o(),sessions:m(),organicSessions:m(),directSessions:m(),users:m()})),aiReferrals:y(mO),aiReferralLandingPages:y(pO),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(hO),socialSessions:m(),socialUsers:m(),channelBreakdown:fO,organicSharePct:m(),aiSharePct:m(),aiSharePctBySession:m(),paidAiSharePct:m(),paidAiSharePctBySession:m(),organicAiSharePct:m(),organicAiSharePctBySession:m(),directSharePct:m(),socialSharePct:m(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:m(),otherSharePct:m(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});p({connected:_(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:A(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const gO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(gO)});p({synced:_(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:_(),syncedAt:o(),measurement:p({acquisition:p({days:m().int().nonnegative(),status:A(["ready","error"]),rowCount:m().int().nonnegative(),error:o().optional()}),leads:p({days:m().int().nonnegative(),status:A(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:A(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});p({date:o(),source:o(),medium:o(),trafficClass:Tu,landingPage:o(),sessions:m(),users:m(),sourceDimension:oh});const yO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),bO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(yO)});p({days:y(bO),sources:y(o()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});p({date:o(),source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()});p({date:o(),sessions:m(),organicSessions:m(),users:m(),usersSource:A(["deduplicated","landing-page-sum"])});p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});const vk=A(["claude","openai","gemini","zai","deepinfra"]),vO=p({id:vk,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(vO).default([]),defaultProvider:vk.nullable()});const xO=A(["aero","user","compaction"]);xO.enum;const xk=128;p({key:o().min(1).max(xk),value:o().min(1)});p({key:o().min(1).max(xk)});const qo=A(["commoncrawl","bing-webmaster"]);qo.enum;const rh=A(["queued","downloading","querying","ready","failed"]);rh.enum;p({id:o(),release:o(),status:rh,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const kO=p({linkingDomain:o(),numHosts:m().int(),source:qo}),wO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:qo,summary:wO.nullable(),total:m().int(),rows:y(kO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo});const SO=p({source:qo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(SO),anyConnected:_(),anyData:_()});p({duckdbInstalled:_(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});p({installed:_(),version:o(),path:o(),alreadyPresent:_()});p({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:o().nullable()});p({release:o(),syncStatus:rh.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const lh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:lh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),Kb=p({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),perCompetitor:y(p({domain:o(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:m()})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:m().int().min(0).max(100).nullable()}),jO=wi.extend({breakdown:Kb,scope:A(["non-brand","pooled"]),branded:Kb}),bp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:lh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),AO=p({hasPreviousRun:_(),comparable:_(),querySetChanged:_(),previousRunAt:o().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),CO=p({id:o(),projectId:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:p({action:o(),target:o().optional(),reason:o()}).optional(),cause:p({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:_(),createdAt:o()}),NO=p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});p({project:qz,latestRun:IT,health:NO.nullable(),topInsights:y(CO),queryCounts:p({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:m(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:m()}),providers:y(p({provider:o(),citedRate:m(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:p({since:o().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:p({mention:wi,visibility:wi,mentionShare:jO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:bp,citationMovement:bp,mentionMovement:bp,movementComparison:AO,competitors:y(p({id:o(),domain:o(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:A(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(p({provider:o(),model:o().nullable(),score:m(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(m()).optional()})),attentionItems:y(p({id:o(),tone:lh,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(p({runId:o(),createdAt:o(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:m(),mentionedCount:m().int().nonnegative(),mentionRate:m(),status:o()})),suggestedQueries:p({rows:y(p({query:o(),impressions:m(),clicks:m(),avgPosition:m(),reason:o()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});A(["snapshot","insight"]);const _O=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Pn,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),zO=p({kind:O("insight"),id:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:A(["title","query","recommendation","cause"]),snippet:o(),dismissed:_(),createdAt:o()}),DO=Be("kind",[_O,zO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(DO)});const kk=A(["create","expand","refresh","add-schema"]);kk.enum;function P$(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const wk=A(["gsc","competitor-evidence","both"]);wk.enum;const Sk=A(["high","medium","low"]);Sk.enum;const EO=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);EO.enum;const jk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jk.enum;const ch=A(["ownable","ceded"]);ch.enum;const TO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),RO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),OO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),BO=p({actionId:o(),state:jk,lastUpdated:o()}),Ak=p({targetRef:o(),query:o(),action:kk,ourBestPage:TO.nullable(),winningCompetitor:RO.nullable(),score:m(),scoreBreakdown:OO,drivers:y(o()),demandSource:wk,actionConfidence:Sk,existingAction:BO.nullable(),winnabilityClass:ch,winnability:m().min(0).max(1).nullable()});p({targets:y(Ak),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const qO=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(qO)});p({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:m().int().nonnegative(),generatedAt:o()});p({provider:o().optional(),model:o().optional(),forceRefresh:_().optional()});const MO=p({targetQuery:o().trim().min(1),winnabilityClass:ch,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:MO,costMillicents:m().int().nonnegative(),generatedAt:o()});const PO=p({domain:o(),competitorType:Du,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(PO)});const IO=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ft)}),Ck=p({query:o(),groundingSources:y(IO)});p({sources:y(Ck),latestRunId:o()});const Nk=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Nk),latestRunId:o()});const _k=A(["ok","warn","fail","skipped"]);_k.enum;const uh=A(["global","project"]);uh.enum;const zk=A(["auth","config","providers","integrations","database","schedules","agent"]);zk.enum;const VO=p({id:o(),category:zk,scope:uh,title:o(),status:_k,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ie(o(),ya()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});p({scope:uh,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:p({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(VO)});const LO=p({provider:o(),citationState:Pn,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),UO=p({queryId:o(),query:o(),providers:y(LO),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),GO=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),$O=p({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});p({summary:$O,byQuery:y(UO),competitorGaps:y(GO),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const I$=[7,14,30,90],V$=30;Ve([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const HO=A(["prompt","request-param","browser-geo","ignored"]),KO=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),QO=p({provider:o(),treatment:HO,description:o()}),ZO=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:KO.nullable(),providerLocationHandling:y(QO),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),FO=p({citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),trend:A(["up","down","flat","unknown"]),queryCount:m(),competitorCount:m(),providerCount:m(),gsc:p({clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),periodStart:o(),periodEnd:o()}).nullable(),ga:p({sessions:m(),users:m(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(p({title:o(),detail:o(),tone:A(["positive","caution","negative","neutral"])}))}),YO=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),XO=p({queries:y(o()),providers:y(o()),matrix:y(y(YO.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),JO=p({domain:o(),citationCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:m(),theirCitedPages:y(p({url:o(),citedFor:y(o())}))}),WO=p({projectCitationCount:m(),competitors:y(JO)}),eB=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),vp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(eB)}),tB=vp.extend({scope:A(["non-brand","pooled"]),nonBrand:vp,branded:vp}),aB=p({category:o(),label:o(),count:m(),sharePct:m()}),nB=p({categories:y(aB),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),iB=p({query:o(),clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),category:A(["brand","lead-gen","industry","other"])}),sB=p({periodStart:o(),periodEnd:o(),totalClicks:m(),totalImpressions:m(),ctr:m(),avgPosition:m(),topQueries:y(iB),categoryBreakdown:y(p({category:A(["brand","lead-gen","industry","other"]),clicks:m(),impressions:m(),sharePct:m()})),trend:y(p({date:o(),clicks:m(),impressions:m()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),oB=p({totalSessions:m(),totalUsers:m(),totalOrganicSessions:m(),periodStart:o(),periodEnd:o(),topLandingPages:y(p({page:o(),sessions:m(),users:m(),organicSessions:m()})),channelBreakdown:y(p({channel:o(),sessions:m(),sharePct:m()}))}),rB=p({totalSessions:m(),organicSessions:m(),paidSessions:m(),channels:y(p({channelGroup:o(),sessions:m(),sharePct:m()})),topCampaigns:y(p({source:o(),medium:o(),sessions:m()}))}),lB=p({totalSessions:m(),paidSessions:m(),organicSessions:m(),totalUsers:m().optional(),paidUsers:m().optional(),organicUsers:m().optional(),bySource:y(p({source:o(),sessions:m(),users:m().optional(),paidSessions:m(),organicSessions:m(),sharePct:m()})),trend:y(p({date:o(),sessions:m()})),topLandingPages:y(p({page:o(),sessions:m(),users:m().optional()}))}),cB=p({windowStart:o(),windowEnd:o(),hasData:_(),verifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),unverifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),aiUserFetchHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivals:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivalsByClass:p({paid:p({current:m(),prior:m(),deltaPct:m().nullable()}),organic:p({current:m(),prior:m(),deltaPct:m().nullable()}),unclassified:p({current:m(),prior:m(),deltaPct:m().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(p({operator:o(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:m().nullable()})),topCrawledPaths:y(p({path:o(),verifiedHits:m(),distinctOperators:m()})),referralProducts:y(p({product:o(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(p({date:o(),verifiedCrawlerHits:m(),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(p({path:o(),arrivals:m(),distinctProducts:m()}))}),uB=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),dB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),t0=p({id:o(),type:A(["regression","gain","opportunity"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:m()}),mB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),co=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),pB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),hB=p({enoughHistory:_(),headline:o(),citationRate:co.nullable(),mentionRate:co.nullable(),citedQueryCount:co.nullable(),mentionedQueryCount:co.nullable(),gscClicksDelta:co.nullable(),aiReferralsDelta:co.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(pB),wins:y(t0),regressions:y(t0)});A(["agency","client"]);const fB=A(["agency","client","both"]),gB=A(["immediate","short-term","medium-term"]),yB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const bB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),dh=p({audience:fB,priority:m(),horizon:gB,category:bB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:yB,targetRef:o().optional()}),vB=p({headline:o(),overview:o(),actionItems:y(dh),confidenceNotes:y(o())}),xB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),kB=p({priorities:y(dh),diagnostics:y(xB)});function L$(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function U$(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function G$(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function $$(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function H$(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:ZO,executiveSummary:FO,citationScorecard:XO,competitorLandscape:WO,mentionLandscape:tB,aiSourceOrigin:nB,gsc:sB.nullable(),ga:oB.nullable(),socialReferrals:rB.nullable(),aiReferrals:lB.nullable(),serverActivity:cB.nullable(),indexingHealth:uB.nullable(),citationsTrend:y(dB),whatsChanged:hB,insights:y(t0),recommendedNextSteps:y(mB),actionPlan:y(dh),clientSummary:vB,agencyDiagnostics:kB,contentOpportunities:y(Ak),contentGaps:y(Nk),groundingSources:y(Ck)});const wB=Ve([O(60),O(90)]),SB=A(["earliest","middle","prior","latest"]),uo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Dk=p({name:SB,startDate:o(),endDate:o()}),jB=Dk.extend({totals:uo}),AB=Dk.extend({organicSessions:m().int().nonnegative()}),xp=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Vc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Qb=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:wB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:xp.nullable(),ga4:xp.nullable(),server:xp.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:uo,namedBrand:uo,namedNonBrand:uo,suppressedOrUnreportedResidual:uo,cohorts:y(jB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(AB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:K_,pages:y(p({path:o(),gsc:uo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const CB=A(["claude","codex"]);CB.enum;const NB=A(["claude","codex","all"]);NB.enum;const Ek=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),_B=A(["content","sitemap","robots","asset","other"]),mh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);mh.enum;const zB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);zB.enum;const DB=A(["raw-request","aggregate-bucket"]),EB=DB.enum,TB=A(["observed","provider-aggregated","inferred"]),RB=TB.enum,OB=p({type:o().nullable(),labels:Ie(o(),o())}),BB=p({sourceType:mh,evidenceKind:O(EB["raw-request"]),confidence:O(RB.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:OB,providerLabels:Ie(o(),o())});p({events:y(BB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Tk=A(["connected","paused","error","archived"]),K$=Tk.enum,Rk=A(["oauth","service-account"]);Rk.enum;const qB=A(["verified","claimed_unverified","unknown_ai_like"]),Q$=qB.enum,MB=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Ok=p({manifestId:o().min(1),manifest:MB.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Rk});p({baseUrl:o().url(),username:o().min(1)});const ph=A(["production","preview"]);ph.enum;p({projectId:o().min(1),teamId:o().min(1),environment:ph});const Bk=p({id:o(),projectId:o(),sourceType:mh,displayName:o(),status:Tk,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ie(o(),ya()),createdAt:o(),updatedAt:o()});p({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});p({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});p({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:ph.optional(),displayName:o().min(1).optional()});const PB=A(["direct-push","queue-pull"]),Mo=PB.enum,hh=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),qk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),IB=qk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().nullable()}),VB=qk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});function Mk(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}A0(Mk,Be("deliveryMode",[IB,VB]));const Pk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),LB=Pk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().min(1).optional()}),UB=Pk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});A0(Mk,Be("deliveryMode",[LB,UB]));const Ik=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),GB=Ik.extend({deliveryMode:O(Mo["direct-push"]),activationRequired:_().default(!1)}),$B=Ik.extend({deliveryMode:O(Mo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[GB,$B]);const HB=p({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:p({verifiedBot:_().nullable(),botScore:m().int().nullable(),country:o().nullable(),asn:m().int().nullable(),asOrganization:o().nullable()}).nullable()});p({schemaVersion:O(1),workerVersion:o().min(1),events:y(HB).min(1).max(100)});p({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:o(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});p({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});p({days:m().int().positive().optional()});p({advanceToNow:O(!0)});p({sourceId:o(),runId:o(),status:en,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const KB=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Bk)});const QB=Bk.extend({totals24h:KB,latestRun:p({runId:o(),status:en,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y(QB)});const ZB=A(["crawler","ai-user-fetch","ai-referral"]),fh=ZB.enum,Vk=A(["hour","day"]);Vk.enum;const FB=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative()}),YB=p({kind:O(fh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:_B,status:m().int(),hits:m().int().nonnegative()}),XB=p({kind:O(fh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),JB=p({kind:O(fh["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),WB=Be("kind",[YB,XB,JB]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Vk,points:y(FB)}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:p({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:_()}),events:y(WB)});const Lk=A(["queued","running","completed","partial","failed"]),Z$=Lk.enum,Uk=A(["queued","running","completed","failed"]),F$=Uk.enum;p({queries:y(o().trim().min(1).max(4e3)).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:la.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:Ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const Gk=p({id:o(),projectId:o(),status:Lk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:la.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),eq=p({id:o(),position:m().int(),query:o(),status:Uk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Cu),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Pn.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Gk.extend({queries:y(eq)});p({runs:y(Gk)});p({apiKey:o().min(1)});p({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});p({q:o().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const tq=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(tq)});const aq=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(aq)});const nq=p({id:o(),name:o().optional()}),iq=p({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(nq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(iq)});p({connected:_(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:_().optional()});p({disconnected:_()});p({runId:o(),status:o()});const sq=p({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),ul=A(["impressions","clicks"]),oq=ul.enum,dl=A(["impression","click"]);dl.enum;const rq=p({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:sq.nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),lq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Ve([dl,ce()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(rq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),cq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Ve([ul,ce()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(lq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(cq)});const $k=A(["campaign","ad_group"]);$k.enum;const uq=p({level:$k,entityId:o(),date:o(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable(),inProgress:_()});p({rows:y(uq),currencyCode:o().nullable().optional()});const Hk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Kk=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable()});p({connected:_(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:Hk,totals:Kk});const Qk=A(["unavailable","partial","complete"]);Qk.enum;const Zk=A(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Zk.enum;const Fk=A(["unavailable","reported"]);Fk.enum;const dq={storedSnapshot:"stored_ads_snapshot"},Yk=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Yk.enum;const mq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),pq=p({id:o(),name:o(),status:o(),billingEventType:Ve([dl,ce()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(mq)}),hq=p({id:o(),name:o(),status:o(),biddingType:Ve([ul,ce()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(pq)});p({snapshot:p({status:Qk,issue:Ve([Zk,ce()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:en}).nullable()}),historicalCampaignRollups:p({status:Fk,window:Hk,totals:Kk.nullable()}),storedConfiguration:p({basis:O(dq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(hq)}),assessment:p({state:Yk})});const Un=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),Ao=m().int().min(946684800).max(4102444800),Co=m().int().positive().max(Number.MAX_SAFE_INTEGER),gh=o().regex(/^[a-f0-9]{64}$/),Xk=y(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Jk=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),Wk=A(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);Wk.enum;const e3=A(["pending","reconciling","succeeded","failed","unknown"]),yo=e3.enum,t3=A(["known_entity","create_fingerprint","manual_only"]);t3.enum;const a3=A([yo.pending,yo.unknown,yo.reconciling]);a3.enum;const n3=A(["active","paused","archived"]);n3.enum;const i3=A(["file","campaign","ad_group","ad"]);i3.enum;const s3=A(["campaign","ad_group","ad"]);s3.enum;const yh=p({id:vt,expectedUpdatedAt:m().int().nonnegative()}).strict(),fq=yh,ru=100,gq=yh.extend({ads:y(fq).min(1).max(ru-1)}).strict(),yq=yh.extend({adGroups:y(gq).min(1).max(ru-1)}).strict();function bq(e,n){return e<n?-1:e>n?1:0}function Zb(e,n,s){for(let r=1;r<e.length;r+=1)if(bq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const o3=p({campaign:yq}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((u,f)=>u+1+f.ads.length,0)>ru&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${ru} entities`}),Zb(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Zb(f.ads,["campaign","adGroups",u,"ads"],n);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),r3=gh,vq=A(["approved","executing","consumed","revoked","expired","unknown"]),Mn=vq.enum,xq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Di=xq.enum,kq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:n3.optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).max(100).optional(),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional(),campaignId:vt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:Co.max(1e8).optional(),billingEventType:dl.optional(),adGroupId:vt.optional(),creativeFingerprint:gh.optional()}).strict();p({operationKey:Un,imageUrl:Jk});p({operationKey:Un,name:fs,description:o().max(4e3).optional(),startTime:Ao.optional(),endTime:Ao.optional(),lifetimeSpendLimitMicros:Co.min(1e6),locationIds:y(vt).min(1).max(100),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===oq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:Un,campaignId:vt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:Co.max(1e8),billingEventType:dl.optional()});const l3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Jk,fileId:vt});p({operationKey:Un,adGroupId:vt,name:fs,creative:l3});function bh(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).min(1).max(100).optional()}).refine(bh,{message:"At least one campaign field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Co.max(1e8).optional()}).refine(bh,{message:"At least one ad group field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:l3.optional()}).refine(bh,{message:"At least one ad field must be updated"});p({operationKey:Un});const Ru=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:Wk,state:e3,entityType:Ve([i3,ce()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Ve([t3,ce()]),reconcileParentId:vt.nullable(),reconcileFingerprint:gh.nullable(),reconcileFields:kq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Ru,replayed:_()});const ht=Gx({offset:!0}),Po={id:vt,projectId:vt,adAccountId:vt,manifestHash:r3,manifest:o3,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ht,approvedAt:ht,createdAt:ht,updatedAt:ht,revocationRequestedAt:ht.nullable()},wq=p({...Po,state:O(Mn.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),Sq=p({...Po,state:O(Mn.executing),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),jq=p({...Po,state:O(Mn.consumed),operationId:vt,executionStartedAt:ht,consumedAt:ht,revokedAt:ce(),expiredAt:ce()}).strict(),Aq=p({...Po,state:O(Mn.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ht,expiredAt:ce()}).strict(),Cq=p({...Po,state:O(Mn.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ht}).strict(),Nq=p({...Po,state:O(Mn.unknown),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),c3=Be("state",[wq,Sq,jq,Aq,Cq,Nq]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mn.executing&&e.state!==Mn.unknown&&e.state!==Mn.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Ei={id:vt,operationId:vt,ordinal:m().int().nonnegative(),entityType:s3,entityId:vt,expectedUpdatedAt:m().int().nonnegative(),createdAt:ht,updatedAt:ht},ml={errorCode:ce(),errorMessage:ce()},vh={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},_q=p({...Ei,...ml,state:O(Di.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),zq=p({...Ei,...ml,state:O(Di.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:ht,finishedAt:ce()}).strict(),Dq=p({...Ei,...ml,state:O(Di.active),providerUpdatedAt:m().int().nonnegative(),remediation:ce(),startedAt:ht,finishedAt:ht}).strict(),Eq=p({...Ei,...vh,state:O(Di.failed),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),Tq=p({...Ei,...ml,state:O(Di.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ce()}).strict(),Rq=p({...Ei,...ml,state:O(Di.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ht}).strict(),Oq=p({...Ei,...vh,state:O(Di.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:ht,finishedAt:ht}).strict(),Bq=p({...Ei,...vh,state:O(Di.unknown),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),qq=Be("state",[_q,zq,Dq,Eq,Tq,Rq,Oq,Bq]),a0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},Mq=A([a0.exact,a0.refreshSemanticallyUnchanged]);p({manifest:o3,executorApiKeyId:vt,expiresAt:ht,versionPolicy:Mq.default(a0.exact)}).strict();p({grant:c3}).strict();p({}).strict();p({operationKey:Un,grantId:vt,manifestHash:r3}).strict();p({grant:c3,operation:Ru,steps:y(qq)}).strict();const Pq=[yo.pending,yo.unknown,yo.reconciling];function Iq(e){if(e===void 0||e==="")return Pq;if(Array.isArray(e)){const n=[];for(const s of e)typeof s=="string"?n.push(...s.split(",")):n.push(s);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:A0(Iq,y(a3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Yx().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Ru),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Ru,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:Yx().int().min(1).max(30).default(7)});const u3=A(["campaign","ad_group","ad"]);u3.enum;const d3=A(["both","live-only","stored-only"]);d3.enum;const Vq=O("live-provider-read"),Lq=p({date:o().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Fb=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),Uq=p({date:o(),live:Fb.nullable(),stored:Fb.nullable(),drifted:_()}),Gq=p({field:o(),live:o().nullable(),stored:o().nullable()}),$q=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),Hq=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),Kq=p({entityType:u3,id:o(),parentId:o().nullable(),presence:d3,live:$q.nullable(),stored:Hq.nullable(),fieldDeltas:y(Gq),liveMetrics:y(Lq).nullable(),metricDeltas:y(Uq).nullable(),drifted:_()}),Qq=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:Vq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:p({lookbackDays:m().int().positive()}),bounds:p({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:_()}),entities:y(Kq),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(Qq)});const m3=A(["admin","viewer"]),Zq=/^[a-z\d][\w.-]{0,63}$/i,Fq=o().regex(Zq,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Yb=12,Yq=o().min(Yb,`A password must be at least ${Yb} characters.`),p3=p({id:o(),name:o(),role:m3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(p3)});p({name:Fq,password:Yq,role:m3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:p3.pick({name:!0,role:!0}).nullable()});const zt=1,kp=A(["system","project","queries","competitors","run"]),wp=A(["0","1","2-3","4-5","6-10","11+"]);function cn(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xb=A(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","unknown"]),Lc=p({eventId:o().uuid(),flowVersion:O(zt),onboardingSessionId:o().uuid()});Be("event",[Lc.extend({event:O("onboarding.started"),step:kp,resumed:_()}).strict(),Lc.extend({event:O("onboarding.step_completed"),step:kp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:wp.optional()}).strict(),Lc.extend({event:O("onboarding.blocked"),step:kp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xb}).strict(),Lc.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),providerCountBucket:wp,queryCountBucket:wp,reasonCode:Xb.optional()}).strict()]);p({accepted:_()});const Xq=4;function Jq(e){return e.length<Xq}var Wq=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(Wq||{});const Y$={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},X$={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},eM=J0;function tM(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?n.push(`${u}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(r.raw,null,2)}`):n.push(u)}return n.length>0?n.join(`
|
|
55
55
|
|
|
56
|
-
`):"Run failed."}function Wq(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function F$(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function Y$(e){return e===null?"Unknown":e?"Pass":"Fail"}function Jb(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function X$(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function J$(e,n){if(!e)return{freq:"custom",hour:6,customCron:n};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const s=e.match(/^daily(?:@(\d+))?$/);if(s)return{freq:"daily",hour:s[1]?parseInt(s[1]):6,customCron:""};const r=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return r?{freq:r[1],hour:r[2]?parseInt(r[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:n}}function W$(e,n,s){const r=s==="UTC"?"UTC":s.split("/").pop()?.replace(/_/g," ")??s;if(!e)return`Custom: ${n} · ${r}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${r}`;const u=e.match(/^daily(?:@(\d+))?$/);if(u){const g=u[1]?parseInt(u[1]):6;return`Every day at ${Jb(g)} · ${r}`}const f=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(f){const g={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},b=f[2]?parseInt(f[2]):6;return`Every ${g[f[1]]} at ${Jb(b)} · ${r}`}return`${e} · ${r}`}function eM(e,n){return n&&n!==e?`${e} · ${n}`:e}function eH(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(s=>s.type==="timeZoneName")?.value;return eM(e,n)}function tM(e){const n=e.replace(/\/+$/,"")||"/";return n==="/"?"overview":n==="/projects"?"projects":n.startsWith("/projects/")?"project":n==="/runs"?"runs":n==="/traffic"||n.startsWith("/traffic/")?"traffic":n==="/backlinks"?"backlinks":n==="/settings"?"settings":n==="/setup"?"setup":"other"}function aM(e,n){return!n||n.includes(e)}const h3=["overview","search-console","local","discovery","report","activity","backlinks","technical-aeo","history","settings"],nM=new Set(h3);function tH(e){const n=e??h3,s=[...new Set(n.filter(r=>nM.has(r)))];return s.length>0?s:["overview"]}function aH(e,n){return aM(e,n)||!n?e:n.includes("overview")?"overview":n[0]??"overview"}const Wb={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},iM=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i;function sM(e){const n=e?.mode?.trim();return n==="light"||n==="dark"?n:void 0}function oM(e){if(!e)return{};const n={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(Wb,s)?Wb[s]:void 0;if(!u||typeof r!="string")continue;const f=r.trim();iM.test(f)&&(n[u]=f)}return n}const me=(e,n,s,r)=>{const u={_id:e,baseUrl:n?.baseUrl||(n?.client??T).getConfig().baseUrl};return s&&(u._infinite=s),n?.body&&(u.body=n.body),n?.headers&&(u.headers=n.headers),n?.path&&(u.path=n.path),n?.query&&(u.query=n.query),[u]},Ai=e=>me("getApiV1Projects",e),gs=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:Ai(e)}),rM=e=>me("getApiV1ProjectsByName",e),lM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Fv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:rM(e)}),cM=e=>me("getApiV1ProjectsByNameMeasurementPlan",e),nH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await m4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:cM(e)}),uM=e=>me("getApiV1ProjectsByNameMeasurementReport",e),iH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await p4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:uM(e)}),dM=e=>me("getApiV1ProjectsByNameMeasurementSetup",e),sH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await h4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:dM(e)}),Ou=(e,n)=>{const s={...e[0]};return n.body&&(s.body={...e[0].body,...n.body}),n.headers&&(s.headers={...e[0].headers,...n.headers}),n.path&&(s.path={...e[0].path,...n.path}),n.query&&(s.query={...e[0].query,...n.query}),s},mM=e=>me("getApiV1ProjectsByNameMeasurementOverview",e),oH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Yv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:mM(e)}),pM=e=>me("getApiV1ProjectsByNameMeasurementOverview",e,!0),rH=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await Yv({...e,...f,signal:r,throwOnError:!0});return g},queryKey:pM(e)}),hM=e=>me("getApiV1ProjectsByNameMeasurementPropertyEvidence",e,!0),lH=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await f4({...e,...f,signal:r,throwOnError:!0});return g},queryKey:hM(e)}),fM=e=>me("getApiV1ProjectsByNameMeasurementQuestionResult",e),cH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await g4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:fM(e)}),gM=e=>me("getApiV1ProjectsByNameMeasurementPropertyCompetitors",e),uH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await y4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:gM(e)}),yM=e=>me("getApiV1ProjectsByNameResearchRuns",e),dH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await b4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:yM(e)}),mH=e=>({mutationFn:async s=>{const{data:r}=await v4({...e,...s,throwOnError:!0});return r}}),bM=e=>me("getApiV1ProjectsByNameResearchRunsByRunId",e),pH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await x4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:bM(e)}),vM=e=>me("getApiV1ProjectsByNameQueries",e),hH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Xv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:vM(e)}),xM=e=>me("getApiV1ProjectsByNameRuns",e),kM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Jv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xM(e)}),xh=e=>me("getApiV1Runs",e),kh=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await R4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xh(e)}),wM=e=>me("getApiV1RunsById",e),f3=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Wv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:wM(e)}),SM=e=>me("getApiV1ProjectsByNameHistory",e),fH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await q4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:SM(e)}),jM=e=>me("getApiV1History",e),gH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await M4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:jM(e)}),AM=e=>me("getApiV1ProjectsByNameSnapshotsDiff",e),yH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:AM(e)}),CM=e=>me("getApiV1Settings",e),NM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ex({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:CM(e)}),_M=e=>me("getApiV1ProjectsByNameSchedule",e),bH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await tx({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:_M(e)}),zM=e=>me("getApiV1ProjectsByNameGoogleAdsStatus",e),vH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await W4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:zM(e)}),xH=e=>({mutationFn:async s=>{const{data:r}=await e5({...e,...s,throwOnError:!0});return r}}),DM=e=>me("getApiV1ProjectsByNameGoogleAdsCustomers",e),kH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await t5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:DM(e)}),wH=e=>({mutationFn:async s=>{const{data:r}=await a5({...e,...s,throwOnError:!0});return r}}),SH=e=>({mutationFn:async s=>{const{data:r}=await n5({...e,...s,throwOnError:!0});return r}}),EM=e=>me("getApiV1ProjectsByNameGoogleAdsSnapshots",e),jH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await i5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:EM(e)}),AH=e=>({mutationFn:async s=>{const{data:r}=await s5({...e,...s,throwOnError:!0});return r}}),TM=e=>me("getApiV1ProjectsByNameGtmStatus",e),CH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await o5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:TM(e)}),NH=e=>({mutationFn:async s=>{const{data:r}=await r5({...e,...s,throwOnError:!0});return r}}),RM=e=>me("getApiV1ProjectsByNameGtmAccounts",e),_H=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:RM(e)}),OM=e=>me("getApiV1ProjectsByNameGtmAccountsByAccountIdContainers",e),zH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await c5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:OM(e)}),BM=e=>me("getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces",e),DH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await u5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:BM(e)}),EH=e=>({mutationFn:async s=>{const{data:r}=await d5({...e,...s,throwOnError:!0});return r}}),TH=e=>({mutationFn:async s=>{const{data:r}=await m5({...e,...s,throwOnError:!0});return r}}),qM=e=>me("getApiV1ProjectsByNameGtmSnapshots",e),RH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await p5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:qM(e)}),OH=e=>({mutationFn:async s=>{const{data:r}=await h5({...e,...s,throwOnError:!0});return r}}),MM=e=>me("getApiV1ProjectsByNameConversionTrackingContracts",e),BH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await f5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:MM(e)}),qH=e=>({mutationFn:async s=>{const{data:r}=await g5({...e,...s,throwOnError:!0});return r}}),PM=e=>me("getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity",e),MH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await y5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:PM(e)}),IM=e=>me("getApiV1ProjectsByNameGoogleConnections",e),PH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await b5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:IM(e)}),VM=e=>me("getApiV1ProjectsByNameGoogleProperties",e),IH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await k5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:VM(e)}),LM=e=>me("getApiV1ProjectsByNameGoogleGscPerformance",e),VH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await A5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:LM(e)}),UM=e=>me("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),LH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await C5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:UM(e)}),GM=e=>me("getApiV1ProjectsByNameGoogleGscInspections",e),UH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await _5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:GM(e)}),$M=e=>me("getApiV1ProjectsByNameGoogleGscDeindexed",e),GH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await z5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:$M(e)}),HM=e=>me("getApiV1ProjectsByNameGoogleGscCoverage",e),$H=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ax({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:HM(e)}),KM=e=>me("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),HH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await D5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:KM(e)}),KH=e=>me("getApiV1ProjectsByNameGoogleGscSitemaps",e),QM=e=>me("getApiV1ProjectsByNameGbpLocations",e),QH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await O5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:QM(e)}),ZH=e=>({mutationFn:async s=>{const{data:r}=await B5({...e,...s,throwOnError:!0});return r}}),FH=e=>({mutationFn:async s=>{const{data:r}=await q5({...e,...s,throwOnError:!0});return r}}),ZM=e=>me("getApiV1ProjectsByNameGbpKeywords",e),YH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await M5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:ZM(e)}),FM=e=>me("getApiV1ProjectsByNameGbpPlaceActions",e),XH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await P5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:FM(e)}),YM=e=>me("getApiV1ProjectsByNameGbpLodging",e),JH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await I5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:YM(e)}),XM=e=>me("getApiV1ProjectsByNameGbpPlaces",e),WH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:XM(e)}),JM=e=>me("getApiV1ProjectsByNameGbpSummary",e),eK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await L5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:JM(e)}),WM=e=>me("getApiV1ProjectsByNameBingStatus",e),tK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await $5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:WM(e)}),eP=e=>me("getApiV1ProjectsByNameBingSites",e),aK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await H5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:eP(e)}),tP=e=>me("getApiV1ProjectsByNameBingCoverage",e),nK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await nx({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:tP(e)}),aP=e=>me("getApiV1ProjectsByNameBingInspections",e),iK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Q5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:aP(e)}),nP=e=>me("getApiV1ProjectsByNameBingPerformance",e),sK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await X5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:nP(e)}),iP=e=>me("getApiV1ProjectsByNameGaStatus",e),oK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await e6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:iP(e)}),sP=e=>me("getApiV1ProjectsByNameGaTraffic",e),rK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await a6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:sP(e)}),oP=e=>me("getApiV1ProjectsByNameGaAiReferralDaily",e),lK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await n6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:oP(e)}),rP=e=>me("getApiV1ProjectsByNameGaSocialReferralHistory",e),cK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await i6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:rP(e)}),lP=e=>me("getApiV1ProjectsByNameGaSessionHistory",e),uK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await s6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:lP(e)}),cP=e=>me("getApiV1ProjectsByNameReport",e),dK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await r6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:cP(e)}),uP=e=>me("getApiV1ProjectsByNameHealthHistory",e),mK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:uP(e)}),dP=e=>me("getApiV1ProjectsByNameCitationsVisibility",e),pK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await c6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:dP(e)}),mP=e=>me("getApiV1ProjectsByNameTrafficSources",e),hK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await z6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:mP(e)}),pP=e=>me("getApiV1ProjectsByNameTrafficStatus",e),fK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await D6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:pP(e)}),hP=e=>me("getApiV1ProjectsByNameTrafficSourcesById",e),gK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await E6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:hP(e)}),fP=e=>me("getApiV1ProjectsByNameTrafficEvents",e),yK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await T6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:fP(e)}),gP=e=>me("getApiV1ProjectsByNameDiscoverSessions",e),bK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await O6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:gP(e)}),yP=e=>me("getApiV1ProjectsByNameDiscoverSessionsById",e),vK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await B6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:yP(e)}),bP=e=>me("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),xK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await q6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:bP(e)}),vP=e=>me("getApiV1ProjectsByNameTechnicalAeo",e),kK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await P6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:vP(e)}),xP=e=>me("getApiV1ProjectsByNameTechnicalAeoPages",e),wK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await I6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xP(e)}),kP=e=>me("getApiV1ProjectsByNameTechnicalAeoTrend",e),SK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:kP(e)}),wP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawl",e),jK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await L6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:wP(e)}),SP=e=>me("getApiV1ProjectsByNameTechnicalAeoGraph",e),AK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await U6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:SP(e)}),jP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPagesAudit",e),CK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await G6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:jP(e)}),AP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e),NK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ix({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:AP(e)}),CP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e,!0),_K=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await ix({...e,...f,signal:r,throwOnError:!0});return g},queryKey:CP(e)}),NP=e=>me("getApiV1ProjectsByNameTechnicalAeoStructure",e,!0),zK=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await $6({...e,...f,signal:r,throwOnError:!0});return g},queryKey:NP(e)}),_P=e=>me("getApiV1ProjectsByNameTechnicalAeoInternalLinksNeighbors",e),DK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await H6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:_P(e)}),zP=e=>me("getApiV1ProjectsByNameTechnicalAeoDeadLinks",e),EK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await K6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:zP(e)}),DP=e=>me("getApiV1ProjectsByNameTechnicalAeoRuns",e),TK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Q6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:DP(e)}),EP=e=>me("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdProgress",e),RK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await F6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:EP(e)}),TP=e=>me("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdPageHealthPreview",e),OK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Y6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:TP(e)}),RP=e=>me("getApiV1ProjectsByNameAgentProviders",e),OP=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await X6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:RP(e)});function ev(e){return e.state==="ok"?"positive":e.state==="checking"?"neutral":"negative"}function g3(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function BK(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}function qK(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const MK={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function BP(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function No(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
|
|
57
|
-
`):void 0}function qP(e,n,s){return e.map(r=>{if(r.id==="api")return{...r,tone:ev(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(r.id==="worker")return{...r,tone:ev(n.workerStatus),detail:n.workerStatus.state==="ok"?"Healthy":"Needs attention",meta:n.workerStatus.detail};const u=s.providerStatuses.filter(x=>x.state==="ready").length,f=s.providerStatuses.length,g=u>0,b=s.providerStatuses.filter(x=>x.state==="ready").map(x=>BP(x)).join(" · ");return{...r,label:"Providers",tone:g?"positive":"caution",detail:`${u} of ${f} configured`,meta:b||"None configured"}})}function MP(e,n){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!n.providerStatuses.some(s=>s.state==="ready"))return"Launch is blocked until at least one provider is configured."}function PP(e,n,s){const r=MP(n,s),u=structuredClone(e);return u.healthChecks=u.healthChecks.map(f=>{if(f.id==="api")return{...f,detail:n.apiStatus.detail,state:n.apiStatus.state==="ok"?"ready":"attention"};if(f.id==="worker")return{...f,detail:n.workerStatus.detail,state:n.workerStatus.state==="ok"?"ready":"attention"};const g=s.providerStatuses.some(b=>b.state==="ready");return{...f,detail:g?"At least one provider configured.":"No providers configured.",state:g?"ready":"attention"}}),u.launchState.enabled=r===void 0,u.launchState.blockedReason=r,u.launchState.summary=r??"Queue a visibility sweep first, then follow with a site audit to explain movement.",u}const y3="canonry.run-tracker",n0=new Set;let tv=!1,IP=0,Bu={runs:{},batches:{}};function VP(){const e=In();for(const n of n0)n(e)}function LP(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function UP(){typeof window>"u"||window.sessionStorage.setItem(y3,JSON.stringify(Bu))}function b3(){tv||(tv=!0,!(typeof window>"u")&&(Bu=LP(window.sessionStorage.getItem(y3))))}function qu(e){Bu=e,UP(),VP()}function In(){return b3(),Bu}function v3(e){return b3(),n0.add(e),()=>{n0.delete(e)}}function wh(e){const n=In();qu({...n,runs:{...n.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function Sp(e){const n=In();if(!n.runs[e])return;const{[e]:s,...r}=n.runs;qu({...n,runs:r})}function GP(e){const n=In(),s=`batch_${Date.now()}_${++IP}`;return qu({...n,batches:{...n.batches,[s]:{batchId:s,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),s}function $P(e){const n=In();if(!n.batches[e])return;const{[e]:s,...r}=n.batches;qu({...n,batches:r})}function HP(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const KP=10*6e4;function QP(e,n,s,r){return e.filter(u=>!n.has(u.runId)&&s-(u.trackedAt??0)>=r)}function ZP(e,n){let s=0,r=0,u=0,f=0,g=0;for(const b of e){const x=n[b]?.status;x==="completed"?s+=1:x==="partial"?r+=1:x==="failed"?u+=1:x==="cancelled"?f+=1:g+=1}return{completed:s,partial:r,failed:u,cancelled:f,pending:g,finished:g===0}}const av=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,nv=Iv,x3=(e,n)=>s=>{var r;if(n?.variants==null)return nv(e,s?.class,s?.className);const{variants:u,defaultVariants:f}=n,g=Object.keys(u).map(k=>{const S=s?.[k],C=f?.[k];if(S===null)return null;const j=av(S)||av(C);return u[k][j]}),b=s&&Object.entries(s).reduce((k,S)=>{let[C,j]=S;return j===void 0||(k[C]=j),k},{}),x=n==null||(r=n.compoundVariants)===null||r===void 0?void 0:r.reduce((k,S)=>{let{class:C,className:j,...E}=S;return Object.entries(E).every(B=>{let[q,U]=B;return Array.isArray(U)?U.includes({...f,...b}[q]):{...f,...b}[q]===U})?[...k,C,j]:k},[]);return nv(e,g,x,s?.class,s?.className)},FP=(e,n)=>{const s=new Array(e.length+n.length);for(let r=0;r<e.length;r++)s[r]=e[r];for(let r=0;r<n.length;r++)s[e.length+r]=n[r];return s},YP=(e,n)=>({classGroupId:e,validator:n}),k3=(e=new Map,n=null,s)=>({nextPart:e,validators:n,classGroupId:s}),lu="-",iv=[],XP="arbitrary..",JP=e=>{const n=eI(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:g=>{if(g.startsWith("[")&&g.endsWith("]"))return WP(g);const b=g.split(lu),x=b[0]===""&&b.length>1?1:0;return w3(b,x,n)},getConflictingClassGroupIds:(g,b)=>{if(b){const x=r[g],k=s[g];return x?k?FP(k,x):x:k||iv}return s[g]||iv}}},w3=(e,n,s)=>{if(e.length-n===0)return s.classGroupId;const u=e[n],f=s.nextPart.get(u);if(f){const k=w3(e,n+1,f);if(k)return k}const g=s.validators;if(g===null)return;const b=n===0?e.join(lu):e.slice(n).join(lu),x=g.length;for(let k=0;k<x;k++){const S=g[k];if(S.validator(b))return S.classGroupId}},WP=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),s=n.indexOf(":"),r=n.slice(0,s);return r?XP+r:void 0})(),eI=e=>{const{theme:n,classGroups:s}=e;return tI(s,n)},tI=(e,n)=>{const s=k3();for(const r in e){const u=e[r];Sh(u,s,r,n)}return s},Sh=(e,n,s,r)=>{const u=e.length;for(let f=0;f<u;f++){const g=e[f];aI(g,n,s,r)}},aI=(e,n,s,r)=>{if(typeof e=="string"){nI(e,n,s);return}if(typeof e=="function"){iI(e,n,s,r);return}sI(e,n,s,r)},nI=(e,n,s)=>{const r=e===""?n:S3(n,e);r.classGroupId=s},iI=(e,n,s,r)=>{if(oI(e)){Sh(e(r),n,s,r);return}n.validators===null&&(n.validators=[]),n.validators.push(YP(s,e))},sI=(e,n,s,r)=>{const u=Object.entries(e),f=u.length;for(let g=0;g<f;g++){const[b,x]=u[g];Sh(x,S3(n,b),s,r)}},S3=(e,n)=>{let s=e;const r=n.split(lu),u=r.length;for(let f=0;f<u;f++){const g=r[f];let b=s.nextPart.get(g);b||(b=k3(),s.nextPart.set(g,b)),s=b}return s},oI=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,rI=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,s=Object.create(null),r=Object.create(null);const u=(f,g)=>{s[f]=g,n++,n>e&&(n=0,r=s,s=Object.create(null))};return{get(f){let g=s[f];if(g!==void 0)return g;if((g=r[f])!==void 0)return u(f,g),g},set(f,g){f in s?s[f]=g:u(f,g)}}},i0="!",sv=":",lI=[],ov=(e,n,s,r,u)=>({modifiers:e,hasImportantModifier:n,baseClassName:s,maybePostfixModifierPosition:r,isExternal:u}),cI=e=>{const{prefix:n,experimentalParseClassName:s}=e;let r=u=>{const f=[];let g=0,b=0,x=0,k;const S=u.length;for(let q=0;q<S;q++){const U=u[q];if(g===0&&b===0){if(U===sv){f.push(u.slice(x,q)),x=q+1;continue}if(U==="/"){k=q;continue}}U==="["?g++:U==="]"?g--:U==="("?b++:U===")"&&b--}const C=f.length===0?u:u.slice(x);let j=C,E=!1;C.endsWith(i0)?(j=C.slice(0,-1),E=!0):C.startsWith(i0)&&(j=C.slice(1),E=!0);const B=k&&k>x?k-x:void 0;return ov(f,E,j,B)};if(n){const u=n+sv,f=r;r=g=>g.startsWith(u)?f(g.slice(u.length)):ov(lI,!1,g,void 0,!0)}if(s){const u=r;r=f=>s({className:f,parseClassName:u})}return r},uI=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((s,r)=>{n.set(s,1e6+r)}),s=>{const r=[];let u=[];for(let f=0;f<s.length;f++){const g=s[f],b=g[0]==="[",x=n.has(g);b||x?(u.length>0&&(u.sort(),r.push(...u),u=[]),r.push(g)):u.push(g)}return u.length>0&&(u.sort(),r.push(...u)),r}},dI=e=>({cache:rI(e.cacheSize),parseClassName:cI(e),sortModifiers:uI(e),...JP(e)}),mI=/\s+/,pI=(e,n)=>{const{parseClassName:s,getClassGroupId:r,getConflictingClassGroupIds:u,sortModifiers:f}=n,g=[],b=e.trim().split(mI);let x="";for(let k=b.length-1;k>=0;k-=1){const S=b[k],{isExternal:C,modifiers:j,hasImportantModifier:E,baseClassName:B,maybePostfixModifierPosition:q}=s(S);if(C){x=S+(x.length>0?" "+x:x);continue}let U=!!q,G=r(U?B.substring(0,q):B);if(!G){if(!U){x=S+(x.length>0?" "+x:x);continue}if(G=r(B),!G){x=S+(x.length>0?" "+x:x);continue}U=!1}const te=j.length===0?"":j.length===1?j[0]:f(j).join(":"),X=E?te+i0:te,ae=X+G;if(g.indexOf(ae)>-1)continue;g.push(ae);const oe=u(G,U);for(let ge=0;ge<oe.length;++ge){const M=oe[ge];g.push(X+M)}x=S+(x.length>0?" "+x:x)}return x},hI=(...e)=>{let n=0,s,r,u="";for(;n<e.length;)(s=e[n++])&&(r=j3(s))&&(u&&(u+=" "),u+=r);return u},j3=e=>{if(typeof e=="string")return e;let n,s="";for(let r=0;r<e.length;r++)e[r]&&(n=j3(e[r]))&&(s&&(s+=" "),s+=n);return s},fI=(e,...n)=>{let s,r,u,f;const g=x=>{const k=n.reduce((S,C)=>C(S),e());return s=dI(k),r=s.cache.get,u=s.cache.set,f=b,b(x)},b=x=>{const k=r(x);if(k)return k;const S=pI(x,s);return u(x,S),S};return f=g,(...x)=>f(hI(...x))},gI=[],Vt=e=>{const n=s=>s[e]||gI;return n.isThemeGetter=!0,n},A3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,C3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,yI=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,bI=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,vI=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,xI=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kI=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,wI=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xi=e=>yI.test(e),Le=e=>!!e&&!Number.isNaN(Number(e)),ki=e=>!!e&&Number.isInteger(Number(e)),jp=e=>e.endsWith("%")&&Le(e.slice(0,-1)),Bn=e=>bI.test(e),N3=()=>!0,SI=e=>vI.test(e)&&!xI.test(e),jh=()=>!1,jI=e=>kI.test(e),AI=e=>wI.test(e),CI=e=>!ve(e)&&!Se(e),NI=e=>Ti(e,D3,jh),ve=e=>A3.test(e),rs=e=>Ti(e,E3,SI),rv=e=>Ti(e,BI,Le),_I=e=>Ti(e,R3,N3),zI=e=>Ti(e,T3,jh),lv=e=>Ti(e,_3,jh),DI=e=>Ti(e,z3,AI),Uc=e=>Ti(e,O3,jI),Se=e=>C3.test(e),Ir=e=>ys(e,E3),EI=e=>ys(e,T3),cv=e=>ys(e,_3),TI=e=>ys(e,D3),RI=e=>ys(e,z3),Gc=e=>ys(e,O3,!0),OI=e=>ys(e,R3,!0),Ti=(e,n,s)=>{const r=A3.exec(e);return r?r[1]?n(r[1]):s(r[2]):!1},ys=(e,n,s=!1)=>{const r=C3.exec(e);return r?r[1]?n(r[1]):s:!1},_3=e=>e==="position"||e==="percentage",z3=e=>e==="image"||e==="url",D3=e=>e==="length"||e==="size"||e==="bg-size",E3=e=>e==="length",BI=e=>e==="number",T3=e=>e==="family-name",R3=e=>e==="number"||e==="weight",O3=e=>e==="shadow",qI=()=>{const e=Vt("color"),n=Vt("font"),s=Vt("text"),r=Vt("font-weight"),u=Vt("tracking"),f=Vt("leading"),g=Vt("breakpoint"),b=Vt("container"),x=Vt("spacing"),k=Vt("radius"),S=Vt("shadow"),C=Vt("inset-shadow"),j=Vt("text-shadow"),E=Vt("drop-shadow"),B=Vt("blur"),q=Vt("perspective"),U=Vt("aspect"),G=Vt("ease"),te=Vt("animate"),X=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ae=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],oe=()=>[...ae(),Se,ve],ge=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],J=()=>[Se,ve,x],_e=()=>[xi,"full","auto",...J()],he=()=>[ki,"none","subgrid",Se,ve],we=()=>["auto",{span:["full",ki,Se,ve]},ki,Se,ve],Oe=()=>[ki,"auto",Se,ve],je=()=>["auto","min","max","fr",Se,ve],Fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ye=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...J()],ne=()=>[xi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...J()],fe=()=>[xi,"screen","full","dvw","lvw","svw","min","max","fit",...J()],De=()=>[xi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...J()],le=()=>[e,Se,ve],at=()=>[...ae(),cv,lv,{position:[Se,ve]}],H=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",TI,NI,{size:[Se,ve]}],ie=()=>[jp,Ir,rs],re=()=>["","none","full",k,Se,ve],W=()=>["",Le,Ir,rs],Z=()=>["solid","dashed","dotted","double"],Ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ae=()=>[Le,jp,cv,lv],st=()=>["","none",B,Se,ve],Qe=()=>["none",Le,Se,ve],Pt=()=>["none",Le,Se,ve],jt=()=>[Le,Se,ve],Ct=()=>[xi,"full",...J()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Bn],breakpoint:[Bn],color:[N3],container:[Bn],"drop-shadow":[Bn],ease:["in","out","in-out"],font:[CI],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Bn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Bn],shadow:[Bn],spacing:["px",Le],text:[Bn],"text-shadow":[Bn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xi,ve,Se,U]}],container:["container"],columns:[{columns:[Le,ve,Se,b]}],"break-after":[{"break-after":X()}],"break-before":[{"break-before":X()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:oe()}],overflow:[{overflow:ge()}],"overflow-x":[{"overflow-x":ge()}],"overflow-y":[{"overflow-y":ge()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:_e()}],"inset-x":[{"inset-x":_e()}],"inset-y":[{"inset-y":_e()}],start:[{"inset-s":_e(),start:_e()}],end:[{"inset-e":_e(),end:_e()}],"inset-bs":[{"inset-bs":_e()}],"inset-be":[{"inset-be":_e()}],top:[{top:_e()}],right:[{right:_e()}],bottom:[{bottom:_e()}],left:[{left:_e()}],visibility:["visible","invisible","collapse"],z:[{z:[ki,"auto",Se,ve]}],basis:[{basis:[xi,"full","auto",b,...J()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Le,xi,"auto","initial","none",ve]}],grow:[{grow:["",Le,Se,ve]}],shrink:[{shrink:["",Le,Se,ve]}],order:[{order:[ki,"first","last","none",Se,ve]}],"grid-cols":[{"grid-cols":he()}],"col-start-end":[{col:we()}],"col-start":[{"col-start":Oe()}],"col-end":[{"col-end":Oe()}],"grid-rows":[{"grid-rows":he()}],"row-start-end":[{row:we()}],"row-start":[{"row-start":Oe()}],"row-end":[{"row-end":Oe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":je()}],"auto-rows":[{"auto-rows":je()}],gap:[{gap:J()}],"gap-x":[{"gap-x":J()}],"gap-y":[{"gap-y":J()}],"justify-content":[{justify:[...Fe(),"normal"]}],"justify-items":[{"justify-items":[...ye(),"normal"]}],"justify-self":[{"justify-self":["auto",...ye()]}],"align-content":[{content:["normal",...Fe()]}],"align-items":[{items:[...ye(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ye(),{baseline:["","last"]}]}],"place-content":[{"place-content":Fe()}],"place-items":[{"place-items":[...ye(),"baseline"]}],"place-self":[{"place-self":["auto",...ye()]}],p:[{p:J()}],px:[{px:J()}],py:[{py:J()}],ps:[{ps:J()}],pe:[{pe:J()}],pbs:[{pbs:J()}],pbe:[{pbe:J()}],pt:[{pt:J()}],pr:[{pr:J()}],pb:[{pb:J()}],pl:[{pl:J()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":J()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":J()}],"space-y-reverse":["space-y-reverse"],size:[{size:ne()}],"inline-size":[{inline:["auto",...fe()]}],"min-inline-size":[{"min-inline":["auto",...fe()]}],"max-inline-size":[{"max-inline":["none",...fe()]}],"block-size":[{block:["auto",...De()]}],"min-block-size":[{"min-block":["auto",...De()]}],"max-block-size":[{"max-block":["none",...De()]}],w:[{w:[b,"screen",...ne()]}],"min-w":[{"min-w":[b,"screen","none",...ne()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[g]},...ne()]}],h:[{h:["screen","lh",...ne()]}],"min-h":[{"min-h":["screen","lh","none",...ne()]}],"max-h":[{"max-h":["screen","lh",...ne()]}],"font-size":[{text:["base",s,Ir,rs]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,OI,_I]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",jp,ve]}],"font-family":[{font:[EI,zI,n]}],"font-features":[{"font-features":[ve]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,Se,ve]}],"line-clamp":[{"line-clamp":[Le,"none",Se,rv]}],leading:[{leading:[f,...J()]}],"list-image":[{"list-image":["none",Se,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Se,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:le()}],"text-color":[{text:le()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:[Le,"from-font","auto",Se,rs]}],"text-decoration-color":[{decoration:le()}],"underline-offset":[{"underline-offset":[Le,"auto",Se,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:J()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Se,ve]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Se,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:at()}],"bg-repeat":[{bg:H()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ki,Se,ve],radial:["",Se,ve],conic:[ki,Se,ve]},RI,DI]}],"bg-color":[{bg:le()}],"gradient-from-pos":[{from:ie()}],"gradient-via-pos":[{via:ie()}],"gradient-to-pos":[{to:ie()}],"gradient-from":[{from:le()}],"gradient-via":[{via:le()}],"gradient-to":[{to:le()}],rounded:[{rounded:re()}],"rounded-s":[{"rounded-s":re()}],"rounded-e":[{"rounded-e":re()}],"rounded-t":[{"rounded-t":re()}],"rounded-r":[{"rounded-r":re()}],"rounded-b":[{"rounded-b":re()}],"rounded-l":[{"rounded-l":re()}],"rounded-ss":[{"rounded-ss":re()}],"rounded-se":[{"rounded-se":re()}],"rounded-ee":[{"rounded-ee":re()}],"rounded-es":[{"rounded-es":re()}],"rounded-tl":[{"rounded-tl":re()}],"rounded-tr":[{"rounded-tr":re()}],"rounded-br":[{"rounded-br":re()}],"rounded-bl":[{"rounded-bl":re()}],"border-w":[{border:W()}],"border-w-x":[{"border-x":W()}],"border-w-y":[{"border-y":W()}],"border-w-s":[{"border-s":W()}],"border-w-e":[{"border-e":W()}],"border-w-bs":[{"border-bs":W()}],"border-w-be":[{"border-be":W()}],"border-w-t":[{"border-t":W()}],"border-w-r":[{"border-r":W()}],"border-w-b":[{"border-b":W()}],"border-w-l":[{"border-l":W()}],"divide-x":[{"divide-x":W()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":W()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Z(),"hidden","none"]}],"divide-style":[{divide:[...Z(),"hidden","none"]}],"border-color":[{border:le()}],"border-color-x":[{"border-x":le()}],"border-color-y":[{"border-y":le()}],"border-color-s":[{"border-s":le()}],"border-color-e":[{"border-e":le()}],"border-color-bs":[{"border-bs":le()}],"border-color-be":[{"border-be":le()}],"border-color-t":[{"border-t":le()}],"border-color-r":[{"border-r":le()}],"border-color-b":[{"border-b":le()}],"border-color-l":[{"border-l":le()}],"divide-color":[{divide:le()}],"outline-style":[{outline:[...Z(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Le,Se,ve]}],"outline-w":[{outline:["",Le,Ir,rs]}],"outline-color":[{outline:le()}],shadow:[{shadow:["","none",S,Gc,Uc]}],"shadow-color":[{shadow:le()}],"inset-shadow":[{"inset-shadow":["none",C,Gc,Uc]}],"inset-shadow-color":[{"inset-shadow":le()}],"ring-w":[{ring:W()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:le()}],"ring-offset-w":[{"ring-offset":[Le,rs]}],"ring-offset-color":[{"ring-offset":le()}],"inset-ring-w":[{"inset-ring":W()}],"inset-ring-color":[{"inset-ring":le()}],"text-shadow":[{"text-shadow":["none",j,Gc,Uc]}],"text-shadow-color":[{"text-shadow":le()}],opacity:[{opacity:[Le,Se,ve]}],"mix-blend":[{"mix-blend":[...Ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Le]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ae()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ae()}],"mask-image-linear-from-color":[{"mask-linear-from":le()}],"mask-image-linear-to-color":[{"mask-linear-to":le()}],"mask-image-t-from-pos":[{"mask-t-from":Ae()}],"mask-image-t-to-pos":[{"mask-t-to":Ae()}],"mask-image-t-from-color":[{"mask-t-from":le()}],"mask-image-t-to-color":[{"mask-t-to":le()}],"mask-image-r-from-pos":[{"mask-r-from":Ae()}],"mask-image-r-to-pos":[{"mask-r-to":Ae()}],"mask-image-r-from-color":[{"mask-r-from":le()}],"mask-image-r-to-color":[{"mask-r-to":le()}],"mask-image-b-from-pos":[{"mask-b-from":Ae()}],"mask-image-b-to-pos":[{"mask-b-to":Ae()}],"mask-image-b-from-color":[{"mask-b-from":le()}],"mask-image-b-to-color":[{"mask-b-to":le()}],"mask-image-l-from-pos":[{"mask-l-from":Ae()}],"mask-image-l-to-pos":[{"mask-l-to":Ae()}],"mask-image-l-from-color":[{"mask-l-from":le()}],"mask-image-l-to-color":[{"mask-l-to":le()}],"mask-image-x-from-pos":[{"mask-x-from":Ae()}],"mask-image-x-to-pos":[{"mask-x-to":Ae()}],"mask-image-x-from-color":[{"mask-x-from":le()}],"mask-image-x-to-color":[{"mask-x-to":le()}],"mask-image-y-from-pos":[{"mask-y-from":Ae()}],"mask-image-y-to-pos":[{"mask-y-to":Ae()}],"mask-image-y-from-color":[{"mask-y-from":le()}],"mask-image-y-to-color":[{"mask-y-to":le()}],"mask-image-radial":[{"mask-radial":[Se,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ae()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ae()}],"mask-image-radial-from-color":[{"mask-radial-from":le()}],"mask-image-radial-to-color":[{"mask-radial-to":le()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":ae()}],"mask-image-conic-pos":[{"mask-conic":[Le]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ae()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ae()}],"mask-image-conic-from-color":[{"mask-conic-from":le()}],"mask-image-conic-to-color":[{"mask-conic-to":le()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:at()}],"mask-repeat":[{mask:H()}],"mask-size":[{mask:ue()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Se,ve]}],filter:[{filter:["","none",Se,ve]}],blur:[{blur:st()}],brightness:[{brightness:[Le,Se,ve]}],contrast:[{contrast:[Le,Se,ve]}],"drop-shadow":[{"drop-shadow":["","none",E,Gc,Uc]}],"drop-shadow-color":[{"drop-shadow":le()}],grayscale:[{grayscale:["",Le,Se,ve]}],"hue-rotate":[{"hue-rotate":[Le,Se,ve]}],invert:[{invert:["",Le,Se,ve]}],saturate:[{saturate:[Le,Se,ve]}],sepia:[{sepia:["",Le,Se,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",Se,ve]}],"backdrop-blur":[{"backdrop-blur":st()}],"backdrop-brightness":[{"backdrop-brightness":[Le,Se,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Le,Se,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Le,Se,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Le,Se,ve]}],"backdrop-invert":[{"backdrop-invert":["",Le,Se,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Le,Se,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Le,Se,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Le,Se,ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":J()}],"border-spacing-x":[{"border-spacing-x":J()}],"border-spacing-y":[{"border-spacing-y":J()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Se,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Le,"initial",Se,ve]}],ease:[{ease:["linear","initial",G,Se,ve]}],delay:[{delay:[Le,Se,ve]}],animate:[{animate:["none",te,Se,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[q,Se,ve]}],"perspective-origin":[{"perspective-origin":oe()}],rotate:[{rotate:Qe()}],"rotate-x":[{"rotate-x":Qe()}],"rotate-y":[{"rotate-y":Qe()}],"rotate-z":[{"rotate-z":Qe()}],scale:[{scale:Pt()}],"scale-x":[{"scale-x":Pt()}],"scale-y":[{"scale-y":Pt()}],"scale-z":[{"scale-z":Pt()}],"scale-3d":["scale-3d"],skew:[{skew:jt()}],"skew-x":[{"skew-x":jt()}],"skew-y":[{"skew-y":jt()}],transform:[{transform:[Se,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:oe()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ct()}],"translate-x":[{"translate-x":Ct()}],"translate-y":[{"translate-y":Ct()}],"translate-z":[{"translate-z":Ct()}],"translate-none":["translate-none"],accent:[{accent:le()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:le()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Se,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":J()}],"scroll-mx":[{"scroll-mx":J()}],"scroll-my":[{"scroll-my":J()}],"scroll-ms":[{"scroll-ms":J()}],"scroll-me":[{"scroll-me":J()}],"scroll-mbs":[{"scroll-mbs":J()}],"scroll-mbe":[{"scroll-mbe":J()}],"scroll-mt":[{"scroll-mt":J()}],"scroll-mr":[{"scroll-mr":J()}],"scroll-mb":[{"scroll-mb":J()}],"scroll-ml":[{"scroll-ml":J()}],"scroll-p":[{"scroll-p":J()}],"scroll-px":[{"scroll-px":J()}],"scroll-py":[{"scroll-py":J()}],"scroll-ps":[{"scroll-ps":J()}],"scroll-pe":[{"scroll-pe":J()}],"scroll-pbs":[{"scroll-pbs":J()}],"scroll-pbe":[{"scroll-pbe":J()}],"scroll-pt":[{"scroll-pt":J()}],"scroll-pr":[{"scroll-pr":J()}],"scroll-pb":[{"scroll-pb":J()}],"scroll-pl":[{"scroll-pl":J()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Se,ve]}],fill:[{fill:["none",...le()]}],"stroke-w":[{stroke:[Le,Ir,rs,rv]}],stroke:[{stroke:["none",...le()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},MI=fI(qI);function Ua(...e){return MI(Iv(e))}const PI=x3("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),xe=D.forwardRef(({className:e,variant:n,size:s,asChild:r=!1,...u},f)=>{const g=r?fj:"button";return c.jsx(g,{ref:f,className:Ua(PI({variant:n,size:s,className:e})),...u})});xe.displayName="Button";const II=x3("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function B3({className:e,variant:n,...s}){return c.jsx("div",{className:Ua(II({variant:n}),e),...s})}const VI=220;function uv({compact:e=!1,version:n,updateAvailable:s,onDismissUpdate:r}){const u=!e&&n&&n!=="unknown",[f,g]=D.useState(!1),b=!e&&s&&r,x=()=>{g(!0),window.setTimeout(()=>{r?.(),g(!1)},VI)};return e?c.jsxs(et,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"brand-copy",children:c.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):c.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[c.jsx(et,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx(et,{to:"/",className:"brand-mark",children:"Canonry"}),!b&&u?c.jsxs("span",{className:"brand-version",children:["v",n]}):null]}),b?c.jsxs("span",{className:`brand-update-bubble ${f?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[c.jsxs("a",{className:"brand-update-bubble-link",href:s.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${s.upgradeCommand}`,"aria-label":`New version v${s.latest} available — open release page`,children:[c.jsxs("span",{className:"brand-update-bubble-from",children:["v",s.current]}),c.jsx(gj,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),c.jsxs("span",{className:"brand-update-bubble-to",children:["v",s.latest]})]}),c.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:x,"aria-label":`Dismiss update notification for v${s.latest}`,children:c.jsx(zo,{className:"size-3","aria-hidden":"true"})})]}):null]})}function LI({provider:e}){const n={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},r=Object.hasOwn(n,e)?`provider-badge--${e} ${n[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return c.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r}`,children:e})}function ga({tone:e,children:n,...s}){const r=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return c.jsx(B3,{variant:r,...s,children:n})}function Ah({status:e}){return c.jsx(ga,{tone:g3(e),children:Wq(e)})}const UI=Pv,GI=Bv,q3=D.forwardRef(({className:e,...n},s)=>c.jsx(r0,{ref:s,className:Ua("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...n}));q3.displayName=r0.displayName;const $I=400,HI=1200,KI=720,M3=D.forwardRef(({className:e,children:n,...s},r)=>{const[u,f]=D.useState(KI),g=D.useRef(!1),b=D.useRef(0),x=D.useRef(0),k=D.useCallback(j=>{g.current=!0,b.current=j.clientX,x.current=u,j.target.setPointerCapture(j.pointerId),j.preventDefault()},[u]),S=D.useCallback(j=>{if(!g.current)return;const E=b.current-j.clientX,B=Math.min(HI,Math.max($I,x.current+E));f(B)},[]),C=D.useCallback(()=>{g.current=!1},[]);return c.jsxs(GI,{children:[c.jsx(q3,{}),c.jsxs(l0,{ref:r,className:Ua("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${u}px, 100vw)`},...s,children:[c.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:k,onPointerMove:S,onPointerUp:C}),n,c.jsxs(qv,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[c.jsx(zo,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});M3.displayName=l0.displayName;const QI=({className:e,...n})=>c.jsx("div",{className:Ua("flex flex-col gap-1.5 pr-10",e),...n}),P3=D.forwardRef(({className:e,...n},s)=>c.jsx(c0,{ref:s,className:Ua("text-lg font-medium text-primary",e),...n}));P3.displayName=c0.displayName;const I3=D.forwardRef(({className:e,...n},s)=>c.jsx(Mv,{ref:s,className:Ua("text-sm text-muted",e),...n}));I3.displayName=Mv.displayName;function Ap({title:e,subtitle:n,children:s,open:r,onClose:u}){return c.jsx(UI,{open:r,onOpenChange:f=>f?void 0:u(),children:c.jsxs(M3,{children:[c.jsxs(QI,{className:"drawer-head",children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:n}),c.jsx(P3,{id:"drawer-title",children:e}),c.jsx(I3,{className:"sr-only",children:n})]}),c.jsx("div",{className:"drawer-body",children:s})]})})}function Vr({text:e}){const[n,s]=D.useState(null),r=D.useRef(null),u=D.useCallback(()=>{if(!r.current)return;const b=r.current.getBoundingClientRect();s({top:b.top,left:b.left+b.width/2})},[]),f=D.useCallback(()=>s(null),[]),g=D.useCallback(()=>{n===null?u():f()},[n,u,f]);return c.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:u,onMouseLeave:f,children:[c.jsx("button",{ref:r,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":n!==null,onFocus:u,onBlur:f,onClick:g,onKeyDown:b=>{b.key==="Escape"&&f()},children:c.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),n!==null&&lj.createPortal(c.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:n.top,left:n.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const ZI=/[\s\-_]+/;function FI(e){const n=e.split(ZI).filter(Boolean);return n.length===0?null:n.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function dv(e,n){const s=YI(n),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(k=>k.startsWith("**")&&k.endsWith("**")?{type:"bold",value:k.slice(2,-2)}:{type:"text",value:k}),u=s.flatMap(k=>k.terms).filter(k=>k.trim().length>1);if(u.length===0)return r.map((k,S)=>k.type==="bold"?ro.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const g=[...u].sort((k,S)=>S.length-k.length).map(FI).filter(k=>!!k);if(g.length===0)return r.map((k,S)=>k.type==="bold"?ro.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const b=new RegExp(`(${g.join("|")})`,"gi"),x=new Map;for(const k of s)for(const S of k.terms){const C=cs(S);C&&!x.has(C)&&x.set(C,k.className)}return r.flatMap((k,S)=>k.value.split(b).map((j,E)=>{if(!j)return null;if(E%2===1){const q=x.get(cs(j))??"answer-highlight";return k.type==="bold"?ro.createElement("mark",{key:`hl-${S}-${E}`,className:q},ro.createElement("strong",{className:"text-strong font-semibold"},j)):ro.createElement("mark",{key:`hl-${S}-${E}`,className:q},j)}return k.type==="bold"?ro.createElement("strong",{key:`b-${S}-${E}`,className:"text-strong font-semibold"},j):j})).filter(Boolean)}function YI(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function s0(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function Cp(e,n){return{citedCompetitorDomains:[...e.citedCompetitorDomains??n?.citedCompetitorDomains??[]],mentionedCompetitorDomains:[...e.mentionedCompetitorDomains??n?.mentionedCompetitorDomains??[]]}}function Np(e,n){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return n==="mentioned"||n==="visible"?"Mentioned in latest run":n==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function XI({evidence:e,project:n,onClose:s}){const[r,u]=D.useState(!1),[f,g]=D.useState("mentions"),[b,x]=D.useState(-1),[k,S]=D.useState(null),[C,j]=D.useState(!1),[E,B]=D.useState({}),q=Oz(n.project),U=new Set(q.map($p)),G=e.runHistory,te=G.length>1,[X,ae]=D.useState(null),oe=D.useRef(!1);D.useEffect(()=>{if(oe.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ie=G.at(-1);ie&&(oe.current=!0,Zc(ie.runId).then(re=>{const W=re.snapshots?.find(Z=>Z.query===e.query&&Z.provider===e.provider);W&&ae({citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:ie.visibilityTransition,provider:W.provider,model:W.model??e.model,answerSnippet:W.answerText??e.answerSnippet,citedDomains:W.citedDomains??e.citedDomains,...Cp(W,e),recommendedCompetitors:W.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:W.matchedTerms??e.matchedTerms??[],groundingSources:W.groundingSources??e.groundingSources,searchQueries:W.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,G]);const ge=b>=0&&k!==null,M=ge?k:X||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:G.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,...Cp(e),recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},J=M.visibilityState==="pending"||M.citationState==="pending",_e=J?!1:M.visibilityState!=null?M.visibilityState==="visible":M.answerMentioned!=null?M.answerMentioned:M.citationState===su.cited||M.citationState==="emerging",he=M.answerMentioned!=null||M.visibilityState!=null||M.mentionedCompetitorDomains.length>0||M.recommendedCompetitors.length>0,we=M.citedDomains.length>0||M.citedCompetitorDomains.length>0||M.groundingSources.length>0||M.evidenceUrls.length>0,Oe=n.project.displayName||n.project.name,je=[...q.map($p),Oe,Oe.split(" ").slice(0,2).join(" "),...M.matchedTerms].filter(ie=>ie.trim().length>2),Fe=[...M.mentionedCompetitorDomains.flatMap(ie=>{const re=jz(ie);return re.length>=4?[re]:[]}),...M.recommendedCompetitors].filter(ie=>ie.trim().length>2),ye=[{terms:je,className:"answer-highlight-brand"},...Fe.length>0?[{terms:Fe,className:"answer-highlight-competitor"}]:[]],V=J?"pending":M.visibilityTransition==="lost"?"lost":_e?"mentioned":"not-mentioned",ne=D.useRef(0),fe=D.useCallback(async ie=>{const re=++ne.current;if(ie===-1||ie===G.length-1){x(-1),S(null),u(!1);return}x(ie),u(!1);const W=G[ie],Z=`${W.runId}::${e.query}::${e.provider}`;if(E[Z]){S(E[Z]);return}j(!0);try{const Ne=await Zc(W.runId);if(re!==ne.current)return;const Ae=Ne.snapshots?.find(Qe=>Qe.query===e.query&&Qe.provider===e.provider)??Ne.snapshots?.find(Qe=>Qe.query===e.query),st=Ae?{citationState:Ae.citationState,answerMentioned:Ae.answerMentioned,visibilityState:Ae.visibilityState,visibilityTransition:W.visibilityTransition,provider:Ae.provider,model:Ae.model??null,answerSnippet:Ae.answerText??"",citedDomains:Ae.citedDomains,...Cp(Ae),recommendedCompetitors:Ae.recommendedCompetitors??[],matchedTerms:Ae.matchedTerms??[],groundingSources:Ae.groundingSources,searchQueries:Ae.searchQueries,evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:""}:{citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:W.visibilityTransition,provider:e.provider,model:W.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:"Snapshot data not available for this run."};B(Qe=>({...Qe,[Z]:st})),S(st)}catch{if(re!==ne.current)return;S({citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:W.visibilityTransition,provider:e.provider,model:W.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:"Failed to load historical run data."})}finally{re===ne.current&&j(!1)}},[G,e.query,e.provider,E]),le=(ge||e.historyScope!=="provider")&&M.model?`${M.provider} (${M.model}) · ${M.changeLabel.toLowerCase()}`:`${M.provider} · ${M.changeLabel.toLowerCase()}`,at=!ge&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",H=_e?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:le}:M.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:le}:J?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:le},ue=()=>{if(!M.answerSnippet)return null;const ie=M.answerSnippet.split(`
|
|
58
|
-
`),re=[];let W=[],Z=0;const Ne=()=>{if(W.length===0)return;const Ae=W.join(" ").trim();Ae&&re.push(c.jsx("p",{className:re.length>0?"mt-2.5":"",children:dv(Ae,ye)},Z++)),W=[]};for(const Ae of ie){const st=Ae.trim();if(/^[-\u2013\u2014]{3,}$/.test(st)){Ne(),re.push(c.jsx("hr",{className:"border-default my-3"},Z++));continue}const Qe=st.match(/^(#{1,3})\s+(\S.*)$/);if(Qe){Ne();const Pt=Qe[1].length,jt=Qe[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Qe[2],Ct=Pt===1?"text-[13px] font-semibold text-heading mt-4 mb-1":Pt===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";re.push(c.jsx("p",{className:Ct,children:dv(jt,ye)},Z++));continue}if(st===""){Ne();continue}W.push(st)}return Ne(),re};return c.jsx(Pv,{open:!0,onOpenChange:ie=>{ie||s()},children:c.jsxs(Bv,{children:[c.jsx(r0,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),c.jsxs(l0,{className:"evidence-modal","aria-describedby":void 0,children:[c.jsxs("div",{className:"evidence-modal-header",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",M.provider||"All providers"]}),c.jsx(c0,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),c.jsxs(qv,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[c.jsx(zo,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]}),te&&c.jsxs("div",{className:"evidence-modal-timeline",children:[c.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),c.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:G.map((ie,re)=>{const W=b===-1&&re===G.length-1||b===re,Z=ie.visibilityState??(ie.answerMentioned?"visible":"not-visible"),Ne=ie.visibilityTransition??Z,Ae=Z==="visible"?"bg-positive-400":Ne==="emerging"?"bg-caution-400":Ne==="lost"?"bg-negative-400":"bg-mono-600",Qe=new Date(ie.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Pt=!!(ie.model&&re>0&&G[re-1]?.model&&G[re-1].model!==ie.model);return c.jsxs("button",{type:"button",className:`evidence-run-dot ${W?"evidence-run-dot--selected":""}`,onClick:()=>{fe(re===G.length-1?-1:re)},"aria-label":[`Run ${Qe}: ${Z}`,ie.model?`model ${ie.model}`:null,Pt?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":W,children:[c.jsx("span",{className:`size-2 rounded-full ${Ae} ${Pt?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),c.jsx("span",{className:"text-[10px] text-muted",children:Qe})]},re)})}),b>=0&&b<G.length&&c.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(G[b].createdAt).toLocaleString()," ","—"," ",c.jsx("span",{className:"capitalize",children:G[b].visibilityState??(G[b].answerMentioned?"visible":"not-visible")}),c.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{fe(-1)},children:["←"," Back to latest"]})]}),!ge&&(e.modelTransitions?.length??0)>0&&c.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ie=>c.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ie.fromModel??"unknown"} -> ${ie.toModel??"unknown"} on ${new Date(ie.createdAt).toLocaleDateString()}`},`${ie.runId}:${ie.toModel??"unknown"}`))})]}),c.jsxs("div",{className:"evidence-modal-body",children:[C&&c.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!C&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"evidence-modal-main",children:[c.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${V}`,children:[c.jsx("p",{className:`evidence-position-label evidence-position-label--${V}`,children:H.label}),c.jsx("p",{className:`evidence-position-title evidence-position-title--${V}`,children:H.title}),c.jsx("p",{className:"evidence-position-meta",children:H.meta}),at&&c.jsx("p",{className:"mt-1 text-[11px] text-muted",children:at})]}),M.answerSnippet&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),c.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:ue()}),M.answerSnippet.length>280&&c.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>u(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!M.answerSnippet&&!C&&c.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),M.searchQueries.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Web searches the model ran"}),c.jsx(Vr,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated your query — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),c.jsx("ul",{className:"grid gap-1",children:M.searchQueries.map((ie,re)=>c.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[c.jsx(yj,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),c.jsx("span",{className:"break-words",children:ie})]},`${re}-${ie}`))})]}),!ge&&e.relatedTechnicalSignals.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:_e?"Why you're visible":"What to fix"}),c.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ie,re)=>c.jsxs("div",{className:"action-item",children:[c.jsx("svg",{className:`action-item-icon ${_e?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:_e?c.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):c.jsxs(c.Fragment,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),c.jsx("span",{className:"action-item-text",children:ie})]},re))})]}),M.summary&&c.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:M.summary})]}),c.jsxs("div",{className:"evidence-modal-sidebar",children:[(he||we)&&c.jsxs("div",{className:"sidebar-tabs",children:[c.jsx("button",{className:`sidebar-tab ${f==="mentions"?"sidebar-tab--active":""}`,onClick:()=>g("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),c.jsx("button",{className:`sidebar-tab ${f==="sources"?"sidebar-tab--active":""}`,onClick:()=>g("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),f==="mentions"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Mention in answer"}),c.jsx(Vr,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),c.jsxs("div",{className:`mention-status mention-status--${_e?"mentioned":"not-mentioned"}`,children:[c.jsx("span",{className:"mention-status-icon",children:J?"…":_e?"✓":"—"}),c.jsx("span",{className:"mention-status-label",children:J?"Pending":_e?"Mentioned":"Not mentioned"})]}),M.matchedTerms.length>0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:M.matchedTerms.map(ie=>c.jsx("span",{className:"mention-chip mention-chip--brand",children:ie},ie))})]}),!J&&!_e&&M.matchedTerms.length===0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:je.map(ie=>c.jsx("span",{className:"mention-chip mention-chip--muted",children:ie},ie))}),c.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(M.recommendedCompetitors.length>0||M.mentionedCompetitorDomains.length>0)&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Competitors in answer"}),c.jsx(Vr,{text:"Competitors detected in the answer text. Includes tracked competitor brands and names extracted by Canonry; source-link competitors stay in the Sources tab."})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ie=M.mentionedCompetitorDomains.map(Z=>Z.replace(/^www\./,"")),re=new Set(ie.map(Z=>cs(Z.replace(/\.[^.]+$/,""))));return[...M.recommendedCompetitors.filter(Z=>!re.has(cs(Z))),...ie].map(Z=>c.jsx("span",{className:"mention-chip mention-chip--competitor",children:Z},Z))})()})]})]}),f==="sources"&&c.jsxs(c.Fragment,{children:[M.citedDomains.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Domains from source links"}),c.jsx(Vr,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),c.jsx("div",{className:"citation-leaderboard",children:M.citedDomains.map((ie,re)=>{const W=ie.toLowerCase().replace(/^www\./,""),Z=U.has(W),Ne=!Z&&M.citedCompetitorDomains.some(st=>st.toLowerCase().replace(/^www\./,"")===W),Ae=Z?"you":Ne?"competitor":"other";return c.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${Ae}`,children:[c.jsxs("span",{className:"citation-leaderboard-rank",children:["#",re+1]}),c.jsx("span",{className:"citation-leaderboard-domain",children:ie}),Z&&c.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),Ne&&c.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ie)})})]}),M.groundingSources.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsxs("span",{children:["Grounding source links (",M.groundingSources.length,")"]}),c.jsx(Vr,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),c.jsx("ul",{className:"grid gap-0.5",children:M.groundingSources.map((ie,re)=>{const W=s0(ie.uri),Z=ie.title||ie.uri;return c.jsx("li",{className:"truncate text-sm",children:W?c.jsx("a",{href:W,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:Z}):c.jsx("span",{className:"text-secondary",children:Z})},re)})})]}),M.evidenceUrls.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),c.jsx("ul",{className:"grid gap-1",children:M.evidenceUrls.map(ie=>{const re=s0(ie);return c.jsx("li",{className:"truncate text-sm",children:re?c.jsx("a",{href:re,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ie}):c.jsx("span",{className:"text-secondary",children:ie})},ie)})})]}),M.citedDomains.length===0&&M.groundingSources.length===0&&M.evidenceUrls.length===0&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",ge?"for this run":"yet"]})]}),!he&&!we&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",ge?"for this run":"yet"]})]})]})]})]})]})})}function JI(e){const n=e.match(/^\/projects\/([^/]+)/);if(!n)return null;try{return decodeURIComponent(n[1])}catch{return n[1]}}function WI(e,n){return e?n?.projects.find(r=>r.project.name===e||r.project.id===e)?.project.name??e:null}function eV(e,n){return WI(JI(e),n)}function Ya(e){const n=new Date("2026-02-20");return e.map((s,r)=>({runId:`run_mock_${r+1}`,citationState:s,createdAt:new Date(n.getTime()+r*2*24*60*60*1e3).toISOString()}))}const _p=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function Mu(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const tV=Mu({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),aV=Mu({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),nV=Mu({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),iV=Mu({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),sV=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:Ya(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:Ya(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:Ya(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];_p[0],Math.round(1/9*100),Math.round(2/9*100),_p[1],Ya(["cited","cited","cited","cited","cited"]),_p[2],Math.round(2/7*100),Math.round(3/7*100),Ya(["not-cited","not-cited","not-cited","cited"]);function oV(e,n){return e.runs.find(s=>s.id===n)}function rV(e,n){for(const s of e.projects){const r=s.visibilityEvidence.find(u=>u.id===n);if(r)return{project:s,evidence:r}}}function lV(e,n,s){if(e){const r=e.visibilityEvidence.find(u=>u.id===s);if(r)return{project:e,evidence:r}}if(n)return rV(n,s)}const cV={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},uV={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},dV={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},mV={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function pV(e){return{id:e.id,tone:cV[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??mV[e.type],actionGroup:uV[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:dV[e.type]}]}}function hV(e){return e.filter(n=>!n.dismissed).map(pV)}function V3(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function mv(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function fV(e,n){if(!e)return"Waiting";if(!n)return"Running";const s=new Date(n).getTime()-new Date(e).getTime();if(s<1e3)return"<1s";const r=Math.floor(s/1e3);if(r<60)return`${r}s`;const u=Math.floor(r/60),f=r%60;return`${u}m ${f}s`}function L3(e){switch(e){case Te["answer-visibility"]:return"Answer visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Site audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync";case Te["google-ads-sync"]:return"Google Ads sync";case Te["gtm-sync"]:return"Tag Manager sync"}}function gV(e){return e===go.manual?"Manual":e===go.scheduled?"Scheduled":e===go["config-apply"]?"Config apply":e}function Pu(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:L3(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?mv(e.startedAt):mv(e.createdAt),duration:fV(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?U3(e.error):yV(e),summary:bV(e),triggerLabel:gV(e.trigger)}}function U3(e){const n=J0(e);return n.length>200?n.slice(0,200)+"…":n}function yV(e){switch(e.status){case sa.queued:return"Waiting for execution slot.";case sa.running:return"Provider queries in progress.";case sa.completed:return"All queries checked.";case sa.partial:return"Run completed with some queries skipped.";case sa.failed:return e.error?U3(e.error):"Run failed.";case sa.cancelled:return"Run was cancelled.";default:return""}}function bV(e){const n=L3(e.kind);switch(e.status){case sa.queued:return`${n} queued`;case sa.running:return`${n} in progress`;case sa.completed:return`${n} completed`;case sa.partial:return`${n} partially completed`;case sa.failed:return`${n} failed`;case sa.cancelled:return`${n} cancelled`;default:return e.status}}function vV(e,n,s,r){const u=[];let f=0;const g=new Set;if(s.length>0){const b=s.flatMap(B=>B.snapshots??[]),x=new Map;for(const B of b)if(B.query){const q=`${B.query}::${B.provider}::${B.location??""}`;x.set(q,B)}const k=new Set(b.map(B=>B.location??null));k.size===0&&k.add(null);const S=new Set(b.map(B=>B.provider)),C=new Set(n.flatMap(B=>Object.keys(B.providerRuns??{}))),j=[...new Set([...S,...C])].sort(),E=j.length>0?j:["gemini"];for(const B of n){if(B.runs.length===0)continue;g.add(B.query);const q=B.runs.at(-1),U=q?.transition??"not-cited";for(const G of E){const te=[...k].filter(oe=>x.has(`${B.query}::${G}::${oe??""}`)),X=(B.providerRuns?.[G]?.length??0)>0,ae=te.length>0?te:X?[null]:[];for(const oe of ae){const ge=oe??"",M=x.get(`${B.query}::${G}::${ge}`),J=M?.model??null,_e=J?`${G}:${J}`:null,he=B.providerRuns?.[G],we=_e?B.modelRuns?.[_e]:void 0,Oe=jt=>jt?.filter(Ct=>(Ct.location??null)===oe),je=te.length>0?Oe(he):he,Fe=te.length>0?Oe(we):we,ye=(je?.length?je:null)??(Fe?.length?Fe:null),V=je?.length?"provider":Fe?.length?"model":"query",ne=ye?ye.at(-1).transition:U,fe=ye?ye.at(-1).visibilityTransition??(ye.at(-1).visibilityState==="visible"?"visible":"not-visible"):q?.visibilityTransition??(q?.visibilityState==="visible"?"visible":"not-visible"),De=ye?.at(-1)?.citationState,le=ye?.at(-1)?.visibilityState,at=M?ne==="lost"?"lost":ne==="emerging"?"emerging":M.citationState===su.cited?"cited":"not-cited":De===su.cited?"cited":"not-cited",H=M?.visibilityState??(le==="visible"?"visible":le==="pending"?"pending":"not-visible"),ue=pv(ye||B.runs),ie=hv(ye||B.runs),re=xV(B,G),W=(ye??B.runs).map(jt=>({runId:jt.runId,citationState:jt.citationState,createdAt:jt.createdAt,model:re.get(jt.runId)??null,answerMentioned:jt.answerMentioned,visibilityState:jt.visibilityState,visibilityTransition:jt.visibilityTransition,mentionState:jt.mentionState,mentionTransition:jt.mentionTransition})),Z=kV(W),Ne=V==="provider"&&Z.length<=1?"model":V,Ae=wV(W),st=M?.citedCompetitorDomains??[],Qe=M?.mentionedCompetitorDomains??[],Pt=[...new Set([...st,...Qe,...M?.competitorOverlap??[]])];u.push({id:`evidence_${e}_${f++}`,query:B.query,provider:M?.provider??G,model:M?.model??null,location:M?.location??oe,citationState:at,answerMentioned:M?.answerMentioned,visibilityState:H,visibilityChangeLabel:fv(fe,ie,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:fv(ne,ue),answerSnippet:M?.answerText??"",citedDomains:M?.citedDomains??[],evidenceUrls:[],citedCompetitorDomains:st,mentionedCompetitorDomains:Qe,competitorDomains:Pt,recommendedCompetitors:M?.recommendedCompetitors??[],matchedTerms:M?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:M?.groundingSources??[],searchQueries:M?.searchQueries??[],summary:SV(H,fe,B.query),runHistory:W,historyScope:Ne,modelsSeen:Z,modelTransitions:Ae})}}}}for(const b of r)g.has(b.query)||u.push({id:`evidence_${e}_${f++}`,query:b.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${b.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return u}function xV(e,n){const s=new Map,r=`${n}:`;for(const[u,f]of Object.entries(e.modelRuns??{})){if(!u.startsWith(r))continue;const g=u.slice(r.length),b=g==="unknown"?null:g;for(const x of f)s.set(x.runId,b)}return s}function kV(e){const n=new Set;for(const s of e)s.model&&n.add(s.model);return[...n]}function wV(e){const n=[];let s=null;for(const r of e){const u=r.model??null;u!==s&&s!==null&&n.push({runId:r.runId,createdAt:r.createdAt,fromModel:s,toModel:u}),s=u}return n}function pv(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let s=0;for(let r=e.length-1;r>=0&&e[r].citationState===n;r--)s++;return s}function hv(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let s=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===n;r--)s++;return s}function fv(e,n,s){const r={positive:s?.positive??"cited",negative:s?.negative??"not cited",first:s?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${Lr(r.positive)} in latest run`:`${Lr(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Lr(r.first);case"not-cited":case"not-visible":return n<=1?`${Lr(r.negative)} in latest run`:`${Lr(r.negative)} across ${n} runs`;default:return e}}function Lr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function SV(e,n,s){switch(n){case"lost":return`Mention was lost for "${s}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${s}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${s}".`;case"pending":return`"${s}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${s}".`}}function G3(e){const n=V3(e.project),s=vV(n.name,e.timeline,e.latestRunDetails,e.queries),u=[...e.runs].sort((f,g)=>g.createdAt.localeCompare(f.createdAt)).map(f=>Pu(f,e.project.displayName||e.project.name));return e.overview?jV(n,e.overview,s,u):AV(n,s,u)}function jV(e,n,s,r){const u=hV(n.topInsights);for(const f of n.attentionItems)f.id.startsWith("insight_")||u.push({id:f.id,tone:f.tone,title:f.title,detail:f.detail,actionLabel:f.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:u,visibilityEvidence:s,competitors:n.competitors.map(f=>({id:f.id,domain:f.domain,citationCount:f.citationCount,totalQueries:f.totalQueries,pressureLabel:f.pressureLabel,citedQueries:f.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:n.suggestedQueries}}function gv(){return{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0,score:null}}function AV(e,n,s){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",scope:"non-brand",breakdown:gv(),branded:gv()},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:s.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function CV(e){const n=V3(e.project),s=[...e.runs].sort((j,E)=>E.createdAt.localeCompare(j.createdAt)),r=s.find(j=>j.kind===Te["answer-visibility"])??s[0]??e.overview?.latestRun?.run??void 0,u=e.project.displayName||e.project.name,f=r?Pu(r,u):NV(e.project.id,u),g=e.overview;if(!g)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:f,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const b=g.scores.mention,x=b.progress??0,k=g.queryCounts.mentionedQueries,S=g.queryCounts.totalQueries,C=g.providers.length;return{project:n,mentionScore:x,mentionDelta:S>0?`${k} of ${S} queries`:"No data",mentionTone:b.tone,providerCoverage:b.providerCoverage,lastRun:f,insight:S>0?`${k} of ${S} queries mentioned across ${C} provider${C===1?"":"s"}.`:"No runs completed yet.",trend:b.trend??[],competitorPressureLabel:g.scores.competitorPressure.value}}function NV(e,n){return{id:"none",projectId:e,projectName:n,kind:Te["answer-visibility"],kindLabel:"No runs yet",status:sa.queued,trigger:go.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function _V(e,n){const s=[],r=[],u=[];for(const g of e){r.push(G3(g)),u.push(CV(g));const b=[...g.runs].sort((x,k)=>k.createdAt.localeCompare(x.createdAt));for(const x of b)s.push(Pu(x,g.project.displayName||g.project.name))}s.sort((g,b)=>b.createdAt.localeCompare(g.createdAt));const f=e.length>0;return{portfolioOverview:{projects:u,attentionItems:f?zV(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:s.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],...f?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:s,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:f,ctaLabel:f?"Trigger run":"Create a project first",summary:f?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(g=>({name:g.name,displayName:g.displayName,keyUrl:g.keyUrl,modelHint:g.modelHint,model:g.model,defaultModel:g.defaultModel,state:g.configured?"ready":"needs-config",detail:g.configured?"Provider is configured.":"API key is missing.",quota:g.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function zV(e){const n=[];for(const s of e){const r=s.visibilityEvidence.filter(f=>f.citationState==="lost");r.length>0&&n.push({id:`attention_${s.project.id}_lost`,tone:"negative",title:`${s.project.displayName||s.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(s.project.name)}`});const u=s.recentRuns.filter(f=>f.status===sa.running||f.status===sa.queued);u.length>0&&n.push({id:`attention_${s.project.id}_active`,tone:"neutral",title:`${s.project.displayName||s.project.name} has active runs`,detail:`${u.length} run${u.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const $3=D.createContext(null);$3.Provider;function pl(){return D.useContext($3)}function Iu(e,n={}){const r=pl()?.dashboard??null,u=n.includeSettings??!0,{isAdmin:f}=al(),g=Ft({...kh({client:se,query:{kind:"answer-visibility"}}),enabled:!r,staleTime:vo,refetchInterval:G=>G.state.data?.some(ae=>ae.status==="running"||ae.status==="queued")?3e3:vo}),b=Ft({...gs({client:se}),enabled:!r,refetchInterval:G=>{const te=G.state.data,X=g.data?.some(oe=>oe.status==="running"||oe.status==="queued");return(te?.length??0)===0||!!X?KA:QA}}),x=Ft({...NM({client:se}),enabled:!r&&u&&f}),k=b.data??[],S=g.data??[],C=cj({queries:k.map(G=>{const te=S.filter(oe=>oe.projectId===G.id),X=te.filter(oe=>(oe.status==="completed"||oe.status==="partial")&&oe.kind==="answer-visibility"&&oe.trigger!=="probe").sort((oe,ge)=>ge.createdAt.localeCompare(oe.createdAt)),ae=X.length>0?X[0].id:"no-run";return{queryKey:["project-overview-slim",G.id,ae],queryFn:async()=>{const oe=await lx(G.name).catch(()=>null);return{project:G,runs:te,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:oe}},enabled:!r&&b.isSuccess&&g.isSuccess,staleTime:Op}})}),j=C.every(G=>G.isSuccess),E=D.useMemo(()=>{if(r)return r;if(!b.data||!g.data||k.length>0&&!j)return null;const G=C.map(te=>te.data?{...te.data,runs:S.filter(X=>X.projectId===te.data.project.id)}:null).filter(te=>te!=null);return _V(G,x.data??null)},[r,b.data,g.data,x.data,j,C,k.length,S]),B=!r&&(b.isError||g.isError),q=!r&&!E&&!B,U=D.useCallback(async()=>{const G=[b.refetch(),g.refetch(),...C.map(te=>te.refetch())];u&&G.push(x.refetch()),await Promise.all(G)},[u,C,b.refetch,g.refetch,x.refetch]);return{dashboard:E,isLoading:q,isError:B,refetch:U}}const DV=20;function EV(e){const n=pl(),s=D.useMemo(()=>!n||!e?null:n.dashboard.projects.find(q=>q.project.name===e)??null,[n,e]),r=Ft({...lM({client:se,path:{name:e??""}}),enabled:!!e&&!s,staleTime:Op,refetchOnWindowFocus:"always"}),u=Ft({...kM({client:se,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:vo,refetchOnWindowFocus:"always",refetchInterval:q=>q.state.data?.some(te=>te.projectId===r.data?.id&&(te.status==="running"||te.status==="queued"))?3e3:vo}),f=r.data??null,g=D.useMemo(()=>f?(u.data??[]).filter(q=>q.projectId===f.id):[],[f,u.data]),{latestRunIds:b,previousRunIds:x,latestRunIdsKey:k,latestVisibilityRevision:S}=D.useMemo(()=>{const q=g.filter(ae=>(ae.status==="completed"||ae.status==="partial")&&ae.kind==="answer-visibility"&&ae.trigger!=="probe").sort((ae,oe)=>oe.createdAt.localeCompare(ae.createdAt)),U=q[0]?.createdAt??null,G=U?q.filter(ae=>ae.createdAt===U).map(ae=>ae.id):[],te=q.find(ae=>ae.createdAt!==U)?.createdAt??null,X=te?q.filter(ae=>ae.createdAt===te).map(ae=>ae.id):[];return{latestRunIds:G,previousRunIds:X,latestRunIdsKey:[...G].sort().join(","),latestVisibilityRevision:U?`${U}:${[...G].sort().join(",")}`:"none"}},[g]),C=Ft({queryKey:["project-dashboard-full",f?.id??null,k||"none"],queryFn:async()=>{if(!f||!e)return null;const[q,U,G,te,X,ae,oe,ge,M]=await Promise.all([rx(e).catch(()=>[]),fA(e).catch(()=>[]),gA(e,void 0,DV).catch(()=>[]),b.length?Promise.all(b.map(J=>Zc(J).catch(()=>null))).then(J=>J.filter(_e=>_e!=null)):Promise.resolve([]),x.length?Promise.all(x.map(J=>Zc(J).catch(()=>null))).then(J=>J.filter(_e=>_e!=null)):Promise.resolve([]),EA(e).catch(()=>null),OA(e).catch(()=>null),BA(e).catch(()=>null),lx(e).catch(()=>null)]);return{project:f,runs:g,queries:q,competitors:U,timeline:G,latestRunDetails:te,previousRunDetails:X,gscCoverage:ae,bingCoverage:oe,dbInsights:ge,overview:M}},enabled:!!f&&!!e&&u.isSuccess,staleTime:Op,refetchOnWindowFocus:"always"}),j=D.useMemo(()=>C.data?G3({...C.data,runs:g}):s||null,[C.data,g,s]),E=D.useCallback(async()=>{await Promise.all([r.refetch(),u.refetch(),C.refetch()])},[r.refetch,u.refetch,C.refetch]),B=!j&&(r.isLoading||u.isLoading||C.isLoading);return{commandCenter:j,project:f,isLoading:B,isError:r.isError||u.isError||C.isError,latestVisibilityRevision:S,refetch:E}}const TV=["health"];async function RV(){const e=await MA("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function Ch(e,n){return Ft({queryKey:TV,queryFn:RV,enabled:e,refetchInterval:15e3,initialData:n})}function OV(e){return Ft({...f3({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const s=n.state.data?.status;return s==="running"||s==="queued"?3e3:!1}})}function Nh(){const e=ms(),n=Tv({strict:!1}),s=uj({select:x=>x.location.pathname}),r=n.runId??null,u=n.evidenceId??null;return{runId:r,evidenceId:u,openRun:x=>{e({to:s,from:ra.to,search:k=>({...k,runId:x,evidenceId:void 0})})},openEvidence:x=>{e({to:s,from:ra.to,search:k=>({...k,evidenceId:x,runId:void 0})})},closeDrawer:()=>{e({to:s,from:ra.to,search:x=>({...x,runId:void 0,evidenceId:void 0})})}}}const BV={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function qV(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function MV(){const e=D.useSyncExternalStore($A,Dy,Dy),n=ms(),{openRun:s}=Nh(),r=D.useCallback(f=>{Rp(f)},[]),u=D.useCallback(f=>{f.cta&&(f.cta.intent==="open-run-drawer"?s(f.cta.runId):n({to:"/runs"}),Rp(f.id))},[n,s]);return e.length===0?null:c.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(f=>c.jsxs("section",{role:f.tone==="negative"?"alert":"status","aria-live":f.tone==="negative"?"assertive":"polite","data-state":f.state,className:`toast-card ${BV[f.tone]}`,children:[c.jsxs("div",{className:"toast-copy",children:[c.jsx("p",{className:"toast-title",children:f.title}),f.detail?c.jsx("p",{className:"toast-detail",children:f.detail}):null,f.cta?c.jsx("button",{type:"button",className:"toast-action",onClick:()=>u(f),"aria-label":qV(f),children:f.cta.label}):null]}),c.jsx("button",{type:"button",onClick:()=>r(f.id),className:"toast-dismiss","aria-label":"Dismiss",children:c.jsx(zo,{className:"size-3.5"})})]},f.id))})}function Kr(e){switch(e){case Te["answer-visibility"]:return"Visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Technical audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync";case Te["google-ads-sync"]:return"Google Ads sync";case Te["gtm-sync"]:return"Tag Manager sync"}}function yv(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function PV(){const e=D.useSyncExternalStore(v3,In,In),n=D.useMemo(()=>Object.values(e.runs),[e.runs]),s=n.length>0,r=Ft({...kh({client:se}),enabled:s,staleTime:vo}),u=D.useMemo(()=>new Map((r.data??[]).map(b=>[b.id,b.status])),[r.data]);if(!s)return null;const f=n.map(b=>({...b,status:u.get(b.runId)??b.lastAnnouncedStatus})),g=f.length===1?Kr(f[0].kind):`${f.length} active tasks`;return c.jsxs("div",{className:"task-center",children:[c.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[f.length," active ",f.length===1?"task":"tasks","."," ",f.map(b=>`${Kr(b.kind)} ${yv(b.status)}`).join(". "),"."]}),c.jsxs("details",{className:"task-center-details",children:[c.jsxs("summary",{className:"task-center-trigger",children:[c.jsx(bo,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),c.jsx("span",{className:"task-center-summary",children:g}),c.jsx("span",{className:"task-center-count","aria-hidden":"true",children:f.length}),c.jsx(u0,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),c.jsxs("div",{className:"task-center-panel",children:[c.jsxs("div",{className:"task-center-heading",children:[c.jsx("span",{children:"Active tasks"}),c.jsx("span",{className:"tabular-nums text-faint",children:f.length})]}),c.jsx("ul",{className:"task-center-list",children:f.map(b=>c.jsxs("li",{className:"task-center-item",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:Kr(b.kind)}),c.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:b.projectLabel??b.projectId})]}),c.jsx(ga,{tone:b.status==="failed"?"negative":b.status==="partial"?"caution":"neutral",children:yv(b.status)})]},b.runId))}),c.jsx(et,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function IV(e,n={}){const{threshold:s=80}=n,r=D.useRef(null),u=D.useRef({scrollHeight:0,wasAtEnd:!0});function f(x){return x.scrollHeight-x.scrollTop-x.clientHeight}function g(){const x=r.current;return x?f(x)<=s:!0}function b(){const x=r.current;x&&(x.scrollTop=x.scrollHeight,u.current.wasAtEnd=!0,u.current.scrollHeight=x.scrollHeight)}return D.useEffect(()=>{const x=r.current;if(!x)return;const k=()=>{u.current.wasAtEnd=f(x)<=s};return x.addEventListener("scroll",k,{passive:!0}),()=>x.removeEventListener("scroll",k)},[s]),D.useLayoutEffect(()=>{const x=r.current;if(!x)return;const k=x.scrollHeight;k>u.current.scrollHeight&&u.current.wasAtEnd&&(x.scrollTop=k),u.current.scrollHeight=k},e),D.useEffect(()=>{const x=r.current;if(!x||typeof ResizeObserver>"u")return;const k=new ResizeObserver(()=>{const S=x.scrollHeight;S>u.current.scrollHeight&&u.current.wasAtEnd&&(x.scrollTop=S),u.current.scrollHeight=S});return k.observe(x),x.firstElementChild&&k.observe(x.firstElementChild),()=>k.disconnect()},[]),{ref:r,scrollToEnd:b,isAtEnd:g}}async function _h(e){try{return await e.json()}catch{return{}}}function VV(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const zh=VV();function Dh(e){e===401&&g0()}async function bv(e){const n=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Dh(n.status);const s=await _h(n);throw new oa(s.error?.message??`transcript fetch failed: ${n.status}`,n.status,s.error?.code)}return await n.json()}async function LV(e){const n=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Dh(n.status);const s=await _h(n);throw new oa(s.error?.message??`reset failed: ${n.status}`,n.status,s.error?.code)}}async function UV({project:e,prompt:n,provider:s,modelId:r,scope:u,profile:f,signal:g,onEvent:b}){const x={prompt:n};s&&(x.provider=s),r&&(x.modelId=r),u&&(x.scope=u),f&&(x.profile=f);const k=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(x),signal:g});if(!k.ok||!k.body){Dh(k.status);const B=await _h(k);throw new oa(B.error?.message??`prompt failed: ${k.status}`,k.status,B.error?.code)}const S=k.body.getReader(),C=new TextDecoder;let j="";const E=()=>{S.cancel().catch(()=>{})};g?.addEventListener("abort",E,{once:!0});try{for(;;){const{value:B,done:q}=await S.read();if(q)break;j+=C.decode(B,{stream:!0});let U=j.indexOf(`
|
|
56
|
+
`):"Run failed."}function aM(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function J$(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function W$(e){return e===null?"Unknown":e?"Pass":"Fail"}function Jb(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function eH(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function tH(e,n){if(!e)return{freq:"custom",hour:6,customCron:n};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const s=e.match(/^daily(?:@(\d+))?$/);if(s)return{freq:"daily",hour:s[1]?parseInt(s[1]):6,customCron:""};const r=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return r?{freq:r[1],hour:r[2]?parseInt(r[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:n}}function aH(e,n,s){const r=s==="UTC"?"UTC":s.split("/").pop()?.replace(/_/g," ")??s;if(!e)return`Custom: ${n} · ${r}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${r}`;const u=e.match(/^daily(?:@(\d+))?$/);if(u){const g=u[1]?parseInt(u[1]):6;return`Every day at ${Jb(g)} · ${r}`}const f=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(f){const g={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},b=f[2]?parseInt(f[2]):6;return`Every ${g[f[1]]} at ${Jb(b)} · ${r}`}return`${e} · ${r}`}function nM(e,n){return n&&n!==e?`${e} · ${n}`:e}function nH(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(s=>s.type==="timeZoneName")?.value;return nM(e,n)}function iM(e){const n=e.replace(/\/+$/,"")||"/";return n==="/"?"overview":n==="/projects"?"projects":n.startsWith("/projects/")?"project":n==="/runs"?"runs":n==="/traffic"||n.startsWith("/traffic/")?"traffic":n==="/backlinks"?"backlinks":n==="/settings"?"settings":n==="/setup"?"setup":"other"}function sM(e,n){return!n||n.includes(e)}const h3=["overview","search-console","local","discovery","report","activity","backlinks","technical-aeo","history","settings"],oM=new Set(h3);function iH(e){const n=e??h3,s=[...new Set(n.filter(r=>oM.has(r)))];return s.length>0?s:["overview"]}function sH(e,n){return sM(e,n)||!n?e:n.includes("overview")?"overview":n[0]??"overview"}const Wb={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},rM=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i;function lM(e){const n=e?.mode?.trim();return n==="light"||n==="dark"?n:void 0}function cM(e){if(!e)return{};const n={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(Wb,s)?Wb[s]:void 0;if(!u||typeof r!="string")continue;const f=r.trim();rM.test(f)&&(n[u]=f)}return n}const me=(e,n,s,r)=>{const u={_id:e,baseUrl:n?.baseUrl||(n?.client??T).getConfig().baseUrl};return s&&(u._infinite=s),n?.body&&(u.body=n.body),n?.headers&&(u.headers=n.headers),n?.path&&(u.path=n.path),n?.query&&(u.query=n.query),[u]},Ai=e=>me("getApiV1Projects",e),gs=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:Ai(e)}),uM=e=>me("getApiV1ProjectsByName",e),dM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Fv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:uM(e)}),mM=e=>me("getApiV1ProjectsByNameMeasurementPlan",e),oH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await m4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:mM(e)}),pM=e=>me("getApiV1ProjectsByNameMeasurementReport",e),rH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await p4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:pM(e)}),hM=e=>me("getApiV1ProjectsByNameMeasurementSetup",e),lH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await h4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:hM(e)}),Ou=(e,n)=>{const s={...e[0]};return n.body&&(s.body={...e[0].body,...n.body}),n.headers&&(s.headers={...e[0].headers,...n.headers}),n.path&&(s.path={...e[0].path,...n.path}),n.query&&(s.query={...e[0].query,...n.query}),s},fM=e=>me("getApiV1ProjectsByNameMeasurementOverview",e),cH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Yv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:fM(e)}),gM=e=>me("getApiV1ProjectsByNameMeasurementOverview",e,!0),uH=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await Yv({...e,...f,signal:r,throwOnError:!0});return g},queryKey:gM(e)}),yM=e=>me("getApiV1ProjectsByNameMeasurementPropertyEvidence",e,!0),dH=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await f4({...e,...f,signal:r,throwOnError:!0});return g},queryKey:yM(e)}),bM=e=>me("getApiV1ProjectsByNameMeasurementQuestionResult",e),mH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await g4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:bM(e)}),vM=e=>me("getApiV1ProjectsByNameMeasurementPropertyCompetitors",e),pH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await y4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:vM(e)}),xM=e=>me("getApiV1ProjectsByNameResearchRuns",e),hH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await b4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xM(e)}),fH=e=>({mutationFn:async s=>{const{data:r}=await v4({...e,...s,throwOnError:!0});return r}}),kM=e=>me("getApiV1ProjectsByNameResearchRunsByRunId",e),gH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await x4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:kM(e)}),wM=e=>me("getApiV1ProjectsByNameQueries",e),yH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Xv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:wM(e)}),SM=e=>me("getApiV1ProjectsByNameRuns",e),jM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Jv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:SM(e)}),xh=e=>me("getApiV1Runs",e),kh=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await R4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xh(e)}),AM=e=>me("getApiV1RunsById",e),f3=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Wv({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:AM(e)}),CM=e=>me("getApiV1ProjectsByNameHistory",e),bH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await q4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:CM(e)}),NM=e=>me("getApiV1History",e),vH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await M4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:NM(e)}),_M=e=>me("getApiV1ProjectsByNameSnapshotsDiff",e),xH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:_M(e)}),zM=e=>me("getApiV1Settings",e),DM=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ex({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:zM(e)}),EM=e=>me("getApiV1ProjectsByNameSchedule",e),kH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await tx({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:EM(e)}),TM=e=>me("getApiV1ProjectsByNameGoogleAdsStatus",e),wH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await W4({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:TM(e)}),SH=e=>({mutationFn:async s=>{const{data:r}=await e5({...e,...s,throwOnError:!0});return r}}),RM=e=>me("getApiV1ProjectsByNameGoogleAdsCustomers",e),jH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await t5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:RM(e)}),AH=e=>({mutationFn:async s=>{const{data:r}=await a5({...e,...s,throwOnError:!0});return r}}),CH=e=>({mutationFn:async s=>{const{data:r}=await n5({...e,...s,throwOnError:!0});return r}}),OM=e=>me("getApiV1ProjectsByNameGoogleAdsSnapshots",e),NH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await i5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:OM(e)}),_H=e=>({mutationFn:async s=>{const{data:r}=await s5({...e,...s,throwOnError:!0});return r}}),BM=e=>me("getApiV1ProjectsByNameGtmStatus",e),zH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await o5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:BM(e)}),DH=e=>({mutationFn:async s=>{const{data:r}=await r5({...e,...s,throwOnError:!0});return r}}),qM=e=>me("getApiV1ProjectsByNameGtmAccounts",e),EH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:qM(e)}),MM=e=>me("getApiV1ProjectsByNameGtmAccountsByAccountIdContainers",e),TH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await c5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:MM(e)}),PM=e=>me("getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces",e),RH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await u5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:PM(e)}),OH=e=>({mutationFn:async s=>{const{data:r}=await d5({...e,...s,throwOnError:!0});return r}}),BH=e=>({mutationFn:async s=>{const{data:r}=await m5({...e,...s,throwOnError:!0});return r}}),IM=e=>me("getApiV1ProjectsByNameGtmSnapshots",e),qH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await p5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:IM(e)}),MH=e=>({mutationFn:async s=>{const{data:r}=await h5({...e,...s,throwOnError:!0});return r}}),VM=e=>me("getApiV1ProjectsByNameConversionTrackingContracts",e),PH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await f5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:VM(e)}),IH=e=>({mutationFn:async s=>{const{data:r}=await g5({...e,...s,throwOnError:!0});return r}}),LM=e=>me("getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity",e),VH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await y5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:LM(e)}),UM=e=>me("getApiV1ProjectsByNameGoogleConnections",e),LH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await b5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:UM(e)}),GM=e=>me("getApiV1ProjectsByNameGoogleProperties",e),UH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await k5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:GM(e)}),$M=e=>me("getApiV1ProjectsByNameGoogleGscPerformance",e),GH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await A5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:$M(e)}),HM=e=>me("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),$H=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await C5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:HM(e)}),KM=e=>me("getApiV1ProjectsByNameGoogleGscInspections",e),HH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await _5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:KM(e)}),QM=e=>me("getApiV1ProjectsByNameGoogleGscDeindexed",e),KH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await z5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:QM(e)}),ZM=e=>me("getApiV1ProjectsByNameGoogleGscCoverage",e),QH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ax({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:ZM(e)}),FM=e=>me("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),ZH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await D5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:FM(e)}),FH=e=>me("getApiV1ProjectsByNameGoogleGscSitemaps",e),YM=e=>me("getApiV1ProjectsByNameGbpLocations",e),YH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await O5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:YM(e)}),XH=e=>({mutationFn:async s=>{const{data:r}=await B5({...e,...s,throwOnError:!0});return r}}),JH=e=>({mutationFn:async s=>{const{data:r}=await q5({...e,...s,throwOnError:!0});return r}}),XM=e=>me("getApiV1ProjectsByNameGbpKeywords",e),WH=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await M5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:XM(e)}),JM=e=>me("getApiV1ProjectsByNameGbpPlaceActions",e),eK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await P5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:JM(e)}),WM=e=>me("getApiV1ProjectsByNameGbpLodging",e),tK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await I5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:WM(e)}),eP=e=>me("getApiV1ProjectsByNameGbpPlaces",e),aK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:eP(e)}),tP=e=>me("getApiV1ProjectsByNameGbpSummary",e),nK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await L5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:tP(e)}),aP=e=>me("getApiV1ProjectsByNameBingStatus",e),iK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await $5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:aP(e)}),nP=e=>me("getApiV1ProjectsByNameBingSites",e),sK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await H5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:nP(e)}),iP=e=>me("getApiV1ProjectsByNameBingCoverage",e),oK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await nx({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:iP(e)}),sP=e=>me("getApiV1ProjectsByNameBingInspections",e),rK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Q5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:sP(e)}),oP=e=>me("getApiV1ProjectsByNameBingPerformance",e),lK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await X5({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:oP(e)}),rP=e=>me("getApiV1ProjectsByNameGaStatus",e),cK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await e6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:rP(e)}),lP=e=>me("getApiV1ProjectsByNameGaTraffic",e),uK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await a6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:lP(e)}),cP=e=>me("getApiV1ProjectsByNameGaAiReferralDaily",e),dK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await n6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:cP(e)}),uP=e=>me("getApiV1ProjectsByNameGaSocialReferralHistory",e),mK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await i6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:uP(e)}),dP=e=>me("getApiV1ProjectsByNameGaSessionHistory",e),pK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await s6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:dP(e)}),mP=e=>me("getApiV1ProjectsByNameReport",e),hK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await r6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:mP(e)}),pP=e=>me("getApiV1ProjectsByNameHealthHistory",e),fK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await l6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:pP(e)}),hP=e=>me("getApiV1ProjectsByNameCitationsVisibility",e),gK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await c6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:hP(e)}),fP=e=>me("getApiV1ProjectsByNameTrafficSources",e),yK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await z6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:fP(e)}),gP=e=>me("getApiV1ProjectsByNameTrafficStatus",e),bK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await D6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:gP(e)}),yP=e=>me("getApiV1ProjectsByNameTrafficSourcesById",e),vK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await E6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:yP(e)}),bP=e=>me("getApiV1ProjectsByNameTrafficEvents",e),xK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await T6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:bP(e)}),vP=e=>me("getApiV1ProjectsByNameDiscoverSessions",e),kK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await O6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:vP(e)}),xP=e=>me("getApiV1ProjectsByNameDiscoverSessionsById",e),wK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await B6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:xP(e)}),kP=e=>me("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),SK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await q6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:kP(e)}),wP=e=>me("getApiV1ProjectsByNameTechnicalAeo",e),jK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await P6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:wP(e)}),SP=e=>me("getApiV1ProjectsByNameTechnicalAeoPages",e),AK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await I6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:SP(e)}),jP=e=>me("getApiV1ProjectsByNameTechnicalAeoTrend",e),CK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await V6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:jP(e)}),AP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawl",e),NK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await L6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:AP(e)}),CP=e=>me("getApiV1ProjectsByNameTechnicalAeoGraph",e),_K=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await U6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:CP(e)}),NP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPagesAudit",e),zK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await G6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:NP(e)}),_P=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e),DK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await ix({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:_P(e)}),zP=e=>me("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e,!0),EK=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await ix({...e,...f,signal:r,throwOnError:!0});return g},queryKey:zP(e)}),DP=e=>me("getApiV1ProjectsByNameTechnicalAeoStructure",e,!0),TK=e=>uu({queryFn:async({pageParam:n,queryKey:s,signal:r})=>{const f=Ou(s,typeof n=="object"?n:{query:{cursor:n}}),{data:g}=await $6({...e,...f,signal:r,throwOnError:!0});return g},queryKey:DP(e)}),EP=e=>me("getApiV1ProjectsByNameTechnicalAeoInternalLinksNeighbors",e),RK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await H6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:EP(e)}),TP=e=>me("getApiV1ProjectsByNameTechnicalAeoDeadLinks",e),OK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await K6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:TP(e)}),RP=e=>me("getApiV1ProjectsByNameTechnicalAeoRuns",e),BK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Q6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:RP(e)}),OP=e=>me("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdProgress",e),qK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await F6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:OP(e)}),BP=e=>me("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdPageHealthPreview",e),MK=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await Y6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:BP(e)}),qP=e=>me("getApiV1ProjectsByNameAgentProviders",e),MP=e=>pe({queryFn:async({queryKey:n,signal:s})=>{const{data:r}=await X6({...e,...n[0],signal:s,throwOnError:!0});return r},queryKey:qP(e)});function ev(e){return e.state==="ok"?"positive":e.state==="checking"?"neutral":"negative"}function g3(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function PK(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}function IK(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const VK={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function PP(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function No(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
|
|
57
|
+
`):void 0}function IP(e,n,s){return e.map(r=>{if(r.id==="api")return{...r,tone:ev(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(r.id==="worker")return{...r,tone:ev(n.workerStatus),detail:n.workerStatus.state==="ok"?"Healthy":"Needs attention",meta:n.workerStatus.detail};const u=s.providerStatuses.filter(x=>x.state==="ready").length,f=s.providerStatuses.length,g=u>0,b=s.providerStatuses.filter(x=>x.state==="ready").map(x=>PP(x)).join(" · ");return{...r,label:"Providers",tone:g?"positive":"caution",detail:`${u} of ${f} configured`,meta:b||"None configured"}})}function VP(e,n){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!n.providerStatuses.some(s=>s.state==="ready"))return"Launch is blocked until at least one provider is configured."}function LP(e,n,s){const r=VP(n,s),u=structuredClone(e);return u.healthChecks=u.healthChecks.map(f=>{if(f.id==="api")return{...f,detail:n.apiStatus.detail,state:n.apiStatus.state==="ok"?"ready":"attention"};if(f.id==="worker")return{...f,detail:n.workerStatus.detail,state:n.workerStatus.state==="ok"?"ready":"attention"};const g=s.providerStatuses.some(b=>b.state==="ready");return{...f,detail:g?"At least one provider configured.":"No providers configured.",state:g?"ready":"attention"}}),u.launchState.enabled=r===void 0,u.launchState.blockedReason=r,u.launchState.summary=r??"Queue a visibility sweep first, then follow with a site audit to explain movement.",u}const y3="canonry.run-tracker",n0=new Set;let tv=!1,UP=0,Bu={runs:{},batches:{}};function GP(){const e=In();for(const n of n0)n(e)}function $P(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function HP(){typeof window>"u"||window.sessionStorage.setItem(y3,JSON.stringify(Bu))}function b3(){tv||(tv=!0,!(typeof window>"u")&&(Bu=$P(window.sessionStorage.getItem(y3))))}function qu(e){Bu=e,HP(),GP()}function In(){return b3(),Bu}function v3(e){return b3(),n0.add(e),()=>{n0.delete(e)}}function wh(e){const n=In();qu({...n,runs:{...n.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function Sp(e){const n=In();if(!n.runs[e])return;const{[e]:s,...r}=n.runs;qu({...n,runs:r})}function KP(e){const n=In(),s=`batch_${Date.now()}_${++UP}`;return qu({...n,batches:{...n.batches,[s]:{batchId:s,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),s}function QP(e){const n=In();if(!n.batches[e])return;const{[e]:s,...r}=n.batches;qu({...n,batches:r})}function ZP(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const FP=10*6e4;function YP(e,n,s,r){return e.filter(u=>!n.has(u.runId)&&s-(u.trackedAt??0)>=r)}function XP(e,n){let s=0,r=0,u=0,f=0,g=0;for(const b of e){const x=n[b]?.status;x==="completed"?s+=1:x==="partial"?r+=1:x==="failed"?u+=1:x==="cancelled"?f+=1:g+=1}return{completed:s,partial:r,failed:u,cancelled:f,pending:g,finished:g===0}}const av=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,nv=Iv,x3=(e,n)=>s=>{var r;if(n?.variants==null)return nv(e,s?.class,s?.className);const{variants:u,defaultVariants:f}=n,g=Object.keys(u).map(k=>{const S=s?.[k],C=f?.[k];if(S===null)return null;const j=av(S)||av(C);return u[k][j]}),b=s&&Object.entries(s).reduce((k,S)=>{let[C,j]=S;return j===void 0||(k[C]=j),k},{}),x=n==null||(r=n.compoundVariants)===null||r===void 0?void 0:r.reduce((k,S)=>{let{class:C,className:j,...E}=S;return Object.entries(E).every(B=>{let[q,U]=B;return Array.isArray(U)?U.includes({...f,...b}[q]):{...f,...b}[q]===U})?[...k,C,j]:k},[]);return nv(e,g,x,s?.class,s?.className)},JP=(e,n)=>{const s=new Array(e.length+n.length);for(let r=0;r<e.length;r++)s[r]=e[r];for(let r=0;r<n.length;r++)s[e.length+r]=n[r];return s},WP=(e,n)=>({classGroupId:e,validator:n}),k3=(e=new Map,n=null,s)=>({nextPart:e,validators:n,classGroupId:s}),lu="-",iv=[],eI="arbitrary..",tI=e=>{const n=nI(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:g=>{if(g.startsWith("[")&&g.endsWith("]"))return aI(g);const b=g.split(lu),x=b[0]===""&&b.length>1?1:0;return w3(b,x,n)},getConflictingClassGroupIds:(g,b)=>{if(b){const x=r[g],k=s[g];return x?k?JP(k,x):x:k||iv}return s[g]||iv}}},w3=(e,n,s)=>{if(e.length-n===0)return s.classGroupId;const u=e[n],f=s.nextPart.get(u);if(f){const k=w3(e,n+1,f);if(k)return k}const g=s.validators;if(g===null)return;const b=n===0?e.join(lu):e.slice(n).join(lu),x=g.length;for(let k=0;k<x;k++){const S=g[k];if(S.validator(b))return S.classGroupId}},aI=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),s=n.indexOf(":"),r=n.slice(0,s);return r?eI+r:void 0})(),nI=e=>{const{theme:n,classGroups:s}=e;return iI(s,n)},iI=(e,n)=>{const s=k3();for(const r in e){const u=e[r];Sh(u,s,r,n)}return s},Sh=(e,n,s,r)=>{const u=e.length;for(let f=0;f<u;f++){const g=e[f];sI(g,n,s,r)}},sI=(e,n,s,r)=>{if(typeof e=="string"){oI(e,n,s);return}if(typeof e=="function"){rI(e,n,s,r);return}lI(e,n,s,r)},oI=(e,n,s)=>{const r=e===""?n:S3(n,e);r.classGroupId=s},rI=(e,n,s,r)=>{if(cI(e)){Sh(e(r),n,s,r);return}n.validators===null&&(n.validators=[]),n.validators.push(WP(s,e))},lI=(e,n,s,r)=>{const u=Object.entries(e),f=u.length;for(let g=0;g<f;g++){const[b,x]=u[g];Sh(x,S3(n,b),s,r)}},S3=(e,n)=>{let s=e;const r=n.split(lu),u=r.length;for(let f=0;f<u;f++){const g=r[f];let b=s.nextPart.get(g);b||(b=k3(),s.nextPart.set(g,b)),s=b}return s},cI=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,uI=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,s=Object.create(null),r=Object.create(null);const u=(f,g)=>{s[f]=g,n++,n>e&&(n=0,r=s,s=Object.create(null))};return{get(f){let g=s[f];if(g!==void 0)return g;if((g=r[f])!==void 0)return u(f,g),g},set(f,g){f in s?s[f]=g:u(f,g)}}},i0="!",sv=":",dI=[],ov=(e,n,s,r,u)=>({modifiers:e,hasImportantModifier:n,baseClassName:s,maybePostfixModifierPosition:r,isExternal:u}),mI=e=>{const{prefix:n,experimentalParseClassName:s}=e;let r=u=>{const f=[];let g=0,b=0,x=0,k;const S=u.length;for(let q=0;q<S;q++){const U=u[q];if(g===0&&b===0){if(U===sv){f.push(u.slice(x,q)),x=q+1;continue}if(U==="/"){k=q;continue}}U==="["?g++:U==="]"?g--:U==="("?b++:U===")"&&b--}const C=f.length===0?u:u.slice(x);let j=C,E=!1;C.endsWith(i0)?(j=C.slice(0,-1),E=!0):C.startsWith(i0)&&(j=C.slice(1),E=!0);const B=k&&k>x?k-x:void 0;return ov(f,E,j,B)};if(n){const u=n+sv,f=r;r=g=>g.startsWith(u)?f(g.slice(u.length)):ov(dI,!1,g,void 0,!0)}if(s){const u=r;r=f=>s({className:f,parseClassName:u})}return r},pI=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((s,r)=>{n.set(s,1e6+r)}),s=>{const r=[];let u=[];for(let f=0;f<s.length;f++){const g=s[f],b=g[0]==="[",x=n.has(g);b||x?(u.length>0&&(u.sort(),r.push(...u),u=[]),r.push(g)):u.push(g)}return u.length>0&&(u.sort(),r.push(...u)),r}},hI=e=>({cache:uI(e.cacheSize),parseClassName:mI(e),sortModifiers:pI(e),...tI(e)}),fI=/\s+/,gI=(e,n)=>{const{parseClassName:s,getClassGroupId:r,getConflictingClassGroupIds:u,sortModifiers:f}=n,g=[],b=e.trim().split(fI);let x="";for(let k=b.length-1;k>=0;k-=1){const S=b[k],{isExternal:C,modifiers:j,hasImportantModifier:E,baseClassName:B,maybePostfixModifierPosition:q}=s(S);if(C){x=S+(x.length>0?" "+x:x);continue}let U=!!q,G=r(U?B.substring(0,q):B);if(!G){if(!U){x=S+(x.length>0?" "+x:x);continue}if(G=r(B),!G){x=S+(x.length>0?" "+x:x);continue}U=!1}const te=j.length===0?"":j.length===1?j[0]:f(j).join(":"),X=E?te+i0:te,ae=X+G;if(g.indexOf(ae)>-1)continue;g.push(ae);const oe=u(G,U);for(let ge=0;ge<oe.length;++ge){const M=oe[ge];g.push(X+M)}x=S+(x.length>0?" "+x:x)}return x},yI=(...e)=>{let n=0,s,r,u="";for(;n<e.length;)(s=e[n++])&&(r=j3(s))&&(u&&(u+=" "),u+=r);return u},j3=e=>{if(typeof e=="string")return e;let n,s="";for(let r=0;r<e.length;r++)e[r]&&(n=j3(e[r]))&&(s&&(s+=" "),s+=n);return s},bI=(e,...n)=>{let s,r,u,f;const g=x=>{const k=n.reduce((S,C)=>C(S),e());return s=hI(k),r=s.cache.get,u=s.cache.set,f=b,b(x)},b=x=>{const k=r(x);if(k)return k;const S=gI(x,s);return u(x,S),S};return f=g,(...x)=>f(yI(...x))},vI=[],Vt=e=>{const n=s=>s[e]||vI;return n.isThemeGetter=!0,n},A3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,C3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,xI=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,kI=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,wI=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,SI=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,jI=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,AI=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xi=e=>xI.test(e),Le=e=>!!e&&!Number.isNaN(Number(e)),ki=e=>!!e&&Number.isInteger(Number(e)),jp=e=>e.endsWith("%")&&Le(e.slice(0,-1)),Bn=e=>kI.test(e),N3=()=>!0,CI=e=>wI.test(e)&&!SI.test(e),jh=()=>!1,NI=e=>jI.test(e),_I=e=>AI.test(e),zI=e=>!ve(e)&&!Se(e),DI=e=>Ti(e,D3,jh),ve=e=>A3.test(e),rs=e=>Ti(e,E3,CI),rv=e=>Ti(e,PI,Le),EI=e=>Ti(e,R3,N3),TI=e=>Ti(e,T3,jh),lv=e=>Ti(e,_3,jh),RI=e=>Ti(e,z3,_I),Uc=e=>Ti(e,O3,NI),Se=e=>C3.test(e),Ir=e=>ys(e,E3),OI=e=>ys(e,T3),cv=e=>ys(e,_3),BI=e=>ys(e,D3),qI=e=>ys(e,z3),Gc=e=>ys(e,O3,!0),MI=e=>ys(e,R3,!0),Ti=(e,n,s)=>{const r=A3.exec(e);return r?r[1]?n(r[1]):s(r[2]):!1},ys=(e,n,s=!1)=>{const r=C3.exec(e);return r?r[1]?n(r[1]):s:!1},_3=e=>e==="position"||e==="percentage",z3=e=>e==="image"||e==="url",D3=e=>e==="length"||e==="size"||e==="bg-size",E3=e=>e==="length",PI=e=>e==="number",T3=e=>e==="family-name",R3=e=>e==="number"||e==="weight",O3=e=>e==="shadow",II=()=>{const e=Vt("color"),n=Vt("font"),s=Vt("text"),r=Vt("font-weight"),u=Vt("tracking"),f=Vt("leading"),g=Vt("breakpoint"),b=Vt("container"),x=Vt("spacing"),k=Vt("radius"),S=Vt("shadow"),C=Vt("inset-shadow"),j=Vt("text-shadow"),E=Vt("drop-shadow"),B=Vt("blur"),q=Vt("perspective"),U=Vt("aspect"),G=Vt("ease"),te=Vt("animate"),X=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ae=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],oe=()=>[...ae(),Se,ve],ge=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],J=()=>[Se,ve,x],_e=()=>[xi,"full","auto",...J()],he=()=>[ki,"none","subgrid",Se,ve],we=()=>["auto",{span:["full",ki,Se,ve]},ki,Se,ve],Oe=()=>[ki,"auto",Se,ve],je=()=>["auto","min","max","fr",Se,ve],Fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ye=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...J()],ne=()=>[xi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...J()],fe=()=>[xi,"screen","full","dvw","lvw","svw","min","max","fit",...J()],De=()=>[xi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...J()],le=()=>[e,Se,ve],at=()=>[...ae(),cv,lv,{position:[Se,ve]}],H=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",BI,DI,{size:[Se,ve]}],ie=()=>[jp,Ir,rs],re=()=>["","none","full",k,Se,ve],W=()=>["",Le,Ir,rs],Z=()=>["solid","dashed","dotted","double"],Ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ae=()=>[Le,jp,cv,lv],st=()=>["","none",B,Se,ve],Qe=()=>["none",Le,Se,ve],Pt=()=>["none",Le,Se,ve],jt=()=>[Le,Se,ve],Ct=()=>[xi,"full",...J()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Bn],breakpoint:[Bn],color:[N3],container:[Bn],"drop-shadow":[Bn],ease:["in","out","in-out"],font:[zI],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Bn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Bn],shadow:[Bn],spacing:["px",Le],text:[Bn],"text-shadow":[Bn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xi,ve,Se,U]}],container:["container"],columns:[{columns:[Le,ve,Se,b]}],"break-after":[{"break-after":X()}],"break-before":[{"break-before":X()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:oe()}],overflow:[{overflow:ge()}],"overflow-x":[{"overflow-x":ge()}],"overflow-y":[{"overflow-y":ge()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:_e()}],"inset-x":[{"inset-x":_e()}],"inset-y":[{"inset-y":_e()}],start:[{"inset-s":_e(),start:_e()}],end:[{"inset-e":_e(),end:_e()}],"inset-bs":[{"inset-bs":_e()}],"inset-be":[{"inset-be":_e()}],top:[{top:_e()}],right:[{right:_e()}],bottom:[{bottom:_e()}],left:[{left:_e()}],visibility:["visible","invisible","collapse"],z:[{z:[ki,"auto",Se,ve]}],basis:[{basis:[xi,"full","auto",b,...J()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Le,xi,"auto","initial","none",ve]}],grow:[{grow:["",Le,Se,ve]}],shrink:[{shrink:["",Le,Se,ve]}],order:[{order:[ki,"first","last","none",Se,ve]}],"grid-cols":[{"grid-cols":he()}],"col-start-end":[{col:we()}],"col-start":[{"col-start":Oe()}],"col-end":[{"col-end":Oe()}],"grid-rows":[{"grid-rows":he()}],"row-start-end":[{row:we()}],"row-start":[{"row-start":Oe()}],"row-end":[{"row-end":Oe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":je()}],"auto-rows":[{"auto-rows":je()}],gap:[{gap:J()}],"gap-x":[{"gap-x":J()}],"gap-y":[{"gap-y":J()}],"justify-content":[{justify:[...Fe(),"normal"]}],"justify-items":[{"justify-items":[...ye(),"normal"]}],"justify-self":[{"justify-self":["auto",...ye()]}],"align-content":[{content:["normal",...Fe()]}],"align-items":[{items:[...ye(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ye(),{baseline:["","last"]}]}],"place-content":[{"place-content":Fe()}],"place-items":[{"place-items":[...ye(),"baseline"]}],"place-self":[{"place-self":["auto",...ye()]}],p:[{p:J()}],px:[{px:J()}],py:[{py:J()}],ps:[{ps:J()}],pe:[{pe:J()}],pbs:[{pbs:J()}],pbe:[{pbe:J()}],pt:[{pt:J()}],pr:[{pr:J()}],pb:[{pb:J()}],pl:[{pl:J()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":J()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":J()}],"space-y-reverse":["space-y-reverse"],size:[{size:ne()}],"inline-size":[{inline:["auto",...fe()]}],"min-inline-size":[{"min-inline":["auto",...fe()]}],"max-inline-size":[{"max-inline":["none",...fe()]}],"block-size":[{block:["auto",...De()]}],"min-block-size":[{"min-block":["auto",...De()]}],"max-block-size":[{"max-block":["none",...De()]}],w:[{w:[b,"screen",...ne()]}],"min-w":[{"min-w":[b,"screen","none",...ne()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[g]},...ne()]}],h:[{h:["screen","lh",...ne()]}],"min-h":[{"min-h":["screen","lh","none",...ne()]}],"max-h":[{"max-h":["screen","lh",...ne()]}],"font-size":[{text:["base",s,Ir,rs]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,MI,EI]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",jp,ve]}],"font-family":[{font:[OI,TI,n]}],"font-features":[{"font-features":[ve]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,Se,ve]}],"line-clamp":[{"line-clamp":[Le,"none",Se,rv]}],leading:[{leading:[f,...J()]}],"list-image":[{"list-image":["none",Se,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Se,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:le()}],"text-color":[{text:le()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:[Le,"from-font","auto",Se,rs]}],"text-decoration-color":[{decoration:le()}],"underline-offset":[{"underline-offset":[Le,"auto",Se,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:J()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Se,ve]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Se,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:at()}],"bg-repeat":[{bg:H()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ki,Se,ve],radial:["",Se,ve],conic:[ki,Se,ve]},qI,RI]}],"bg-color":[{bg:le()}],"gradient-from-pos":[{from:ie()}],"gradient-via-pos":[{via:ie()}],"gradient-to-pos":[{to:ie()}],"gradient-from":[{from:le()}],"gradient-via":[{via:le()}],"gradient-to":[{to:le()}],rounded:[{rounded:re()}],"rounded-s":[{"rounded-s":re()}],"rounded-e":[{"rounded-e":re()}],"rounded-t":[{"rounded-t":re()}],"rounded-r":[{"rounded-r":re()}],"rounded-b":[{"rounded-b":re()}],"rounded-l":[{"rounded-l":re()}],"rounded-ss":[{"rounded-ss":re()}],"rounded-se":[{"rounded-se":re()}],"rounded-ee":[{"rounded-ee":re()}],"rounded-es":[{"rounded-es":re()}],"rounded-tl":[{"rounded-tl":re()}],"rounded-tr":[{"rounded-tr":re()}],"rounded-br":[{"rounded-br":re()}],"rounded-bl":[{"rounded-bl":re()}],"border-w":[{border:W()}],"border-w-x":[{"border-x":W()}],"border-w-y":[{"border-y":W()}],"border-w-s":[{"border-s":W()}],"border-w-e":[{"border-e":W()}],"border-w-bs":[{"border-bs":W()}],"border-w-be":[{"border-be":W()}],"border-w-t":[{"border-t":W()}],"border-w-r":[{"border-r":W()}],"border-w-b":[{"border-b":W()}],"border-w-l":[{"border-l":W()}],"divide-x":[{"divide-x":W()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":W()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Z(),"hidden","none"]}],"divide-style":[{divide:[...Z(),"hidden","none"]}],"border-color":[{border:le()}],"border-color-x":[{"border-x":le()}],"border-color-y":[{"border-y":le()}],"border-color-s":[{"border-s":le()}],"border-color-e":[{"border-e":le()}],"border-color-bs":[{"border-bs":le()}],"border-color-be":[{"border-be":le()}],"border-color-t":[{"border-t":le()}],"border-color-r":[{"border-r":le()}],"border-color-b":[{"border-b":le()}],"border-color-l":[{"border-l":le()}],"divide-color":[{divide:le()}],"outline-style":[{outline:[...Z(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Le,Se,ve]}],"outline-w":[{outline:["",Le,Ir,rs]}],"outline-color":[{outline:le()}],shadow:[{shadow:["","none",S,Gc,Uc]}],"shadow-color":[{shadow:le()}],"inset-shadow":[{"inset-shadow":["none",C,Gc,Uc]}],"inset-shadow-color":[{"inset-shadow":le()}],"ring-w":[{ring:W()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:le()}],"ring-offset-w":[{"ring-offset":[Le,rs]}],"ring-offset-color":[{"ring-offset":le()}],"inset-ring-w":[{"inset-ring":W()}],"inset-ring-color":[{"inset-ring":le()}],"text-shadow":[{"text-shadow":["none",j,Gc,Uc]}],"text-shadow-color":[{"text-shadow":le()}],opacity:[{opacity:[Le,Se,ve]}],"mix-blend":[{"mix-blend":[...Ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Le]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ae()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ae()}],"mask-image-linear-from-color":[{"mask-linear-from":le()}],"mask-image-linear-to-color":[{"mask-linear-to":le()}],"mask-image-t-from-pos":[{"mask-t-from":Ae()}],"mask-image-t-to-pos":[{"mask-t-to":Ae()}],"mask-image-t-from-color":[{"mask-t-from":le()}],"mask-image-t-to-color":[{"mask-t-to":le()}],"mask-image-r-from-pos":[{"mask-r-from":Ae()}],"mask-image-r-to-pos":[{"mask-r-to":Ae()}],"mask-image-r-from-color":[{"mask-r-from":le()}],"mask-image-r-to-color":[{"mask-r-to":le()}],"mask-image-b-from-pos":[{"mask-b-from":Ae()}],"mask-image-b-to-pos":[{"mask-b-to":Ae()}],"mask-image-b-from-color":[{"mask-b-from":le()}],"mask-image-b-to-color":[{"mask-b-to":le()}],"mask-image-l-from-pos":[{"mask-l-from":Ae()}],"mask-image-l-to-pos":[{"mask-l-to":Ae()}],"mask-image-l-from-color":[{"mask-l-from":le()}],"mask-image-l-to-color":[{"mask-l-to":le()}],"mask-image-x-from-pos":[{"mask-x-from":Ae()}],"mask-image-x-to-pos":[{"mask-x-to":Ae()}],"mask-image-x-from-color":[{"mask-x-from":le()}],"mask-image-x-to-color":[{"mask-x-to":le()}],"mask-image-y-from-pos":[{"mask-y-from":Ae()}],"mask-image-y-to-pos":[{"mask-y-to":Ae()}],"mask-image-y-from-color":[{"mask-y-from":le()}],"mask-image-y-to-color":[{"mask-y-to":le()}],"mask-image-radial":[{"mask-radial":[Se,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ae()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ae()}],"mask-image-radial-from-color":[{"mask-radial-from":le()}],"mask-image-radial-to-color":[{"mask-radial-to":le()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":ae()}],"mask-image-conic-pos":[{"mask-conic":[Le]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ae()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ae()}],"mask-image-conic-from-color":[{"mask-conic-from":le()}],"mask-image-conic-to-color":[{"mask-conic-to":le()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:at()}],"mask-repeat":[{mask:H()}],"mask-size":[{mask:ue()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Se,ve]}],filter:[{filter:["","none",Se,ve]}],blur:[{blur:st()}],brightness:[{brightness:[Le,Se,ve]}],contrast:[{contrast:[Le,Se,ve]}],"drop-shadow":[{"drop-shadow":["","none",E,Gc,Uc]}],"drop-shadow-color":[{"drop-shadow":le()}],grayscale:[{grayscale:["",Le,Se,ve]}],"hue-rotate":[{"hue-rotate":[Le,Se,ve]}],invert:[{invert:["",Le,Se,ve]}],saturate:[{saturate:[Le,Se,ve]}],sepia:[{sepia:["",Le,Se,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",Se,ve]}],"backdrop-blur":[{"backdrop-blur":st()}],"backdrop-brightness":[{"backdrop-brightness":[Le,Se,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Le,Se,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Le,Se,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Le,Se,ve]}],"backdrop-invert":[{"backdrop-invert":["",Le,Se,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Le,Se,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Le,Se,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Le,Se,ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":J()}],"border-spacing-x":[{"border-spacing-x":J()}],"border-spacing-y":[{"border-spacing-y":J()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Se,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Le,"initial",Se,ve]}],ease:[{ease:["linear","initial",G,Se,ve]}],delay:[{delay:[Le,Se,ve]}],animate:[{animate:["none",te,Se,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[q,Se,ve]}],"perspective-origin":[{"perspective-origin":oe()}],rotate:[{rotate:Qe()}],"rotate-x":[{"rotate-x":Qe()}],"rotate-y":[{"rotate-y":Qe()}],"rotate-z":[{"rotate-z":Qe()}],scale:[{scale:Pt()}],"scale-x":[{"scale-x":Pt()}],"scale-y":[{"scale-y":Pt()}],"scale-z":[{"scale-z":Pt()}],"scale-3d":["scale-3d"],skew:[{skew:jt()}],"skew-x":[{"skew-x":jt()}],"skew-y":[{"skew-y":jt()}],transform:[{transform:[Se,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:oe()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ct()}],"translate-x":[{"translate-x":Ct()}],"translate-y":[{"translate-y":Ct()}],"translate-z":[{"translate-z":Ct()}],"translate-none":["translate-none"],accent:[{accent:le()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:le()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Se,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":J()}],"scroll-mx":[{"scroll-mx":J()}],"scroll-my":[{"scroll-my":J()}],"scroll-ms":[{"scroll-ms":J()}],"scroll-me":[{"scroll-me":J()}],"scroll-mbs":[{"scroll-mbs":J()}],"scroll-mbe":[{"scroll-mbe":J()}],"scroll-mt":[{"scroll-mt":J()}],"scroll-mr":[{"scroll-mr":J()}],"scroll-mb":[{"scroll-mb":J()}],"scroll-ml":[{"scroll-ml":J()}],"scroll-p":[{"scroll-p":J()}],"scroll-px":[{"scroll-px":J()}],"scroll-py":[{"scroll-py":J()}],"scroll-ps":[{"scroll-ps":J()}],"scroll-pe":[{"scroll-pe":J()}],"scroll-pbs":[{"scroll-pbs":J()}],"scroll-pbe":[{"scroll-pbe":J()}],"scroll-pt":[{"scroll-pt":J()}],"scroll-pr":[{"scroll-pr":J()}],"scroll-pb":[{"scroll-pb":J()}],"scroll-pl":[{"scroll-pl":J()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Se,ve]}],fill:[{fill:["none",...le()]}],"stroke-w":[{stroke:[Le,Ir,rs,rv]}],stroke:[{stroke:["none",...le()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},VI=bI(II);function Ua(...e){return VI(Iv(e))}const LI=x3("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),xe=D.forwardRef(({className:e,variant:n,size:s,asChild:r=!1,...u},f)=>{const g=r?fj:"button";return c.jsx(g,{ref:f,className:Ua(LI({variant:n,size:s,className:e})),...u})});xe.displayName="Button";const UI=x3("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function B3({className:e,variant:n,...s}){return c.jsx("div",{className:Ua(UI({variant:n}),e),...s})}const GI=220;function uv({compact:e=!1,version:n,updateAvailable:s,onDismissUpdate:r}){const u=!e&&n&&n!=="unknown",[f,g]=D.useState(!1),b=!e&&s&&r,x=()=>{g(!0),window.setTimeout(()=>{r?.(),g(!1)},GI)};return e?c.jsxs(et,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"brand-copy",children:c.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):c.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[c.jsx(et,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx(et,{to:"/",className:"brand-mark",children:"Canonry"}),!b&&u?c.jsxs("span",{className:"brand-version",children:["v",n]}):null]}),b?c.jsxs("span",{className:`brand-update-bubble ${f?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[c.jsxs("a",{className:"brand-update-bubble-link",href:s.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${s.upgradeCommand}`,"aria-label":`New version v${s.latest} available — open release page`,children:[c.jsxs("span",{className:"brand-update-bubble-from",children:["v",s.current]}),c.jsx(gj,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),c.jsxs("span",{className:"brand-update-bubble-to",children:["v",s.latest]})]}),c.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:x,"aria-label":`Dismiss update notification for v${s.latest}`,children:c.jsx(zo,{className:"size-3","aria-hidden":"true"})})]}):null]})}function $I({provider:e}){const n={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},r=Object.hasOwn(n,e)?`provider-badge--${e} ${n[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return c.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r}`,children:e})}function ga({tone:e,children:n,...s}){const r=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return c.jsx(B3,{variant:r,...s,children:n})}function Ah({status:e}){return c.jsx(ga,{tone:g3(e),children:aM(e)})}const HI=Pv,KI=Bv,q3=D.forwardRef(({className:e,...n},s)=>c.jsx(r0,{ref:s,className:Ua("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...n}));q3.displayName=r0.displayName;const QI=400,ZI=1200,FI=720,M3=D.forwardRef(({className:e,children:n,...s},r)=>{const[u,f]=D.useState(FI),g=D.useRef(!1),b=D.useRef(0),x=D.useRef(0),k=D.useCallback(j=>{g.current=!0,b.current=j.clientX,x.current=u,j.target.setPointerCapture(j.pointerId),j.preventDefault()},[u]),S=D.useCallback(j=>{if(!g.current)return;const E=b.current-j.clientX,B=Math.min(ZI,Math.max(QI,x.current+E));f(B)},[]),C=D.useCallback(()=>{g.current=!1},[]);return c.jsxs(KI,{children:[c.jsx(q3,{}),c.jsxs(l0,{ref:r,className:Ua("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${u}px, 100vw)`},...s,children:[c.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:k,onPointerMove:S,onPointerUp:C}),n,c.jsxs(qv,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[c.jsx(zo,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});M3.displayName=l0.displayName;const YI=({className:e,...n})=>c.jsx("div",{className:Ua("flex flex-col gap-1.5 pr-10",e),...n}),P3=D.forwardRef(({className:e,...n},s)=>c.jsx(c0,{ref:s,className:Ua("text-lg font-medium text-primary",e),...n}));P3.displayName=c0.displayName;const I3=D.forwardRef(({className:e,...n},s)=>c.jsx(Mv,{ref:s,className:Ua("text-sm text-muted",e),...n}));I3.displayName=Mv.displayName;function Ap({title:e,subtitle:n,children:s,open:r,onClose:u}){return c.jsx(HI,{open:r,onOpenChange:f=>f?void 0:u(),children:c.jsxs(M3,{children:[c.jsxs(YI,{className:"drawer-head",children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:n}),c.jsx(P3,{id:"drawer-title",children:e}),c.jsx(I3,{className:"sr-only",children:n})]}),c.jsx("div",{className:"drawer-body",children:s})]})})}function Vr({text:e}){const[n,s]=D.useState(null),r=D.useRef(null),u=D.useCallback(()=>{if(!r.current)return;const b=r.current.getBoundingClientRect();s({top:b.top,left:b.left+b.width/2})},[]),f=D.useCallback(()=>s(null),[]),g=D.useCallback(()=>{n===null?u():f()},[n,u,f]);return c.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:u,onMouseLeave:f,children:[c.jsx("button",{ref:r,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":n!==null,onFocus:u,onBlur:f,onClick:g,onKeyDown:b=>{b.key==="Escape"&&f()},children:c.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),n!==null&&lj.createPortal(c.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:n.top,left:n.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const XI=/[\s\-_]+/;function JI(e){const n=e.split(XI).filter(Boolean);return n.length===0?null:n.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function dv(e,n){const s=WI(n),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(k=>k.startsWith("**")&&k.endsWith("**")?{type:"bold",value:k.slice(2,-2)}:{type:"text",value:k}),u=s.flatMap(k=>k.terms).filter(k=>k.trim().length>1);if(u.length===0)return r.map((k,S)=>k.type==="bold"?ro.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const g=[...u].sort((k,S)=>S.length-k.length).map(JI).filter(k=>!!k);if(g.length===0)return r.map((k,S)=>k.type==="bold"?ro.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const b=new RegExp(`(${g.join("|")})`,"gi"),x=new Map;for(const k of s)for(const S of k.terms){const C=cs(S);C&&!x.has(C)&&x.set(C,k.className)}return r.flatMap((k,S)=>k.value.split(b).map((j,E)=>{if(!j)return null;if(E%2===1){const q=x.get(cs(j))??"answer-highlight";return k.type==="bold"?ro.createElement("mark",{key:`hl-${S}-${E}`,className:q},ro.createElement("strong",{className:"text-strong font-semibold"},j)):ro.createElement("mark",{key:`hl-${S}-${E}`,className:q},j)}return k.type==="bold"?ro.createElement("strong",{key:`b-${S}-${E}`,className:"text-strong font-semibold"},j):j})).filter(Boolean)}function WI(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function s0(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function Cp(e,n){return{citedCompetitorDomains:[...e.citedCompetitorDomains??n?.citedCompetitorDomains??[]],mentionedCompetitorDomains:[...e.mentionedCompetitorDomains??n?.mentionedCompetitorDomains??[]]}}function Np(e,n){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return n==="mentioned"||n==="visible"?"Mentioned in latest run":n==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function eV({evidence:e,project:n,onClose:s}){const[r,u]=D.useState(!1),[f,g]=D.useState("mentions"),[b,x]=D.useState(-1),[k,S]=D.useState(null),[C,j]=D.useState(!1),[E,B]=D.useState({}),q=Mz(n.project),U=new Set(q.map($p)),G=e.runHistory,te=G.length>1,[X,ae]=D.useState(null),oe=D.useRef(!1);D.useEffect(()=>{if(oe.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ie=G.at(-1);ie&&(oe.current=!0,Zc(ie.runId).then(re=>{const W=re.snapshots?.find(Z=>Z.query===e.query&&Z.provider===e.provider);W&&ae({citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:ie.visibilityTransition,provider:W.provider,model:W.model??e.model,answerSnippet:W.answerText??e.answerSnippet,citedDomains:W.citedDomains??e.citedDomains,...Cp(W,e),recommendedCompetitors:W.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:W.matchedTerms??e.matchedTerms??[],groundingSources:W.groundingSources??e.groundingSources,searchQueries:W.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,G]);const ge=b>=0&&k!==null,M=ge?k:X||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:G.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,...Cp(e),recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},J=M.visibilityState==="pending"||M.citationState==="pending",_e=J?!1:M.visibilityState!=null?M.visibilityState==="visible":M.answerMentioned!=null?M.answerMentioned:M.citationState===su.cited||M.citationState==="emerging",he=M.answerMentioned!=null||M.visibilityState!=null||M.mentionedCompetitorDomains.length>0||M.recommendedCompetitors.length>0,we=M.citedDomains.length>0||M.citedCompetitorDomains.length>0||M.groundingSources.length>0||M.evidenceUrls.length>0,Oe=n.project.displayName||n.project.name,je=[...q.map($p),Oe,Oe.split(" ").slice(0,2).join(" "),...M.matchedTerms].filter(ie=>ie.trim().length>2),Fe=[...M.mentionedCompetitorDomains.flatMap(ie=>{const re=jz(ie);return re.length>=4?[re]:[]}),...M.recommendedCompetitors].filter(ie=>ie.trim().length>2),ye=[{terms:je,className:"answer-highlight-brand"},...Fe.length>0?[{terms:Fe,className:"answer-highlight-competitor"}]:[]],V=J?"pending":M.visibilityTransition==="lost"?"lost":_e?"mentioned":"not-mentioned",ne=D.useRef(0),fe=D.useCallback(async ie=>{const re=++ne.current;if(ie===-1||ie===G.length-1){x(-1),S(null),u(!1);return}x(ie),u(!1);const W=G[ie],Z=`${W.runId}::${e.query}::${e.provider}`;if(E[Z]){S(E[Z]);return}j(!0);try{const Ne=await Zc(W.runId);if(re!==ne.current)return;const Ae=Ne.snapshots?.find(Qe=>Qe.query===e.query&&Qe.provider===e.provider)??Ne.snapshots?.find(Qe=>Qe.query===e.query),st=Ae?{citationState:Ae.citationState,answerMentioned:Ae.answerMentioned,visibilityState:Ae.visibilityState,visibilityTransition:W.visibilityTransition,provider:Ae.provider,model:Ae.model??null,answerSnippet:Ae.answerText??"",citedDomains:Ae.citedDomains,...Cp(Ae),recommendedCompetitors:Ae.recommendedCompetitors??[],matchedTerms:Ae.matchedTerms??[],groundingSources:Ae.groundingSources,searchQueries:Ae.searchQueries,evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:""}:{citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:W.visibilityTransition,provider:e.provider,model:W.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:"Snapshot data not available for this run."};B(Qe=>({...Qe,[Z]:st})),S(st)}catch{if(re!==ne.current)return;S({citationState:W.citationState,answerMentioned:W.answerMentioned,visibilityState:W.visibilityState,visibilityTransition:W.visibilityTransition,provider:e.provider,model:W.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Np(W.mentionTransition??W.visibilityTransition,W.mentionState??W.visibilityState),summary:"Failed to load historical run data."})}finally{re===ne.current&&j(!1)}},[G,e.query,e.provider,E]),le=(ge||e.historyScope!=="provider")&&M.model?`${M.provider} (${M.model}) · ${M.changeLabel.toLowerCase()}`:`${M.provider} · ${M.changeLabel.toLowerCase()}`,at=!ge&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",H=_e?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:le}:M.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:le}:J?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:le},ue=()=>{if(!M.answerSnippet)return null;const ie=M.answerSnippet.split(`
|
|
58
|
+
`),re=[];let W=[],Z=0;const Ne=()=>{if(W.length===0)return;const Ae=W.join(" ").trim();Ae&&re.push(c.jsx("p",{className:re.length>0?"mt-2.5":"",children:dv(Ae,ye)},Z++)),W=[]};for(const Ae of ie){const st=Ae.trim();if(/^[-\u2013\u2014]{3,}$/.test(st)){Ne(),re.push(c.jsx("hr",{className:"border-default my-3"},Z++));continue}const Qe=st.match(/^(#{1,3})\s+(\S.*)$/);if(Qe){Ne();const Pt=Qe[1].length,jt=Qe[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Qe[2],Ct=Pt===1?"text-[13px] font-semibold text-heading mt-4 mb-1":Pt===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";re.push(c.jsx("p",{className:Ct,children:dv(jt,ye)},Z++));continue}if(st===""){Ne();continue}W.push(st)}return Ne(),re};return c.jsx(Pv,{open:!0,onOpenChange:ie=>{ie||s()},children:c.jsxs(Bv,{children:[c.jsx(r0,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),c.jsxs(l0,{className:"evidence-modal","aria-describedby":void 0,children:[c.jsxs("div",{className:"evidence-modal-header",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",M.provider||"All providers"]}),c.jsx(c0,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),c.jsxs(qv,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[c.jsx(zo,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]}),te&&c.jsxs("div",{className:"evidence-modal-timeline",children:[c.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),c.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:G.map((ie,re)=>{const W=b===-1&&re===G.length-1||b===re,Z=ie.visibilityState??(ie.answerMentioned?"visible":"not-visible"),Ne=ie.visibilityTransition??Z,Ae=Z==="visible"?"bg-positive-400":Ne==="emerging"?"bg-caution-400":Ne==="lost"?"bg-negative-400":"bg-mono-600",Qe=new Date(ie.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Pt=!!(ie.model&&re>0&&G[re-1]?.model&&G[re-1].model!==ie.model);return c.jsxs("button",{type:"button",className:`evidence-run-dot ${W?"evidence-run-dot--selected":""}`,onClick:()=>{fe(re===G.length-1?-1:re)},"aria-label":[`Run ${Qe}: ${Z}`,ie.model?`model ${ie.model}`:null,Pt?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":W,children:[c.jsx("span",{className:`size-2 rounded-full ${Ae} ${Pt?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),c.jsx("span",{className:"text-[10px] text-muted",children:Qe})]},re)})}),b>=0&&b<G.length&&c.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(G[b].createdAt).toLocaleString()," ","—"," ",c.jsx("span",{className:"capitalize",children:G[b].visibilityState??(G[b].answerMentioned?"visible":"not-visible")}),c.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{fe(-1)},children:["←"," Back to latest"]})]}),!ge&&(e.modelTransitions?.length??0)>0&&c.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ie=>c.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ie.fromModel??"unknown"} -> ${ie.toModel??"unknown"} on ${new Date(ie.createdAt).toLocaleDateString()}`},`${ie.runId}:${ie.toModel??"unknown"}`))})]}),c.jsxs("div",{className:"evidence-modal-body",children:[C&&c.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!C&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"evidence-modal-main",children:[c.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${V}`,children:[c.jsx("p",{className:`evidence-position-label evidence-position-label--${V}`,children:H.label}),c.jsx("p",{className:`evidence-position-title evidence-position-title--${V}`,children:H.title}),c.jsx("p",{className:"evidence-position-meta",children:H.meta}),at&&c.jsx("p",{className:"mt-1 text-[11px] text-muted",children:at})]}),M.answerSnippet&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),c.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:ue()}),M.answerSnippet.length>280&&c.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>u(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!M.answerSnippet&&!C&&c.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),M.searchQueries.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Web searches the model ran"}),c.jsx(Vr,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated your query — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),c.jsx("ul",{className:"grid gap-1",children:M.searchQueries.map((ie,re)=>c.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[c.jsx(yj,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),c.jsx("span",{className:"break-words",children:ie})]},`${re}-${ie}`))})]}),!ge&&e.relatedTechnicalSignals.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:_e?"Why you're visible":"What to fix"}),c.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ie,re)=>c.jsxs("div",{className:"action-item",children:[c.jsx("svg",{className:`action-item-icon ${_e?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:_e?c.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):c.jsxs(c.Fragment,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),c.jsx("span",{className:"action-item-text",children:ie})]},re))})]}),M.summary&&c.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:M.summary})]}),c.jsxs("div",{className:"evidence-modal-sidebar",children:[(he||we)&&c.jsxs("div",{className:"sidebar-tabs",children:[c.jsx("button",{className:`sidebar-tab ${f==="mentions"?"sidebar-tab--active":""}`,onClick:()=>g("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),c.jsx("button",{className:`sidebar-tab ${f==="sources"?"sidebar-tab--active":""}`,onClick:()=>g("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),f==="mentions"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Mention in answer"}),c.jsx(Vr,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),c.jsxs("div",{className:`mention-status mention-status--${_e?"mentioned":"not-mentioned"}`,children:[c.jsx("span",{className:"mention-status-icon",children:J?"…":_e?"✓":"—"}),c.jsx("span",{className:"mention-status-label",children:J?"Pending":_e?"Mentioned":"Not mentioned"})]}),M.matchedTerms.length>0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:M.matchedTerms.map(ie=>c.jsx("span",{className:"mention-chip mention-chip--brand",children:ie},ie))})]}),!J&&!_e&&M.matchedTerms.length===0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:je.map(ie=>c.jsx("span",{className:"mention-chip mention-chip--muted",children:ie},ie))}),c.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(M.recommendedCompetitors.length>0||M.mentionedCompetitorDomains.length>0)&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Competitors in answer"}),c.jsx(Vr,{text:"Competitors detected in the answer text. Includes tracked competitor brands and names extracted by Canonry; source-link competitors stay in the Sources tab."})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ie=M.mentionedCompetitorDomains.map(Z=>Z.replace(/^www\./,"")),re=new Set(ie.map(Z=>cs(Z.replace(/\.[^.]+$/,""))));return[...M.recommendedCompetitors.filter(Z=>!re.has(cs(Z))),...ie].map(Z=>c.jsx("span",{className:"mention-chip mention-chip--competitor",children:Z},Z))})()})]})]}),f==="sources"&&c.jsxs(c.Fragment,{children:[M.citedDomains.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Domains from source links"}),c.jsx(Vr,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),c.jsx("div",{className:"citation-leaderboard",children:M.citedDomains.map((ie,re)=>{const W=ie.toLowerCase().replace(/^www\./,""),Z=U.has(W),Ne=!Z&&M.citedCompetitorDomains.some(st=>st.toLowerCase().replace(/^www\./,"")===W),Ae=Z?"you":Ne?"competitor":"other";return c.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${Ae}`,children:[c.jsxs("span",{className:"citation-leaderboard-rank",children:["#",re+1]}),c.jsx("span",{className:"citation-leaderboard-domain",children:ie}),Z&&c.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),Ne&&c.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ie)})})]}),M.groundingSources.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsxs("span",{children:["Grounding source links (",M.groundingSources.length,")"]}),c.jsx(Vr,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),c.jsx("ul",{className:"grid gap-0.5",children:M.groundingSources.map((ie,re)=>{const W=s0(ie.uri),Z=ie.title||ie.uri;return c.jsx("li",{className:"truncate text-sm",children:W?c.jsx("a",{href:W,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:Z}):c.jsx("span",{className:"text-secondary",children:Z})},re)})})]}),M.evidenceUrls.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),c.jsx("ul",{className:"grid gap-1",children:M.evidenceUrls.map(ie=>{const re=s0(ie);return c.jsx("li",{className:"truncate text-sm",children:re?c.jsx("a",{href:re,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ie}):c.jsx("span",{className:"text-secondary",children:ie})},ie)})})]}),M.citedDomains.length===0&&M.groundingSources.length===0&&M.evidenceUrls.length===0&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",ge?"for this run":"yet"]})]}),!he&&!we&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",ge?"for this run":"yet"]})]})]})]})]})]})})}function tV(e){const n=e.match(/^\/projects\/([^/]+)/);if(!n)return null;try{return decodeURIComponent(n[1])}catch{return n[1]}}function aV(e,n){return e?n?.projects.find(r=>r.project.name===e||r.project.id===e)?.project.name??e:null}function nV(e,n){return aV(tV(e),n)}function Ya(e){const n=new Date("2026-02-20");return e.map((s,r)=>({runId:`run_mock_${r+1}`,citationState:s,createdAt:new Date(n.getTime()+r*2*24*60*60*1e3).toISOString()}))}const _p=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:op,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function Mu(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const iV=Mu({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),sV=Mu({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),oV=Mu({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),rV=Mu({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),lV=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:Ya(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:Ya(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:Ya(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:Ya(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];_p[0],Math.round(1/9*100),Math.round(2/9*100),_p[1],Ya(["cited","cited","cited","cited","cited"]),_p[2],Math.round(2/7*100),Math.round(3/7*100),Ya(["not-cited","not-cited","not-cited","cited"]);function cV(e,n){return e.runs.find(s=>s.id===n)}function uV(e,n){for(const s of e.projects){const r=s.visibilityEvidence.find(u=>u.id===n);if(r)return{project:s,evidence:r}}}function dV(e,n,s){if(e){const r=e.visibilityEvidence.find(u=>u.id===s);if(r)return{project:e,evidence:r}}if(n)return uV(n,s)}const mV={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},pV={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},hV={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},fV={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function gV(e){return{id:e.id,tone:mV[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??fV[e.type],actionGroup:pV[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:hV[e.type]}]}}function yV(e){return e.filter(n=>!n.dismissed).map(gV)}function V3(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function mv(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function bV(e,n){if(!e)return"Waiting";if(!n)return"Running";const s=new Date(n).getTime()-new Date(e).getTime();if(s<1e3)return"<1s";const r=Math.floor(s/1e3);if(r<60)return`${r}s`;const u=Math.floor(r/60),f=r%60;return`${u}m ${f}s`}function L3(e){switch(e){case Te["answer-visibility"]:return"Answer visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Site audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync";case Te["google-ads-sync"]:return"Google Ads sync";case Te["gtm-sync"]:return"Tag Manager sync"}}function vV(e){return e===go.manual?"Manual":e===go.scheduled?"Scheduled":e===go["config-apply"]?"Config apply":e}function Pu(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:L3(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?mv(e.startedAt):mv(e.createdAt),duration:bV(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?U3(e.error):xV(e),summary:kV(e),triggerLabel:vV(e.trigger)}}function U3(e){const n=J0(e);return n.length>200?n.slice(0,200)+"…":n}function xV(e){switch(e.status){case sa.queued:return"Waiting for execution slot.";case sa.running:return"Provider queries in progress.";case sa.completed:return"All queries checked.";case sa.partial:return"Run completed with some queries skipped.";case sa.failed:return e.error?U3(e.error):"Run failed.";case sa.cancelled:return"Run was cancelled.";default:return""}}function kV(e){const n=L3(e.kind);switch(e.status){case sa.queued:return`${n} queued`;case sa.running:return`${n} in progress`;case sa.completed:return`${n} completed`;case sa.partial:return`${n} partially completed`;case sa.failed:return`${n} failed`;case sa.cancelled:return`${n} cancelled`;default:return e.status}}function wV(e,n,s,r){const u=[];let f=0;const g=new Set;if(s.length>0){const b=s.flatMap(B=>B.snapshots??[]),x=new Map;for(const B of b)if(B.query){const q=`${B.query}::${B.provider}::${B.location??""}`;x.set(q,B)}const k=new Set(b.map(B=>B.location??null));k.size===0&&k.add(null);const S=new Set(b.map(B=>B.provider)),C=new Set(n.flatMap(B=>Object.keys(B.providerRuns??{}))),j=[...new Set([...S,...C])].sort(),E=j.length>0?j:["gemini"];for(const B of n){if(B.runs.length===0)continue;g.add(B.query);const q=B.runs.at(-1),U=q?.transition??"not-cited";for(const G of E){const te=[...k].filter(oe=>x.has(`${B.query}::${G}::${oe??""}`)),X=(B.providerRuns?.[G]?.length??0)>0,ae=te.length>0?te:X?[null]:[];for(const oe of ae){const ge=oe??"",M=x.get(`${B.query}::${G}::${ge}`),J=M?.model??null,_e=J?`${G}:${J}`:null,he=B.providerRuns?.[G],we=_e?B.modelRuns?.[_e]:void 0,Oe=jt=>jt?.filter(Ct=>(Ct.location??null)===oe),je=te.length>0?Oe(he):he,Fe=te.length>0?Oe(we):we,ye=(je?.length?je:null)??(Fe?.length?Fe:null),V=je?.length?"provider":Fe?.length?"model":"query",ne=ye?ye.at(-1).transition:U,fe=ye?ye.at(-1).visibilityTransition??(ye.at(-1).visibilityState==="visible"?"visible":"not-visible"):q?.visibilityTransition??(q?.visibilityState==="visible"?"visible":"not-visible"),De=ye?.at(-1)?.citationState,le=ye?.at(-1)?.visibilityState,at=M?ne==="lost"?"lost":ne==="emerging"?"emerging":M.citationState===su.cited?"cited":"not-cited":De===su.cited?"cited":"not-cited",H=M?.visibilityState??(le==="visible"?"visible":le==="pending"?"pending":"not-visible"),ue=pv(ye||B.runs),ie=hv(ye||B.runs),re=SV(B,G),W=(ye??B.runs).map(jt=>({runId:jt.runId,citationState:jt.citationState,createdAt:jt.createdAt,model:re.get(jt.runId)??null,answerMentioned:jt.answerMentioned,visibilityState:jt.visibilityState,visibilityTransition:jt.visibilityTransition,mentionState:jt.mentionState,mentionTransition:jt.mentionTransition})),Z=jV(W),Ne=V==="provider"&&Z.length<=1?"model":V,Ae=AV(W),st=M?.citedCompetitorDomains??[],Qe=M?.mentionedCompetitorDomains??[],Pt=[...new Set([...st,...Qe,...M?.competitorOverlap??[]])];u.push({id:`evidence_${e}_${f++}`,query:B.query,provider:M?.provider??G,model:M?.model??null,location:M?.location??oe,citationState:at,answerMentioned:M?.answerMentioned,visibilityState:H,visibilityChangeLabel:fv(fe,ie,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:fv(ne,ue),answerSnippet:M?.answerText??"",citedDomains:M?.citedDomains??[],evidenceUrls:[],citedCompetitorDomains:st,mentionedCompetitorDomains:Qe,competitorDomains:Pt,recommendedCompetitors:M?.recommendedCompetitors??[],matchedTerms:M?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:M?.groundingSources??[],searchQueries:M?.searchQueries??[],summary:CV(H,fe,B.query),runHistory:W,historyScope:Ne,modelsSeen:Z,modelTransitions:Ae})}}}}for(const b of r)g.has(b.query)||u.push({id:`evidence_${e}_${f++}`,query:b.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${b.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return u}function SV(e,n){const s=new Map,r=`${n}:`;for(const[u,f]of Object.entries(e.modelRuns??{})){if(!u.startsWith(r))continue;const g=u.slice(r.length),b=g==="unknown"?null:g;for(const x of f)s.set(x.runId,b)}return s}function jV(e){const n=new Set;for(const s of e)s.model&&n.add(s.model);return[...n]}function AV(e){const n=[];let s=null;for(const r of e){const u=r.model??null;u!==s&&s!==null&&n.push({runId:r.runId,createdAt:r.createdAt,fromModel:s,toModel:u}),s=u}return n}function pv(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let s=0;for(let r=e.length-1;r>=0&&e[r].citationState===n;r--)s++;return s}function hv(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let s=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===n;r--)s++;return s}function fv(e,n,s){const r={positive:s?.positive??"cited",negative:s?.negative??"not cited",first:s?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${Lr(r.positive)} in latest run`:`${Lr(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Lr(r.first);case"not-cited":case"not-visible":return n<=1?`${Lr(r.negative)} in latest run`:`${Lr(r.negative)} across ${n} runs`;default:return e}}function Lr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function CV(e,n,s){switch(n){case"lost":return`Mention was lost for "${s}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${s}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${s}".`;case"pending":return`"${s}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${s}".`}}function G3(e){const n=V3(e.project),s=wV(n.name,e.timeline,e.latestRunDetails,e.queries),u=[...e.runs].sort((f,g)=>g.createdAt.localeCompare(f.createdAt)).map(f=>Pu(f,e.project.displayName||e.project.name));return e.overview?NV(n,e.overview,s,u):_V(n,s,u)}function NV(e,n,s,r){const u=yV(n.topInsights);for(const f of n.attentionItems)f.id.startsWith("insight_")||u.push({id:f.id,tone:f.tone,title:f.title,detail:f.detail,actionLabel:f.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:u,visibilityEvidence:s,competitors:n.competitors.map(f=>({id:f.id,domain:f.domain,citationCount:f.citationCount,totalQueries:f.totalQueries,pressureLabel:f.pressureLabel,citedQueries:f.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:n.suggestedQueries}}function gv(){return{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0,score:null}}function _V(e,n,s){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",scope:"non-brand",unavailable:!0,breakdown:gv(),branded:gv()},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:s.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function zV(e){const n=V3(e.project),s=[...e.runs].sort((j,E)=>E.createdAt.localeCompare(j.createdAt)),r=s.find(j=>j.kind===Te["answer-visibility"])??s[0]??e.overview?.latestRun?.run??void 0,u=e.project.displayName||e.project.name,f=r?Pu(r,u):DV(e.project.id,u),g=e.overview;if(!g)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:f,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const b=g.scores.mention,x=b.progress??0,k=g.queryCounts.mentionedQueries,S=g.queryCounts.totalQueries,C=g.providers.length;return{project:n,mentionScore:x,mentionDelta:S>0?`${k} of ${S} queries`:"No data",mentionTone:b.tone,providerCoverage:b.providerCoverage,lastRun:f,insight:S>0?`${k} of ${S} queries mentioned across ${C} provider${C===1?"":"s"}.`:"No runs completed yet.",trend:b.trend??[],competitorPressureLabel:g.scores.competitorPressure.value}}function DV(e,n){return{id:"none",projectId:e,projectName:n,kind:Te["answer-visibility"],kindLabel:"No runs yet",status:sa.queued,trigger:go.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function EV(e,n){const s=[],r=[],u=[];for(const g of e){r.push(G3(g)),u.push(zV(g));const b=[...g.runs].sort((x,k)=>k.createdAt.localeCompare(x.createdAt));for(const x of b)s.push(Pu(x,g.project.displayName||g.project.name))}s.sort((g,b)=>b.createdAt.localeCompare(g.createdAt));const f=e.length>0;return{portfolioOverview:{projects:u,attentionItems:f?TV(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:s.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],...f?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:s,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:f,ctaLabel:f?"Trigger run":"Create a project first",summary:f?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(g=>({name:g.name,displayName:g.displayName,keyUrl:g.keyUrl,modelHint:g.modelHint,model:g.model,defaultModel:g.defaultModel,state:g.configured?"ready":"needs-config",detail:g.configured?"Provider is configured.":"API key is missing.",quota:g.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function TV(e){const n=[];for(const s of e){const r=s.visibilityEvidence.filter(f=>f.citationState==="lost");r.length>0&&n.push({id:`attention_${s.project.id}_lost`,tone:"negative",title:`${s.project.displayName||s.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(s.project.name)}`});const u=s.recentRuns.filter(f=>f.status===sa.running||f.status===sa.queued);u.length>0&&n.push({id:`attention_${s.project.id}_active`,tone:"neutral",title:`${s.project.displayName||s.project.name} has active runs`,detail:`${u.length} run${u.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const $3=D.createContext(null);$3.Provider;function pl(){return D.useContext($3)}function Iu(e,n={}){const r=pl()?.dashboard??null,u=n.includeSettings??!0,{isAdmin:f}=al(),g=Ft({...kh({client:se,query:{kind:"answer-visibility"}}),enabled:!r,staleTime:vo,refetchInterval:G=>G.state.data?.some(ae=>ae.status==="running"||ae.status==="queued")?3e3:vo}),b=Ft({...gs({client:se}),enabled:!r,refetchInterval:G=>{const te=G.state.data,X=g.data?.some(oe=>oe.status==="running"||oe.status==="queued");return(te?.length??0)===0||!!X?KA:QA}}),x=Ft({...DM({client:se}),enabled:!r&&u&&f}),k=b.data??[],S=g.data??[],C=cj({queries:k.map(G=>{const te=S.filter(oe=>oe.projectId===G.id),X=te.filter(oe=>(oe.status==="completed"||oe.status==="partial")&&oe.kind==="answer-visibility"&&oe.trigger!=="probe").sort((oe,ge)=>ge.createdAt.localeCompare(oe.createdAt)),ae=X.length>0?X[0].id:"no-run";return{queryKey:["project-overview-slim",G.id,ae],queryFn:async()=>{const oe=await lx(G.name).catch(()=>null);return{project:G,runs:te,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:oe}},enabled:!r&&b.isSuccess&&g.isSuccess,staleTime:Op}})}),j=C.every(G=>G.isSuccess),E=D.useMemo(()=>{if(r)return r;if(!b.data||!g.data||k.length>0&&!j)return null;const G=C.map(te=>te.data?{...te.data,runs:S.filter(X=>X.projectId===te.data.project.id)}:null).filter(te=>te!=null);return EV(G,x.data??null)},[r,b.data,g.data,x.data,j,C,k.length,S]),B=!r&&(b.isError||g.isError),q=!r&&!E&&!B,U=D.useCallback(async()=>{const G=[b.refetch(),g.refetch(),...C.map(te=>te.refetch())];u&&G.push(x.refetch()),await Promise.all(G)},[u,C,b.refetch,g.refetch,x.refetch]);return{dashboard:E,isLoading:q,isError:B,refetch:U}}const RV=20;function OV(e){const n=pl(),s=D.useMemo(()=>!n||!e?null:n.dashboard.projects.find(q=>q.project.name===e)??null,[n,e]),r=Ft({...dM({client:se,path:{name:e??""}}),enabled:!!e&&!s,staleTime:Op,refetchOnWindowFocus:"always"}),u=Ft({...jM({client:se,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:vo,refetchOnWindowFocus:"always",refetchInterval:q=>q.state.data?.some(te=>te.projectId===r.data?.id&&(te.status==="running"||te.status==="queued"))?3e3:vo}),f=r.data??null,g=D.useMemo(()=>f?(u.data??[]).filter(q=>q.projectId===f.id):[],[f,u.data]),{latestRunIds:b,previousRunIds:x,latestRunIdsKey:k,latestVisibilityRevision:S}=D.useMemo(()=>{const q=g.filter(ae=>(ae.status==="completed"||ae.status==="partial")&&ae.kind==="answer-visibility"&&ae.trigger!=="probe").sort((ae,oe)=>oe.createdAt.localeCompare(ae.createdAt)),U=q[0]?.createdAt??null,G=U?q.filter(ae=>ae.createdAt===U).map(ae=>ae.id):[],te=q.find(ae=>ae.createdAt!==U)?.createdAt??null,X=te?q.filter(ae=>ae.createdAt===te).map(ae=>ae.id):[];return{latestRunIds:G,previousRunIds:X,latestRunIdsKey:[...G].sort().join(","),latestVisibilityRevision:U?`${U}:${[...G].sort().join(",")}`:"none"}},[g]),C=Ft({queryKey:["project-dashboard-full",f?.id??null,k||"none"],queryFn:async()=>{if(!f||!e)return null;const[q,U,G,te,X,ae,oe,ge,M]=await Promise.all([rx(e).catch(()=>[]),fA(e).catch(()=>[]),gA(e,void 0,RV).catch(()=>[]),b.length?Promise.all(b.map(J=>Zc(J).catch(()=>null))).then(J=>J.filter(_e=>_e!=null)):Promise.resolve([]),x.length?Promise.all(x.map(J=>Zc(J).catch(()=>null))).then(J=>J.filter(_e=>_e!=null)):Promise.resolve([]),EA(e).catch(()=>null),OA(e).catch(()=>null),BA(e).catch(()=>null),lx(e).catch(()=>null)]);return{project:f,runs:g,queries:q,competitors:U,timeline:G,latestRunDetails:te,previousRunDetails:X,gscCoverage:ae,bingCoverage:oe,dbInsights:ge,overview:M}},enabled:!!f&&!!e&&u.isSuccess,staleTime:Op,refetchOnWindowFocus:"always"}),j=D.useMemo(()=>C.data?G3({...C.data,runs:g}):s||null,[C.data,g,s]),E=D.useCallback(async()=>{await Promise.all([r.refetch(),u.refetch(),C.refetch()])},[r.refetch,u.refetch,C.refetch]),B=!j&&(r.isLoading||u.isLoading||C.isLoading);return{commandCenter:j,project:f,isLoading:B,isError:r.isError||u.isError||C.isError,latestVisibilityRevision:S,refetch:E}}const BV=["health"];async function qV(){const e=await MA("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function Ch(e,n){return Ft({queryKey:BV,queryFn:qV,enabled:e,refetchInterval:15e3,initialData:n})}function MV(e){return Ft({...f3({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const s=n.state.data?.status;return s==="running"||s==="queued"?3e3:!1}})}function Nh(){const e=ms(),n=Tv({strict:!1}),s=uj({select:x=>x.location.pathname}),r=n.runId??null,u=n.evidenceId??null;return{runId:r,evidenceId:u,openRun:x=>{e({to:s,from:ra.to,search:k=>({...k,runId:x,evidenceId:void 0})})},openEvidence:x=>{e({to:s,from:ra.to,search:k=>({...k,evidenceId:x,runId:void 0})})},closeDrawer:()=>{e({to:s,from:ra.to,search:x=>({...x,runId:void 0,evidenceId:void 0})})}}}const PV={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function IV(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function VV(){const e=D.useSyncExternalStore($A,Dy,Dy),n=ms(),{openRun:s}=Nh(),r=D.useCallback(f=>{Rp(f)},[]),u=D.useCallback(f=>{f.cta&&(f.cta.intent==="open-run-drawer"?s(f.cta.runId):n({to:"/runs"}),Rp(f.id))},[n,s]);return e.length===0?null:c.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(f=>c.jsxs("section",{role:f.tone==="negative"?"alert":"status","aria-live":f.tone==="negative"?"assertive":"polite","data-state":f.state,className:`toast-card ${PV[f.tone]}`,children:[c.jsxs("div",{className:"toast-copy",children:[c.jsx("p",{className:"toast-title",children:f.title}),f.detail?c.jsx("p",{className:"toast-detail",children:f.detail}):null,f.cta?c.jsx("button",{type:"button",className:"toast-action",onClick:()=>u(f),"aria-label":IV(f),children:f.cta.label}):null]}),c.jsx("button",{type:"button",onClick:()=>r(f.id),className:"toast-dismiss","aria-label":"Dismiss",children:c.jsx(zo,{className:"size-3.5"})})]},f.id))})}function Kr(e){switch(e){case Te["answer-visibility"]:return"Visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Technical audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync";case Te["google-ads-sync"]:return"Google Ads sync";case Te["gtm-sync"]:return"Tag Manager sync"}}function yv(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function LV(){const e=D.useSyncExternalStore(v3,In,In),n=D.useMemo(()=>Object.values(e.runs),[e.runs]),s=n.length>0,r=Ft({...kh({client:se}),enabled:s,staleTime:vo}),u=D.useMemo(()=>new Map((r.data??[]).map(b=>[b.id,b.status])),[r.data]);if(!s)return null;const f=n.map(b=>({...b,status:u.get(b.runId)??b.lastAnnouncedStatus})),g=f.length===1?Kr(f[0].kind):`${f.length} active tasks`;return c.jsxs("div",{className:"task-center",children:[c.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[f.length," active ",f.length===1?"task":"tasks","."," ",f.map(b=>`${Kr(b.kind)} ${yv(b.status)}`).join(". "),"."]}),c.jsxs("details",{className:"task-center-details",children:[c.jsxs("summary",{className:"task-center-trigger",children:[c.jsx(bo,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),c.jsx("span",{className:"task-center-summary",children:g}),c.jsx("span",{className:"task-center-count","aria-hidden":"true",children:f.length}),c.jsx(u0,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),c.jsxs("div",{className:"task-center-panel",children:[c.jsxs("div",{className:"task-center-heading",children:[c.jsx("span",{children:"Active tasks"}),c.jsx("span",{className:"tabular-nums text-faint",children:f.length})]}),c.jsx("ul",{className:"task-center-list",children:f.map(b=>c.jsxs("li",{className:"task-center-item",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:Kr(b.kind)}),c.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:b.projectLabel??b.projectId})]}),c.jsx(ga,{tone:b.status==="failed"?"negative":b.status==="partial"?"caution":"neutral",children:yv(b.status)})]},b.runId))}),c.jsx(et,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function UV(e,n={}){const{threshold:s=80}=n,r=D.useRef(null),u=D.useRef({scrollHeight:0,wasAtEnd:!0});function f(x){return x.scrollHeight-x.scrollTop-x.clientHeight}function g(){const x=r.current;return x?f(x)<=s:!0}function b(){const x=r.current;x&&(x.scrollTop=x.scrollHeight,u.current.wasAtEnd=!0,u.current.scrollHeight=x.scrollHeight)}return D.useEffect(()=>{const x=r.current;if(!x)return;const k=()=>{u.current.wasAtEnd=f(x)<=s};return x.addEventListener("scroll",k,{passive:!0}),()=>x.removeEventListener("scroll",k)},[s]),D.useLayoutEffect(()=>{const x=r.current;if(!x)return;const k=x.scrollHeight;k>u.current.scrollHeight&&u.current.wasAtEnd&&(x.scrollTop=k),u.current.scrollHeight=k},e),D.useEffect(()=>{const x=r.current;if(!x||typeof ResizeObserver>"u")return;const k=new ResizeObserver(()=>{const S=x.scrollHeight;S>u.current.scrollHeight&&u.current.wasAtEnd&&(x.scrollTop=S),u.current.scrollHeight=S});return k.observe(x),x.firstElementChild&&k.observe(x.firstElementChild),()=>k.disconnect()},[]),{ref:r,scrollToEnd:b,isAtEnd:g}}async function _h(e){try{return await e.json()}catch{return{}}}function GV(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const zh=GV();function Dh(e){e===401&&g0()}async function bv(e){const n=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Dh(n.status);const s=await _h(n);throw new oa(s.error?.message??`transcript fetch failed: ${n.status}`,n.status,s.error?.code)}return await n.json()}async function $V(e){const n=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Dh(n.status);const s=await _h(n);throw new oa(s.error?.message??`reset failed: ${n.status}`,n.status,s.error?.code)}}async function HV({project:e,prompt:n,provider:s,modelId:r,scope:u,profile:f,signal:g,onEvent:b}){const x={prompt:n};s&&(x.provider=s),r&&(x.modelId=r),u&&(x.scope=u),f&&(x.profile=f);const k=await fetch(`${zh}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(x),signal:g});if(!k.ok||!k.body){Dh(k.status);const B=await _h(k);throw new oa(B.error?.message??`prompt failed: ${k.status}`,k.status,B.error?.code)}const S=k.body.getReader(),C=new TextDecoder;let j="";const E=()=>{S.cancel().catch(()=>{})};g?.addEventListener("abort",E,{once:!0});try{for(;;){const{value:B,done:q}=await S.read();if(q)break;j+=C.decode(B,{stream:!0});let U=j.indexOf(`
|
|
59
59
|
|
|
60
60
|
`);for(;U!==-1;){const G=j.slice(0,U);j=j.slice(U+2);for(const te of G.split(`
|
|
61
61
|
`)){if(!te.startsWith("data:"))continue;const X=te.slice(5).trim();if(X)try{b(JSON.parse(X))}catch{}}U=j.indexOf(`
|
|
62
62
|
|
|
63
|
-
`)}}}finally{g?.removeEventListener("abort",E);try{S.releaseLock()}catch{}}}function H3(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const GV=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],$V=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],$c=e=>`canonry:aero:provider:${e}`,vv=e=>`canonry:aero:scope:${e}`;function HV({projectName:e}){const[n,s]=D.useState(!1),[r,u]=D.useState(!1),[f,g]=D.useState([]),[b,x]=D.useState(""),[k,S]=D.useState(!1),[C,j]=D.useState([]),[E,B]=D.useState(""),[q,U]=D.useState(null),[G,te]=D.useState(()=>typeof window>"u"?null:window.localStorage.getItem($c(e))??null),[X,ae]=D.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(vv(e))==="all"?"all":"read-only"),oe=D.useRef(null),{ref:ge}=IV([f,E,C]),M=D.useRef(null),[J,_e]=D.useState(0),he=D.useMemo(()=>{const H=b.trimStart();if(!H.startsWith("/"))return[];if(/\s/.test(H))return[];const ue=H.toLowerCase();return $V.filter(ie=>ie.command.startsWith(ue)||ie.label.toLowerCase().includes(ue.slice(1)))},[b]);D.useEffect(()=>{_e(H=>he.length===0?0:Math.min(H,he.length-1))},[he.length]);const we=Ft({...OP({client:se,path:{name:e}}),enabled:n,staleTime:6e4}),Oe=D.useMemo(()=>{const H=we.data?.providers??[];if(G){const ie=H.find(re=>re.id===G&&re.configured);if(ie)return ie}const ue=we.data?.defaultProvider;return ue?H.find(ie=>ie.id===ue)??null:null},[G,we.data]);D.useEffect(()=>{if(!we.data||!G)return;we.data.providers.find(ue=>ue.id===G&&ue.configured)||(te(null),window.localStorage.removeItem($c(e)))},[we.data,G,e]);const je=D.useCallback(H=>{te(H),!(typeof window>"u")&&(H?window.localStorage.setItem($c(e),H):window.localStorage.removeItem($c(e)))},[e]),Fe=D.useCallback(()=>{ae(H=>{const ue=H==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(vv(e),ue),ue})},[e]);D.useEffect(()=>{if(!n)return;const H=ue=>{ue.key==="Escape"&&(r?u(!1):s(!1))};return window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)},[n,r]),D.useEffect(()=>{if(!n)return;let H=!1;U(null);const ue=()=>{H||k||bv(e).then(W=>{H||g(W.messages)}).catch(W=>{H||U(W instanceof Error?W.message:"Failed to load transcript")})};ue();const re=window.setInterval(ue,15e3);return()=>{H=!0,window.clearInterval(re)}},[n,e,k]),D.useEffect(()=>()=>{oe.current?.abort()},[e]);async function ye(H){const ue=H.trim();if(!ue||k)return;U(null),x(""),S(!0),B(""),j([]);const ie={role:"user",content:ue,timestamp:Date.now()};g(W=>[...W,ie]);const re=new AbortController;oe.current=re;try{await UV({project:e,prompt:ue,provider:G??void 0,scope:X,signal:re.signal,onEvent:V});const W=await bv(e);g(W.messages)}catch(W){W.name!=="AbortError"&&U(W instanceof Error?W.message:"Prompt failed")}finally{S(!1),B(""),oe.current=null}}function V(H){switch(H.type){case"message_update":B(H3(H.message));break;case"message_end":H.message.role==="assistant"&&B("");break;case"tool_execution_start":j(ue=>[...ue,{id:H.toolCallId,name:H.toolName,args:H.args,startedAt:Date.now()}]);break;case"tool_execution_end":j(ue=>ue.map(ie=>ie.id===H.toolCallId?{...ie,endedAt:Date.now(),isError:H.isError,result:H.result}:ie));break;case"error":U(H.message);break}}async function ne(){oe.current?.abort();try{await LV(e),g([]),U(null)}catch(H){U(H instanceof Error?H.message:"Reset failed")}}const fe=f.length===0,De=n&&r?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",le=r?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",at=r?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return c.jsx("div",{className:De,onClick:H=>{r&&H.target===H.currentTarget&&u(!1)},children:c.jsx("div",{className:le,children:n?c.jsxs("div",{className:r?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(yy,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),c.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:k?"working…":e})]}),c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(KV,{providers:we.data?.providers??[],active:Oe,override:G,onPick:je,disabled:k}),c.jsx("button",{type:"button",onClick:$t(ne),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:c.jsx(Vv,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>u(H=>!H),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":r?"Collapse":"Expand",title:r?"Collapse":"Expand",children:r?c.jsx(bj,{className:"h-3.5 w-3.5","aria-hidden":"true"}):c.jsx(vj,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>{u(!1),s(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:c.jsx(zo,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),c.jsxs("div",{ref:ge,className:at,children:[q&&c.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:q}),fe&&!k&&c.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[c.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",c.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:GV.map(H=>c.jsx("button",{type:"button",onClick:()=>{ye(H.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:H.label},H.label))})]}),XV(f,e,G,X),C.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:C.map(H=>c.jsx(K3,{trail:H},H.id))}),k&&E&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(Q3,{content:E})]}),k&&!E&&C.every(H=>H.endedAt!==void 0)&&c.jsx(tL,{})]}),c.jsx(QV,{projectName:e,activeProvider:Oe,scope:X,onToggleScope:Fe,disabled:k}),c.jsxs("div",{className:"relative",children:[he.length>0&&c.jsx(ZV,{matches:he,selectedIndex:J,onHover:_e,onPick:H=>{x(""),M.current?.focus(),H.action==="clear"?ne():ye(H.prompt)}}),c.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:H=>{if(H.preventDefault(),he.length>0){const ue=he[J];x(""),ue.action==="clear"?ne():ye(ue.prompt);return}ye(b)},children:[c.jsx("textarea",{ref:M,value:b,onChange:H=>x(H.target.value),onKeyDown:H=>{if(he.length>0){if(H.key==="ArrowDown"){H.preventDefault(),_e(ue=>(ue+1)%he.length);return}if(H.key==="ArrowUp"){H.preventDefault(),_e(ue=>(ue-1+he.length)%he.length);return}if(H.key==="Tab"){H.preventDefault();const ue=he[J];x(`${ue.command} `);return}if(H.key==="Escape"){H.preventDefault(),x("");return}}if(H.key==="Enter"&&!H.shiftKey)if(H.preventDefault(),he.length>0){const ue=he[J];x(""),ue.action==="clear"?ne():ye(ue.prompt)}else ye(b)},placeholder:"Ask Aero, or / for commands…",disabled:k,rows:r?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),c.jsx("button",{type:"submit",disabled:k||!b.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:c.jsx(xj,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):c.jsx("button",{type:"button",onClick:()=>s(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(yy,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function KV({providers:e,active:n,override:s,onPick:r,disabled:u}){const[f,g]=D.useState(!1),b=D.useRef(null);if(D.useEffect(()=>{if(!f)return;const k=C=>{b.current?.contains(C.target)||g(!1)},S=C=>{C.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",k),window.addEventListener("keydown",S),()=>{window.removeEventListener("mousedown",k),window.removeEventListener("keydown",S)}},[f]),e.length===0)return null;const x=n?.label.replace(/\s+\(.+\)$/,"")??"No provider";return c.jsxs("div",{ref:b,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>g(k=>!k),disabled:u,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":f,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[c.jsx("span",{className:"font-medium text-strong",children:x}),c.jsx(u0,{className:"h-3 w-3","aria-hidden":"true"})]}),f&&c.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),c.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(k=>{const S=n?.id===k.id,C=s===k.id;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":S,disabled:!k.configured,onClick:()=>{k.configured&&(r(C?null:k.id),g(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:k.configured?k.defaultModel:`Add ${FV(k.id)} in Settings or your environment`,children:[c.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:S?c.jsx(d0,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:k.label.replace(/\s+\(.+\)$/,"")}),C&&c.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!k.configured&&c.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},k.id)})}),s&&c.jsx("button",{type:"button",onClick:()=>{r(null),g(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function QV({projectName:e,activeProvider:n,scope:s,onToggleScope:r,disabled:u}){const f=n?.label.replace(/\s+\(.+\)$/,"")??null,g=s==="all";return c.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[c.jsx("span",{className:"font-medium text-strong",children:e}),f&&c.jsxs(c.Fragment,{children:[c.jsx("span",{"aria-hidden":"true",children:"·"}),c.jsx("span",{children:f})]}),c.jsx("button",{type:"button",onClick:r,disabled:u,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${g?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:g?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:g?"Can make changes":"Read only"})]})}function ZV({matches:e,selectedIndex:n,onHover:s,onPick:r}){return c.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),c.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((u,f)=>{const g=f===n;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":g,onMouseEnter:()=>s(f),onClick:()=>r(u),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${g?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[c.jsx("span",{className:"font-medium",children:u.label}),c.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:u.command})]})},u.command)})})]})}function FV(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function YV(e,n){const s=e.timestamp??0;return`${e.role}:${s}:${n}`}function XV(e,n,s,r){const u=[];for(let f=0;f<e.length;f++){const g=e[f],b=YV(g,f);if(g.role==="user"){const x=typeof g.content=="string"?g.content:JSON.stringify(g.content);if(x.startsWith("[system]"))continue;u.push(c.jsx(JV,{text:x,projectName:n,providerOverride:s,scope:r},b));continue}if(g.role==="assistant"){const x=new Map;let k=f+1;for(;k<e.length&&e[k].role==="toolResult";){const j=e[k];x.set(j.toolCallId,j),k++}const S=eL(g,x,g.timestamp??0),C=H3(g);u.push(c.jsxs(D.Fragment,{children:[S.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(j=>c.jsx(K3,{trail:j},j.id))}),C.trim()&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(Q3,{content:C})]})]},b)),f=k-1;continue}}return u}function JV({text:e,projectName:n,providerOverride:s,scope:r}){const[u,f]=D.useState(!1),g=D.useMemo(()=>WV(n,e,s,r),[n,e,s,r]);async function b(){try{await navigator.clipboard.writeText(g),f(!0),window.setTimeout(()=>f(!1),1500)}catch{}}return c.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),c.jsx("button",{type:"button",onClick:$t(b),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:g,children:u?c.jsxs(c.Fragment,{children:[c.jsx(d0,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):c.jsxs(c.Fragment,{children:[c.jsx(Uv,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),c.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function WV(e,n,s,r){const u=["canonry","agent","ask",xv(e),xv(n)];return s&&u.push("--provider",s),r==="read-only"&&u.push("--scope","read-only"),u.join(" ")}function xv(e){return`'${e.replace(/'/g,"'\\''")}'`}function eL(e,n,s){const r=[];for(const u of e.content){if(u.type!=="toolCall")continue;const f=u,g=n.get(f.id);r.push({id:f.id,name:f.name,args:f.arguments,startedAt:s,endedAt:g?.timestamp,isError:g?.isError,result:g?.content})}return r}function K3({trail:e}){const[n,s]=D.useState(!1),r=e.endedAt===void 0,u=!r&&e.isError===!0,f=e.endedAt!=null?e.endedAt-e.startedAt:null,g=f==null||f<0?null:f<1e3?`${f}ms`:`${(f/1e3).toFixed(1)}s`,b=u?"border-negative-800/50":r?"border-positive-800/50":"border-mono-800/70",x=u?"bg-negative-950/20":r?"bg-positive-950/20":"bg-surface-hover";return c.jsxs("div",{className:`rounded-md border ${b} ${x} font-mono`,children:[c.jsxs("button",{type:"button",onClick:()=>s(k=>!k),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[c.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?c.jsx(bo,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):u?c.jsx(Lv,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):c.jsx(kj,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),c.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),c.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[r?c.jsx("span",{className:"text-positive-400",children:"running…"}):c.jsxs(c.Fragment,{children:[c.jsx("span",{children:u?"failed":"ok"}),g&&c.jsx("span",{children:g})]}),c.jsx(m0,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&c.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),c.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:kv(e.args)}),!r&&e.result!==void 0&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:u?"Error":"Result"}),c.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:kv(e.result)})]})]})]})}function kv(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
|
|
64
|
-
… (${n.length-2e3} more chars)`:n}catch{return String(e)}}function Q3({content:e}){return c.jsx("div",{className:"text-heading",children:c.jsx(Mj,{components:{h1:n=>c.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:n=>c.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:n=>c.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:n=>c.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:n=>c.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>c.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>c.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>c.jsx("li",{...n,className:"marker:text-mono-600"}),strong:n=>c.jsx("strong",{...n,className:"font-semibold text-primary"}),em:n=>c.jsx("em",{...n,className:"text-strong"}),code:({children:n,...s})=>c.jsx("code",{...s,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:n}),pre:n=>c.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:n=>c.jsx("a",{...n,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>c.jsx("div",{className:"mb-2 overflow-x-auto",children:c.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>c.jsx("thead",{...n,className:"border-b border-base"}),th:n=>c.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:n=>c.jsx("tr",{...n,className:"border-b border-mono-900"}),td:n=>c.jsx("td",{...n,className:"px-2 py-1 text-strong"}),blockquote:n=>c.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>c.jsx("hr",{className:"my-3 border-base"})},children:e})})}function tL(){return c.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[c.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),c.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),c.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function aL(){const e=Rv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),s=n?decodeURIComponent(n[1]):null,r=Ft({...gs({client:se}),enabled:s!==null,staleTime:6e4});if(!s)return null;const u=r.data??[],f=u.find(g=>g.id===s)??u.find(g=>g.name===s);return f?c.jsx(HV,{projectName:f.name},f.name):null}const nL={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",googleAds:"getApiV1ProjectsByNameGoogleAds",gtm:"getApiV1ProjectsByNameGtm",conversionTracking:"getApiV1ProjectsByNameConversionTracking",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function fa(e,n){const s=nL[n];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(s)}})}function tl(e,n,s){switch(e.invalidateQueries({queryKey:xh({client:se})}),e.invalidateQueries({queryKey:Ai({client:se})}),fa(e,"runs"),n){case Te["answer-visibility"]:return;case Te["backlink-extract"]:return;case Te["site-audit"]:fa(e,"technicalAeo");return;case Te["gsc-sync"]:case Te["inspect-sitemap"]:fa(e,"gsc");return;case Te["ga-sync"]:fa(e,"ga");return;case Te["traffic-sync"]:fa(e,"ga"),fa(e,"traffic");return;case Te["bing-inspect"]:case Te["bing-inspect-sitemap"]:fa(e,"bing");return;case Te["aeo-discover-seed"]:case Te["aeo-discover-probe"]:return;case Te["gbp-sync"]:fa(e,"gbp");return;case Te["ads-sync"]:fa(e,"ads");return;case Te["google-ads-sync"]:fa(e,"googleAds"),fa(e,"conversionTracking");return;case Te["gtm-sync"]:fa(e,"gtm"),fa(e,"conversionTracking");return;default:return n}}const wv=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:Dj},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:Ej},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:Tj}],Sv=e=>({label:e,state:"checking",detail:"Checking service health"}),iL={apiStatus:Sv("API"),workerStatus:Sv("Worker")};function sL(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function oL(e){const n=Kr(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function rL(e,n){return e.error?`${n}: ${J0(e.error)}`:e.location?`${n} · ${e.location}`:n}function jv(e,n,s){if(n)return n;const r=s.find(u=>u.id===e);return r?.displayName||r?.name||e}function lL(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function cL(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function uL(){const e=Vn(),n=D.useSyncExternalStore(v3,In,In),s=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,r=Ft({...kh({client:se}),enabled:s,staleTime:vo,refetchInterval:3e3}),u=Ft({...gs({client:se}),enabled:s}),f=D.useRef({}),g=D.useCallback(()=>{r.refetch()},[r.refetch]);return D.useEffect(()=>{s&&g()},[s,g]),D.useEffect(()=>{if(!s||typeof window>"u")return;const b=()=>{document.visibilityState==="visible"&&g()};return window.addEventListener("focus",g),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",g),document.removeEventListener("visibilitychange",b)}},[s,g]),D.useEffect(()=>{const b=r.data??[],x=u.data??[],k=Object.fromEntries(b.map(C=>[C.id,C])),S=Object.fromEntries(b.map(C=>[C.id,C.status]));for(const C of Object.values(n.runs)){const j=k[C.runId];if(!j||!HP(j.status)||(f.current[j.id]??C.lastAnnouncedStatus)===j.status)continue;const B=x.find(U=>U.id===j.projectId);if(B&&tl(e,j.kind,B.name),C.sourceAction==="run-all"){Sp(j.id);continue}const q=jv(j.projectId,C.projectLabel,x);Yt({title:oL(j),detail:rL(j,q),tone:sL(j.status),dedupeKey:`run:${j.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:j.id}}),Sp(j.id)}if(r.data!==void 0){const C=new Set(b.map(E=>E.id)),j=QP(Object.values(n.runs),C,Date.now(),KP);for(const E of j){const B=x.find(q=>q.id===E.projectId);B&&tl(e,E.kind,B.name),E.sourceAction!=="run-all"&&Yt({title:`${Kr(E.kind)} status unavailable`,detail:jv(E.projectId,E.projectLabel,x),tone:"neutral",dedupeKey:`run-stale:${E.runId}`,dedupeMode:"replace"}),Sp(E.runId)}}for(const C of Object.values(n.batches)){const j=ZP(C.runIds,k);j.finished&&(Yt({title:"Run-all batch finished",detail:lL(j,C.skippedCount),tone:cL(j),dedupeKey:`batch:${C.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),$P(C.batchId))}f.current=S},[u.data,r.data,n,e]),null}function dL(){const{account:e,isAdmin:n}=al(),s=pl(),r=D.useMemo(()=>sx(),[]),u=D.useMemo(aA,[]),f=D.useMemo(nA,[]),g=D.useMemo(iA,[]),{dashboard:b,isLoading:x,refetch:k}=Iu(void 0,{includeSettings:!r}),j=Ch(!s,s?.health).data??s?.health??iL,E=Rv(),{runId:B,evidenceId:q,closeDrawer:U}=Nh(),[G,te]=D.useState(!1),[X,ae]=D.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[oe,ge]=D.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[M]=D.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),J=M?{current:j.apiStatus.version??"0.0.0",latest:M,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:j.apiStatus.updateAvailable,_e=g&&J&&J.latest!==oe,he=()=>{if(J){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",J.latest)}catch{}ge(J.latest)}},we=()=>{const Z=!X;try{Z?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}ae(Z)},Oe=OV(B),je=Oe.data??null,Fe=Oe.isLoading;D.useEffect(()=>{je&&je.status!=="running"&&je.status!=="queued"&&k()},[je?.status,k]),D.useEffect(()=>{te(!1)},[E.pathname]),D.useEffect(()=>{if(typeof window>"u"||!B&&!q)return;const Z=Ne=>{Ne.key==="Escape"&&U()};return window.addEventListener("keydown",Z),()=>{window.removeEventListener("keydown",Z)}},[B,q,U]);const ye=b??s?.dashboard??null,V=E.pathname==="/setup",ne=V&&ye!==null&&ye.portfolioOverview.projects.length===0,[fe,De]=D.useState(ne);D.useEffect(()=>{V?ne&&De(!0):De(!1)},[ne,V]);const le=V&&(ne||fe),at=le?"app-shell-focus":X?"app-shell-sidebar-hidden":"",H=B?(ye?oV(ye,B):void 0)??(je?Pu(je,ye?.projects.find(Z=>Z.project.id===je.projectId)?.project.displayName??ye?.projects.find(Z=>Z.project.id===je.projectId)?.project.name??"Unknown project"):void 0):void 0,ue=D.useMemo(()=>eV(E.pathname,ye),[E.pathname,ye]),{commandCenter:ie}=EV(ue),re=D.useMemo(()=>{if(q)return lV(ie,ye,q)},[q,ie,ye]),W=(()=>{const Z=E.pathname;if(Z==="/")return"Portfolio";if(Z==="/projects")return"Projects";if(Z==="/runs")return"Runs";if(Z==="/history")return"History";if(Z==="/settings")return"Settings";if(Z==="/setup")return"Setup";if(Z==="/backlinks")return"Backlink data";if(Z==="/traffic"||Z.startsWith("/traffic/"))return"Traffic sources";if(Z.startsWith("/projects/")){const Ae=Z.split("/").filter(Boolean)[1];if(Ae&&ye){const st=ye.projects.find(Qe=>Qe.project.id===Ae);if(st)return st.project.name}return"Project"}return"Not found"})();if(r){const Z=!r.views||r.views.includes(tM(E.pathname));return c.jsxs("div",{className:"app-shell app-shell-embed","data-theme":sM(r.theme),style:oM(r.theme),children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx("main",{id:"content",className:"page-shell",children:Z?c.jsx(zp,{}):c.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return c.jsxs("div",{className:`app-shell ${at}`,children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!le&&!X&&c.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[c.jsx("div",{className:"sidebar-brand",children:c.jsx(uv,{version:j.apiStatus.version,updateAvailable:_e?J:null,onDismissUpdate:he})}),c.jsxs("nav",{className:"sidebar-nav",children:[c.jsxs(et,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(wj,{className:"sidebar-icon"}),c.jsx("span",{children:"Portfolio"})]}),c.jsxs(et,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(Sj,{className:"sidebar-icon"}),c.jsx("span",{children:"Projects"})]}),c.jsxs(et,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(jj,{className:"sidebar-icon"}),c.jsx("span",{children:"Runs"})]}),c.jsxs(et,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(Aj,{className:"sidebar-icon"}),c.jsx("span",{children:"History"})]}),c.jsxs(et,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(Cj,{className:"sidebar-icon"}),c.jsx("span",{children:"Traffic sources"})]}),c.jsxs(et,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(Nj,{className:"sidebar-icon"}),c.jsx("span",{children:"Backlink data"})]}),n&&c.jsxs(et,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(_j,{className:"sidebar-icon"}),c.jsx("span",{children:"Settings"})]}),x?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(Z=>c.jsxs("div",{className:"sidebar-skeleton-item",children:[c.jsx("span",{className:"skeleton-circle size-2"}),c.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+Z*15}%`}})]},Z))]}):ye&&ye.projects.length>0?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),ye.projects.map(Z=>{const Ne=Z.visibilitySummary.tone;return c.jsxs(et,{to:"/projects/$projectName",params:{projectName:Z.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[c.jsx("span",{className:`sidebar-dot sidebar-dot-${Ne}`}),c.jsx("span",{children:Z.project.displayName||Z.project.name})]},Z.project.id)})]}):x?null:c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Resources"}),n&&c.jsxs(et,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(zj,{className:"sidebar-icon"}),c.jsx("span",{children:"Setup"})]})]})]}),e&&c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),c.jsx(xe,{type:"button",variant:"ghost",size:"sm",onClick:$t(async()=>{await _y(),window.location.reload()}),children:"Sign out"})]}),u?c.jsx("div",{className:"sidebar-footer",children:wv.map(({label:Z,href:Ne,Icon:Ae})=>c.jsx("a",{className:"sidebar-footer-icon",href:Ne,target:"_blank",rel:"noopener noreferrer",title:Z,"aria-label":Z,children:c.jsx(Ae,{className:"size-4"})},Ne))}):null]}),c.jsxs("div",{className:"main-area",children:[c.jsxs("header",{className:"topbar",children:[c.jsxs("div",{className:"topbar-left",children:[!le&&c.jsx(xe,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":X?"Show sidebar":"Hide sidebar","aria-controls":X?void 0:"desktop-sidebar","aria-expanded":!X,title:X?"Show sidebar":"Hide sidebar",onClick:we,children:X?c.jsx(Rj,{className:"size-4"}):c.jsx(Oj,{className:"size-4"})}),c.jsx("div",{className:"topbar-brand-mobile",children:c.jsx(uv,{compact:!0})}),c.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[c.jsx(et,{to:"/",children:"Home"}),c.jsx(m0,{className:"breadcrumb-sep size-3"}),c.jsx("span",{className:"breadcrumb-current",children:W})]})]}),c.jsxs("div",{className:"topbar-actions",children:[c.jsx(PV,{}),c.jsxs("div",{className:"health-pill-row",children:[c.jsxs("span",{className:`health-pill health-pill-${j.apiStatus.state}`,title:No(j.apiStatus),children:["API ",j.apiStatus.state==="ok"?"ok":j.apiStatus.state]}),c.jsxs("span",{className:`health-pill health-pill-${j.workerStatus.state}`,title:No(j.workerStatus),children:["Worker ",j.workerStatus.state==="ok"?"ok":j.workerStatus.state]})]}),c.jsxs(xe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":G,"aria-controls":"mobile-nav",onClick:()=>te(Z=>!Z),children:[c.jsx(Bj,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),c.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${G?"mobile-nav-open":""}`,children:[c.jsxs(xe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>te(!1),children:[c.jsx(zo,{className:"size-5"}),c.jsx("span",{className:"sr-only",children:"Close navigation"})]}),c.jsx(et,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),c.jsx(et,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),c.jsx(et,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),c.jsx(et,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),c.jsx(et,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),c.jsx(et,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),n&&c.jsx(et,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),ye&&ye.projects.length>0?c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),ye.projects.map(Z=>c.jsx(et,{to:"/projects/$projectName",params:{projectName:Z.project.name},className:"mobile-nav-link",children:Z.project.name},Z.project.id))]}):null,e&&c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),c.jsx(xe,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:$t(async()=>{await _y(),window.location.reload()}),children:"Sign out"})]})]})]}),c.jsx("main",{id:"content",className:"page-shell",children:x&&!s?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-40"}),c.jsx("div",{className:"skeleton-text-sm w-72"})]}),c.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(Z=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text w-full"}),c.jsx("div",{className:"skeleton-text-sm w-3/4"})]},Z))}),c.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(Z=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-20"}),c.jsx("div",{className:"space-y-2",children:[1,2,3].map(Ne=>c.jsx("div",{className:"skeleton-text-sm w-full"},Ne))})]},Z))})]}):c.jsx(zp,{})}),c.jsxs("footer",{className:"footer",children:[c.jsxs("span",{className:"footer-brand",children:[c.jsx("span",{children:c.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),j.apiStatus.version&&j.apiStatus.version!=="unknown"?c.jsxs("span",{className:"footer-version",children:["v",j.apiStatus.version]}):null]}),u?c.jsx("div",{className:"footer-links",children:wv.map(({label:Z,href:Ne,Icon:Ae})=>c.jsx("a",{href:Ne,target:"_blank",rel:"noopener noreferrer",title:Z,"aria-label":Z,className:"footer-icon",children:c.jsx(Ae,{className:"size-3.5"})},Ne))}):null]})]}),B&&!H&&Fe?c.jsx(Ap,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:U,children:c.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,B&&!H&&Oe.isError?c.jsx(Ap,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:U,children:c.jsx("p",{className:"text-sm text-negative",children:Oe.error instanceof Error?Oe.error.message:"Run details are unavailable."})}):null,H?c.jsxs(Ap,{open:!0,title:H.summary,subtitle:`${H.projectName} · ${H.kindLabel}`,onClose:U,children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[c.jsx(Ah,{status:H.status}),c.jsx("span",{className:"text-secondary",children:H.startedAt}),c.jsx("span",{className:"text-muted",children:H.duration}),c.jsx("span",{className:"text-faint",children:H.triggerLabel})]}),H.status==="failed"&&H.statusDetail&&c.jsx("p",{className:"mt-2 text-sm text-negative",children:H.statusDetail}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Fe?c.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):je?.snapshots&&je.snapshots.length>0?c.jsxs("div",{className:"space-y-2",children:[je.snapshots.map(Z=>c.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[c.jsx("p",{className:"text-sm font-medium text-strong truncate",children:Z.query??"Unknown query"}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx(LI,{provider:Z.provider}),c.jsx(B3,{variant:Z.citationState===su.cited?"success":"neutral",children:Z.citationState})]})]}),Z.model&&c.jsx("p",{className:"text-[11px] text-muted font-mono",children:Z.model}),Z.citedDomains.length>0&&c.jsxs("p",{className:"text-xs text-muted mt-1",children:[c.jsx("span",{className:"text-secondary",children:"Sources:"})," ",Z.citedDomains.join(", ")]}),Z.citedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",Z.citedCompetitorDomains.join(", ")]}),Z.mentionedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor mentioned: ",Z.mentionedCompetitorDomains.join(", ")]}),Z.groundingSources&&Z.groundingSources.length>0&&c.jsxs("details",{className:"mt-2",children:[c.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[Z.groundingSources.length," grounding source",Z.groundingSources.length!==1?"s":""]}),c.jsx("ul",{className:"mt-1 space-y-0.5",children:Z.groundingSources.map((Ne,Ae)=>{const st=s0(Ne.uri),Qe=Ne.title||Ne.uri;return c.jsx("li",{className:"text-xs text-muted truncate",children:st?c.jsx("a",{href:st,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:Qe}):c.jsx("span",{children:Qe})},Ae)})})]}),Z.answerText&&c.jsxs("details",{className:"mt-1",children:[c.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),c.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:Z.answerText})]})]},Z.id)),je.status==="running"&&c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):je&&je.status==="running"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):je&&je.status==="queued"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):je&&je.error?c.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[c.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:Jq(je.error)})]}):c.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,re?c.jsx(XI,{evidence:re.evidence,project:re.project,onClose:U}):null,c.jsx(uL,{}),c.jsx(MV,{}),f?c.jsx(aL,{}):null]})}class mL extends D.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,s){console.error("[ErrorBoundary]",n,s.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?c.jsx("div",{className:"page-container",children:c.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[c.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:c.jsx(Lv,{className:"size-6 text-negative-400"})}),c.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),c.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),c.jsxs("div",{className:"flex gap-3 mt-2",children:[c.jsxs(xe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[c.jsx(Vv,{className:"size-3.5 mr-1.5"}),"Try again"]}),c.jsx(xe,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const _a=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...n}));_a.displayName="Card";const Qr=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("flex flex-col gap-1.5 p-5",e),...n}));Qr.displayName="CardHeader";const Zr=D.forwardRef(({className:e,...n},s)=>c.jsx("h3",{ref:s,className:Ua("font-medium tracking-tight text-primary",e),...n}));Zr.displayName="CardTitle";const cu=D.forwardRef(({className:e,...n},s)=>c.jsx("p",{ref:s,className:Ua("text-sm text-muted",e),...n}));cu.displayName="CardDescription";const ho=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("p-5 pt-0",e),...n}));ho.displayName="CardContent";const pL=20,hL=6;function fL({points:e,tone:n}){const s=D.useId();if(e.length===0)return null;const r=42,u=132,f=5,g=u-f*2,b=r-f*2,x=b-hL,k=U=>f+U/Math.max(e.length-1,1)*g,S=Fq(e),C=Math.min(...e),j=Math.max(...e),E=Math.max(j-C,pL),B=(j+C)/2-E/2,q=e.map((U,G)=>`${k(G)},${f+(1-(U-B)/E)*x}`).join(" ");return c.jsxs("svg",{className:`sparkline sparkline-${n}${S?" sparkline-provisional":""}`,viewBox:`0 0 ${u} ${r}`,"aria-hidden":"true",children:[c.jsx("defs",{children:c.jsx("clipPath",{id:s,children:c.jsx("rect",{x:f,y:f,width:g,height:b,rx:"8"})})}),c.jsx("line",{className:"sparkline-guide",x1:f,x2:u-f,y1:r-f,y2:r-f}),c.jsx("polyline",{clipPath:`url(#${s})`,points:q,vectorEffect:"non-scaling-stroke"})]})}function gL({project:e}){return c.jsxs(et,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[c.jsx("div",{className:"project-row-chart",children:c.jsx(fL,{points:e.trend,tone:g3(e.lastRun.status)})}),c.jsxs("div",{className:"project-row-primary",children:[c.jsxs("div",{children:[c.jsx("p",{className:"project-name",children:e.project.name}),c.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),c.jsx("p",{className:"project-insight",children:e.insight})]}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),c.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.mentionScore}),c.jsx("p",{className:`metric-inline-caption${e.providerCoverage?" text-caution":""}`,title:e.providerCoverage,children:e.providerCoverage?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"sr-only",children:"Partial sweep: "}),e.providerCoverage]}):e.mentionDelta})]})}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsxs("p",{className:"metric-inline-label",children:[c.jsx("span",{"aria-hidden":"true",children:"Pressure"}),c.jsx("span",{className:"sr-only",children:"Competitor pressure"})]}),c.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel}),c.jsx("p",{className:"metric-inline-caption","aria-hidden":"true"})]})}),c.jsx("span",{className:"project-row-link",children:c.jsx(m0,{className:"h-4 w-4 text-muted"})})]})}function yL(){const e=pl(),{dashboard:n,isLoading:s,isError:r,refetch:u}=Iu(),f=n??e?.dashboard,b=Ch(!e,e?.health),{openRun:x}=Nh();if(r&&!f)return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio unavailable"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project list."})]})}),c.jsxs("div",{className:"max-w-xl rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Your projects have not been changed."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",variant:"secondary",className:"mt-4",onClick:()=>{u()},children:"Retry loading portfolio"})]})]});if(!f||s)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-32"}),c.jsx("div",{className:"skeleton-text-sm w-64"})]}),c.jsx("div",{className:"space-y-3",children:[1,2,3].map(j=>c.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-2",children:[c.jsx("div",{className:"skeleton-text w-36"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},j))})]});const k=f.portfolioOverview,S=b.data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},C=qP(k.systemHealth,S,f.settings);return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio"}),c.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]})}),k.projects.length>0?c.jsx("div",{className:"project-list project-list-scrollable",children:k.projects.map(j=>c.jsx(gL,{project:j},j.project.id))}):c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h3",{children:k.emptyState?.title??"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:k.emptyState?.detail}),c.jsx(xe,{size:"sm",asChild:!0,children:c.jsx(et,{to:k.emptyState?.ctaHref==="/setup"||!k.emptyState?.ctaHref?"/setup":"/",children:k.emptyState?.ctaLabel??"Launch setup"})})]}),c.jsxs("div",{className:"overview-secondary-grid",children:[k.attentionItems.length>0&&c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),c.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),c.jsx("div",{className:"attention-list attention-list-scrollable",children:k.attentionItems.map(j=>j.href?c.jsxs(et,{to:j.href,className:`attention-item attention-item-${j.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:j.title}),c.jsx("p",{className:"attention-detail",children:j.detail})]}),j.actionLabel&&c.jsx("span",{className:"attention-action",children:j.actionLabel})]},j.id):c.jsxs("div",{className:`attention-item attention-item-static attention-item-${j.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:j.title}),c.jsx("p",{className:"attention-detail",children:j.detail})]}),j.actionLabel&&c.jsx("span",{className:"attention-action",children:j.actionLabel})]},j.id))})]}),c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),c.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),c.jsx("div",{className:"compact-stack compact-stack-scrollable",children:k.recentRuns.length>0?k.recentRuns.map(j=>c.jsxs("button",{className:"compact-run",type:"button",onClick:()=>x(j.id),children:[c.jsxs("div",{children:[c.jsx("p",{className:"compact-run-title",children:j.projectName}),c.jsx("p",{className:"compact-run-detail",children:j.summary})]}),c.jsx(Ah,{status:j.status})]},j.id)):c.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),c.jsxs("section",{className:"page-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),c.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),c.jsx("div",{className:"divide-y divide-default border-y border-default",children:C.map(j=>{const E=j.id==="api"?S.apiStatus:j.id==="worker"?S.workerStatus:void 0,B=E?E.state==="ok"?void 0:No(E):j.tone==="positive"?void 0:j.meta;return c.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:j.label}),B&&c.jsx("p",{className:"mt-1 text-sm text-secondary",children:B})]}),c.jsx(ga,{tone:j.tone,title:E?No(E):j.meta,children:j.detail})]},j.id)})})]})]})}function bL({onApplied:e}){const[n,s]=D.useState(""),[r,u]=D.useState(!1),[f,g]=D.useState([]),[b,x]=D.useState([]);if(sA())return null;const k=async()=>{if(!n.trim())return;u(!0),g([]),x([]);const S=Pj(n),C=[],j=[];for(let E=0;E<S.length;E++){const B=S[E];if(B.errors.length>0){C.push(`Document ${E+1}: ${B.errors[0]?.message}`);continue}const q=B.toJSON();if(!(!q||typeof q!="object"))try{const U=await _A(q);j.push(`Applied "${U.displayName||U.name}" (revision ${U.configRevision})`)}catch(U){C.push(`Document ${E+1}: ${q_(U)}`)}}g(j),x(C),u(!1),j.length>0&&(Yt({title:"YAML applied",detail:`Applied ${j.length} document${j.length===1?"":"s"} successfully.`,tone:C.length>0?"caution":"positive",dedupeKey:"yaml:apply",dedupeMode:"replace"}),e())};return c.jsxs("section",{className:"mt-8",children:[c.jsx("div",{className:"page-section-divider"}),c.jsx("div",{className:"section-head mt-6",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Config as code"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Apply YAML"})]})}),c.jsxs("p",{className:"text-muted text-sm mb-3",children:["Paste a ",c.jsx("code",{className:"text-secondary",children:"canonry.yaml"})," config (multi-document YAML with ",c.jsx("code",{className:"text-secondary",children:"---"})," separators supported)."]}),c.jsx("textarea",{className:"setup-input w-full font-mono text-xs",rows:10,placeholder:`apiVersion: canonry/v1
|
|
63
|
+
`)}}}finally{g?.removeEventListener("abort",E);try{S.releaseLock()}catch{}}}function H3(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const KV=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],QV=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],$c=e=>`canonry:aero:provider:${e}`,vv=e=>`canonry:aero:scope:${e}`;function ZV({projectName:e}){const[n,s]=D.useState(!1),[r,u]=D.useState(!1),[f,g]=D.useState([]),[b,x]=D.useState(""),[k,S]=D.useState(!1),[C,j]=D.useState([]),[E,B]=D.useState(""),[q,U]=D.useState(null),[G,te]=D.useState(()=>typeof window>"u"?null:window.localStorage.getItem($c(e))??null),[X,ae]=D.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(vv(e))==="all"?"all":"read-only"),oe=D.useRef(null),{ref:ge}=UV([f,E,C]),M=D.useRef(null),[J,_e]=D.useState(0),he=D.useMemo(()=>{const H=b.trimStart();if(!H.startsWith("/"))return[];if(/\s/.test(H))return[];const ue=H.toLowerCase();return QV.filter(ie=>ie.command.startsWith(ue)||ie.label.toLowerCase().includes(ue.slice(1)))},[b]);D.useEffect(()=>{_e(H=>he.length===0?0:Math.min(H,he.length-1))},[he.length]);const we=Ft({...MP({client:se,path:{name:e}}),enabled:n,staleTime:6e4}),Oe=D.useMemo(()=>{const H=we.data?.providers??[];if(G){const ie=H.find(re=>re.id===G&&re.configured);if(ie)return ie}const ue=we.data?.defaultProvider;return ue?H.find(ie=>ie.id===ue)??null:null},[G,we.data]);D.useEffect(()=>{if(!we.data||!G)return;we.data.providers.find(ue=>ue.id===G&&ue.configured)||(te(null),window.localStorage.removeItem($c(e)))},[we.data,G,e]);const je=D.useCallback(H=>{te(H),!(typeof window>"u")&&(H?window.localStorage.setItem($c(e),H):window.localStorage.removeItem($c(e)))},[e]),Fe=D.useCallback(()=>{ae(H=>{const ue=H==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(vv(e),ue),ue})},[e]);D.useEffect(()=>{if(!n)return;const H=ue=>{ue.key==="Escape"&&(r?u(!1):s(!1))};return window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)},[n,r]),D.useEffect(()=>{if(!n)return;let H=!1;U(null);const ue=()=>{H||k||bv(e).then(W=>{H||g(W.messages)}).catch(W=>{H||U(W instanceof Error?W.message:"Failed to load transcript")})};ue();const re=window.setInterval(ue,15e3);return()=>{H=!0,window.clearInterval(re)}},[n,e,k]),D.useEffect(()=>()=>{oe.current?.abort()},[e]);async function ye(H){const ue=H.trim();if(!ue||k)return;U(null),x(""),S(!0),B(""),j([]);const ie={role:"user",content:ue,timestamp:Date.now()};g(W=>[...W,ie]);const re=new AbortController;oe.current=re;try{await HV({project:e,prompt:ue,provider:G??void 0,scope:X,signal:re.signal,onEvent:V});const W=await bv(e);g(W.messages)}catch(W){W.name!=="AbortError"&&U(W instanceof Error?W.message:"Prompt failed")}finally{S(!1),B(""),oe.current=null}}function V(H){switch(H.type){case"message_update":B(H3(H.message));break;case"message_end":H.message.role==="assistant"&&B("");break;case"tool_execution_start":j(ue=>[...ue,{id:H.toolCallId,name:H.toolName,args:H.args,startedAt:Date.now()}]);break;case"tool_execution_end":j(ue=>ue.map(ie=>ie.id===H.toolCallId?{...ie,endedAt:Date.now(),isError:H.isError,result:H.result}:ie));break;case"error":U(H.message);break}}async function ne(){oe.current?.abort();try{await $V(e),g([]),U(null)}catch(H){U(H instanceof Error?H.message:"Reset failed")}}const fe=f.length===0,De=n&&r?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",le=r?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",at=r?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return c.jsx("div",{className:De,onClick:H=>{r&&H.target===H.currentTarget&&u(!1)},children:c.jsx("div",{className:le,children:n?c.jsxs("div",{className:r?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(yy,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),c.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:k?"working…":e})]}),c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(FV,{providers:we.data?.providers??[],active:Oe,override:G,onPick:je,disabled:k}),c.jsx("button",{type:"button",onClick:$t(ne),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:c.jsx(Vv,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>u(H=>!H),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":r?"Collapse":"Expand",title:r?"Collapse":"Expand",children:r?c.jsx(bj,{className:"h-3.5 w-3.5","aria-hidden":"true"}):c.jsx(vj,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>{u(!1),s(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:c.jsx(zo,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),c.jsxs("div",{ref:ge,className:at,children:[q&&c.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:q}),fe&&!k&&c.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[c.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",c.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:KV.map(H=>c.jsx("button",{type:"button",onClick:()=>{ye(H.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:H.label},H.label))})]}),eL(f,e,G,X),C.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:C.map(H=>c.jsx(K3,{trail:H},H.id))}),k&&E&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(Q3,{content:E})]}),k&&!E&&C.every(H=>H.endedAt!==void 0)&&c.jsx(iL,{})]}),c.jsx(YV,{projectName:e,activeProvider:Oe,scope:X,onToggleScope:Fe,disabled:k}),c.jsxs("div",{className:"relative",children:[he.length>0&&c.jsx(XV,{matches:he,selectedIndex:J,onHover:_e,onPick:H=>{x(""),M.current?.focus(),H.action==="clear"?ne():ye(H.prompt)}}),c.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:H=>{if(H.preventDefault(),he.length>0){const ue=he[J];x(""),ue.action==="clear"?ne():ye(ue.prompt);return}ye(b)},children:[c.jsx("textarea",{ref:M,value:b,onChange:H=>x(H.target.value),onKeyDown:H=>{if(he.length>0){if(H.key==="ArrowDown"){H.preventDefault(),_e(ue=>(ue+1)%he.length);return}if(H.key==="ArrowUp"){H.preventDefault(),_e(ue=>(ue-1+he.length)%he.length);return}if(H.key==="Tab"){H.preventDefault();const ue=he[J];x(`${ue.command} `);return}if(H.key==="Escape"){H.preventDefault(),x("");return}}if(H.key==="Enter"&&!H.shiftKey)if(H.preventDefault(),he.length>0){const ue=he[J];x(""),ue.action==="clear"?ne():ye(ue.prompt)}else ye(b)},placeholder:"Ask Aero, or / for commands…",disabled:k,rows:r?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),c.jsx("button",{type:"submit",disabled:k||!b.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:c.jsx(xj,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):c.jsx("button",{type:"button",onClick:()=>s(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(yy,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function FV({providers:e,active:n,override:s,onPick:r,disabled:u}){const[f,g]=D.useState(!1),b=D.useRef(null);if(D.useEffect(()=>{if(!f)return;const k=C=>{b.current?.contains(C.target)||g(!1)},S=C=>{C.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",k),window.addEventListener("keydown",S),()=>{window.removeEventListener("mousedown",k),window.removeEventListener("keydown",S)}},[f]),e.length===0)return null;const x=n?.label.replace(/\s+\(.+\)$/,"")??"No provider";return c.jsxs("div",{ref:b,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>g(k=>!k),disabled:u,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":f,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[c.jsx("span",{className:"font-medium text-strong",children:x}),c.jsx(u0,{className:"h-3 w-3","aria-hidden":"true"})]}),f&&c.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),c.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(k=>{const S=n?.id===k.id,C=s===k.id;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":S,disabled:!k.configured,onClick:()=>{k.configured&&(r(C?null:k.id),g(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:k.configured?k.defaultModel:`Add ${JV(k.id)} in Settings or your environment`,children:[c.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:S?c.jsx(d0,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:k.label.replace(/\s+\(.+\)$/,"")}),C&&c.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!k.configured&&c.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},k.id)})}),s&&c.jsx("button",{type:"button",onClick:()=>{r(null),g(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function YV({projectName:e,activeProvider:n,scope:s,onToggleScope:r,disabled:u}){const f=n?.label.replace(/\s+\(.+\)$/,"")??null,g=s==="all";return c.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[c.jsx("span",{className:"font-medium text-strong",children:e}),f&&c.jsxs(c.Fragment,{children:[c.jsx("span",{"aria-hidden":"true",children:"·"}),c.jsx("span",{children:f})]}),c.jsx("button",{type:"button",onClick:r,disabled:u,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${g?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:g?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:g?"Can make changes":"Read only"})]})}function XV({matches:e,selectedIndex:n,onHover:s,onPick:r}){return c.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),c.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((u,f)=>{const g=f===n;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":g,onMouseEnter:()=>s(f),onClick:()=>r(u),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${g?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[c.jsx("span",{className:"font-medium",children:u.label}),c.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:u.command})]})},u.command)})})]})}function JV(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function WV(e,n){const s=e.timestamp??0;return`${e.role}:${s}:${n}`}function eL(e,n,s,r){const u=[];for(let f=0;f<e.length;f++){const g=e[f],b=WV(g,f);if(g.role==="user"){const x=typeof g.content=="string"?g.content:JSON.stringify(g.content);if(x.startsWith("[system]"))continue;u.push(c.jsx(tL,{text:x,projectName:n,providerOverride:s,scope:r},b));continue}if(g.role==="assistant"){const x=new Map;let k=f+1;for(;k<e.length&&e[k].role==="toolResult";){const j=e[k];x.set(j.toolCallId,j),k++}const S=nL(g,x,g.timestamp??0),C=H3(g);u.push(c.jsxs(D.Fragment,{children:[S.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(j=>c.jsx(K3,{trail:j},j.id))}),C.trim()&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(Q3,{content:C})]})]},b)),f=k-1;continue}}return u}function tL({text:e,projectName:n,providerOverride:s,scope:r}){const[u,f]=D.useState(!1),g=D.useMemo(()=>aL(n,e,s,r),[n,e,s,r]);async function b(){try{await navigator.clipboard.writeText(g),f(!0),window.setTimeout(()=>f(!1),1500)}catch{}}return c.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),c.jsx("button",{type:"button",onClick:$t(b),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:g,children:u?c.jsxs(c.Fragment,{children:[c.jsx(d0,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):c.jsxs(c.Fragment,{children:[c.jsx(Uv,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),c.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function aL(e,n,s,r){const u=["canonry","agent","ask",xv(e),xv(n)];return s&&u.push("--provider",s),r==="read-only"&&u.push("--scope","read-only"),u.join(" ")}function xv(e){return`'${e.replace(/'/g,"'\\''")}'`}function nL(e,n,s){const r=[];for(const u of e.content){if(u.type!=="toolCall")continue;const f=u,g=n.get(f.id);r.push({id:f.id,name:f.name,args:f.arguments,startedAt:s,endedAt:g?.timestamp,isError:g?.isError,result:g?.content})}return r}function K3({trail:e}){const[n,s]=D.useState(!1),r=e.endedAt===void 0,u=!r&&e.isError===!0,f=e.endedAt!=null?e.endedAt-e.startedAt:null,g=f==null||f<0?null:f<1e3?`${f}ms`:`${(f/1e3).toFixed(1)}s`,b=u?"border-negative-800/50":r?"border-positive-800/50":"border-mono-800/70",x=u?"bg-negative-950/20":r?"bg-positive-950/20":"bg-surface-hover";return c.jsxs("div",{className:`rounded-md border ${b} ${x} font-mono`,children:[c.jsxs("button",{type:"button",onClick:()=>s(k=>!k),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[c.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?c.jsx(bo,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):u?c.jsx(Lv,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):c.jsx(kj,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),c.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),c.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[r?c.jsx("span",{className:"text-positive-400",children:"running…"}):c.jsxs(c.Fragment,{children:[c.jsx("span",{children:u?"failed":"ok"}),g&&c.jsx("span",{children:g})]}),c.jsx(m0,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&c.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),c.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:kv(e.args)}),!r&&e.result!==void 0&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:u?"Error":"Result"}),c.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:kv(e.result)})]})]})]})}function kv(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
|
|
64
|
+
… (${n.length-2e3} more chars)`:n}catch{return String(e)}}function Q3({content:e}){return c.jsx("div",{className:"text-heading",children:c.jsx(Mj,{components:{h1:n=>c.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:n=>c.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:n=>c.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:n=>c.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:n=>c.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>c.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>c.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>c.jsx("li",{...n,className:"marker:text-mono-600"}),strong:n=>c.jsx("strong",{...n,className:"font-semibold text-primary"}),em:n=>c.jsx("em",{...n,className:"text-strong"}),code:({children:n,...s})=>c.jsx("code",{...s,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:n}),pre:n=>c.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:n=>c.jsx("a",{...n,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>c.jsx("div",{className:"mb-2 overflow-x-auto",children:c.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>c.jsx("thead",{...n,className:"border-b border-base"}),th:n=>c.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:n=>c.jsx("tr",{...n,className:"border-b border-mono-900"}),td:n=>c.jsx("td",{...n,className:"px-2 py-1 text-strong"}),blockquote:n=>c.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>c.jsx("hr",{className:"my-3 border-base"})},children:e})})}function iL(){return c.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[c.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),c.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),c.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function sL(){const e=Rv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),s=n?decodeURIComponent(n[1]):null,r=Ft({...gs({client:se}),enabled:s!==null,staleTime:6e4});if(!s)return null;const u=r.data??[],f=u.find(g=>g.id===s)??u.find(g=>g.name===s);return f?c.jsx(ZV,{projectName:f.name},f.name):null}const oL={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",googleAds:"getApiV1ProjectsByNameGoogleAds",gtm:"getApiV1ProjectsByNameGtm",conversionTracking:"getApiV1ProjectsByNameConversionTracking",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function fa(e,n){const s=oL[n];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(s)}})}function tl(e,n,s){switch(e.invalidateQueries({queryKey:xh({client:se})}),e.invalidateQueries({queryKey:Ai({client:se})}),fa(e,"runs"),n){case Te["answer-visibility"]:return;case Te["backlink-extract"]:return;case Te["site-audit"]:fa(e,"technicalAeo");return;case Te["gsc-sync"]:case Te["inspect-sitemap"]:fa(e,"gsc");return;case Te["ga-sync"]:fa(e,"ga");return;case Te["traffic-sync"]:fa(e,"ga"),fa(e,"traffic");return;case Te["bing-inspect"]:case Te["bing-inspect-sitemap"]:fa(e,"bing");return;case Te["aeo-discover-seed"]:case Te["aeo-discover-probe"]:return;case Te["gbp-sync"]:fa(e,"gbp");return;case Te["ads-sync"]:fa(e,"ads");return;case Te["google-ads-sync"]:fa(e,"googleAds"),fa(e,"conversionTracking");return;case Te["gtm-sync"]:fa(e,"gtm"),fa(e,"conversionTracking");return;default:return n}}const wv=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:Dj},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:Ej},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:Tj}],Sv=e=>({label:e,state:"checking",detail:"Checking service health"}),rL={apiStatus:Sv("API"),workerStatus:Sv("Worker")};function lL(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function cL(e){const n=Kr(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function uL(e,n){return e.error?`${n}: ${J0(e.error)}`:e.location?`${n} · ${e.location}`:n}function jv(e,n,s){if(n)return n;const r=s.find(u=>u.id===e);return r?.displayName||r?.name||e}function dL(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function mL(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function pL(){const e=Vn(),n=D.useSyncExternalStore(v3,In,In),s=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,r=Ft({...kh({client:se}),enabled:s,staleTime:vo,refetchInterval:3e3}),u=Ft({...gs({client:se}),enabled:s}),f=D.useRef({}),g=D.useCallback(()=>{r.refetch()},[r.refetch]);return D.useEffect(()=>{s&&g()},[s,g]),D.useEffect(()=>{if(!s||typeof window>"u")return;const b=()=>{document.visibilityState==="visible"&&g()};return window.addEventListener("focus",g),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",g),document.removeEventListener("visibilitychange",b)}},[s,g]),D.useEffect(()=>{const b=r.data??[],x=u.data??[],k=Object.fromEntries(b.map(C=>[C.id,C])),S=Object.fromEntries(b.map(C=>[C.id,C.status]));for(const C of Object.values(n.runs)){const j=k[C.runId];if(!j||!ZP(j.status)||(f.current[j.id]??C.lastAnnouncedStatus)===j.status)continue;const B=x.find(U=>U.id===j.projectId);if(B&&tl(e,j.kind,B.name),C.sourceAction==="run-all"){Sp(j.id);continue}const q=jv(j.projectId,C.projectLabel,x);Yt({title:cL(j),detail:uL(j,q),tone:lL(j.status),dedupeKey:`run:${j.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:j.id}}),Sp(j.id)}if(r.data!==void 0){const C=new Set(b.map(E=>E.id)),j=YP(Object.values(n.runs),C,Date.now(),FP);for(const E of j){const B=x.find(q=>q.id===E.projectId);B&&tl(e,E.kind,B.name),E.sourceAction!=="run-all"&&Yt({title:`${Kr(E.kind)} status unavailable`,detail:jv(E.projectId,E.projectLabel,x),tone:"neutral",dedupeKey:`run-stale:${E.runId}`,dedupeMode:"replace"}),Sp(E.runId)}}for(const C of Object.values(n.batches)){const j=XP(C.runIds,k);j.finished&&(Yt({title:"Run-all batch finished",detail:dL(j,C.skippedCount),tone:mL(j),dedupeKey:`batch:${C.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),QP(C.batchId))}f.current=S},[u.data,r.data,n,e]),null}function hL(){const{account:e,isAdmin:n}=al(),s=pl(),r=D.useMemo(()=>sx(),[]),u=D.useMemo(aA,[]),f=D.useMemo(nA,[]),g=D.useMemo(iA,[]),{dashboard:b,isLoading:x,refetch:k}=Iu(void 0,{includeSettings:!r}),j=Ch(!s,s?.health).data??s?.health??rL,E=Rv(),{runId:B,evidenceId:q,closeDrawer:U}=Nh(),[G,te]=D.useState(!1),[X,ae]=D.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[oe,ge]=D.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[M]=D.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),J=M?{current:j.apiStatus.version??"0.0.0",latest:M,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:j.apiStatus.updateAvailable,_e=g&&J&&J.latest!==oe,he=()=>{if(J){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",J.latest)}catch{}ge(J.latest)}},we=()=>{const Z=!X;try{Z?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}ae(Z)},Oe=MV(B),je=Oe.data??null,Fe=Oe.isLoading;D.useEffect(()=>{je&&je.status!=="running"&&je.status!=="queued"&&k()},[je?.status,k]),D.useEffect(()=>{te(!1)},[E.pathname]),D.useEffect(()=>{if(typeof window>"u"||!B&&!q)return;const Z=Ne=>{Ne.key==="Escape"&&U()};return window.addEventListener("keydown",Z),()=>{window.removeEventListener("keydown",Z)}},[B,q,U]);const ye=b??s?.dashboard??null,V=E.pathname==="/setup",ne=V&&ye!==null&&ye.portfolioOverview.projects.length===0,[fe,De]=D.useState(ne);D.useEffect(()=>{V?ne&&De(!0):De(!1)},[ne,V]);const le=V&&(ne||fe),at=le?"app-shell-focus":X?"app-shell-sidebar-hidden":"",H=B?(ye?cV(ye,B):void 0)??(je?Pu(je,ye?.projects.find(Z=>Z.project.id===je.projectId)?.project.displayName??ye?.projects.find(Z=>Z.project.id===je.projectId)?.project.name??"Unknown project"):void 0):void 0,ue=D.useMemo(()=>nV(E.pathname,ye),[E.pathname,ye]),{commandCenter:ie}=OV(ue),re=D.useMemo(()=>{if(q)return dV(ie,ye,q)},[q,ie,ye]),W=(()=>{const Z=E.pathname;if(Z==="/")return"Portfolio";if(Z==="/projects")return"Projects";if(Z==="/runs")return"Runs";if(Z==="/history")return"History";if(Z==="/settings")return"Settings";if(Z==="/setup")return"Setup";if(Z==="/backlinks")return"Backlink data";if(Z==="/traffic"||Z.startsWith("/traffic/"))return"Traffic sources";if(Z.startsWith("/projects/")){const Ae=Z.split("/").filter(Boolean)[1];if(Ae&&ye){const st=ye.projects.find(Qe=>Qe.project.id===Ae);if(st)return st.project.name}return"Project"}return"Not found"})();if(r){const Z=!r.views||r.views.includes(iM(E.pathname));return c.jsxs("div",{className:"app-shell app-shell-embed","data-theme":lM(r.theme),style:cM(r.theme),children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx("main",{id:"content",className:"page-shell",children:Z?c.jsx(zp,{}):c.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return c.jsxs("div",{className:`app-shell ${at}`,children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!le&&!X&&c.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[c.jsx("div",{className:"sidebar-brand",children:c.jsx(uv,{version:j.apiStatus.version,updateAvailable:_e?J:null,onDismissUpdate:he})}),c.jsxs("nav",{className:"sidebar-nav",children:[c.jsxs(et,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(wj,{className:"sidebar-icon"}),c.jsx("span",{children:"Portfolio"})]}),c.jsxs(et,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(Sj,{className:"sidebar-icon"}),c.jsx("span",{children:"Projects"})]}),c.jsxs(et,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(jj,{className:"sidebar-icon"}),c.jsx("span",{children:"Runs"})]}),c.jsxs(et,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(Aj,{className:"sidebar-icon"}),c.jsx("span",{children:"History"})]}),c.jsxs(et,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(Cj,{className:"sidebar-icon"}),c.jsx("span",{children:"Traffic sources"})]}),c.jsxs(et,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(Nj,{className:"sidebar-icon"}),c.jsx("span",{children:"Backlink data"})]}),n&&c.jsxs(et,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(_j,{className:"sidebar-icon"}),c.jsx("span",{children:"Settings"})]}),x?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(Z=>c.jsxs("div",{className:"sidebar-skeleton-item",children:[c.jsx("span",{className:"skeleton-circle size-2"}),c.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+Z*15}%`}})]},Z))]}):ye&&ye.projects.length>0?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),ye.projects.map(Z=>{const Ne=Z.visibilitySummary.tone;return c.jsxs(et,{to:"/projects/$projectName",params:{projectName:Z.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[c.jsx("span",{className:`sidebar-dot sidebar-dot-${Ne}`}),c.jsx("span",{children:Z.project.displayName||Z.project.name})]},Z.project.id)})]}):x?null:c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Resources"}),n&&c.jsxs(et,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(zj,{className:"sidebar-icon"}),c.jsx("span",{children:"Setup"})]})]})]}),e&&c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),c.jsx(xe,{type:"button",variant:"ghost",size:"sm",onClick:$t(async()=>{await _y(),window.location.reload()}),children:"Sign out"})]}),u?c.jsx("div",{className:"sidebar-footer",children:wv.map(({label:Z,href:Ne,Icon:Ae})=>c.jsx("a",{className:"sidebar-footer-icon",href:Ne,target:"_blank",rel:"noopener noreferrer",title:Z,"aria-label":Z,children:c.jsx(Ae,{className:"size-4"})},Ne))}):null]}),c.jsxs("div",{className:"main-area",children:[c.jsxs("header",{className:"topbar",children:[c.jsxs("div",{className:"topbar-left",children:[!le&&c.jsx(xe,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":X?"Show sidebar":"Hide sidebar","aria-controls":X?void 0:"desktop-sidebar","aria-expanded":!X,title:X?"Show sidebar":"Hide sidebar",onClick:we,children:X?c.jsx(Rj,{className:"size-4"}):c.jsx(Oj,{className:"size-4"})}),c.jsx("div",{className:"topbar-brand-mobile",children:c.jsx(uv,{compact:!0})}),c.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[c.jsx(et,{to:"/",children:"Home"}),c.jsx(m0,{className:"breadcrumb-sep size-3"}),c.jsx("span",{className:"breadcrumb-current",children:W})]})]}),c.jsxs("div",{className:"topbar-actions",children:[c.jsx(LV,{}),c.jsxs("div",{className:"health-pill-row",children:[c.jsxs("span",{className:`health-pill health-pill-${j.apiStatus.state}`,title:No(j.apiStatus),children:["API ",j.apiStatus.state==="ok"?"ok":j.apiStatus.state]}),c.jsxs("span",{className:`health-pill health-pill-${j.workerStatus.state}`,title:No(j.workerStatus),children:["Worker ",j.workerStatus.state==="ok"?"ok":j.workerStatus.state]})]}),c.jsxs(xe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":G,"aria-controls":"mobile-nav",onClick:()=>te(Z=>!Z),children:[c.jsx(Bj,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),c.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${G?"mobile-nav-open":""}`,children:[c.jsxs(xe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>te(!1),children:[c.jsx(zo,{className:"size-5"}),c.jsx("span",{className:"sr-only",children:"Close navigation"})]}),c.jsx(et,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),c.jsx(et,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),c.jsx(et,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),c.jsx(et,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),c.jsx(et,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),c.jsx(et,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),n&&c.jsx(et,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),ye&&ye.projects.length>0?c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),ye.projects.map(Z=>c.jsx(et,{to:"/projects/$projectName",params:{projectName:Z.project.name},className:"mobile-nav-link",children:Z.project.name},Z.project.id))]}):null,e&&c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),c.jsx(xe,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:$t(async()=>{await _y(),window.location.reload()}),children:"Sign out"})]})]})]}),c.jsx("main",{id:"content",className:"page-shell",children:x&&!s?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-40"}),c.jsx("div",{className:"skeleton-text-sm w-72"})]}),c.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(Z=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text w-full"}),c.jsx("div",{className:"skeleton-text-sm w-3/4"})]},Z))}),c.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(Z=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-20"}),c.jsx("div",{className:"space-y-2",children:[1,2,3].map(Ne=>c.jsx("div",{className:"skeleton-text-sm w-full"},Ne))})]},Z))})]}):c.jsx(zp,{})}),c.jsxs("footer",{className:"footer",children:[c.jsxs("span",{className:"footer-brand",children:[c.jsx("span",{children:c.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),j.apiStatus.version&&j.apiStatus.version!=="unknown"?c.jsxs("span",{className:"footer-version",children:["v",j.apiStatus.version]}):null]}),u?c.jsx("div",{className:"footer-links",children:wv.map(({label:Z,href:Ne,Icon:Ae})=>c.jsx("a",{href:Ne,target:"_blank",rel:"noopener noreferrer",title:Z,"aria-label":Z,className:"footer-icon",children:c.jsx(Ae,{className:"size-3.5"})},Ne))}):null]})]}),B&&!H&&Fe?c.jsx(Ap,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:U,children:c.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,B&&!H&&Oe.isError?c.jsx(Ap,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:U,children:c.jsx("p",{className:"text-sm text-negative",children:Oe.error instanceof Error?Oe.error.message:"Run details are unavailable."})}):null,H?c.jsxs(Ap,{open:!0,title:H.summary,subtitle:`${H.projectName} · ${H.kindLabel}`,onClose:U,children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[c.jsx(Ah,{status:H.status}),c.jsx("span",{className:"text-secondary",children:H.startedAt}),c.jsx("span",{className:"text-muted",children:H.duration}),c.jsx("span",{className:"text-faint",children:H.triggerLabel})]}),H.status==="failed"&&H.statusDetail&&c.jsx("p",{className:"mt-2 text-sm text-negative",children:H.statusDetail}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Fe?c.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):je?.snapshots&&je.snapshots.length>0?c.jsxs("div",{className:"space-y-2",children:[je.snapshots.map(Z=>c.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[c.jsx("p",{className:"text-sm font-medium text-strong truncate",children:Z.query??"Unknown query"}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx($I,{provider:Z.provider}),c.jsx(B3,{variant:Z.citationState===su.cited?"success":"neutral",children:Z.citationState})]})]}),Z.model&&c.jsx("p",{className:"text-[11px] text-muted font-mono",children:Z.model}),Z.citedDomains.length>0&&c.jsxs("p",{className:"text-xs text-muted mt-1",children:[c.jsx("span",{className:"text-secondary",children:"Sources:"})," ",Z.citedDomains.join(", ")]}),Z.citedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",Z.citedCompetitorDomains.join(", ")]}),Z.mentionedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor mentioned: ",Z.mentionedCompetitorDomains.join(", ")]}),Z.groundingSources&&Z.groundingSources.length>0&&c.jsxs("details",{className:"mt-2",children:[c.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[Z.groundingSources.length," grounding source",Z.groundingSources.length!==1?"s":""]}),c.jsx("ul",{className:"mt-1 space-y-0.5",children:Z.groundingSources.map((Ne,Ae)=>{const st=s0(Ne.uri),Qe=Ne.title||Ne.uri;return c.jsx("li",{className:"text-xs text-muted truncate",children:st?c.jsx("a",{href:st,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:Qe}):c.jsx("span",{children:Qe})},Ae)})})]}),Z.answerText&&c.jsxs("details",{className:"mt-1",children:[c.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),c.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:Z.answerText})]})]},Z.id)),je.status==="running"&&c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):je&&je.status==="running"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):je&&je.status==="queued"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):je&&je.error?c.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[c.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:tM(je.error)})]}):c.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,re?c.jsx(eV,{evidence:re.evidence,project:re.project,onClose:U}):null,c.jsx(pL,{}),c.jsx(VV,{}),f?c.jsx(sL,{}):null]})}class fL extends D.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,s){console.error("[ErrorBoundary]",n,s.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?c.jsx("div",{className:"page-container",children:c.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[c.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:c.jsx(Lv,{className:"size-6 text-negative-400"})}),c.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),c.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),c.jsxs("div",{className:"flex gap-3 mt-2",children:[c.jsxs(xe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[c.jsx(Vv,{className:"size-3.5 mr-1.5"}),"Try again"]}),c.jsx(xe,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const _a=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...n}));_a.displayName="Card";const Qr=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("flex flex-col gap-1.5 p-5",e),...n}));Qr.displayName="CardHeader";const Zr=D.forwardRef(({className:e,...n},s)=>c.jsx("h3",{ref:s,className:Ua("font-medium tracking-tight text-primary",e),...n}));Zr.displayName="CardTitle";const cu=D.forwardRef(({className:e,...n},s)=>c.jsx("p",{ref:s,className:Ua("text-sm text-muted",e),...n}));cu.displayName="CardDescription";const ho=D.forwardRef(({className:e,...n},s)=>c.jsx("div",{ref:s,className:Ua("p-5 pt-0",e),...n}));ho.displayName="CardContent";const gL=20,yL=6;function bL({points:e,tone:n}){const s=D.useId();if(e.length===0)return null;const r=42,u=132,f=5,g=u-f*2,b=r-f*2,x=b-yL,k=U=>f+U/Math.max(e.length-1,1)*g,S=Jq(e),C=Math.min(...e),j=Math.max(...e),E=Math.max(j-C,gL),B=(j+C)/2-E/2,q=e.map((U,G)=>`${k(G)},${f+(1-(U-B)/E)*x}`).join(" ");return c.jsxs("svg",{className:`sparkline sparkline-${n}${S?" sparkline-provisional":""}`,viewBox:`0 0 ${u} ${r}`,"aria-hidden":"true",children:[c.jsx("defs",{children:c.jsx("clipPath",{id:s,children:c.jsx("rect",{x:f,y:f,width:g,height:b,rx:"8"})})}),c.jsx("line",{className:"sparkline-guide",x1:f,x2:u-f,y1:r-f,y2:r-f}),c.jsx("polyline",{clipPath:`url(#${s})`,points:q,vectorEffect:"non-scaling-stroke"})]})}function vL({project:e}){return c.jsxs(et,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[c.jsx("div",{className:"project-row-chart",children:c.jsx(bL,{points:e.trend,tone:g3(e.lastRun.status)})}),c.jsxs("div",{className:"project-row-primary",children:[c.jsxs("div",{children:[c.jsx("p",{className:"project-name",children:e.project.name}),c.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),c.jsx("p",{className:"project-insight",children:e.insight})]}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),c.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.mentionScore}),c.jsx("p",{className:`metric-inline-caption${e.providerCoverage?" text-caution":""}`,title:e.providerCoverage,children:e.providerCoverage?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"sr-only",children:"Partial sweep: "}),e.providerCoverage]}):e.mentionDelta})]})}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsxs("p",{className:"metric-inline-label",children:[c.jsx("span",{"aria-hidden":"true",children:"Pressure"}),c.jsx("span",{className:"sr-only",children:"Competitor pressure"})]}),c.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel}),c.jsx("p",{className:"metric-inline-caption","aria-hidden":"true"})]})}),c.jsx("span",{className:"project-row-link",children:c.jsx(m0,{className:"h-4 w-4 text-muted"})})]})}function xL(){const e=pl(),{dashboard:n,isLoading:s,isError:r,refetch:u}=Iu(),f=n??e?.dashboard,b=Ch(!e,e?.health),{openRun:x}=Nh();if(r&&!f)return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio unavailable"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project list."})]})}),c.jsxs("div",{className:"max-w-xl rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Your projects have not been changed."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",variant:"secondary",className:"mt-4",onClick:()=>{u()},children:"Retry loading portfolio"})]})]});if(!f||s)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-32"}),c.jsx("div",{className:"skeleton-text-sm w-64"})]}),c.jsx("div",{className:"space-y-3",children:[1,2,3].map(j=>c.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-2",children:[c.jsx("div",{className:"skeleton-text w-36"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},j))})]});const k=f.portfolioOverview,S=b.data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},C=IP(k.systemHealth,S,f.settings);return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio"}),c.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]})}),k.projects.length>0?c.jsx("div",{className:"project-list project-list-scrollable",children:k.projects.map(j=>c.jsx(vL,{project:j},j.project.id))}):c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h3",{children:k.emptyState?.title??"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:k.emptyState?.detail}),c.jsx(xe,{size:"sm",asChild:!0,children:c.jsx(et,{to:k.emptyState?.ctaHref==="/setup"||!k.emptyState?.ctaHref?"/setup":"/",children:k.emptyState?.ctaLabel??"Launch setup"})})]}),c.jsxs("div",{className:"overview-secondary-grid",children:[k.attentionItems.length>0&&c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),c.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),c.jsx("div",{className:"attention-list attention-list-scrollable",children:k.attentionItems.map(j=>j.href?c.jsxs(et,{to:j.href,className:`attention-item attention-item-${j.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:j.title}),c.jsx("p",{className:"attention-detail",children:j.detail})]}),j.actionLabel&&c.jsx("span",{className:"attention-action",children:j.actionLabel})]},j.id):c.jsxs("div",{className:`attention-item attention-item-static attention-item-${j.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:j.title}),c.jsx("p",{className:"attention-detail",children:j.detail})]}),j.actionLabel&&c.jsx("span",{className:"attention-action",children:j.actionLabel})]},j.id))})]}),c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),c.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),c.jsx("div",{className:"compact-stack compact-stack-scrollable",children:k.recentRuns.length>0?k.recentRuns.map(j=>c.jsxs("button",{className:"compact-run",type:"button",onClick:()=>x(j.id),children:[c.jsxs("div",{children:[c.jsx("p",{className:"compact-run-title",children:j.projectName}),c.jsx("p",{className:"compact-run-detail",children:j.summary})]}),c.jsx(Ah,{status:j.status})]},j.id)):c.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),c.jsxs("section",{className:"page-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),c.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),c.jsx("div",{className:"divide-y divide-default border-y border-default",children:C.map(j=>{const E=j.id==="api"?S.apiStatus:j.id==="worker"?S.workerStatus:void 0,B=E?E.state==="ok"?void 0:No(E):j.tone==="positive"?void 0:j.meta;return c.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:j.label}),B&&c.jsx("p",{className:"mt-1 text-sm text-secondary",children:B})]}),c.jsx(ga,{tone:j.tone,title:E?No(E):j.meta,children:j.detail})]},j.id)})})]})]})}function kL({onApplied:e}){const[n,s]=D.useState(""),[r,u]=D.useState(!1),[f,g]=D.useState([]),[b,x]=D.useState([]);if(sA())return null;const k=async()=>{if(!n.trim())return;u(!0),g([]),x([]);const S=Pj(n),C=[],j=[];for(let E=0;E<S.length;E++){const B=S[E];if(B.errors.length>0){C.push(`Document ${E+1}: ${B.errors[0]?.message}`);continue}const q=B.toJSON();if(!(!q||typeof q!="object"))try{const U=await _A(q);j.push(`Applied "${U.displayName||U.name}" (revision ${U.configRevision})`)}catch(U){C.push(`Document ${E+1}: ${q_(U)}`)}}g(j),x(C),u(!1),j.length>0&&(Yt({title:"YAML applied",detail:`Applied ${j.length} document${j.length===1?"":"s"} successfully.`,tone:C.length>0?"caution":"positive",dedupeKey:"yaml:apply",dedupeMode:"replace"}),e())};return c.jsxs("section",{className:"mt-8",children:[c.jsx("div",{className:"page-section-divider"}),c.jsx("div",{className:"section-head mt-6",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Config as code"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Apply YAML"})]})}),c.jsxs("p",{className:"text-muted text-sm mb-3",children:["Paste a ",c.jsx("code",{className:"text-secondary",children:"canonry.yaml"})," config (multi-document YAML with ",c.jsx("code",{className:"text-secondary",children:"---"})," separators supported)."]}),c.jsx("textarea",{className:"setup-input w-full font-mono text-xs",rows:10,placeholder:`apiVersion: canonry/v1
|
|
65
65
|
kind: Project
|
|
66
66
|
metadata:
|
|
67
67
|
name: my-project
|
|
@@ -69,15 +69,15 @@ spec:
|
|
|
69
69
|
canonicalDomain: example.com
|
|
70
70
|
country: US
|
|
71
71
|
language: en
|
|
72
|
-
queries: []`,value:n,onChange:S=>s(S.target.value)}),f.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:f.map((S,C)=>c.jsx("li",{className:"text-positive-400 text-sm",children:S},C))}),b.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:b.map((S,C)=>c.jsx("li",{className:"text-negative-400 text-sm",children:S},C))}),c.jsx("div",{className:"mt-3",children:c.jsx(xe,{type:"button",disabled:!n.trim()||r,onClick:$t(k),children:r?"Applying...":"Apply"})})]})}function vL(){const{dashboard:e,isLoading:n,refetch:s}=Iu(),r=ms(),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState("US"),[B,q]=D.useState("en"),[U,G]=D.useState(!1),[te,X]=D.useState(null);if(!e||n)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-28"}),c.jsx("div",{className:"skeleton-text-sm w-40"})]}),c.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[c.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(M=>c.jsx("div",{className:"skeleton-text-sm w-16"},M))}),[1,2,3].map(M=>c.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[c.jsxs("div",{className:"flex-1 space-y-1",children:[c.jsx("div",{className:"skeleton-text w-28"}),c.jsx("div",{className:"skeleton-text-sm w-16"})]}),c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),c.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),c.jsx("div",{className:"skeleton-text-sm w-8"})]},M))]})]});const ae=e.projects,oe=g.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),ge=async()=>{if(!(!oe||!S)){G(!0),X(null);try{const M=await ux({name:oe,displayName:x||g,canonicalDomain:S,country:j,language:B});Yt({title:"Project created",detail:`${M.displayName||M.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${M.name}`,dedupeMode:"drop"}),await s(),b(""),k(""),C(""),E("US"),q("en"),f(!1),r({to:"/setup",search:{experience:"legacy",setupProject:M.name}})}catch(M){X(M instanceof Error?M.message:"Failed to create project")}finally{G(!1)}}};return c.jsxs("div",{className:"page-container",children:[c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Projects"}),c.jsxs("p",{className:"page-subtitle",children:[ae.length," project",ae.length!==1?"s":""," tracked"]})]}),c.jsx("div",{className:"page-header-right",children:c.jsxs(xe,{type:"button",onClick:()=>f(M=>!M),children:[c.jsx(by,{className:"size-4 mr-1.5"}),"Add project"]})})]}),u?c.jsxs(_a,{className:"surface-card mb-6",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Create a new monitoring project"})]})}),c.jsxs("div",{className:"compact-stack mt-4",children:[c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),c.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:g,onChange:M=>b(M.target.value)}),oe&&oe!==g?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",oe]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),c.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:x,onChange:M=>k(M.target.value)})]})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),c.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:S,onChange:M=>C(M.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),c.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:j,onChange:M=>E(M.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),c.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:B,onChange:M=>q(M.target.value.toLowerCase())})]})]})]}),te?c.jsx("p",{className:"text-negative-400 text-sm mt-3",children:te}):null,c.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[c.jsx(xe,{type:"button",disabled:!oe||!S||U,onClick:$t(ge),children:U?"Creating...":"Create project"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:()=>f(!1),children:"Cancel"})]})]}):null,ae.length>0?c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Name"}),c.jsx("th",{children:"Domain"}),c.jsx("th",{children:"Mentions"}),c.jsx("th",{children:"Last run"}),c.jsx("th",{className:"text-right",children:"Country"})]})}),c.jsx("tbody",{children:ae.map(M=>{const J=M.recentRuns[0];return c.jsxs("tr",{className:"cursor-pointer",onClick:()=>{r({to:"/projects/$projectName",params:{projectName:M.project.name}})},children:[c.jsxs("td",{children:[c.jsx(et,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"text-heading font-medium hover:underline",onClick:_e=>_e.stopPropagation(),children:M.project.displayName||M.project.name}),c.jsx("p",{className:"text-[11px] text-muted",children:M.project.name})]}),c.jsx("td",{className:"text-secondary",children:M.project.canonicalDomain}),c.jsx("td",{children:c.jsx(ga,{tone:M.mentionSummary.tone,children:M.mentionSummary.value})}),c.jsx("td",{className:"text-muted text-sm",children:J?c.jsx(Ah,{status:J.status}):c.jsx("span",{className:"text-faint",children:"No runs"})}),c.jsx("td",{className:"text-right text-muted",children:M.project.country})]},M.project.id)})})]})}):u?null:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h3",{children:"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),c.jsxs(xe,{type:"button",onClick:()=>f(!0),children:[c.jsx(by,{className:"size-4 mr-1.5"}),"Add project"]})]}),c.jsx(bL,{onApplied:()=>{s()}})]})}class xL extends Error{constructor(){super(hx),this.name="ViewOnlyError"}}function kL(e){if(!e.canWrite)throw new xL}function Z3(e){e.invalidateQueries({queryKey:xh({client:se})}),e.invalidateQueries({queryKey:Ai({client:se})})}function bs(){const e=al();return()=>{kL(e)}}function wL(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function SL(e,n){const s=e??"Project";return n==="gsc-sync"?`${s} will refresh after the sync completes.`:n==="inspect-sitemap"?`${s} will notify you when sitemap inspection finishes.`:`${s} will notify you when the run finishes.`}function Eh(e,n){wh({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),Yt({title:wL(e.kind),detail:SL(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function jL(e){const n=e.filter(g=>g.status!=="conflict"&&g.status!=="error"),s=e.filter(g=>g.status==="conflict"),r=e.filter(g=>g.status==="error"),u=s.length+r.length;if(n.length===0){const g=[r.length>0?`${r.length} need provider or query setup`:null,s.length>0?`${s.length} already have an active run`:null].filter(b=>b!==null);Yt({title:"No runs queued",detail:g.length>0?`${g.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const g of n)wh({id:g.id,projectId:g.projectId,kind:g.kind,projectLabel:g.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const f=GP({runIds:n.map(g=>g.id),queuedCount:n.length,skippedCount:u});Yt({title:"Run-all batch queued",detail:u>0?`${n.length} project${n.length===1?"":"s"} queued; ${u} need attention or already have an active run.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:u>0?"caution":"neutral",dedupeKey:`batch:${f}`,dedupeMode:"replace"})}function Vu(e,n){if(e instanceof oa&&e.code==="RUN_IN_PROGRESS"){Yt({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}Yt({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function AL(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>kA(s,r),onSuccess:(s,r)=>{Z3(n),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})},onError:(s,r)=>{r.sourceAction!=="setup-launch"&&Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})}})}function PK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:s=>zA(s),onSuccess:s=>{Z3(n),jL(s)},onError:s=>{Yt({title:s instanceof Error?s.message:"Failed to queue runs",tone:"negative"})}})}function CL(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,body:r})=>RA(s,r),onSuccess:(s,r)=>{tl(n,Te["site-audit"],r.projectName),wh({id:s.runId,projectId:r.projectId,kind:Te["site-audit"],projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit",lastAnnouncedStatus:s.status}),Yt({title:s.status==="running"?"Site Health scan already running":"Site Health scan queued",detail:`${r.projectLabel??r.projectName} will refresh automatically when the scan finishes.`,tone:"neutral",dedupeKey:`run:${s.runId}`,dedupeMode:"replace"})},onError:(s,r)=>{r.suppressErrorToast||Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit"})}})}function IK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>DA(s,r),onSuccess:(s,r)=>{tl(n,Te["gsc-sync"],r.projectName),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})},onError:(s,r)=>{Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})}})}function VK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>TA(s,r),onSuccess:(s,r)=>{tl(n,Te["inspect-sitemap"],r.projectName),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})},onError:(s,r)=>{Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})}})}function F3(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function LK(){const e=bs(),n=Vn();return ps({onMutate:e,mutationFn:({projectName:s,queries:r})=>bA(s,r),onSuccess:()=>{n.invalidateQueries({queryKey:Ai({client:se})}),n.invalidateQueries({predicate:F3})}})}function UK(){const e=bs(),n=Vn();return ps({onMutate:e,mutationFn:({projectName:s,body:r})=>vA(s,r),onSuccess:()=>{fa(n,"project"),n.invalidateQueries({predicate:F3})}})}function GK({disabled:e,title:n,...s}){const{canWrite:r}=al();return r?c.jsx(xe,{disabled:e,title:n,...s}):c.jsx(xe,{...s,disabled:!0,title:hx})}function Th({title:e,children:n}){const{isAdmin:s}=al();return s?c.jsx(c.Fragment,{children:n}):c.jsxs(_a,{className:"surface-card mx-auto mt-8 max-w-lg",children:[c.jsxs(Qr,{children:[c.jsxs(Zr,{children:[e," is for administrators"]}),c.jsx(cu,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),c.jsx(ho,{children:c.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}const Av=[{id:"site",label:"Site audit",optional:!1},{id:"fixes",label:"Page health",optional:!1},{id:"visibility",label:"AI Visibility",optional:!0}];function _o({current:e}){const n=Av.findIndex(s=>s.id===e);return c.jsx("ol",{"aria-label":"Onboarding progress",className:"grid border-y border-default sm:grid-cols-3 sm:divide-x sm:divide-default",children:Av.map((s,r)=>{const u=r<n,f=r===n;return c.jsxs("li",{"aria-current":f?"step":void 0,className:"flex min-h-12 items-center gap-3 px-3 py-2 first:pl-0 last:pr-0",children:[c.jsx("span",{"aria-hidden":"true",className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums ${f?"border-accent bg-accent text-on-inverse":u?"border-positive bg-positive-soft text-positive":"border-default bg-surface-subtle text-muted"}`,children:u?"✓":r+1}),c.jsxs("span",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2",children:[c.jsx("span",{className:`text-sm font-medium ${f||u?"text-heading":"text-secondary"}`,children:s.label}),s.optional?c.jsx("span",{className:"text-[13px] text-secondary",children:"Optional"}):null,u?c.jsx("span",{className:"sr-only",children:"Complete"}):null]})]},s.id)})})}const Cv="canonry.onboarding-session.v1",NL=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,_L=["system","project","queries","competitors","run"];function zL(e){return _L[e]??"system"}function DL(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function EL(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}function Nv(e,n){const s=e&&typeof e=="object"&&"code"in e?String(e.code):"";return s==="NO_PROVIDER"?"no_provider":s==="NO_QUERIES"?"no_queries":n}function TL(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Cv):null;if(e&&NL.test(e))return e;const n=o0();return typeof window<"u"&&window.sessionStorage.setItem(Cv,n),n}catch{return o0()}}function RL(){return o0()}function o0(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let r=0;r<n.length;r+=1)n[r]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const s=[...n].map(r=>r.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`}const OL=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function _v(e,n){return(e==="completed"||e==="partial")&&n>0}function zv(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function Y3(e){return e.queryCounts.total>0}function BL(e,n){return n?e.find(s=>s.project.name===n)??null:e.find(s=>!Y3(s))??e.at(0)??null}function qL({current:e,labels:n}){return c.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((s,r)=>{const u=r<e,f=r===e;return c.jsxs("div",{className:`setup-step ${u?"setup-step-done":""} ${f?"setup-step-active":""}`,role:"listitem","aria-current":f?"step":void 0,children:[c.jsx("span",{className:"setup-step-number",children:u?"✓":r+1}),c.jsx("span",{children:s.label})]},s.label)})})}function ML({visibilityProjectName:e,siteHealthOnboarding:n=!1}={}){return c.jsx(Th,{title:e?"Set up AI Visibility":"Setup",children:c.jsx(PL,{visibilityProjectName:e,siteHealthOnboarding:n})})}function PL({visibilityProjectName:e,siteHealthOnboarding:n}){const s=pl(),{dashboard:r,isLoading:u,refetch:f}=Iu(),g=r??s?.dashboard,b=ms(),x=D.useCallback(S=>{S&&e&&S.focus()},[e]),k=()=>{if(!e){b({to:"/",replace:!0});return}b({to:"/projects/$projectName",params:{projectName:e},replace:!0})};return!g||u?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-24"}),c.jsx("div",{className:"skeleton-text-sm w-80"})]}),c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-32"}),c.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(S=>c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"space-y-1 flex-1",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},S))})]})]}):e&&!g.projects.some(S=>S.project.name===e)?c.jsxs("div",{className:"page-container",children:[n?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:x,tabIndex:-1,className:"page-title",children:"Set up AI Visibility"}),c.jsx("p",{className:"page-subtitle",children:"Choose what to track, then run your first visibility sweep."})]}),n?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:k,children:"Skip AI Visibility"})}):null]}),c.jsxs(_a,{role:"alert",className:"compact-stack",children:[c.jsx("h2",{children:"Project not found"}),c.jsx("p",{className:"text-secondary",children:"Canonry could not find the project handed off from Site Health. Refresh the project list or choose a project to continue."}),c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:()=>{f()},children:"Retry"}),c.jsx(xe,{type:"button",asChild:!0,children:c.jsx(et,{to:"/projects",children:"View projects"})})]})]})]}):c.jsx(IL,{dashboard:g,initialHealth:s?.health,enableLiveStatus:!s,refetch:f,visibilityProjectName:e,visibilityHeadingRef:x,siteHealthOnboarding:n})}function IL({dashboard:e,initialHealth:n,enableLiveStatus:s,refetch:r,visibilityProjectName:u,visibilityHeadingRef:f,siteHealthOnboarding:g}){const b=e.settings,k=Ch(s,n).data??n??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},S=PP(e.setup,k,b),C=ms(),j=D.useRef(TL()).current,E=D.useRef(new Set),B=D.useCallback((F,qe)=>{if(qe){if(E.current.has(qe))return;E.current.add(qe)}CA({...F,eventId:RL()})},[]),q=BL(e.projects,u),U=q?e.runs.filter(F=>F.projectId===q.project.id).sort((F,qe)=>qe.createdAt.localeCompare(F.createdAt)):[],G=q?.queryCounts.total??0,te=q?.project.name,X=Ft({queryKey:["setup","resume-queries",te],queryFn:()=>te?rx(te):Promise.resolve([]),enabled:!!te}),ae=X.data??[],oe=X.data?.length??G,ge=q?.competitors.map(F=>F.domain)??[],M=U.at(0)??null,J=!!q&&Y3(q),_e=!!q&&X.isPending,he=zv({launchReady:S.launchState.enabled,hasProject:!!q,queryCount:oe,competitorCount:ge.length,hasRunAttempt:U.length>0||J}),we=zv({launchReady:!0,hasProject:!!q,queryCount:oe,competitorCount:ge.length,hasRunAttempt:U.length>0||J}),[Oe,je]=D.useState(he),[Fe,ye]=D.useState(!_e),[V,ne]=D.useState(q?.project.name??""),[fe,De]=D.useState(q?.project.displayName??""),[le,at]=D.useState(q?.project.canonicalDomain??""),[H,ue]=D.useState(q?.project.country??"US"),[ie,re]=D.useState(q?.project.language??"en"),[W,Z]=D.useState(q?.project.autoExtractBacklinks??!1),[Ne,Ae]=D.useState(q?.project.name??null),[st,Qe]=D.useState(null),[Pt,jt]=D.useState(!1),Ct=()=>{if(!Ne){C({to:"/",replace:!!u});return}C({to:"/projects/$projectName",params:{projectName:Ne},replace:!!u})},[Gn,Ri]=D.useState(ae.map(F=>F.query).join(`
|
|
72
|
+
queries: []`,value:n,onChange:S=>s(S.target.value)}),f.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:f.map((S,C)=>c.jsx("li",{className:"text-positive-400 text-sm",children:S},C))}),b.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:b.map((S,C)=>c.jsx("li",{className:"text-negative-400 text-sm",children:S},C))}),c.jsx("div",{className:"mt-3",children:c.jsx(xe,{type:"button",disabled:!n.trim()||r,onClick:$t(k),children:r?"Applying...":"Apply"})})]})}function wL(){const{dashboard:e,isLoading:n,refetch:s}=Iu(),r=ms(),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState("US"),[B,q]=D.useState("en"),[U,G]=D.useState(!1),[te,X]=D.useState(null);if(!e||n)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-28"}),c.jsx("div",{className:"skeleton-text-sm w-40"})]}),c.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[c.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(M=>c.jsx("div",{className:"skeleton-text-sm w-16"},M))}),[1,2,3].map(M=>c.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[c.jsxs("div",{className:"flex-1 space-y-1",children:[c.jsx("div",{className:"skeleton-text w-28"}),c.jsx("div",{className:"skeleton-text-sm w-16"})]}),c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),c.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),c.jsx("div",{className:"skeleton-text-sm w-8"})]},M))]})]});const ae=e.projects,oe=g.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),ge=async()=>{if(!(!oe||!S)){G(!0),X(null);try{const M=await ux({name:oe,displayName:x||g,canonicalDomain:S,country:j,language:B});Yt({title:"Project created",detail:`${M.displayName||M.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${M.name}`,dedupeMode:"drop"}),await s(),b(""),k(""),C(""),E("US"),q("en"),f(!1),r({to:"/setup",search:{experience:"legacy",setupProject:M.name}})}catch(M){X(M instanceof Error?M.message:"Failed to create project")}finally{G(!1)}}};return c.jsxs("div",{className:"page-container",children:[c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Projects"}),c.jsxs("p",{className:"page-subtitle",children:[ae.length," project",ae.length!==1?"s":""," tracked"]})]}),c.jsx("div",{className:"page-header-right",children:c.jsxs(xe,{type:"button",onClick:()=>f(M=>!M),children:[c.jsx(by,{className:"size-4 mr-1.5"}),"Add project"]})})]}),u?c.jsxs(_a,{className:"surface-card mb-6",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Create a new monitoring project"})]})}),c.jsxs("div",{className:"compact-stack mt-4",children:[c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),c.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:g,onChange:M=>b(M.target.value)}),oe&&oe!==g?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",oe]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),c.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:x,onChange:M=>k(M.target.value)})]})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),c.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:S,onChange:M=>C(M.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),c.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:j,onChange:M=>E(M.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),c.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:B,onChange:M=>q(M.target.value.toLowerCase())})]})]})]}),te?c.jsx("p",{className:"text-negative-400 text-sm mt-3",children:te}):null,c.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[c.jsx(xe,{type:"button",disabled:!oe||!S||U,onClick:$t(ge),children:U?"Creating...":"Create project"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:()=>f(!1),children:"Cancel"})]})]}):null,ae.length>0?c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Name"}),c.jsx("th",{children:"Domain"}),c.jsx("th",{children:"Mentions"}),c.jsx("th",{children:"Last run"}),c.jsx("th",{className:"text-right",children:"Country"})]})}),c.jsx("tbody",{children:ae.map(M=>{const J=M.recentRuns[0];return c.jsxs("tr",{className:"cursor-pointer",onClick:()=>{r({to:"/projects/$projectName",params:{projectName:M.project.name}})},children:[c.jsxs("td",{children:[c.jsx(et,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"text-heading font-medium hover:underline",onClick:_e=>_e.stopPropagation(),children:M.project.displayName||M.project.name}),c.jsx("p",{className:"text-[11px] text-muted",children:M.project.name})]}),c.jsx("td",{className:"text-secondary",children:M.project.canonicalDomain}),c.jsx("td",{children:c.jsx(ga,{tone:M.mentionSummary.tone,children:M.mentionSummary.value})}),c.jsx("td",{className:"text-muted text-sm",children:J?c.jsx(Ah,{status:J.status}):c.jsx("span",{className:"text-faint",children:"No runs"})}),c.jsx("td",{className:"text-right text-muted",children:M.project.country})]},M.project.id)})})]})}):u?null:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h3",{children:"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),c.jsxs(xe,{type:"button",onClick:()=>f(!0),children:[c.jsx(by,{className:"size-4 mr-1.5"}),"Add project"]})]}),c.jsx(kL,{onApplied:()=>{s()}})]})}class SL extends Error{constructor(){super(hx),this.name="ViewOnlyError"}}function jL(e){if(!e.canWrite)throw new SL}function Z3(e){e.invalidateQueries({queryKey:xh({client:se})}),e.invalidateQueries({queryKey:Ai({client:se})})}function bs(){const e=al();return()=>{jL(e)}}function AL(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function CL(e,n){const s=e??"Project";return n==="gsc-sync"?`${s} will refresh after the sync completes.`:n==="inspect-sitemap"?`${s} will notify you when sitemap inspection finishes.`:`${s} will notify you when the run finishes.`}function Eh(e,n){wh({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),Yt({title:AL(e.kind),detail:CL(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function NL(e){const n=e.filter(g=>g.status!=="conflict"&&g.status!=="error"),s=e.filter(g=>g.status==="conflict"),r=e.filter(g=>g.status==="error"),u=s.length+r.length;if(n.length===0){const g=[r.length>0?`${r.length} need provider or query setup`:null,s.length>0?`${s.length} already have an active run`:null].filter(b=>b!==null);Yt({title:"No runs queued",detail:g.length>0?`${g.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const g of n)wh({id:g.id,projectId:g.projectId,kind:g.kind,projectLabel:g.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const f=KP({runIds:n.map(g=>g.id),queuedCount:n.length,skippedCount:u});Yt({title:"Run-all batch queued",detail:u>0?`${n.length} project${n.length===1?"":"s"} queued; ${u} need attention or already have an active run.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:u>0?"caution":"neutral",dedupeKey:`batch:${f}`,dedupeMode:"replace"})}function Vu(e,n){if(e instanceof oa&&e.code==="RUN_IN_PROGRESS"){Yt({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}Yt({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function _L(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>kA(s,r),onSuccess:(s,r)=>{Z3(n),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})},onError:(s,r)=>{r.sourceAction!=="setup-launch"&&Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})}})}function LK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:s=>zA(s),onSuccess:s=>{Z3(n),NL(s)},onError:s=>{Yt({title:s instanceof Error?s.message:"Failed to queue runs",tone:"negative"})}})}function zL(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,body:r})=>RA(s,r),onSuccess:(s,r)=>{tl(n,Te["site-audit"],r.projectName),wh({id:s.runId,projectId:r.projectId,kind:Te["site-audit"],projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit",lastAnnouncedStatus:s.status}),Yt({title:s.status==="running"?"Site Health scan already running":"Site Health scan queued",detail:`${r.projectLabel??r.projectName} will refresh automatically when the scan finishes.`,tone:"neutral",dedupeKey:`run:${s.runId}`,dedupeMode:"replace"})},onError:(s,r)=>{r.suppressErrorToast||Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit"})}})}function UK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>DA(s,r),onSuccess:(s,r)=>{tl(n,Te["gsc-sync"],r.projectName),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})},onError:(s,r)=>{Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})}})}function GK(){const e=bs(),n=Vn();return ps({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>TA(s,r),onSuccess:(s,r)=>{tl(n,Te["inspect-sitemap"],r.projectName),Eh(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})},onError:(s,r)=>{Vu(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})}})}function F3(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function $K(){const e=bs(),n=Vn();return ps({onMutate:e,mutationFn:({projectName:s,queries:r})=>bA(s,r),onSuccess:()=>{n.invalidateQueries({queryKey:Ai({client:se})}),n.invalidateQueries({predicate:F3})}})}function HK(){const e=bs(),n=Vn();return ps({onMutate:e,mutationFn:({projectName:s,body:r})=>vA(s,r),onSuccess:()=>{fa(n,"project"),n.invalidateQueries({predicate:F3})}})}function KK({disabled:e,title:n,...s}){const{canWrite:r}=al();return r?c.jsx(xe,{disabled:e,title:n,...s}):c.jsx(xe,{...s,disabled:!0,title:hx})}function Th({title:e,children:n}){const{isAdmin:s}=al();return s?c.jsx(c.Fragment,{children:n}):c.jsxs(_a,{className:"surface-card mx-auto mt-8 max-w-lg",children:[c.jsxs(Qr,{children:[c.jsxs(Zr,{children:[e," is for administrators"]}),c.jsx(cu,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),c.jsx(ho,{children:c.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}const Av=[{id:"site",label:"Site audit",optional:!1},{id:"fixes",label:"Page health",optional:!1},{id:"visibility",label:"AI Visibility",optional:!0}];function _o({current:e}){const n=Av.findIndex(s=>s.id===e);return c.jsx("ol",{"aria-label":"Onboarding progress",className:"grid border-y border-default sm:grid-cols-3 sm:divide-x sm:divide-default",children:Av.map((s,r)=>{const u=r<n,f=r===n;return c.jsxs("li",{"aria-current":f?"step":void 0,className:"flex min-h-12 items-center gap-3 px-3 py-2 first:pl-0 last:pr-0",children:[c.jsx("span",{"aria-hidden":"true",className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums ${f?"border-accent bg-accent text-on-inverse":u?"border-positive bg-positive-soft text-positive":"border-default bg-surface-subtle text-muted"}`,children:u?"✓":r+1}),c.jsxs("span",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2",children:[c.jsx("span",{className:`text-sm font-medium ${f||u?"text-heading":"text-secondary"}`,children:s.label}),s.optional?c.jsx("span",{className:"text-[13px] text-secondary",children:"Optional"}):null,u?c.jsx("span",{className:"sr-only",children:"Complete"}):null]})]},s.id)})})}const Cv="canonry.onboarding-session.v1",DL=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,EL=["system","project","queries","competitors","run"];function TL(e){return EL[e]??"system"}function RL(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function OL(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}function Nv(e,n){const s=e&&typeof e=="object"&&"code"in e?String(e.code):"";return s==="NO_PROVIDER"?"no_provider":s==="NO_QUERIES"?"no_queries":n}function BL(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Cv):null;if(e&&DL.test(e))return e;const n=o0();return typeof window<"u"&&window.sessionStorage.setItem(Cv,n),n}catch{return o0()}}function qL(){return o0()}function o0(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let r=0;r<n.length;r+=1)n[r]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const s=[...n].map(r=>r.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`}const ML=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function _v(e,n){return(e==="completed"||e==="partial")&&n>0}function zv(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function Y3(e){return e.queryCounts.total>0}function PL(e,n){return n?e.find(s=>s.project.name===n)??null:e.find(s=>!Y3(s))??e.at(0)??null}function IL({current:e,labels:n}){return c.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((s,r)=>{const u=r<e,f=r===e;return c.jsxs("div",{className:`setup-step ${u?"setup-step-done":""} ${f?"setup-step-active":""}`,role:"listitem","aria-current":f?"step":void 0,children:[c.jsx("span",{className:"setup-step-number",children:u?"✓":r+1}),c.jsx("span",{children:s.label})]},s.label)})})}function VL({visibilityProjectName:e,siteHealthOnboarding:n=!1}={}){return c.jsx(Th,{title:e?"Set up AI Visibility":"Setup",children:c.jsx(LL,{visibilityProjectName:e,siteHealthOnboarding:n})})}function LL({visibilityProjectName:e,siteHealthOnboarding:n}){const s=pl(),{dashboard:r,isLoading:u,refetch:f}=Iu(),g=r??s?.dashboard,b=ms(),x=D.useCallback(S=>{S&&e&&S.focus()},[e]),k=()=>{if(!e){b({to:"/",replace:!0});return}b({to:"/projects/$projectName",params:{projectName:e},replace:!0})};return!g||u?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-24"}),c.jsx("div",{className:"skeleton-text-sm w-80"})]}),c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-32"}),c.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(S=>c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"space-y-1 flex-1",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},S))})]})]}):e&&!g.projects.some(S=>S.project.name===e)?c.jsxs("div",{className:"page-container",children:[n?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:x,tabIndex:-1,className:"page-title",children:"Set up AI Visibility"}),c.jsx("p",{className:"page-subtitle",children:"Choose what to track, then run your first visibility sweep."})]}),n?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:k,children:"Skip AI Visibility"})}):null]}),c.jsxs(_a,{role:"alert",className:"compact-stack",children:[c.jsx("h2",{children:"Project not found"}),c.jsx("p",{className:"text-secondary",children:"Canonry could not find the project handed off from Site Health. Refresh the project list or choose a project to continue."}),c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:()=>{f()},children:"Retry"}),c.jsx(xe,{type:"button",asChild:!0,children:c.jsx(et,{to:"/projects",children:"View projects"})})]})]})]}):c.jsx(UL,{dashboard:g,initialHealth:s?.health,enableLiveStatus:!s,refetch:f,visibilityProjectName:e,visibilityHeadingRef:x,siteHealthOnboarding:n})}function UL({dashboard:e,initialHealth:n,enableLiveStatus:s,refetch:r,visibilityProjectName:u,visibilityHeadingRef:f,siteHealthOnboarding:g}){const b=e.settings,k=Ch(s,n).data??n??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},S=LP(e.setup,k,b),C=ms(),j=D.useRef(BL()).current,E=D.useRef(new Set),B=D.useCallback((F,qe)=>{if(qe){if(E.current.has(qe))return;E.current.add(qe)}CA({...F,eventId:qL()})},[]),q=PL(e.projects,u),U=q?e.runs.filter(F=>F.projectId===q.project.id).sort((F,qe)=>qe.createdAt.localeCompare(F.createdAt)):[],G=q?.queryCounts.total??0,te=q?.project.name,X=Ft({queryKey:["setup","resume-queries",te],queryFn:()=>te?rx(te):Promise.resolve([]),enabled:!!te}),ae=X.data??[],oe=X.data?.length??G,ge=q?.competitors.map(F=>F.domain)??[],M=U.at(0)??null,J=!!q&&Y3(q),_e=!!q&&X.isPending,he=zv({launchReady:S.launchState.enabled,hasProject:!!q,queryCount:oe,competitorCount:ge.length,hasRunAttempt:U.length>0||J}),we=zv({launchReady:!0,hasProject:!!q,queryCount:oe,competitorCount:ge.length,hasRunAttempt:U.length>0||J}),[Oe,je]=D.useState(he),[Fe,ye]=D.useState(!_e),[V,ne]=D.useState(q?.project.name??""),[fe,De]=D.useState(q?.project.displayName??""),[le,at]=D.useState(q?.project.canonicalDomain??""),[H,ue]=D.useState(q?.project.country??"US"),[ie,re]=D.useState(q?.project.language??"en"),[W,Z]=D.useState(q?.project.autoExtractBacklinks??!1),[Ne,Ae]=D.useState(q?.project.name??null),[st,Qe]=D.useState(null),[Pt,jt]=D.useState(!1),Ct=()=>{if(!Ne){C({to:"/",replace:!!u});return}C({to:"/projects/$projectName",params:{projectName:Ne},replace:!!u})},[Gn,Ri]=D.useState(ae.map(F=>F.query).join(`
|
|
73
73
|
`)),[Io,Vo]=D.useState(oe>0),[vs,xs]=D.useState(null),[ks,hl]=D.useState(!1),[Lu,ta]=D.useState(!1),xa=b.providerStatuses.filter(F=>F.state==="ready"),[un,Oi]=D.useState(xa[0]?.name??""),[Bi,Uu]=D.useState(5),[Lo,fl]=D.useState(!1),[gl,$n]=D.useState(null),[Xt,tn]=D.useState(ge.join(`
|
|
74
|
-
`)),[Jt,Gu]=D.useState(ge.length>0),[yl,bl]=D.useState(null),[qi,Mi]=D.useState(!1),[$a,dn]=D.useState(!!M&&!J),[mn,Hn]=D.useState(!1),[Pi,ws]=D.useState(null),[Ii,Vi]=D.useState(J?null:M?.id??null),$u=
|
|
74
|
+
`)),[Jt,Gu]=D.useState(ge.length>0),[yl,bl]=D.useState(null),[qi,Mi]=D.useState(!1),[$a,dn]=D.useState(!!M&&!J),[mn,Hn]=D.useState(!1),[Pi,ws]=D.useState(null),[Ii,Vi]=D.useState(J?null:M?.id??null),$u=_L(),an=Ft({...f3({client:se,path:{id:Ii??""}}),enabled:!!Ii,refetchInterval:({state:F})=>{const qe=F.data?.status;return qe==="completed"||qe==="partial"||qe==="failed"||qe==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}),[Ss,Uo]=D.useState(""),[Li,js]=D.useState(!1),[Go,$o]=D.useState(null),Wt=V.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),lt=Gn.split(`
|
|
75
75
|
`).map(F=>F.trim()).filter(Boolean),Dt=Xt.split(`
|
|
76
|
-
`).map(F=>F.trim()).filter(Boolean),Da=Math.max(oe,Io?lt.length:0),Ha=S.launchState.blockedReason??(Ne?Da===0?"Add at least one query before launching the first sweep.":void 0:"Create a project before launching the first sweep."),Kn=
|
|
77
|
-
`)),Vo(!0)),ye(!0))},[ae,he,Fe,_e]),D.useEffect(()=>{if(xa.length===0){Oi("");return}xa.some(F=>F.name===un)||Oi(xa[0].name)},[xa,un]),D.useEffect(()=>{Fe&&(B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.started",step:
|
|
76
|
+
`).map(F=>F.trim()).filter(Boolean),Da=Math.max(oe,Io?lt.length:0),Ha=S.launchState.blockedReason??(Ne?Da===0?"Add at least one query before launching the first sweep.":void 0:"Create a project before launching the first sweep."),Kn=RL({apiReady:k.apiStatus.state==="ok",databaseConfigured:k.apiStatus.databaseConfigured,workerReady:k.workerStatus.state==="ok",providerReady:xa.length>0});D.useEffect(()=>{Fe||_e||(je(he),ae.length>0&&(Ri(ae.map(F=>F.query).join(`
|
|
77
|
+
`)),Vo(!0)),ye(!0))},[ae,he,Fe,_e]),D.useEffect(()=>{if(xa.length===0){Oi("");return}xa.some(F=>F.name===un)||Oi(xa[0].name)},[xa,un]),D.useEffect(()=>{Fe&&(B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.started",step:TL(he),resumed:!!q},"onboarding.started"),!q&&he>0&&B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"))},[B,he,j,Fe,q]),D.useEffect(()=>{!OL(k)||!Kn||B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"system",action:Kn==="no_provider"?"configure_provider":"continue",reasonCode:Kn},`onboarding.blocked:system:${Kn}`)},[B,k,j,Kn]);const pn=an.data?.status,Ui=an.data?.snapshots?.length??0;D.useEffect(()=>{if(!$a||!pn)return;if(_v(pn,Ui)){B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"run",method:"automatic",countBucket:cn(Ui)},"onboarding.step_completed:run");return}const F=pn==="cancelled"?"run_cancelled":pn==="failed"||(pn==="completed"||pn==="partial")&&Ui===0?"run_failed":void 0;F&&B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:F},`onboarding.blocked:run:${F}`)},[B,j,pn,Ui,$a]);const Gi=async()=>{if(!(!Wt||!le)){jt(!0),Qe(null);try{const F=await cx(Wt,{displayName:fe||V,canonicalDomain:le,country:H,language:ie,autoExtractBacklinks:W});Ae(Wt),Yt({title:"Project created",detail:`${F.displayName||F.name} is ready for setup.`,tone:"positive",dedupeKey:`project:create:${F.name}`,dedupeMode:"drop"}),await r(),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),je(2)}catch(F){Qe(F instanceof Error?F.message:"Failed to create project"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"project",action:"save",reasonCode:"project_create_failed"},"onboarding.blocked:project:project_create_failed")}finally{jt(!1)}}},Ho=async()=>{if(!Ne)return;const F=lt;if(F.length!==0){hl(!0),xs(null);try{await yA(Ne,F),Vo(!0),await r(),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"queries",method:Lu?"generated":"manual",countBucket:cn(F.length)},"onboarding.step_completed:queries"),je(3)}catch(qe){xs(qe instanceof Error?qe.message:"Failed to save queries"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"queries",action:"save",reasonCode:"query_save_failed"},"onboarding.blocked:queries:query_save_failed")}finally{hl(!1)}}},Qn=async()=>{if(!(!Ne||!un)){fl(!0),$n(null);try{const F=await NA(Ne,un,Bi);if(F.queries.length>0){const qe=Gn?Gn.trimEnd()+`
|
|
78
78
|
`+F.queries.join(`
|
|
79
79
|
`):F.queries.join(`
|
|
80
80
|
`);Ri(qe),ta(!0)}}catch(F){$n(F instanceof Error?F.message:"Failed to generate queries"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Nv(F,"unknown")},"onboarding.blocked:queries:generate")}finally{fl(!1)}}},Zn=async()=>{if(!Ne)return;const F=Dt;if(F.length!==0){Mi(!0),bl(null);try{await xA(Ne,F),Gu(!0),await r(),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:cn(F.length)},"onboarding.step_completed:competitors"),je(4)}catch(qe){bl(qe instanceof Error?qe.message:"Failed to save competitors"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Mi(!1)}}},$i=async()=>{const F=Ss.trim();if(F){js(!0),$o(null);try{await AA("gemini",{apiKey:F}),Yt({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),Uo(""),await r(),Oi(b.providerStatuses.find(qe=>qe.name.toLowerCase()==="gemini")?.name??"gemini"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(qe){$o(qe instanceof Error?qe.message:"Failed to save Gemini key"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{js(!1)}}},hn=async()=>{if(!Ne||Ha){ws(Ha??"Complete setup before launching the first sweep.");const F=Kn??(Ne?Da===0?"no_queries":"run_rejected":"unknown");B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da),reasonCode:F});return}Hn(!0),ws(null);try{const F=await $u.mutateAsync({projectName:Ne,projectLabel:fe||V||Ne,sourceAction:"setup-launch"});Vi(F.id),dn(!0),B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da)}),await r()}catch(F){ws(F instanceof Error?F.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da),reasonCode:Nv(F,"run_rejected")})}finally{Hn(!1)}},mt=()=>je(F=>Math.max(0,F-1)),As=(F,qe,gn)=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:F,method:"existing",...gn===void 0?{}:{countBucket:cn(gn)}},`onboarding.step_completed:${F}`),je(qe)},vl=()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),je(3)},fn=()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),je(4)},Fn=(()=>{switch(Oe){case 0:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),c.jsx("h2",{children:"System check"})]})}),c.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),c.jsx("div",{className:"compact-stack",children:S.healthChecks.map(F=>c.jsxs("div",{className:"health-check-row",children:[c.jsxs("div",{children:[c.jsx("p",{className:"run-row-title",children:F.label}),c.jsx("p",{className:"supporting-copy",children:F.detail}),F.id==="provider"&&F.state!=="ready"&&c.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[c.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",c.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("input",{type:"password",value:Ss,onChange:qe=>Uo(qe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:Li}),c.jsx(xe,{type:"button",size:"sm",disabled:Li||!Ss.trim(),onClick:$t($i),children:Li?"Saving...":"Save"})]}),Go&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:Go}),c.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),c.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",c.jsx(et,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),c.jsx(ga,{tone:F.state==="ready"?"positive":"caution",title:F.id==="api"?No(k.apiStatus):F.id==="worker"?No(k.workerStatus):F.detail,children:F.state==="ready"?"Ready":"Attention"})]},F.id))}),c.jsxs("div",{className:"setup-nav",children:[S.launchState.blockedReason?c.jsx("p",{role:"status",className:"supporting-copy text-negative",children:S.launchState.blockedReason}):c.jsx("span",{}),c.jsx(xe,{type:"button",disabled:!S.launchState.enabled,title:S.launchState.blockedReason,onClick:()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),je(we)},children:"Continue"})]})]});case 1:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),c.jsx("h2",{children:"Create project"})]}),Ne?c.jsx(ga,{tone:"positive",children:"Created"}):null]}),Ne?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Project ",c.jsx("span",{className:"text-heading font-medium",children:Ne})," created successfully."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("project",2),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),c.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:V,onChange:F=>ne(F.target.value)}),Wt&&Wt!==V?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",Wt]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),c.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:fe,onChange:F=>De(F.target.value)})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),c.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:le,onChange:F=>at(F.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),c.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:H,onChange:F=>ue(F.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),c.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:ie,onChange:F=>re(F.target.value.toLowerCase())})]})]}),c.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[c.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:W,onChange:F=>Z(F.target.checked)}),c.jsxs("span",{className:"flex-1",children:[c.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),c.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",c.jsx(et,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),st?c.jsx("p",{className:"text-negative-400 text-sm",children:st}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",disabled:!Wt||!le||Pt,onClick:$t(Gi),children:Pt?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 3 of 5"}),c.jsx("h2",{children:"Add queries"})]}),X.isError?c.jsx(ga,{tone:"negative",children:"Load failed"}):Io?c.jsxs(ga,{tone:"positive",children:[lt.length," saved"]}):c.jsxs(ga,{tone:"neutral",children:[lt.length," quer",lt.length!==1?"ies":"y"]})]}),c.jsx("p",{className:"supporting-copy",children:"Enter the queries you want to track, one per line. A rough first list is fine: you can edit them, research more, and add to them at any time from the project."}),X.isError?c.jsxs("div",{className:"compact-stack",children:[c.jsx("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:"Saved queries could not be loaded. Retry before changing the query basket."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>{X.refetch()},children:"Retry loading queries"})]})]}):Io?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:lt.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("queries",3,lt.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[xa.length>0?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"flex items-end gap-2",children:[c.jsxs("div",{className:"setup-field flex-1",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),c.jsx("select",{id:"gen-provider",className:"setup-input",value:un,onChange:F=>Oi(F.target.value),children:xa.map(F=>c.jsxs("option",{value:F.name,children:[F.displayName??F.name,F.model?` (${F.model})`:""]},F.name))})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),c.jsx("select",{id:"gen-count",className:"setup-input",value:Bi,onChange:F=>Uu(Number(F.target.value)),children:[3,5,10,15,20].map(F=>c.jsx("option",{value:F,children:F},F))})]}),c.jsx(xe,{type:"button",variant:"outline",disabled:Lo||!un,onClick:$t(Qn),children:Lo?"Analyzing site...":"Generate"})]}),gl?c.jsx("p",{className:"text-negative-400 text-sm",children:gl}):null]}):null,c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),c.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
81
81
|
best invisalign downtown brooklyn
|
|
82
82
|
pediatric dentist brooklyn heights`,value:Gn,onChange:F=>Ri(F.target.value)})]}),vs?c.jsx("p",{className:"text-negative-400 text-sm",children:vs}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:vl,children:"Skip for now"}),c.jsx(xe,{type:"button",disabled:lt.length===0||ks,onClick:$t(Ho),children:ks?"Saving...":`Save ${lt.length} quer${lt.length!==1?"ies":"y"}`})]})]})]});case 3:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),c.jsx("h2",{children:"Add competitors"})]}),Jt?c.jsx(ga,{tone:"positive",children:"Saved"}):null]}),c.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Jt?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:Dt.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("competitors",4,Dt.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),c.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
83
|
-
competitor2.com`,value:Xt,onChange:F=>tn(F.target.value)})]}),yl?c.jsx("p",{className:"text-negative-400 text-sm",children:yl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:fn,children:"Skip"}),c.jsx(xe,{type:"button",disabled:Dt.length===0||qi,onClick:$t(Zn),children:qi?"Saving...":`Save ${Dt.length} competitor${Dt.length!==1?"s":""}`})]})]})]})]});case 4:{const F=an.data,qe=F?.status??(Ii===M?.id?M.status:void 0),gn=qe==="completed"||qe==="partial"||qe==="failed"||qe==="cancelled",Yn=F?.snapshots??[],Cs=Yn.filter(nn=>nn.citationState==="cited").length,Ns=Yn.filter(nn=>nn.answerMentioned===!0).length,Ea=new Set(Yn.map(nn=>nn.query).filter(nn=>!!nn)).size,aa=qe?_v(qe,Yn.length):!1,Ko=J&&!$a,Hu=Pi??(F?.error?Xq(F.error):qe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(qe==="completed"||qe==="partial")&&Yn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":M?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let yn=null;return Ko||aa?yn=c.jsx(ga,{tone:"positive",children:"Complete"}):Pi&&!$a?yn=c.jsx(ga,{tone:"negative",children:"Failed"}):gn?yn=c.jsx(ga,{tone:"negative",children:qe==="cancelled"?"Cancelled":"Failed"}):$a&&(yn=c.jsx(ga,{tone:"caution",children:"Running"})),c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),c.jsx("h2",{children:"Launch first run"})]}),yn]}),Ko?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):$a?gn?aa?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Ns,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Cs,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Yn.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Hu}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(et,{to:"/settings",children:"Configure providers"})}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,onClick:$t(hn),children:mn?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:qe??"queued"})]})}),an.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:an.error instanceof Error?an.error.message:"Could not refresh the sweep status."}),c.jsx(xe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{an.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ha||Pi)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Pi??Ha}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:Ct,children:"Finish without running"}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,title:Ha,onClick:$t(hn),children:mn?"Launching...":Pi?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Choose what to track, then run your first visibility sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:"Skip AI Visibility"})}):null]}),c.jsx(qL,{current:Oe,labels:OL}),c.jsx("section",{className:"setup-wizard",children:Fn})]})}const VL=D.lazy(async()=>({default:(await Ln(()=>import("./SiteHealthSection-C7RuR9AA.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),LL=1800,UL="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",GL="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry init` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry init` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function $L(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}function HL(e,n){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function KL(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function QL(e){const n=e.trim();if(!n)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||KL(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function ZL(e,n=LL){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),n)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function FL(e,n){e.catch(()=>{Yt({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function Dv(e,n){return e instanceof oa&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function YL(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function XL({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function JL({projectName:e,initialRunId:n}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(WL,{projectName:e,initialRunId:n})})}function WL({projectName:e,initialRunId:n}){const s=ms(),r=Ft({...gs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"});if(!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const u=r.data.find(x=>x.name===e);if(!u)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const f=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:u.name},replace:!0})},g=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:u.name},replace:!0})},b=()=>{s({to:"/projects/$projectName",params:{projectName:u.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(D.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(VL,{projectName:u.name,projectId:u.id,initialRunId:n,onReleaseInitialRun:f,showOnboardingActions:!0,onContinueOnboarding:g,onSkipOnboarding:b})})]})}function eU(){const e=Tv({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=W6(),u=e.experience==="legacy"?"legacy":r,[f,g]=D.useState(!1),b=Ft({...gs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;D.useEffect(()=>{x&&g(!0)},[x]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||x?"platform":$L(u,k);return n||s?c.jsx(JL,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(ML,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(YL,{}):S==="retry"?c.jsx(XL,{onRetry:()=>{b.refetch()}}):c.jsx(tU,{onActivationStarted:()=>g(!0)})}function tU({onActivationStarted:e}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(aU,{onActivationStarted:e})})}function aU({onActivationStarted:e}){const n=ms(),s=Vn(),r=CL(),[u,f]=D.useState(""),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState("US"),[j,E]=D.useState("en"),[B,q]=D.useState(!1),[U,G]=D.useState("idle"),[te,X]=D.useState(null),[ae,oe]=D.useState(null),[ge,M]=D.useState(!1),[J,_e]=D.useState(null),[he,we]=D.useState(!1),Oe=D.useRef(null),je=QL(u),Fe=g||je?.projectName||"",ye=x||je?.displayName||"",V=U==="creating"||U==="dispatching",ne=ae??J,fe=HL(S,j);D.useEffect(()=>{ne&&Oe.current?.focus()},[ne]);const De=(re,W)=>n({to:"/setup",search:{...W?{siteHealthRunId:W}:{},onboarding:"site-health",setupProject:re.name},replace:!0}),le=async re=>{G("dispatching"),_e(null);try{const W=r.mutateAsync({projectName:re.name,projectId:re.id,projectLabel:re.displayName||re.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Z=await ZL(W);if(Z.state==="queued"){await De(re,Z.run.runId);return}FL(W,re.id),await De(re)}catch(W){G("recovery"),_e(Dv(W,"The project was created, but the Site Health scan could not be started."))}},at=async re=>{if(re.preventDefault(),!(!je||!B||V)){G("creating"),oe(null),M(!1),_e(null);try{const W=await ux({name:Fe,displayName:ye,canonicalDomain:je.canonicalDomain,country:S,language:j});e(),X(W),await s.invalidateQueries({queryKey:Ai({client:se})}),await le(W)}catch(W){G("idle");const Z=W instanceof oa&&W.statusCode===409;M(Z),oe(Dv(W,"Could not create the project. Try again.")),Z&&(e(),s.invalidateQueries({queryKey:Ai({client:se})}))}}},H=()=>{te&&!V&&le(te)},ue=()=>{V||n({to:"/projects"})},ie=async()=>{try{await navigator.clipboard.writeText(GL),we(!0)}catch{Yt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return te&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(_o,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[te.displayName||te.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Oe,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:J}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(xe,{type:"button",onClick:H,children:"Retry Site Health scan"}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{De(te)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(_o,{current:"site"}),c.jsxs("header",{className:"mb-8 mt-8",children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:"Enter your public website to see its pages, structure, and internal links."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:$t(at),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(u&&!je),"aria-describedby":u&&!je?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:re=>{f(re.target.value),oe(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(et,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!je?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[fe,c.jsx(u0,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[je?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:Fe,onChange:re=>b(re.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ye,onChange:re=>k(re.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("input",{id:"launchpad-country",className:"setup-input h-10",type:"text",maxLength:2,value:S,onChange:re=>C(re.target.value.toUpperCase())})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("input",{id:"launchpad-language",className:"setup-input h-10",type:"text",maxLength:5,value:j,onChange:re=>E(re.target.value.toLowerCase())})]})]})]})]})]}),c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:B,onChange:re=>q(re.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),ne?c.jsxs("div",{ref:Oe,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:ne}),ge?c.jsx(xe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:ue,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(xe,{className:"h-11 w-full",type:"submit",disabled:!je||!B||V,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(xe,{className:"w-full",type:"button",variant:"ghost",disabled:V,onClick:ue,children:"Cancel"}),U==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(xe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(ie),children:[he?c.jsx(d0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Uv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:he?"Copied setup request":"Copy setup request"})]}),c.jsx(xe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:UL,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function nU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(xe,{asChild:!0,children:c.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const Ga=Ci(()=>Ln(()=>import("./ProjectPage-B4_EEP8k.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),iU=Ci(()=>Ln(()=>import("./RunsPage-BeotkZcg.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),sU=Ci(()=>Ln(()=>import("./HistoryPage-DKcDQw1a.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),oU=Ci(()=>Ln(()=>import("./SettingsPage-BukBukvW.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),rU=Ci(()=>Ln(()=>import("./BacklinksPage-BEA9vbC2.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),lU=Ci(()=>Ln(()=>import("./TrafficPage-D_zPUxGq.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),cU=Ci(()=>Ln(()=>import("./TrafficSourceDetailPage-CetULBhn.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),uU=Ci(()=>Ln(()=>import("./MeasurementPropertyPage-BRPI_icI.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function dU(){return c.jsx(mL,{children:c.jsx(dL,{})})}const ra=dj()({component:dU,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"?"site-health":void 0,experience:e.experience==="legacy"?"legacy":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0})}),mU=xt({getParentRoute:()=>ra,path:"/",component:yL,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Ai({client:se}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}if(n.length===0)throw Ov({to:"/setup"})}}),pU=xt({getParentRoute:()=>ra,path:"/projects",component:vL}),hU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,va=xt({getParentRoute:()=>ra,path:"/projects/$projectName",component:()=>c.jsx(zp,{}),beforeLoad:async({context:e,params:n,location:s})=>{const r=n.projectName;if(!hU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Ov({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),fU=xt({getParentRoute:()=>va,path:"/",component:()=>c.jsx(Ga,{tab:"overview"})}),gU=xt({getParentRoute:()=>va,path:"/portfolio",component:()=>c.jsx(Ga,{tab:"portfolio"})}),yU=xt({getParentRoute:()=>va,path:"/search-console",component:()=>c.jsx(Ga,{tab:"search-console"})}),bU=xt({getParentRoute:()=>va,path:"/conversions",component:()=>c.jsx(Ga,{tab:"conversions"})}),vU=xt({getParentRoute:()=>va,path:"/local",component:()=>c.jsx(Ga,{tab:"local"})}),xU=xt({getParentRoute:()=>va,path:"/discovery",component:()=>c.jsx(Ga,{tab:"discovery"})}),kU=xt({getParentRoute:()=>va,path:"/properties/$targetKey",component:()=>c.jsx(uU,{})}),wU=xt({getParentRoute:()=>va,path:"/report",component:()=>c.jsx(Ga,{tab:"report"})}),SU=xt({getParentRoute:()=>va,path:"/activity",component:()=>c.jsx(Ga,{tab:"activity"})}),jU=xt({getParentRoute:()=>va,path:"/backlinks",component:()=>c.jsx(Ga,{tab:"backlinks"})}),AU=xt({getParentRoute:()=>va,path:"/technical-aeo",component:()=>c.jsx(Ga,{tab:"technical-aeo"})}),CU=xt({getParentRoute:()=>va,path:"/history",component:()=>c.jsx(Ga,{tab:"history"})}),NU=xt({getParentRoute:()=>va,path:"/settings",component:()=>c.jsx(Ga,{tab:"settings"})}),_U=xt({getParentRoute:()=>ra,path:"/runs",component:iU}),zU=xt({getParentRoute:()=>ra,path:"/history",component:sU}),DU=xt({getParentRoute:()=>ra,path:"/settings",component:oU,beforeLoad:({context:e})=>{}}),EU=xt({getParentRoute:()=>ra,path:"/setup",component:eU}),TU=xt({getParentRoute:()=>ra,path:"/backlinks",component:rU}),RU=xt({getParentRoute:()=>ra,path:"/traffic",component:lU}),OU=xt({getParentRoute:()=>ra,path:"/traffic/$projectName/$sourceId",component:cU}),BU=xt({getParentRoute:()=>ra,path:"*",component:nU}),qU=ra.addChildren([mU,pU,va.addChildren([fU,gU,yU,bU,vU,xU,kU,wU,SU,jU,AU,CU,NU]),_U,zU,DU,EU,TU,RU,OU,BU]);function MU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ev=MU(),PU=Ev==="/"?"":Ev.replace(/\/$/,"");function IU(e,n){return mj({routeTree:qU,basepath:PU||"/",context:{queryClient:e},...n?.initialEntries})}const VU=6e4;function LU(){const[e,n]=D.useState(ap()?"ready":"checking"),[s,r]=D.useState(null),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState(null),[B,q]=D.useState(!1),[U,G]=D.useState(!1),te=D.useRef(null),X=D.useRef(null),ae=D.useRef(null),oe=()=>{const he=s?`${s.name}:${s.role}`:"no-accounts";if(!te.current||ae.current!==he){X.current?.clear();const we=ZA();X.current=we,te.current=IU(we),ae.current=he}return{queryClient:X.current,router:te.current}},ge=he=>he.authRequired?(f(!0),r(he.user),n(he.user?"ready":"account-login"),!0):!1;D.useEffect(()=>{if(ap())return;let he=!1;return Promise.allSettled([Ny(),Cy()]).then(([we,Oe])=>{if(he||we.status==="fulfilled"&&ge(we.value))return;if(Oe.status==="rejected"){const Fe=Oe.reason;E(Fe instanceof Error?Fe.message:"Failed to reach the Canonry API"),n("login");return}const je=Oe.value;je.authenticated?n("ready"):n(je.setupRequired?"setup":"login")}),()=>{he=!0}},[]),D.useEffect(()=>{if(e!=="ready"||ap())return;const he=setInterval(()=>{if(u){Ny().then(we=>{we.authRequired&&!we.user&&(G(!0),r(null),n("account-login"))}).catch(()=>{});return}Cy().then(we=>{we.authenticated||(G(!0),n(we.setupRequired?"setup":"login"))}).catch(()=>{})},VU);return Ay(()=>{G(!0),r(null),n(u?"account-login":"login")}),()=>{clearInterval(he),Ay(null)}},[e,u]);const M=async he=>{if(he.preventDefault(),!x.trim()||x.trim().length<8){E("Password must be at least 8 characters");return}if(x!==S){E("Passwords do not match");return}q(!0),E(null);try{if(!(await wA(x.trim())).authenticated){E("Setup failed");return}k(""),C(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Setup failed")}finally{q(!1)}},J=async he=>{if(he.preventDefault(),!!x.trim()){q(!0),E(null);try{if(!(await SA(x.trim())).authenticated){E("Incorrect password");return}k(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Authentication failed")}finally{q(!1)}}},_e=async he=>{if(he.preventDefault(),!(!g.trim()||!x)){q(!0),E(null);try{const we=await jA(g.trim(),x);if(!we.user){E("Incorrect name or password.");return}k(""),G(!1),r(we.user),n("ready")}catch(we){E(we instanceof oa?we.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:he,router:we}=oe();return c.jsx(PA,{account:s,children:c.jsx(pj,{client:he,children:c.jsx(hj,{router:we})})})}return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(_a,{className:"surface-card w-full",children:e==="checking"?c.jsx(ho,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(_e),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",autoComplete:"username",value:g,onChange:he=>b(he.target.value)})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",autoComplete:"current-password",value:x,onChange:he=>k(he.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Zr,{children:"Create a dashboard password"}),c.jsx(cu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(ho,{children:c.jsxs("form",{className:"space-y-4",onSubmit:$t(M),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"At least 8 characters"})]}),c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),c.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:S,onChange:he=>C(he.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"}),c.jsx(cu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(J),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const X3=document.getElementById("root");if(!X3)throw new Error("Expected #root element for web app bootstrap.");Gj.createRoot(X3).render(c.jsx(D.StrictMode,{children:c.jsx(LU,{})}));export{eK as $,CG as A,xe as B,su as C,PH as D,LH as E,VH as F,j$ as G,qG as H,Vr as I,BG as J,QG as K,Yt as L,$H as M,HH as N,LG as O,LI as P,KH as Q,UG as R,Yq as S,ga as T,PG as U,VG as V,UH as W,GH as X,IH as Y,MG as Z,QH as _,BK as a,SH as a$,YH as a0,JH as a1,XH as a2,WH as a3,BA as a4,wh as a5,Te as a6,FH as a7,v3 as a8,In as a9,H$ as aA,K$ as aB,bK as aC,vK as aD,xK as aE,GG as aF,Ai as aG,$G as aH,xh as aI,mK as aJ,kM as aK,yH as aL,al as aM,vH as aN,CH as aO,BH as aP,jH as aQ,RH as aR,MH as aS,kH as aT,_H as aU,zH as aV,DH as aW,xH as aX,NH as aY,wH as aZ,EH as a_,ZH as aa,GK as ab,hT as ac,fT as ad,N$ as ae,C$ as af,p$ as ag,v$ as ah,x$ as ai,oa as aj,k$ as ak,yG as al,Xq as am,HP as an,Zc as ao,w$ as ap,Op as aq,pK as ar,q_ as as,IG as at,A$ as au,lM as av,NM as aw,dH as ax,pH as ay,mH as az,jz as b,bH as b$,TH as b0,AH as b1,OH as b2,qH as b3,kL as b4,de as b5,hG as b6,pG as b7,mG as b8,dG as b9,U$ as bA,B$ as bB,I$ as bC,jG as bD,SG as bE,wG as bF,a$ as bG,_G as bH,W$ as bI,Jb as bJ,J$ as bK,zG as bL,DG as bM,X$ as bN,EG as bO,TG as bP,OG as bQ,RG as bR,pl as bS,gs as bT,EV as bU,sx as bV,tH as bW,aH as bX,LK as bY,AL as bZ,hH as b_,lG as ba,rG as bb,uG as bc,cG as bd,oG as be,sG as bf,JU as bg,WU as bh,iG as bi,nG as bj,aG as bk,eG as bl,tG as bm,XU as bn,YU as bo,FU as bp,ZU as bq,h4 as br,M$ as bs,dK as bt,q$ as bu,t$ as bv,UK as bw,V$ as bx,P$ as by,L$ as bz,qK as c,fh as c$,nH as c0,sH as c1,rH as c2,iH as c3,sa as c4,gA as c5,aM as c6,MK as c7,vG as c8,xG as c9,cA,fG as cB,gG as cC,NG as cD,HG as cE,KG as cF,Th as cG,Iu as cH,Ch as cI,e$ as cJ,No as cK,ev as cL,d$ as cM,h$ as cN,g$ as cO,y$ as cP,m$ as cQ,f$ as cR,b$ as cS,UI as cT,M3 as cU,QI as cV,P3 as cW,I3 as cX,u$ as cY,gK as cZ,$$ as c_,bG as ca,bA as cb,kG as cc,rM as cd,AG as ce,tK as cf,nK as cg,DA as ch,JG as ci,iK as cj,sK as ck,aK as cl,Z$ as cm,ZG as cn,FG as co,YG as cp,WG as cq,XG as cr,vo as cs,kh as ct,PK as cu,Pu as cv,Ah as cw,fH as cx,gH as cy,AA as cz,_a as d,eH as d0,hK as d1,yK as d2,c$ as d3,G$ as d4,r$ as d5,l$ as d6,o$ as d7,fK as d8,d9,T$ as dA,zK as dB,JT as dC,O$ as dD,R$ as dE,lH as da,oH as db,uH as dc,cH as dd,D$ as de,Ln as df,Ua as dg,z$ as dh,kK as di,SK as dj,wK as dk,CL as dl,E$ as dm,TK as dn,RK as dp,OK as dq,jK as dr,AK as ds,_$ as dt,_K as du,EK as dv,NK as dw,DK as dx,CK as dy,_o as dz,fa as e,$t as f,S$ as g,dv as h,sA as i,oK as j,se as k,rK as l,lK as m,uK as n,cK as o,n$ as p,s$ as q,i$ as r,IK as s,Wq as t,Nh as u,VK as v,s0 as w,F$ as x,Q$ as y,Y$ as z};
|
|
83
|
+
competitor2.com`,value:Xt,onChange:F=>tn(F.target.value)})]}),yl?c.jsx("p",{className:"text-negative-400 text-sm",children:yl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:fn,children:"Skip"}),c.jsx(xe,{type:"button",disabled:Dt.length===0||qi,onClick:$t(Zn),children:qi?"Saving...":`Save ${Dt.length} competitor${Dt.length!==1?"s":""}`})]})]})]})]});case 4:{const F=an.data,qe=F?.status??(Ii===M?.id?M.status:void 0),gn=qe==="completed"||qe==="partial"||qe==="failed"||qe==="cancelled",Yn=F?.snapshots??[],Cs=Yn.filter(nn=>nn.citationState==="cited").length,Ns=Yn.filter(nn=>nn.answerMentioned===!0).length,Ea=new Set(Yn.map(nn=>nn.query).filter(nn=>!!nn)).size,aa=qe?_v(qe,Yn.length):!1,Ko=J&&!$a,Hu=Pi??(F?.error?eM(F.error):qe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(qe==="completed"||qe==="partial")&&Yn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":M?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let yn=null;return Ko||aa?yn=c.jsx(ga,{tone:"positive",children:"Complete"}):Pi&&!$a?yn=c.jsx(ga,{tone:"negative",children:"Failed"}):gn?yn=c.jsx(ga,{tone:"negative",children:qe==="cancelled"?"Cancelled":"Failed"}):$a&&(yn=c.jsx(ga,{tone:"caution",children:"Running"})),c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),c.jsx("h2",{children:"Launch first run"})]}),yn]}),Ko?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):$a?gn?aa?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Ns,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Cs,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Yn.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Hu}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(et,{to:"/settings",children:"Configure providers"})}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,onClick:$t(hn),children:mn?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:qe??"queued"})]})}),an.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:an.error instanceof Error?an.error.message:"Could not refresh the sweep status."}),c.jsx(xe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{an.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ha||Pi)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Pi??Ha}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:Ct,children:"Finish without running"}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,title:Ha,onClick:$t(hn),children:mn?"Launching...":Pi?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Choose what to track, then run your first visibility sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:"Skip AI Visibility"})}):null]}),c.jsx(IL,{current:Oe,labels:ML}),c.jsx("section",{className:"setup-wizard",children:Fn})]})}const GL=D.lazy(async()=>({default:(await Ln(()=>import("./SiteHealthSection-DxMTxuhq.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),$L=1800,HL="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",KL="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry init` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry init` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function QL(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}function ZL(e,n){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function FL(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function YL(e){const n=e.trim();if(!n)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||FL(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function XL(e,n=$L){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),n)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function JL(e,n){e.catch(()=>{Yt({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function Dv(e,n){return e instanceof oa&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function WL(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function eU({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function tU({projectName:e,initialRunId:n}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(aU,{projectName:e,initialRunId:n})})}function aU({projectName:e,initialRunId:n}){const s=ms(),r=Ft({...gs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"});if(!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const u=r.data.find(x=>x.name===e);if(!u)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const f=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:u.name},replace:!0})},g=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:u.name},replace:!0})},b=()=>{s({to:"/projects/$projectName",params:{projectName:u.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(D.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(GL,{projectName:u.name,projectId:u.id,initialRunId:n,onReleaseInitialRun:f,showOnboardingActions:!0,onContinueOnboarding:g,onSkipOnboarding:b})})]})}function nU(){const e=Tv({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=W6(),u=e.experience==="legacy"?"legacy":r,[f,g]=D.useState(!1),b=Ft({...gs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;D.useEffect(()=>{x&&g(!0)},[x]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||x?"platform":QL(u,k);return n||s?c.jsx(tU,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(VL,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(WL,{}):S==="retry"?c.jsx(eU,{onRetry:()=>{b.refetch()}}):c.jsx(iU,{onActivationStarted:()=>g(!0)})}function iU({onActivationStarted:e}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(sU,{onActivationStarted:e})})}function sU({onActivationStarted:e}){const n=ms(),s=Vn(),r=zL(),[u,f]=D.useState(""),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState("US"),[j,E]=D.useState("en"),[B,q]=D.useState(!1),[U,G]=D.useState("idle"),[te,X]=D.useState(null),[ae,oe]=D.useState(null),[ge,M]=D.useState(!1),[J,_e]=D.useState(null),[he,we]=D.useState(!1),Oe=D.useRef(null),je=YL(u),Fe=g||je?.projectName||"",ye=x||je?.displayName||"",V=U==="creating"||U==="dispatching",ne=ae??J,fe=ZL(S,j);D.useEffect(()=>{ne&&Oe.current?.focus()},[ne]);const De=(re,W)=>n({to:"/setup",search:{...W?{siteHealthRunId:W}:{},onboarding:"site-health",setupProject:re.name},replace:!0}),le=async re=>{G("dispatching"),_e(null);try{const W=r.mutateAsync({projectName:re.name,projectId:re.id,projectLabel:re.displayName||re.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Z=await XL(W);if(Z.state==="queued"){await De(re,Z.run.runId);return}JL(W,re.id),await De(re)}catch(W){G("recovery"),_e(Dv(W,"The project was created, but the Site Health scan could not be started."))}},at=async re=>{if(re.preventDefault(),!(!je||!B||V)){G("creating"),oe(null),M(!1),_e(null);try{const W=await ux({name:Fe,displayName:ye,canonicalDomain:je.canonicalDomain,country:S,language:j});e(),X(W),await s.invalidateQueries({queryKey:Ai({client:se})}),await le(W)}catch(W){G("idle");const Z=W instanceof oa&&W.statusCode===409;M(Z),oe(Dv(W,"Could not create the project. Try again.")),Z&&(e(),s.invalidateQueries({queryKey:Ai({client:se})}))}}},H=()=>{te&&!V&&le(te)},ue=()=>{V||n({to:"/projects"})},ie=async()=>{try{await navigator.clipboard.writeText(KL),we(!0)}catch{Yt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return te&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(_o,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[te.displayName||te.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Oe,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:J}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(xe,{type:"button",onClick:H,children:"Retry Site Health scan"}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{De(te)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(_o,{current:"site"}),c.jsxs("header",{className:"mb-8 mt-8",children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:"Enter your public website to see its pages, structure, and internal links."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:$t(at),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(u&&!je),"aria-describedby":u&&!je?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:re=>{f(re.target.value),oe(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(et,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!je?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[fe,c.jsx(u0,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[je?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:Fe,onChange:re=>b(re.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ye,onChange:re=>k(re.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("input",{id:"launchpad-country",className:"setup-input h-10",type:"text",maxLength:2,value:S,onChange:re=>C(re.target.value.toUpperCase())})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("input",{id:"launchpad-language",className:"setup-input h-10",type:"text",maxLength:5,value:j,onChange:re=>E(re.target.value.toLowerCase())})]})]})]})]})]}),c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:B,onChange:re=>q(re.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),ne?c.jsxs("div",{ref:Oe,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:ne}),ge?c.jsx(xe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:ue,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(xe,{className:"h-11 w-full",type:"submit",disabled:!je||!B||V,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(xe,{className:"w-full",type:"button",variant:"ghost",disabled:V,onClick:ue,children:"Cancel"}),U==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(xe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(ie),children:[he?c.jsx(d0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Uv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:he?"Copied setup request":"Copy setup request"})]}),c.jsx(xe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:HL,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function oU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(xe,{asChild:!0,children:c.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const Ga=Ci(()=>Ln(()=>import("./ProjectPage-D_h2PyoN.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),rU=Ci(()=>Ln(()=>import("./RunsPage-Ct90Y0n5.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),lU=Ci(()=>Ln(()=>import("./HistoryPage-W7VBtrf9.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),cU=Ci(()=>Ln(()=>import("./SettingsPage-CZOkHD5Q.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),uU=Ci(()=>Ln(()=>import("./BacklinksPage-CgKG9gLz.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),dU=Ci(()=>Ln(()=>import("./TrafficPage-LyHMCUIw.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),mU=Ci(()=>Ln(()=>import("./TrafficSourceDetailPage-Fd6Pv5hY.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),pU=Ci(()=>Ln(()=>import("./MeasurementPropertyPage-DMbdygLZ.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function hU(){return c.jsx(fL,{children:c.jsx(hL,{})})}const ra=dj()({component:hU,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"?"site-health":void 0,experience:e.experience==="legacy"?"legacy":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0})}),fU=xt({getParentRoute:()=>ra,path:"/",component:xL,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Ai({client:se}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}if(n.length===0)throw Ov({to:"/setup"})}}),gU=xt({getParentRoute:()=>ra,path:"/projects",component:wL}),yU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,va=xt({getParentRoute:()=>ra,path:"/projects/$projectName",component:()=>c.jsx(zp,{}),beforeLoad:async({context:e,params:n,location:s})=>{const r=n.projectName;if(!yU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Ov({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),bU=xt({getParentRoute:()=>va,path:"/",component:()=>c.jsx(Ga,{tab:"overview"})}),vU=xt({getParentRoute:()=>va,path:"/portfolio",component:()=>c.jsx(Ga,{tab:"portfolio"})}),xU=xt({getParentRoute:()=>va,path:"/search-console",component:()=>c.jsx(Ga,{tab:"search-console"})}),kU=xt({getParentRoute:()=>va,path:"/conversions",component:()=>c.jsx(Ga,{tab:"conversions"})}),wU=xt({getParentRoute:()=>va,path:"/local",component:()=>c.jsx(Ga,{tab:"local"})}),SU=xt({getParentRoute:()=>va,path:"/discovery",component:()=>c.jsx(Ga,{tab:"discovery"})}),jU=xt({getParentRoute:()=>va,path:"/properties/$targetKey",component:()=>c.jsx(pU,{})}),AU=xt({getParentRoute:()=>va,path:"/report",component:()=>c.jsx(Ga,{tab:"report"})}),CU=xt({getParentRoute:()=>va,path:"/activity",component:()=>c.jsx(Ga,{tab:"activity"})}),NU=xt({getParentRoute:()=>va,path:"/backlinks",component:()=>c.jsx(Ga,{tab:"backlinks"})}),_U=xt({getParentRoute:()=>va,path:"/technical-aeo",component:()=>c.jsx(Ga,{tab:"technical-aeo"})}),zU=xt({getParentRoute:()=>va,path:"/history",component:()=>c.jsx(Ga,{tab:"history"})}),DU=xt({getParentRoute:()=>va,path:"/settings",component:()=>c.jsx(Ga,{tab:"settings"})}),EU=xt({getParentRoute:()=>ra,path:"/runs",component:rU}),TU=xt({getParentRoute:()=>ra,path:"/history",component:lU}),RU=xt({getParentRoute:()=>ra,path:"/settings",component:cU,beforeLoad:({context:e})=>{}}),OU=xt({getParentRoute:()=>ra,path:"/setup",component:nU}),BU=xt({getParentRoute:()=>ra,path:"/backlinks",component:uU}),qU=xt({getParentRoute:()=>ra,path:"/traffic",component:dU}),MU=xt({getParentRoute:()=>ra,path:"/traffic/$projectName/$sourceId",component:mU}),PU=xt({getParentRoute:()=>ra,path:"*",component:oU}),IU=ra.addChildren([fU,gU,va.addChildren([bU,vU,xU,kU,wU,SU,jU,AU,CU,NU,_U,zU,DU]),EU,TU,RU,OU,BU,qU,MU,PU]);function VU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ev=VU(),LU=Ev==="/"?"":Ev.replace(/\/$/,"");function UU(e,n){return mj({routeTree:IU,basepath:LU||"/",context:{queryClient:e},...n?.initialEntries})}const GU=6e4;function $U(){const[e,n]=D.useState(ap()?"ready":"checking"),[s,r]=D.useState(null),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState(null),[B,q]=D.useState(!1),[U,G]=D.useState(!1),te=D.useRef(null),X=D.useRef(null),ae=D.useRef(null),oe=()=>{const he=s?`${s.name}:${s.role}`:"no-accounts";if(!te.current||ae.current!==he){X.current?.clear();const we=ZA();X.current=we,te.current=UU(we),ae.current=he}return{queryClient:X.current,router:te.current}},ge=he=>he.authRequired?(f(!0),r(he.user),n(he.user?"ready":"account-login"),!0):!1;D.useEffect(()=>{if(ap())return;let he=!1;return Promise.allSettled([Ny(),Cy()]).then(([we,Oe])=>{if(he||we.status==="fulfilled"&&ge(we.value))return;if(Oe.status==="rejected"){const Fe=Oe.reason;E(Fe instanceof Error?Fe.message:"Failed to reach the Canonry API"),n("login");return}const je=Oe.value;je.authenticated?n("ready"):n(je.setupRequired?"setup":"login")}),()=>{he=!0}},[]),D.useEffect(()=>{if(e!=="ready"||ap())return;const he=setInterval(()=>{if(u){Ny().then(we=>{we.authRequired&&!we.user&&(G(!0),r(null),n("account-login"))}).catch(()=>{});return}Cy().then(we=>{we.authenticated||(G(!0),n(we.setupRequired?"setup":"login"))}).catch(()=>{})},GU);return Ay(()=>{G(!0),r(null),n(u?"account-login":"login")}),()=>{clearInterval(he),Ay(null)}},[e,u]);const M=async he=>{if(he.preventDefault(),!x.trim()||x.trim().length<8){E("Password must be at least 8 characters");return}if(x!==S){E("Passwords do not match");return}q(!0),E(null);try{if(!(await wA(x.trim())).authenticated){E("Setup failed");return}k(""),C(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Setup failed")}finally{q(!1)}},J=async he=>{if(he.preventDefault(),!!x.trim()){q(!0),E(null);try{if(!(await SA(x.trim())).authenticated){E("Incorrect password");return}k(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Authentication failed")}finally{q(!1)}}},_e=async he=>{if(he.preventDefault(),!(!g.trim()||!x)){q(!0),E(null);try{const we=await jA(g.trim(),x);if(!we.user){E("Incorrect name or password.");return}k(""),G(!1),r(we.user),n("ready")}catch(we){E(we instanceof oa?we.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:he,router:we}=oe();return c.jsx(PA,{account:s,children:c.jsx(pj,{client:he,children:c.jsx(hj,{router:we})})})}return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(_a,{className:"surface-card w-full",children:e==="checking"?c.jsx(ho,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(_e),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",autoComplete:"username",value:g,onChange:he=>b(he.target.value)})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",autoComplete:"current-password",value:x,onChange:he=>k(he.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Zr,{children:"Create a dashboard password"}),c.jsx(cu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(ho,{children:c.jsxs("form",{className:"space-y-4",onSubmit:$t(M),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"At least 8 characters"})]}),c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),c.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:S,onChange:he=>C(he.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"}),c.jsx(cu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(J),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const X3=document.getElementById("root");if(!X3)throw new Error("Expected #root element for web app bootstrap.");Gj.createRoot(X3).render(c.jsx(D.StrictMode,{children:c.jsx($U,{})}));export{YH as $,zG as A,xe as B,su as C,LH as D,$H as E,GH as F,N$ as G,IG as H,Vr as I,PG as J,YG as K,Yt as L,VK as M,QH as N,ZH as O,$I as P,$G as Q,FH as R,Wq as S,ga as T,HG as U,LG as V,GG as W,HH as X,KH as Y,UH as Z,VG as _,PK as a,OH as a$,nK as a0,WH as a1,tK as a2,eK as a3,aK as a4,BA as a5,wh as a6,Te as a7,JH as a8,v3 as a9,fH as aA,Z$ as aB,F$ as aC,kK as aD,wK as aE,SK as aF,KG as aG,Ai as aH,QG as aI,xh as aJ,fK as aK,jM as aL,xH as aM,al as aN,wH as aO,zH as aP,PH as aQ,NH as aR,qH as aS,VH as aT,jH as aU,EH as aV,TH as aW,RH as aX,SH as aY,DH as aZ,AH as a_,In as aa,XH as ab,KK as ac,yT as ad,bT as ae,D$ as af,z$ as ag,g$ as ah,w$ as ai,S$ as aj,oa as ak,j$ as al,xG as am,eM as an,ZP as ao,Zc as ap,A$ as aq,Op as ar,gK as as,q_ as at,UG as au,_$ as av,dM as aw,DM as ax,hH as ay,gH as az,jz as b,yH as b$,CH as b0,BH as b1,_H as b2,MH as b3,IH as b4,jL as b5,de as b6,yG as b7,gG as b8,fG as b9,$$ as bA,H$ as bB,P$ as bC,U$ as bD,NG as bE,CG as bF,AG as bG,s$ as bH,EG as bI,aH as bJ,Jb as bK,tH as bL,TG as bM,RG as bN,eH as bO,OG as bP,BG as bQ,MG as bR,qG as bS,pl as bT,gs as bU,OV as bV,sx as bW,iH as bX,sH as bY,$K as bZ,_L as b_,hG as ba,dG as bb,uG as bc,pG as bd,mG as be,cG as bf,lG as bg,tG as bh,aG as bi,rG as bj,oG as bk,sG as bl,nG as bm,iG as bn,eG as bo,WU as bp,JU as bq,XU as br,h4 as bs,V$ as bt,hK as bu,I$ as bv,i$ as bw,HK as bx,G$ as by,L$ as bz,IK as c,fh as c$,kH as c0,oH as c1,lH as c2,uH as c3,rH as c4,sa as c5,gA as c6,sM as c7,wG as c8,SG as c9,cA,bG as cB,vG as cC,DG as cD,ZG as cE,FG as cF,Th as cG,Iu as cH,Ch as cI,n$ as cJ,No as cK,ev as cL,h$ as cM,y$ as cN,v$ as cO,x$ as cP,f$ as cQ,b$ as cR,k$ as cS,HI as cT,M3 as cU,YI as cV,P3 as cW,I3 as cX,p$ as cY,vK as cZ,Q$ as c_,kG as ca,bA as cb,jG as cc,uM as cd,_G as ce,iK as cf,DA as cg,t$ as ch,oK as ci,rK as cj,lK as ck,sK as cl,X$ as cm,XG as cn,JG as co,WG as cp,a$ as cq,e$ as cr,vo as cs,kh as ct,LK as cu,Pu as cv,Ah as cw,bH as cx,vH as cy,AA as cz,_a as d,nH as d0,yK as d1,xK as d2,m$ as d3,K$ as d4,u$ as d5,d$ as d6,c$ as d7,bK as d8,h9 as d9,B$ as dA,TK as dB,tR as dC,M$ as dD,q$ as dE,dH as da,cH as db,pH as dc,mH as dd,R$ as de,Ln as df,Ua as dg,T$ as dh,jK as di,CK as dj,AK as dk,zL as dl,O$ as dm,BK as dn,qK as dp,MK as dq,NK as dr,_K as ds,E$ as dt,EK as du,OK as dv,DK as dw,RK as dx,zK as dy,_o as dz,fa as e,$t as f,C$ as g,dv as h,sA as i,cK as j,se as k,uK as l,dK as m,pK as n,mK as o,o$ as p,l$ as q,r$ as r,UK as s,aM as t,Nh as u,GK as v,s0 as w,J$ as x,Y$ as y,W$ as z};
|